COMPILATION LISTING OF SEGMENT cmcs_print_ Compiled by: Multics PL/I Compiler, Release 31b, of April 24, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 05/24/89 1023.2 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1989 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 6* * * 7* *********************************************************** */ 8 9 10 11 12 /****^ HISTORY COMMENTS: 13* 1) change(89-04-23,Zimmerman), approve(89-04-23,MCR8060), 14* audit(89-05-05,RWaters), install(89-05-24,MR12.3-1048): 15* MCR8060 cmcs_print_.pl1 Reformatted code to new Cobol standard. 16* END HISTORY COMMENTS */ 17 18 19 /* Modified on 10/02/81 by FCH, [5.0-1], emit NL after message if no slew, BUG510 */ 20 /* Modified on 07/16/81 by FCH, [4.4-1], make BEF/AFT PAGE same as BEF/AFT 1 LINE unless printer, BUG468 */ 21 /* Modified since Version 4.3 */ 22 23 /* format: style3 */ 24 cmcs_print_: 25 proc (a_iocb_ptr, a_buffer_ptr, a_buffer_len, a_slew_ctl_ptr, a_code); 26 27 /* This COBOL MCS subroutine is used to reformat messages and message segments 28* for final output to a terminal device. It uses the slew control originally given 29* in the SEND verb to determine the nature of slewing required. Slew control can 30* specify a slew of zero lines. Thus, all output of data is terminated with a 31* Carriage Return, rather than a Newline. It is up to the COBOL program to keep 32* track of the need to slew. 33* 34* Bob May, 6/30/77 */ 35 36 dcl a_iocb_ptr ptr, 37 a_buffer_ptr ptr, 38 a_buffer_len fixed bin (35), 39 a_slew_ctl_ptr ptr, 40 a_code fixed bin (35); 41 42 dcl buffer char (a_buffer_len) based (a_buffer_ptr); 43 /* for DEBUG */ 44 45 dcl (addr, copy, fixed, null, substr, unspec) 46 builtin; 47 48 dcl test_sw bit (1) int static init ("0"b); 49 50 dcl 1 esc_sequence, 51 2 ESC char (1), 52 2 vfu_chn pic "99", 53 2 ETX char (1); 54 55 dcl (NL, FF, CR) char (1); 56 57 dcl NL_string char (128); 58 59 /* */ 1 1 /* BEGIN INCLUDE FILE... cmcs_slew_ctl.incl.pl1 */ 1 2 1 3 /* This include file defines the structure of the slew control 1 4* word that is part of a COBOL MCS message segment */ 1 5 1 6 /* Bob May, 5/31/77 */ 1 7 1 8 dcl slew_ctl_ptr ptr; 1 9 1 10 dcl 1 slew_ctl aligned based (slew_ctl_ptr), 1 11 (2 when fixed bin (8), /* 0 = no slew, 1 = before, 2 = after */ 1 12 2 what fixed bin (8), /* 0 - slew 0 lines */ 1 13 /* 1 - slew n lines */ 1 14 /* 2 - slew to top of page */ 1 15 /* 3 - slew to channel (1-16) */ 1 16 1 17 2 how_much fixed bin (17)) unaligned; /* what = 1: n */ 1 18 /* what = 3: carriage control channel 1-16 */ 1 19 1 20 /* END INCLUDE FILE... cmcs_slew_ctl.incl.pl1 */ 60 2 1 /* BEGIN INCLUDE FILE... cmcs_iox_processing.incl.pl1, 07/01/74 */ 2 2 2 3 dcl iox_$attach_iocb entry (ptr, char (*), fixed bin (35)), 2 4 iox_$attach_name entry (char (*), ptr, char (*), ptr, fixed bin (35)), 2 5 iox_$close entry (ptr, fixed bin (35)), 2 6 iox_$control entry (ptr, char (*), ptr, fixed bin (35)), 2 7 iox_$delete_record entry (ptr, fixed bin (35)), 2 8 iox_$detach_iocb entry (ptr, fixed bin (35)), 2 9 iox_$find_iocb entry (char (*), ptr, fixed bin (35)), 2 10 iox_$get_chars entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)), 2 11 iox_$get_line entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)), 2 12 iox_$modes entry (ptr, char (*), char (*), fixed bin (35)), 2 13 iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)), 2 14 iox_$position entry (ptr, fixed bin, fixed bin (21), fixed bin (35)), 2 15 iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)), 2 16 iox_$read_key entry (ptr, char (256) varying, fixed bin (21), fixed bin (35)), 2 17 iox_$read_length entry (ptr, fixed bin (21), fixed bin (35)), 2 18 iox_$read_record entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)), 2 19 iox_$rewrite_record entry (ptr, ptr, fixed bin (21), fixed bin (35)), 2 20 iox_$seek_key entry (ptr, char (256) varying, fixed bin (21), fixed bin (35)), 2 21 iox_$write_record entry (ptr, ptr, fixed bin (21), fixed bin (35)); 2 22 2 23 /* * * EXTERNAL * * */ 2 24 2 25 dcl (iox_$user_io, 2 26 iox_$user_input, 2 27 iox_$user_output, 2 28 iox_$error_output) ptr external; 2 29 2 30 /* * * MODES * * */ 2 31 2 32 /* 2 33* 1 stream_input 2 34* 2 stream_output 2 35* 3 stream_input_output 2 36* 4 sequential_input 2 37* 5 sequential_output 2 38* 6 sequential_input_output 2 39* 7 sequential_update 2 40* 8 keyed_sequential_input 2 41* 9 keyed_sequential_output 2 42* 10 keyed_sequential_update 2 43* 11 direct_input 2 44* 12 direct_output 2 45* 13 direct_update 2 46**/ 2 47 2 48 /* END INCLUDE FILE... cmcs_iox_processing.incl.pl1 */ 61 3 1 /* BEGIN INCLUDE FILE... cmcs_error_table_dcls.incl.pl1 */ 3 2 3 3 /* Bob May, 6/30/77 */ 3 4 3 5 dcl (cmcs_error_table_$ambiguous_tree_path, cmcs_error_table_$bad_call_parm, cmcs_error_table_$bad_dest, 3 6 cmcs_error_table_$bad_dest_count, cmcs_error_table_$bad_message_length, 3 7 cmcs_error_table_$bad_password, cmcs_error_table_$bad_queue_path, cmcs_error_table_$bad_slew, 3 8 3 9 cmcs_error_table_$bad_source, cmcs_error_table_$bad_station, 3 10 cmcs_error_table_$bad_term_devchn, cmcs_error_table_$bad_tree_path, 3 11 cmcs_error_table_$dest_already_disabled, cmcs_error_table_$dest_already_enabled, 3 12 3 13 cmcs_error_table_$dest_disabled, cmcs_error_table_$no_message, 3 14 cmcs_error_table_$no_partial_messages, cmcs_error_table_$null_partial_message, 3 15 cmcs_error_table_$queue_already_disabled, cmcs_error_table_$queue_already_enabled, 3 16 3 17 cmcs_error_table_$queue_disabled, cmcs_error_table_$source_already_disabled, 3 18 cmcs_error_table_$source_already_enabled, cmcs_error_table_$source_disabled) fixed bin (35) external; 3 19 3 20 /* END INCLUDE FILE... cmcs_error_table_dcls.incl.pl1 */ 62 4 1 /* BEGIN INCLUDE FILE ... cmcs_user_ctl.incl.pl1 */ 4 2 4 3 /* 4 4* This COBOL MCS include file defines the global, process-dependent variables that are 4 5* not part of the PD copy of cmcs_tree_ctl.control. 4 6**/ 4 7 4 8 /* Modified on 05/06/81 by FCH, [4.4-1], attach command */ 4 9 /* Bob May, 5/31/77 */ 4 10 4 11 dcl user_ctl_exists_sw bit (1) aligned int static init ("0"b); /* indicates legitimacy of external_user_ctl_ptr */ 4 12 4 13 dcl external_user_ctl_ptr ptr external; /* global ptr for user_ctl */ 4 14 4 15 dcl user_ctl_ptr ptr int static; 4 16 4 17 dcl 1 user_ctl aligned based (user_ctl_ptr), 4 18 4 19 /* Flags */ 4 20 4 21 2 init_sw, 4 22 3 terminal_ctl bit(1), 4 23 3 tree_ctl bit(1), 4 24 3 status_list_ctl bit(1), 4 25 3 station_ctl bit(1), 4 26 3 queue_ctl bit(1), 4 27 3 set_lock bit(1), 4 28 3 wait_ctl bit(1), 4 29 3 purge_queues bit(1), 4 30 3 create_queues bit(1), 4 31 3 initiate_ctl bit(1), 4 32 3 mcs bit(1), 4 33 2 flags, 4 34 (3 initialized_sw bit (1), 4 35 3 interactive_sw bit (1), 4 36 3 mp_sw bit (1), /* message processor process */ 4 37 3 terminal_sw bit (1), /* user terminal process */ 4 38 3 admin_sw bit (1), /* cobol_mcs_admin */ 4 39 3 attach_bit bit(1), /*[4.4-1]*/ 4 40 3 rec bit(1), /*[4.4-1]*/ 4 41 3 filler bit (29)) unaligned, 4 42 2 cmcs_dir char (168), 4 43 2 output_file char(168), /*[4.4-1]*/ 4 44 2 station_name char (12), /* current station */ 4 45 2 station_ctl_eindex fixed bin, /* current station */ 4 46 2 process_id bit (36), 4 47 2 process_type fixed bin, /* 0 - not defined, 1 - MP, 2 - terminal, 3 - admin */ 4 48 2 filler fixed bin (35), /* to explicitly align ptrs */ 4 49 2 control_ptrs, 4 50 3 queue_ctl_ptr ptr, 4 51 3 iocb_ptr ptr, /*[4.4-1]*/ 4 52 3 station_ctl_ptr ptr, 4 53 3 system_ctl_ptr ptr, 4 54 3 terminal_ctl_ptr ptr, 4 55 3 tree_ctl_ptr ptr, 4 56 3 wait_ctl_ptr ptr, 4 57 3 filler_ptrs (4) ptr, 4 58 2 terminal_info, 4 59 3 term_id char (4), 4 60 3 term_type fixed bin, 4 61 3 term_channel char (8), 4 62 2 last_receive_info, 4 63 3 tree_path char (48), 4 64 3 tree_ctl_eindex fixed bin, 4 65 3 tree_ctl_eptr ptr, 4 66 2 last_send_info, 4 67 3 dest_name char (12), 4 68 3 tree_ctl_eindex fixed bin, 4 69 3 tree_ctl_eptr ptr, 4 70 2 station_info, 4 71 3 station_count fixed bin, /* must be 1 for phase 1 */ 4 72 3 station_entries (2), 4 73 4 station_name char (12), 4 74 4 station_ctl_eptr ptr, 4 75 4 station_ctl_eindex fixed bin, 4 76 2 wait_info, 4 77 3 wait_ctl_eptr ptr, 4 78 3 wait_ctl_eindex fixed bin, 4 79 3 wait_ctl_mp_eindex fixed bin, /* only for message processors */ 4 80 3 wait_ctl_mp_eptr ptr, 4 81 3 ev_wait_chn fixed bin (71), /* for message processors */ 4 82 3 ev_call_chn fixed bin (71), /* for terminals, to get message responses */ 4 83 3 ev_wait_list_ptr ptr, /* for ipc_$block */ 4 84 3 ev_info_ptr ptr; /* for wakeup */ 4 85 4 86 /* END INCLUDE FILE ... cmcs_user_ctl.incl.pl1 */ 63 64 65 /* */ 66 67 /* Initialization */ 68 69 slew_ctl_ptr = a_slew_ctl_ptr; /* to get at structure components */ 70 71 unspec (esc_sequence.ESC) = "033"b3; 72 unspec (esc_sequence.ETX) = "003"b3; 73 unspec (CR) = "015"b3; 74 unspec (NL) = "012"b3; 75 unspec (FF) = "014"b3; /*[4.4-1]*/ 76 user_ctl_ptr = external_user_ctl_ptr; 77 NL_string = copy (NL, 128); 78 79 /* */ 80 81 if slew_ctl.when = 0 82 then do; 83 84 call iox_$put_chars (a_iocb_ptr, addr (NL), 1, a_code); 85 86 if a_code ^= 0 87 then return; 88 89 call put_data; /* as-is, with trailing CR */ 90 91 /*[5.0-1]*/ 92 if ^user_ctl.attach_bit | (user_ctl.attach_bit & user_ctl.iocb_ptr = null ()) 93 /*[5.0-1]*/ 94 then call iox_$put_chars (a_iocb_ptr, addr (NL), 1, a_code); 95 96 end; 97 else if slew_ctl.when = 1 98 then do; /* send before slew */ 99 100 call put_data; 101 call put_slew; 102 103 end; 104 else if slew_ctl.when = 2 105 then do; /* send data after slew */ 106 107 call put_slew; 108 call put_data; 109 110 end; 111 else do; 112 113 a_code = cmcs_error_table_$bad_call_parm; 114 115 end; 116 117 return; 118 119 /* */ 120 put_data: 121 proc (); 122 123 if a_buffer_len ^= 0 124 then do; /* sometimes they just want the slew */ 125 126 call iox_$put_chars (a_iocb_ptr, a_buffer_ptr, fixed (a_buffer_len, 21), a_code); 127 128 if a_code ^= 0 129 then return; 130 131 end; 132 133 call iox_$put_chars (a_iocb_ptr, addr (CR), 1, a_code); 134 135 return; 136 137 end /* put_data */; 138 139 /* */ 140 141 put_slew: 142 proc (); 143 144 if slew_ctl.what = 0 145 then do; /* same as slew zero lines... we put out the CR in front */ 146 147 a_code = 0; 148 return; 149 150 end; 151 else if slew_ctl.what = 1 152 then do; /* slew n lines */ 153 154 /*[4.4-1]*/ 155 call lines; 156 157 return; 158 159 end; /* what = 1 */ 160 else if slew_ctl.what = 2 161 then do; /* wants slew to PAGE */ 162 163 /*[4.4-1]*/ 164 if user_ctl.attach_bit /*[4.4-1]*/ 165 then if user_ctl.iocb_ptr ^= null () /*[4.4-1]*/ 166 then do; 167 call iox_$put_chars (a_iocb_ptr, addr (FF), 1, a_code); 168 /*[4.4-1]*/ 169 return; /*[4.4-1]*/ 170 end; 171 172 /*[4.4-1]*/ 173 slew_ctl.how_much = 1; /*[4.4-1]*/ 174 call lines; 175 176 return; 177 178 end; /* what = 2 */ 179 else if slew_ctl.what = 3 180 then do; /* wants slew to channel */ 181 182 if slew_ctl.how_much < 1 | slew_ctl.how_much > 16 183 then do; /* VFU channels can only be 1-16 */ 184 185 a_code = cmcs_error_table_$bad_call_parm; 186 return; 187 188 end; 189 190 esc_sequence.vfu_chn = slew_ctl.how_much; 191 /* convert to ascii chars */ 192 193 call iox_$put_chars (a_iocb_ptr, addr (esc_sequence), 4, a_code); 194 195 return; 196 197 end; 198 else do; 199 200 a_code = cmcs_error_table_$bad_call_parm; 201 return; 202 203 end; 204 205 end /* put_slew */; 206 207 /*[4.4-1]*/ 208 lines: 209 proc; 210 211 if slew_ctl.how_much = 0 212 then do; /* same as what = 0 */ 213 214 a_code = 0; 215 return; 216 217 end; 218 else if slew_ctl.how_much > 128 219 then do; /* can't handle this */ 220 221 a_code = cmcs_error_table_$bad_call_parm; 222 return; 223 224 end; 225 226 call iox_$put_chars (a_iocb_ptr, addr (NL_string), fixed (slew_ctl.how_much, 21), a_code); 227 228 end; /*[4.4-1]*/ 229 230 end /* cmcs_print_ */; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/24/89 0836.6 cmcs_print_.pl1 >spec>install>MR12.3-1048>cmcs_print_.pl1 60 1 03/27/82 0439.5 cmcs_slew_ctl.incl.pl1 >ldd>include>cmcs_slew_ctl.incl.pl1 61 2 03/27/82 0439.5 cmcs_iox_processing.incl.pl1 >ldd>include>cmcs_iox_processing.incl.pl1 62 3 03/27/82 0439.5 cmcs_error_table_dcls.incl.pl1 >ldd>include>cmcs_error_table_dcls.incl.pl1 63 4 03/27/82 0431.5 cmcs_user_ctl.incl.pl1 >ldd>include>cmcs_user_ctl.incl.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. CR 000103 automatic char(1) packed unaligned dcl 55 set ref 73* 133 133 ESC 000100 automatic char(1) level 2 packed packed unaligned dcl 50 set ref 71* ETX 0(27) 000100 automatic char(1) level 2 packed packed unaligned dcl 50 set ref 72* FF 000102 automatic char(1) packed unaligned dcl 55 set ref 75* 167 167 NL 000101 automatic char(1) packed unaligned dcl 55 set ref 74* 77 84 84 92 92 NL_string 000104 automatic char(128) packed unaligned dcl 57 set ref 77* 226 226 a_buffer_len parameter fixed bin(35,0) dcl 36 ref 24 123 126 126 a_buffer_ptr parameter pointer dcl 36 set ref 24 126* a_code parameter fixed bin(35,0) dcl 36 set ref 24 84* 86 92* 113* 126* 128 133* 147* 167* 185* 193* 200* 214* 221* 226* a_iocb_ptr parameter pointer dcl 36 set ref 24 84* 92* 126* 133* 167* 193* 226* a_slew_ctl_ptr parameter pointer dcl 36 ref 24 69 addr builtin function dcl 45 ref 84 84 92 92 133 133 167 167 193 193 226 226 attach_bit 13(05) based bit(1) level 3 packed packed unaligned dcl 4-17 ref 92 92 164 cmcs_error_table_$bad_call_parm 000014 external static fixed bin(35,0) dcl 3-5 ref 113 185 200 221 control_ptrs 150 based structure level 2 dcl 4-17 copy builtin function dcl 45 ref 77 esc_sequence 000100 automatic structure level 1 packed packed unaligned dcl 50 set ref 193 193 external_user_ctl_ptr 000016 external static pointer dcl 4-13 ref 76 fixed builtin function dcl 45 ref 126 126 226 226 flags 13 based structure level 2 dcl 4-17 how_much 0(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 1-10 set ref 173* 182 182 190 211 218 226 226 iocb_ptr 152 based pointer level 3 dcl 4-17 ref 92 164 iox_$put_chars 000012 constant entry external dcl 2-3 ref 84 92 126 133 167 193 226 null builtin function dcl 45 ref 92 164 slew_ctl based structure level 1 dcl 1-10 slew_ctl_ptr 000144 automatic pointer dcl 1-8 set ref 69* 81 97 104 144 151 160 173 179 182 182 190 211 218 226 226 unspec builtin function dcl 45 set ref 71* 72* 73* 74* 75* user_ctl based structure level 1 dcl 4-17 user_ctl_ptr 000010 internal static pointer dcl 4-15 set ref 76* 92 92 92 164 164 vfu_chn 0(09) 000100 automatic picture(2) level 2 packed packed unaligned dcl 50 set ref 190* what 0(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 1-10 ref 144 151 160 179 when based fixed bin(8,0) level 2 packed packed unaligned dcl 1-10 ref 81 97 104 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. buffer based char packed unaligned dcl 42 cmcs_error_table_$ambiguous_tree_path external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_dest external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_dest_count external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_message_length external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_password external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_queue_path external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_slew external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_source external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_station external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_term_devchn external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_tree_path external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$dest_already_disabled external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$dest_already_enabled external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$dest_disabled external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$no_message external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$no_partial_messages external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$null_partial_message external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$queue_already_disabled external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$queue_already_enabled external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$queue_disabled external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$source_already_disabled external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$source_already_enabled external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$source_disabled external static fixed bin(35,0) dcl 3-5 iox_$attach_iocb 000000 constant entry external dcl 2-3 iox_$attach_name 000000 constant entry external dcl 2-3 iox_$close 000000 constant entry external dcl 2-3 iox_$control 000000 constant entry external dcl 2-3 iox_$delete_record 000000 constant entry external dcl 2-3 iox_$detach_iocb 000000 constant entry external dcl 2-3 iox_$error_output external static pointer dcl 2-25 iox_$find_iocb 000000 constant entry external dcl 2-3 iox_$get_chars 000000 constant entry external dcl 2-3 iox_$get_line 000000 constant entry external dcl 2-3 iox_$modes 000000 constant entry external dcl 2-3 iox_$open 000000 constant entry external dcl 2-3 iox_$position 000000 constant entry external dcl 2-3 iox_$read_key 000000 constant entry external dcl 2-3 iox_$read_length 000000 constant entry external dcl 2-3 iox_$read_record 000000 constant entry external dcl 2-3 iox_$rewrite_record 000000 constant entry external dcl 2-3 iox_$seek_key 000000 constant entry external dcl 2-3 iox_$user_input external static pointer dcl 2-25 iox_$user_io external static pointer dcl 2-25 iox_$user_output external static pointer dcl 2-25 iox_$write_record 000000 constant entry external dcl 2-3 substr builtin function dcl 45 test_sw internal static bit(1) initial packed unaligned dcl 48 user_ctl_exists_sw internal static bit(1) initial dcl 4-11 NAMES DECLARED BY EXPLICIT CONTEXT. cmcs_print_ 000011 constant entry external dcl 24 lines 000361 constant entry internal dcl 208 ref 155 174 put_data 000154 constant entry internal dcl 120 ref 89 100 108 put_slew 000224 constant entry internal dcl 141 ref 101 107 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 510 530 424 520 Length 776 424 20 231 63 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cmcs_print_ 176 external procedure is an external procedure. put_data internal procedure shares stack frame of external procedure cmcs_print_. put_slew internal procedure shares stack frame of external procedure cmcs_print_. lines internal procedure shares stack frame of external procedure cmcs_print_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 user_ctl_ptr cmcs_print_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cmcs_print_ 000100 esc_sequence cmcs_print_ 000101 NL cmcs_print_ 000102 FF cmcs_print_ 000103 CR cmcs_print_ 000104 NL_string cmcs_print_ 000144 slew_ctl_ptr cmcs_print_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac shorten_stack ext_entry repeat set_chars_eis THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. iox_$put_chars THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. cmcs_error_table_$bad_call_parm external_user_ctl_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 24 000004 69 000016 71 000022 72 000024 73 000026 74 000030 75 000032 76 000034 77 000037 81 000050 84 000055 86 000075 89 000100 92 000101 96 000136 97 000137 100 000141 101 000142 103 000143 104 000144 107 000146 108 000147 110 000150 113 000151 117 000153 120 000154 123 000155 126 000160 128 000176 133 000202 135 000223 141 000224 144 000225 147 000232 148 000234 151 000235 155 000237 157 000240 160 000241 164 000243 167 000254 169 000275 173 000276 174 000301 176 000302 179 000303 182 000305 185 000315 186 000321 190 000322 193 000331 195 000353 200 000354 201 000360 208 000361 211 000362 214 000367 215 000371 218 000372 221 000374 222 000400 226 000401 228 000422 ----------------------------------------------------------- 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