COMPILATION LISTING OF SEGMENT line_length Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 08/10/84 1131.8 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* This procedure allows the user to change the line length of the device he is 12* presently attached to on the stream user_output. 13* 14* Coded by R. J. Feiertag on February 21, 1970 */ 15 /* Modified 08/04/83 by Jim Lippard to use iox_$modes */ 16 /* Modified 84-07-24 by Charlie Spitzer. Let work as an AF. */ 17 18 line_length: ll: proc; 19 20 dcl ME char (11) internal static options (constant) init ("line_length"); 21 dcl active_fnc bit (1) aligned, 22 af_return_arg_ptr ptr, 23 af_return_arg_len fixed bin (21), 24 af_return_arg char (af_return_arg_len) varying based (af_return_arg_ptr), 25 cmaxl fixed bin(21), /* length of cmax */ 26 cmaxp ptr, /* pointer to cmax */ 27 cmax char (cmaxl) based (cmaxp), /* line length in ascii */ 28 ll_ch char (8), 29 code fixed bin(35), /* error code */ 30 n_args fixed bin, 31 error_table_$not_act_fnc fixed bin(35) ext static, 32 error_table_$too_many_args fixed bin(35) ext static, 33 new_line_length fixed bin, 34 old_line_length fixed bin, 35 get_line_length_$switch entry (ptr, fixed bin(35)) returns(fixed bin), 36 iox_$modes entry (ptr, char(*), char(*), fixed bin(35)), 37 iox_$user_output ext static ptr, 38 cu_$arg_ptr ext entry (fixed bin, ptr, fixed bin(21), fixed bin (35)), 39 cu_$af_return_arg entry (fixed bin, ptr, fixed bin(21), fixed bin(35)), 40 error_routine entry variable entry options (variable), 41 ioa_ entry() options(variable), 42 active_fnc_err_ entry options(variable), 43 com_err_ ext entry options (variable); 44 dcl conversion condition; 45 dcl (char, convert, ltrim) builtin; 46 47 new_line_length = 0; /* init not to set */ 48 49 call cu_$af_return_arg (n_args, af_return_arg_ptr, af_return_arg_len, code); 50 if code = error_table_$not_act_fnc then do; 51 active_fnc = "0"b; 52 error_routine = com_err_; 53 end; 54 else do; 55 active_fnc = "1"b; 56 error_routine = active_fnc_err_; 57 end; 58 59 if n_args > 1 then do; 60 call error_routine (error_table_$too_many_args, ME); 61 return; 62 end; 63 else if n_args = 1 then do; 64 call cu_$arg_ptr (1, cmaxp, cmaxl, code); /* get first arg */ 65 if code ^= 0 then do; /* incorrect calling sequence */ 66 call error_routine (code, ME, ""); 67 return; 68 end; 69 70 on conversion begin; 71 call error_routine ((0), ME, """^a"" is not a decimal integer.", cmax); 72 goto done; 73 end; 74 75 new_line_length = convert (new_line_length, cmax); 76 if new_line_length <= 4 77 then do; /* He doesn't seem to know what he's doing */ 78 79 call com_err_ (0, ME, "Line length must be greater than 4."); 80 return; 81 end; 82 83 ll_ch = "ll" || cmax; 84 end; 85 86 if n_args = 0 | active_fnc then do; /* need old line length */ 87 old_line_length = get_line_length_$switch (iox_$user_output, code); 88 if code ^= 0 then do; 89 call error_routine (code, ME, "Determining old line length."); 90 return; 91 end; 92 end; 93 94 if new_line_length > 0 then do; /* Set new line length */ 95 call iox_$modes (iox_$user_output, ll_ch, (""), code); 96 if code ^= 0 then do; 97 call error_routine (code, ME, "Setting new line length of ^d", new_line_length); 98 return; 99 end; 100 end; 101 102 if new_line_length > 0 then do; 103 call iox_$modes (iox_$user_output, ll_ch, "", code); /* set line length */ 104 105 if code ^= 0 then do; 106 call error_routine (code, ME, "^a", cmax); 107 return; 108 end; 109 end; 110 111 if active_fnc then af_return_arg = ltrim (char (old_line_length)); 112 else if n_args = 0 then call ioa_ ("^d", old_line_length); 113 114 done: return; 115 116 end line_length; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/10/84 1131.0 line_length.pl1 >special_ldd>on>08/10/84-6868>line_length.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ME 000000 constant char(11) initial unaligned dcl 20 set ref 60* 66* 71* 79* 89* 97* 106* active_fnc 000100 automatic bit(1) dcl 21 set ref 51* 55* 86 111 active_fnc_err_ 000030 constant entry external dcl 21 ref 56 af_return_arg based varying char dcl 21 set ref 111* af_return_arg_len 000104 automatic fixed bin(21,0) dcl 21 set ref 49* 111 af_return_arg_ptr 000102 automatic pointer dcl 21 set ref 49* 111 char builtin function dcl 45 ref 111 cmax based char unaligned dcl 21 set ref 71* 75 83 106* cmaxl 000105 automatic fixed bin(21,0) dcl 21 set ref 64* 71 71 75 83 106 106 cmaxp 000106 automatic pointer dcl 21 set ref 64* 71 75 83 106 code 000112 automatic fixed bin(35,0) dcl 21 set ref 49* 50 64* 65 66* 87* 88 89* 95* 96 97* 103* 105 106* com_err_ 000032 constant entry external dcl 21 ref 52 79 conversion 000122 stack reference condition dcl 44 ref 70 convert builtin function dcl 45 ref 75 cu_$af_return_arg 000024 constant entry external dcl 21 ref 49 cu_$arg_ptr 000022 constant entry external dcl 21 ref 64 error_routine 000116 automatic entry variable dcl 21 set ref 52* 56* 60 66 71 89 97 106 error_table_$not_act_fnc 000010 external static fixed bin(35,0) dcl 21 ref 50 error_table_$too_many_args 000012 external static fixed bin(35,0) dcl 21 set ref 60* get_line_length_$switch 000014 constant entry external dcl 21 ref 87 ioa_ 000026 constant entry external dcl 21 ref 112 iox_$modes 000016 constant entry external dcl 21 ref 95 103 iox_$user_output 000020 external static pointer dcl 21 set ref 87* 95* 103* ll_ch 000110 automatic char(8) unaligned dcl 21 set ref 83* 95* 103* ltrim builtin function dcl 45 ref 111 n_args 000113 automatic fixed bin(17,0) dcl 21 set ref 49* 59 63 86 112 new_line_length 000114 automatic fixed bin(17,0) dcl 21 set ref 47* 75* 75 76 94 97* 102 old_line_length 000115 automatic fixed bin(17,0) dcl 21 set ref 87* 111 112* NAMES DECLARED BY EXPLICIT CONTEXT. done 000640 constant label dcl 114 ref 72 line_length 000073 constant entry external dcl 18 ll 000064 constant entry external dcl 18 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1016 1052 647 1026 Length 1240 647 34 152 146 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ll 288 external procedure is an external procedure. on unit on line 70 94 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ll 000100 active_fnc ll 000102 af_return_arg_ptr ll 000104 af_return_arg_len ll 000105 cmaxl ll 000106 cmaxp ll 000110 ll_ch ll 000112 code ll 000113 n_args ll 000114 new_line_length ll 000115 old_line_length ll 000116 error_routine ll THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_var_desc call_ext_out_desc call_ext_out return tra_ext enable shorten_stack ext_entry int_entry any_to_any_tr THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. active_fnc_err_ com_err_ cu_$af_return_arg cu_$arg_ptr get_line_length_$switch ioa_ iox_$modes THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$not_act_fnc error_table_$too_many_args iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000063 47 000100 49 000101 50 000115 51 000121 52 000122 53 000126 55 000127 56 000131 59 000135 60 000140 61 000154 63 000155 64 000156 65 000174 66 000176 67 000216 70 000217 71 000233 72 000267 75 000272 76 000302 79 000305 80 000332 83 000333 84 000351 86 000352 87 000356 88 000371 89 000373 90 000416 94 000417 95 000421 96 000446 97 000450 98 000477 102 000500 103 000502 105 000527 106 000531 107 000562 111 000563 112 000617 114 000640 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved