COMPILATION LISTING OF SEGMENT bce_exec_com_ Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 1025.2 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 6* * * 7* *********************************************************** */ 8 bce_exec_com_: procedure (ss_info_ptr); 9 10 /* Modified from absentee_listen_ to become bootload Multics exec_com by 11*Keith Loepere, April 1983 */ 12 /* Modified August 1983 by Keith Loepere for new bce switches. */ 13 14 /* format: style4,indattr,ifthenstmt,ifthen,idind33,^indcomtxt */ 15 16 declare (addr, addrel, empty, index, length, ltrim, min, null, reverse, rtrim, search, substr, unspec, verify) 17 builtin; 18 19 declare (cleanup, request_abort_, sub_request_abort_) 20 condition; 21 22 declare arg_count fixed bin, 23 arg_len fixed bin (21), 24 arg_ptr ptr, 25 arg char (arg_len) based (arg_ptr), 26 arg_list_ptr ptr, 27 actual_len fixed bin (21), 28 bce_data$get_line entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)) variable external, 29 1 bce_get_line_entry aligned based (addr (bce_data$get_line)), /* template for an entry variable */ 30 2 proc ptr, 31 2 env ptr, 32 bce_data$get_line_data_ptr ptr external, 33 bce_data$subsys_info_ptr ptr external, 34 bce_data$command_abs_data_ptr ptr external, 35 bce_ready entry (char (*)), 36 ec_file_name char (32), 37 1 my_abs_data aligned like abs_data, 38 old_abs_data_ptr ptr, 39 read_chars char (read_len) based (read_ptr), 40 read_len fixed bin (21), 41 read_ptr ptr, 42 seg_ptr ptr, 43 status fixed bin (35), 44 temp_seg_ptr ptr, 45 whoami char (32), 46 work_len fixed bin (21), 47 work_ptr ptr, 48 work_string char (work_len) based (work_ptr); 49 50 declare 1 ec_info aligned like ec_data; 51 52 declare CP_null_line fixed bin init (100) static options (constant); /* cp_ returns this for null line */ 53 54 declare ( 55 error_table_$badopt, 56 error_table_$badpath, 57 error_table_$end_of_info, 58 error_table_$not_act_fnc, 59 error_table_$unimplemented_version 60 ) fixed bin (35) external, 61 sys_info$max_seg_size fixed bin (18) external; 62 63 declare active_fnc_err_ entry options (variable), 64 bce_check_abort entry, 65 bce_data$exec_com_get_line entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)) variable ext, 66 bce_execute_command_ entry (ptr, char (*), ptr, fixed bin (35)), 67 bootload_fs_$get_ptr entry (char (*), ptr, fixed bin (21), fixed bin (35)), 68 command_processor_$subsys_execute_line entry (char (*), ptr, entry, ptr, char (*), fixed bin (35)), 69 com_err_ entry options (variable), 70 cu_$af_return_arg_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr), 71 cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr), 72 cu_$arg_list_ptr entry () returns (ptr), 73 cu_$generate_call entry (entry, ptr), 74 cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)), 75 get_temp_segment_ entry (char (*), ptr, fixed bin (35)), 76 release_temp_segment_ entry (char (*), ptr, fixed bin (35)); 77 1 1 /* START OF: bce_abs_io_data.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 1 2 /* Stolen and shrunk from abs_io_data by Keith Loepere sometime in '83 */ 1 3 /* Initial coding: 25 June 79 by J. Spencer Love */ 1 4 /* login_channel option flag BIM 11/81 */ 1 5 /* Added this_action and next_action 04/20/82 S. Herbst */ 1 6 /* Added on_info, goto_statement_(pos len) 01/06/83 S. Herbst */ 1 7 /* Added output_file.turn_of_ssw 05/16/83 S. Herbst */ 1 8 /* Added attach.trim_whitespace_sw 06/02/83 S. Herbst */ 1 9 1 10 declare abs_data_ptr ptr; 1 11 1 12 declare 1 abs_data aligned based (abs_data_ptr), 1 13 2 ec_data_ptr ptr, /* -> communication area for exec_com */ 1 14 2 arg_info, /* */ 1 15 3 ec_name_ptr ptr, /* Ptr to allocated &ec_name string */ 1 16 3 ec_name_len fixed bin (21), /* Length of allocated &ec_name string */ 1 17 3 arg_ptr ptr, /* pointer to allocated structure containing args */ 1 18 3 arg_count fixed bin, /* number of arguments passed */ 1 19 2 input_string, /* data about input segment or archive component */ 1 20 3 ptr ptr, /* pointer to input file */ 1 21 3 len fixed bin (21), /* number of characters in input file */ 1 22 3 start fixed bin (21), /* initial value for input_pos, set beyond &version, if any */ 1 23 3 position fixed bin (21), /* current index into input file */ 1 24 3 limit fixed bin (21), /* farthest point yet reached...begin &label search here */ 1 25 /* */ 1 26 2 command_line, /* substructure dealing with tracing command lines */ 1 27 3 on bit (1), /* 1 to print tracing information */ 1 28 3 expand fixed bin (2), /* 1 to print unexpanded, 2 expanded, 3 all, 4 both */ 1 29 2 comment_line like command_line, /* for tracing comments..always unexpanded */ 1 30 2 control_line like command_line, /* for tracing control lines */ 1 31 2 input_line like command_line, /* for tracing input lines in &attach mode */ 1 32 /* */ 1 33 2 attach, /* */ 1 34 3 victim_ptr ptr, /* -> IOCB affected by &attach (usually iox_$user_input */ 1 35 3 target_ptr ptr, /* -> IOCB &attached to (created by exec_com command) */ 1 36 3 save_ptr ptr, /* -> IOCB used to save previous victim_ptr -> IOCB */ 1 37 2 allocated_chars_ptr ptr, /* -> allocated buffer for freeing */ 1 38 2 chars_ptr ptr, /* -> characters in buffer waiting to be returned */ 1 39 2 else_clause_ptr ptr, /* -> characters in deferred else clause */ 1 40 2 allocated_chars_len fixed bin (21), /* total length of allocated buffer */ 1 41 2 chars_len fixed bin (21), /* characters left in buffer to be returned */ 1 42 2 else_clause_len fixed bin (21), /* length of deferred else clause */ 1 43 /* */ 1 44 2 active bit (1), /* 1 indicates get_line is busy, for recursion check */ 1 45 2 eof bit (1), /* 1 indicates &quit found or no more input */ 1 46 2 nest_level fixed bin, /* V1: depth of &if-&then-&else nesting */ 1 47 2 expected_nest_level fixed bin, /* V1: depth that must be reached to resume execution */ 1 48 /* */ 1 49 2 goto_statement_pos fixed bin (21), /* position of last &goto stmt, for error msgs */ 1 50 2 goto_statement_len fixed bin (21), /* length of the &goto stmt */ 1 51 1 52 2 if_info aligned, /* &if-&then-&else nesting info */ 1 53 3 if_sw bit (1), /* ON if inside an &if-&then-&else construct */ 1 54 3 true_sw bit (1), /* ON after "&if true" */ 1 55 3 got_then_sw bit (1), /* ON after the &then has been seen */ 1 56 3 got_else_sw bit (1), /* ON after the &else has been seen */ 1 57 3 clause_type fixed bin, /* previous &then or &else */ 1 58 3 skip_sw bit (1), /* ON if skipping a &then or &else clause */ 1 59 3 skip_block_level fixed bin, /* how many levels of &do we are inside while skipping */ 1 60 3 prev_if_ptr ptr, /* ptr to if_info (saved) of &if we are nested inside */ 1 61 3 this_action fixed bin, /* copy of expand_data.this_statement.action */ 1 62 3 next_action fixed bin, /* copy of expand_data.next_statement.action */ 1 63 2 labels_ptr ptr, /* hash table ptr for label hash table */ 1 64 2 work_area_ptr ptr, /* area for args, etc. */ 1 65 2 work_area_len fixed bin; 1 66 1 67 declare abs_data_work_area area (abs_data.work_area_len) based (abs_data.work_area_ptr); 1 68 1 69 declare abs_data_version_1 fixed bin static options (constant) initial (1), 1 70 Work_area_size fixed bin static options (constant) initial (800); 1 71 1 72 dcl (UNEXPANDED init (1), EXPANDED init (2), ALL init (3), BOTH init (4)) 1 73 fixed bin int static options (constant); 1 74 1 75 /* END OF: bce_abs_io_data.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 78 79 2 1 /* Begin include file bce_subsystem_info_.incl.pl1 BIM 11/82 */ 2 2 2 3 /* format: style3 */ 2 4 2 5 /* Deleted unused items, Keith Loepere, 5/84 */ 2 6 2 7 2 8 /****^ HISTORY COMMENTS: 2 9* 1) change(86-04-22,Farley), approve(86-07-18,MCR7439), 2 10* audit(86-10-08,Fawcett), install(86-10-20,MR12.0-1189): 2 11* Added request_handling_opr_aborts flag for save/restore. 2 12* END HISTORY COMMENTS */ 2 13 2 14 declare ss_info_ptr pointer; 2 15 declare 1 ss_info aligned based (ss_info_ptr), 2 16 2 request_table_ptr 2 17 pointer, 2 18 2 abort_label label, 2 19 2 name char (32) unaligned, 2 20 2 arg_list_ptr pointer, 2 21 2 info_ptr pointer, 2 22 2 flags aligned, 2 23 3 forbid_semicolons bit (1) unaligned, 2 24 3 request_handling_opr_aborts bit (1) unaligned; 2 25 2 26 /* End include file bce_subsystem_info_ */ 80 81 3 1 /* START OF: ec_data.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 3 2 3 3 declare ec_data_ptr ptr; 3 4 3 5 declare 1 ec_data aligned based (ec_data_ptr), 3 6 2 version_id char (4), /* " ec " */ 3 7 2 version fixed bin, /* 1 */ 3 8 2 active_function bit (1), /* This affects &is_af and &return */ 3 9 2 return_len fixed bin (21), /* maximum length and pointer to varying character string */ 3 10 2 return_ptr ptr, /* for active function return value */ 3 11 2 execute_line entry (ptr, fixed bin (21), fixed bin (35)), 3 12 2 eval_string entry (ptr, char (*), fixed bin, char (*) var, fixed bin (35)), 3 13 2 set_ready_mode entry (1 aligned, 2 bit (1) unal, 2 bit (35) unal), 3 14 2 error entry () options (variable), 3 15 2 switch_ptr ptr, /* switch affected by &attach */ 3 16 2 id_string char (19), /* name string for &attach save switch should contain this */ 3 17 2 input_line bit (1), /* this makes the command_line/input_line distinction */ 3 18 2 call_ready_proc bit (1), /* this implements the &ready_proc keyword */ 3 19 2 who_am_i char (72) varying; /* for error messages. It's 72 chars for subsystem requests */ 3 20 3 21 declare ec_data_version_id char (4) aligned static options (constant) initial (" ec "), 3 22 ec_data_version_1 fixed bin static options (constant) initial (1); 3 23 3 24 /* END OF: ec_data.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 82 83 84 old_abs_data_ptr = bce_data$command_abs_data_ptr; 85 86 call initialize_ec_info (); 87 88 ec_info.who_am_i, whoami = "exec_com"; 89 90 call check_arg_list (ss_info.arg_list_ptr); 91 92 if arg_count < 1 then do; 93 if ec_info.active_function 94 then call active_fnc_err_ (0, whoami, "Usage: [ec path {args}]"); 95 else do; 96 call com_err_ (0, whoami, "Usage: ec path {args}"); 97 signal request_abort_; 98 end; 99 go to EGRESS; 100 end; 101 102 on cleanup call clean_up (); 103 104 call get_temp_segment_ ((ec_info.who_am_i), temp_seg_ptr, status); 105 if status ^= 0 then call complain (status, ec_info.who_am_i, "Getting temp segment."); 106 107 call cu_$arg_ptr_rel (1, arg_ptr, arg_len, status, ss_info.arg_list_ptr); 108 if status ^= 0 then call complain (status, ec_info.who_am_i, "Getting first argument."); 109 110 if substr (arg, 1, min (arg_len, 1)) = "-" 111 then call complain (error_table_$badopt, ec_info.who_am_i, "^a", arg); 112 begin; 113 declare 1 args (arg_count - 1) aligned, 114 2 ptr ptr, 115 2 len fixed bin (21), 116 2 quotes fixed bin (21); 117 118 call attach_ec (find_ec ()); 119 120 if ec_info.active_function then ec_info.call_ready_proc = "0"b; 121 status = CP_null_line; /* Suppress initial call to ready proc */ 122 123 /* The following routine reads lines from the input file and passes them on to the command processor. It communicates 124* with bce_exec_com_input through the attach_data block (found by bce_data$command_abs_data_ptr) in order to determine 125* when command vs. input lines are being read and what the ready mode is. */ 126 127 do while ("1"b); 128 if ec_info.call_ready_proc & status ^= CP_null_line then call invoke_ready_procedure (); 129 130 ec_info.input_line = "0"b; 131 132 read_ptr, work_ptr = temp_seg_ptr; 133 read_len = 4096; /* 1st page */ 134 work_len = 0; 135 do while (status ^= 0 | work_len = 0); 136 on sub_request_abort_ go to EGRESS; 137 call bce_check_abort; 138 call bce_data$exec_com_get_line (addr (bce_data$exec_com_get_line), addr (read_chars), length (read_chars), actual_len, status); 139 revert sub_request_abort_; 140 work_len = work_len + actual_len; 141 if status ^= 0 then 142 if status = error_table_$end_of_info then 143 if work_len = 0 then go to EGRESS; /* I don't know if this is exactly legal, and I know that */ 144 else status = 0; /* bce_exec_com_input wont do this, but if there is a partial line... */ 145 else do; 146 call com_err_ (status, ec_info.who_am_i, "Error while reading command line."); 147 signal request_abort_; 148 end; 149 end; 150 151 ec_info.input_line = "1"b; /* anything read after this point is an input line */ 152 153 on request_abort_ go to EGRESS; 154 on sub_request_abort_ go to EGRESS; 155 call command_processor_$subsys_execute_line ("bce", bce_data$subsys_info_ptr, bce_execute_command_, null (), work_string, status); 156 if status ^= 0 then 157 if status ^= CP_null_line then call com_err_ (status, whoami); 158 revert request_abort_; 159 revert sub_request_abort_; 160 end; 161 go to EGRESS; 162 163 invoke_ready_procedure: 164 procedure (); 165 166 call bce_ready ("bce (ec)"); 167 return; 168 169 end invoke_ready_procedure; 170 171 attach_ec: 172 procedure (pathname); 173 174 declare NL char (1) static options (constant) init (" 175 "); 176 declare WHITE char (5) static options (constant) initial (" 177 "); /* FF VT NL TAB SPACE */ 178 declare arg_num fixed bin; 179 declare idx fixed bin (21); 180 declare input_file char (abs_data.input_string.len) based (abs_data.input_string.ptr); 181 declare pathname char (*); 182 183 whoami = "exec_com"; 184 185 abs_data_ptr = addr (my_abs_data); 186 187 unspec (abs_data) = "0"b; 188 189 abs_data.allocated_chars_ptr = addrel (temp_seg_ptr, 1024); 190 abs_data.allocated_chars_len = 4096; /* 2nd page */ 191 abs_data.work_area_ptr = addrel (temp_seg_ptr, 2048); /* rest */ 192 abs_data.work_area_len = sys_info$max_seg_size - 2048; 193 abs_data_work_area = empty (); 194 195 abs_data.arg_info.arg_ptr, abs_data.input_string.ptr, abs_data.ec_data_ptr = null (); 196 abs_data.else_clause_ptr, abs_data.chars_ptr = null (); 197 abs_data.attach.save_ptr, abs_data.attach.victim_ptr = null (); 198 abs_data.labels_ptr = null (); 199 abs_data.arg_info.ec_name_ptr = null (); 200 201 call initiate_input_path (pathname); 202 203 /* Determine version of input file */ 204 205 if substr (input_file, 1, min (8, abs_data.input_string.len)) ^= "&version" | search (input_file, WHITE) ^= 9 206 then do; 207 abs_data.input_string.start, abs_data.input_string.limit = 0; 208 end; 209 else do; 210 idx = index (substr (input_file, 9), NL); 211 if idx = 0 212 then call complain (error_table_$unimplemented_version, whoami, "Newline must end &version statement."); 213 if verify (substr (input_file, 9, idx - 1), WHITE) = 0 214 then call complain (error_table_$unimplemented_version, whoami, 215 "No version given in &version statement."); 216 if status ^= 0 | cv_dec_check_ (ltrim (rtrim (substr (input_file, 10, idx - 2), WHITE), WHITE), status) ^= 1 /* only version */ 217 then call complain (error_table_$unimplemented_version, whoami, "&version ""^a""", 218 substr (input_file, 10, idx - 2)); 219 abs_data.input_string.start, abs_data.input_string.limit = idx + 8; 220 end; 221 222 223 224 225 /* ATTACH HERE */ 226 227 228 abs_data.comment_line.on, abs_data.control_line.on = "0"b; /* implement tracing defaults */ 229 if ec_info.active_function then abs_data.command_line.on, abs_data.input_line.on = "0"b; 230 else abs_data.command_line.on, abs_data.input_line.on = "1"b; 231 232 abs_data.active, abs_data.eof = "0"b; 233 unspec (abs_data.if_info) = "0"b; 234 abs_data.chars_ptr, abs_data.else_clause_ptr = null (); 235 abs_data.nest_level, abs_data.expected_nest_level = 0; 236 abs_data.chars_len, abs_data.else_clause_len = 0; 237 abs_data.input_string.position = abs_data.input_string.start; 238 239 abs_data.ec_data_ptr = addr (ec_info); 240 241 abs_data.arg_ptr = addr (args); 242 abs_data.arg_count = arg_count - 1; 243 do arg_num = 2 to arg_count; 244 call cu_$arg_ptr_rel (arg_num, args (arg_num - 1).ptr, args (arg_num - 1).len, status, arg_list_ptr); 245 args (arg_num - 1).quotes = -1; 246 end; 247 bce_data$command_abs_data_ptr = abs_data_ptr; 248 return; 249 250 end attach_ec; 251 252 find_ec: 253 procedure () returns (char (*)); 254 255 declare (index, reverse, rtrim) builtin; 256 257 declare pathname char (32) varying; 258 259 pathname = arg; 260 261 if index (reverse (rtrim (pathname)), "ce.") ^= 1 then pathname = rtrim (pathname) || ".ec"; 262 263 return (pathname); 264 265 end find_ec; 266 267 initiate_input_path: 268 procedure (file_name); 269 270 declare file_name char (*) parameter, 271 input_entry_len fixed bin (21); 272 273 call bootload_fs_$get_ptr (file_name, abs_data.input_string.ptr, abs_data.input_string.len, status); 274 if abs_data.input_string.ptr = null () 275 then call complain (status, whoami, "Input file: ^a", file_name); 276 277 /* Fill in &ec_name (&0) */ 278 279 input_entry_len = length (rtrim (file_name)); 280 281 abs_data.ec_name_ptr = addr (ec_file_name); 282 substr (ec_file_name, 1, input_entry_len) = substr (file_name, 1, input_entry_len); 283 284 abs_data.ec_name_len = input_entry_len - index (reverse (substr (file_name, 1, input_entry_len)), "."); 285 if abs_data.ec_name_len = 0 then call complain (error_table_$badpath, whoami); 286 return; 287 288 end initiate_input_path; 289 end; /* begin block */ 290 291 EGRESS: 292 call clean_up (); 293 return; 294 295 initialize_ec_info: 296 procedure (); 297 298 seg_ptr = null (); 299 300 ec_info.active_function = "0"b; 301 ec_info.return_len = 0; 302 ec_info.return_ptr = null (); 303 ec_info.input_line = "1"b; 304 ec_info.call_ready_proc = "0"b; 305 return; 306 307 end initialize_ec_info; 308 309 check_arg_list: 310 procedure (P_arg_list_ptr); 311 312 declare P_arg_list_ptr ptr; 313 314 arg_list_ptr = P_arg_list_ptr; 315 316 call cu_$af_return_arg_rel (arg_count, ec_info.return_ptr, ec_info.return_len, status, arg_list_ptr); 317 if status = 0 then ec_info.active_function = "1"b; 318 else if status ^= error_table_$not_act_fnc 319 then call complain (status, ec_info.who_am_i, "Getting argument list."); 320 321 return; 322 323 end check_arg_list; 324 325 clean_up: 326 procedure (); 327 328 if bce_data$command_abs_data_ptr ^= old_abs_data_ptr then do; 329 if bce_data$command_abs_data_ptr = bce_data$get_line_data_ptr then do; /* &attach in effect */ 330 bce_get_line_entry.env = null (); 331 bce_get_line_entry.proc = bce_data$command_abs_data_ptr -> abs_data.victim_ptr; 332 bce_data$get_line_data_ptr = bce_data$command_abs_data_ptr -> abs_data.save_ptr; 333 end; /* now &detach'ed */ 334 335 bce_data$command_abs_data_ptr = old_abs_data_ptr; 336 end; 337 if temp_seg_ptr ^= null then call release_temp_segment_ ((ec_info.who_am_i), temp_seg_ptr, status); 338 return; 339 340 end clean_up; 341 342 complain: 343 procedure () options (variable); 344 345 declare arg_list_ptr ptr; 346 347 arg_list_ptr = cu_$arg_list_ptr (); 348 349 if ec_info.active_function then call cu_$generate_call (active_fnc_err_, arg_list_ptr); 350 else call cu_$generate_call (com_err_, arg_list_ptr); 351 352 go to EGRESS; 353 354 end complain; 355 end bce_exec_com_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0826.1 bce_exec_com_.pl1 >special_ldd>install>MR12.3-1114>bce_exec_com_.pl1 78 1 07/11/84 0937.3 bce_abs_io_data.incl.pl1 >ldd>include>bce_abs_io_data.incl.pl1 80 2 10/21/86 1251.6 bce_subsystem_info_.incl.pl1 >ldd>include>bce_subsystem_info_.incl.pl1 82 3 04/13/82 1620.2 ec_data.incl.pl1 >ldd>include>ec_data.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. CP_null_line constant fixed bin(17,0) initial dcl 52 ref 121 128 156 NL constant char(1) initial packed unaligned dcl 174 ref 210 P_arg_list_ptr parameter pointer dcl 312 ref 309 314 WHITE 000000 constant char(5) initial packed unaligned dcl 176 ref 205 213 216 216 216 216 abs_data based structure level 1 dcl 1-12 set ref 187* abs_data_ptr 000346 automatic pointer dcl 1-10 set ref 185* 187 189 190 191 192 193 193 195 195 195 196 196 197 197 198 199 205 205 205 205 205 207 207 210 210 213 213 216 216 216 216 216 216 216 216 219 219 228 228 229 229 230 230 232 232 233 234 234 235 235 236 236 237 237 239 241 242 247 273 273 274 281 284 285 abs_data_work_area based area dcl 1-67 set ref 193* active 47 based bit(1) level 2 dcl 1-12 set ref 232* active_fnc_err_ 000036 constant entry external dcl 63 ref 93 349 349 active_function 2 000264 automatic bit(1) level 2 dcl 50 set ref 93 120 229 300* 317* 349 actual_len 000122 automatic fixed bin(21,0) dcl 22 set ref 138* 140 addr builtin function dcl 16 ref 138 138 138 138 185 239 241 281 330 331 addrel builtin function dcl 16 ref 189 191 allocated_chars_len 44 based fixed bin(21,0) level 2 dcl 1-12 set ref 190* allocated_chars_ptr 36 based pointer level 2 dcl 1-12 set ref 189* arg based char packed unaligned dcl 22 set ref 110 110* 259 arg_count 10 based fixed bin(17,0) level 3 in structure "abs_data" dcl 1-12 in procedure "bce_exec_com_" set ref 242* arg_count 000114 automatic fixed bin(17,0) dcl 22 in procedure "bce_exec_com_" set ref 92 113 242 243 316* arg_info 2 based structure level 2 dcl 1-12 arg_len 000115 automatic fixed bin(21,0) dcl 22 set ref 107* 110 110 110 110 259 arg_list_ptr 000100 automatic pointer dcl 345 in procedure "complain" set ref 347* 349* 350* arg_list_ptr 16 based pointer level 2 in structure "ss_info" dcl 2-15 in procedure "bce_exec_com_" set ref 90* 107* arg_list_ptr 000120 automatic pointer dcl 22 in procedure "bce_exec_com_" set ref 244* 314* 316* arg_num 000100 automatic fixed bin(17,0) dcl 178 set ref 243* 244* 244 244 245* arg_ptr 6 based pointer level 3 in structure "abs_data" dcl 1-12 in procedure "bce_exec_com_" set ref 195* 241* arg_ptr 000116 automatic pointer dcl 22 in procedure "bce_exec_com_" set ref 107* 110 110 259 args 000100 automatic structure array level 1 dcl 113 set ref 241 attach 30 based structure level 2 dcl 1-12 bce_check_abort 000040 constant entry external dcl 63 ref 137 bce_data$command_abs_data_ptr 000016 external static pointer dcl 22 set ref 84 247* 328 329 331 332 335* bce_data$exec_com_get_line 000042 external static entry variable dcl 63 set ref 138 138 138 bce_data$get_line 000010 external static entry variable dcl 22 set ref 330 331 bce_data$get_line_data_ptr 000012 external static pointer dcl 22 set ref 329 332* bce_data$subsys_info_ptr 000014 external static pointer dcl 22 set ref 155* bce_execute_command_ 000044 constant entry external dcl 63 ref 155 155 bce_get_line_entry based structure level 1 dcl 22 bce_ready 000020 constant entry external dcl 22 ref 166 bootload_fs_$get_ptr 000046 constant entry external dcl 63 ref 273 call_ready_proc 36 000264 automatic bit(1) level 2 dcl 50 set ref 120* 128 304* chars_len 45 based fixed bin(21,0) level 2 dcl 1-12 set ref 236* chars_ptr 40 based pointer level 2 dcl 1-12 set ref 196* 234* cleanup 000100 stack reference condition dcl 19 ref 102 com_err_ 000052 constant entry external dcl 63 ref 96 146 156 350 350 command_line 20 000134 automatic structure level 2 in structure "my_abs_data" dcl 22 in procedure "bce_exec_com_" command_line 20 based structure level 2 in structure "abs_data" dcl 1-12 in procedure "bce_exec_com_" command_processor_$subsys_execute_line 000050 constant entry external dcl 63 ref 155 comment_line 22 based structure level 2 dcl 1-12 control_line 24 based structure level 2 dcl 1-12 cu_$af_return_arg_rel 000054 constant entry external dcl 63 ref 316 cu_$arg_list_ptr 000060 constant entry external dcl 63 ref 347 cu_$arg_ptr_rel 000056 constant entry external dcl 63 ref 107 244 cu_$generate_call 000062 constant entry external dcl 63 ref 349 350 cv_dec_check_ 000064 constant entry external dcl 63 ref 216 ec_data based structure level 1 dcl 3-5 ec_data_ptr based pointer level 2 dcl 1-12 set ref 195* 239* ec_file_name 000123 automatic char(32) packed unaligned dcl 22 set ref 281 282* ec_info 000264 automatic structure level 1 dcl 50 set ref 239 ec_name_len 4 based fixed bin(21,0) level 3 dcl 1-12 set ref 284* 285 ec_name_ptr 2 based pointer level 3 dcl 1-12 set ref 199* 281* else_clause_len 46 based fixed bin(21,0) level 2 dcl 1-12 set ref 236* else_clause_ptr 42 based pointer level 2 dcl 1-12 set ref 196* 234* empty builtin function dcl 16 ref 193 env 2 based pointer level 2 dcl 22 set ref 330* eof 50 based bit(1) level 2 dcl 1-12 set ref 232* error_table_$badopt 000022 external static fixed bin(35,0) dcl 54 set ref 110* error_table_$badpath 000024 external static fixed bin(35,0) dcl 54 set ref 285* error_table_$end_of_info 000026 external static fixed bin(35,0) dcl 54 ref 141 error_table_$not_act_fnc 000030 external static fixed bin(35,0) dcl 54 ref 318 error_table_$unimplemented_version 000032 external static fixed bin(35,0) dcl 54 set ref 211* 213* 216* expected_nest_level 52 based fixed bin(17,0) level 2 dcl 1-12 set ref 235* file_name parameter char packed unaligned dcl 270 set ref 267 273* 274* 279 282 284 get_temp_segment_ 000066 constant entry external dcl 63 ref 104 idx 000101 automatic fixed bin(21,0) dcl 179 set ref 210* 211 213 216 216 216 216 219 if_info 56 based structure level 2 dcl 1-12 set ref 233* index builtin function dcl 16 in procedure "bce_exec_com_" ref 210 284 index builtin function dcl 255 in procedure "find_ec" ref 261 input_entry_len 000112 automatic fixed bin(21,0) dcl 270 set ref 279* 282 282 284 284 input_file based char packed unaligned dcl 180 ref 205 205 210 213 216 216 216 216 input_line 26 based structure level 2 in structure "abs_data" dcl 1-12 in procedure "bce_exec_com_" input_line 35 000264 automatic bit(1) level 2 in structure "ec_info" dcl 50 in procedure "bce_exec_com_" set ref 130* 151* 303* input_string 12 based structure level 2 dcl 1-12 labels_ptr 72 based pointer level 2 dcl 1-12 set ref 198* len 2 000100 automatic fixed bin(21,0) array level 2 in structure "args" dcl 113 in begin block on line 112 set ref 244* len 14 based fixed bin(21,0) level 3 in structure "abs_data" dcl 1-12 in procedure "bce_exec_com_" set ref 205 205 205 210 213 216 216 216 216 273* length builtin function dcl 16 ref 138 138 279 limit 17 based fixed bin(21,0) level 3 dcl 1-12 set ref 207* 219* ltrim builtin function dcl 16 ref 216 216 min builtin function dcl 16 ref 110 205 my_abs_data 000134 automatic structure level 1 dcl 22 set ref 185 nest_level 51 based fixed bin(17,0) level 2 dcl 1-12 set ref 235* null builtin function dcl 16 ref 155 155 195 196 197 198 199 234 274 298 302 330 337 old_abs_data_ptr 000234 automatic pointer dcl 22 set ref 84* 328 335 on 26 based bit(1) level 3 in structure "abs_data" dcl 1-12 in procedure "bce_exec_com_" set ref 229* 230* on 20 based bit(1) level 3 in structure "abs_data" dcl 1-12 in procedure "bce_exec_com_" set ref 229* 230* on 24 based bit(1) level 3 in structure "abs_data" dcl 1-12 in procedure "bce_exec_com_" set ref 228* on 22 based bit(1) level 3 in structure "abs_data" dcl 1-12 in procedure "bce_exec_com_" set ref 228* pathname 000100 automatic varying char(32) dcl 257 in procedure "find_ec" set ref 259* 261 261* 261 263 pathname parameter char packed unaligned dcl 181 in procedure "attach_ec" set ref 171 201* position 16 based fixed bin(21,0) level 3 dcl 1-12 set ref 237* proc based pointer level 2 dcl 22 set ref 331* ptr 12 based pointer level 3 in structure "abs_data" dcl 1-12 in procedure "bce_exec_com_" set ref 195* 205 205 210 213 216 216 216 216 273* 274 ptr 000100 automatic pointer array level 2 in structure "args" dcl 113 in begin block on line 112 set ref 244* quotes 3 000100 automatic fixed bin(21,0) array level 2 dcl 113 set ref 245* read_chars based char packed unaligned dcl 22 set ref 138 138 138 138 read_len 000236 automatic fixed bin(21,0) dcl 22 set ref 133* 138 138 138 138 read_ptr 000240 automatic pointer dcl 22 set ref 132* 138 138 138 138 release_temp_segment_ 000070 constant entry external dcl 63 ref 337 request_abort_ 000106 stack reference condition dcl 19 ref 97 147 153 158 return_len 3 000264 automatic fixed bin(21,0) level 2 dcl 50 set ref 301* 316* return_ptr 4 000264 automatic pointer level 2 dcl 50 set ref 302* 316* reverse builtin function dcl 16 in procedure "bce_exec_com_" ref 284 reverse builtin function dcl 255 in procedure "find_ec" ref 261 rtrim builtin function dcl 255 in procedure "find_ec" ref 261 261 rtrim builtin function dcl 16 in procedure "bce_exec_com_" ref 216 216 279 save_ptr 34 based pointer level 3 dcl 1-12 set ref 197* 332 search builtin function dcl 16 ref 205 seg_ptr 000242 automatic pointer dcl 22 set ref 298* ss_info based structure level 1 dcl 2-15 ss_info_ptr parameter pointer dcl 2-14 ref 8 90 107 start 15 based fixed bin(21,0) level 3 dcl 1-12 set ref 207* 219* 237 status 000244 automatic fixed bin(35,0) dcl 22 set ref 104* 105 105* 107* 108 108* 121* 128 135 138* 141 141 144* 146* 155* 156 156 156* 216 216* 244* 273* 274* 316* 317 318 318* 337* sub_request_abort_ 000000 stack reference condition dcl 19 ref 136 139 154 159 substr builtin function dcl 16 set ref 110 205 210 213 216 216 216 216 282* 282 284 sys_info$max_seg_size 000034 external static fixed bin(18,0) dcl 54 ref 192 temp_seg_ptr 000246 automatic pointer dcl 22 set ref 104* 132 189 191 337 337* unspec builtin function dcl 16 set ref 187* 233* verify builtin function dcl 16 ref 213 victim_ptr 30 based pointer level 3 dcl 1-12 set ref 197* 331 who_am_i 37 000264 automatic varying char(72) level 2 dcl 50 set ref 88* 104 105* 108* 110* 146* 318* 337 whoami 000250 automatic char(32) packed unaligned dcl 22 set ref 88* 93* 96* 156* 183* 211* 213* 216* 274* 285* work_area_len 76 based fixed bin(17,0) level 2 dcl 1-12 set ref 192* 193 work_area_ptr 74 based pointer level 2 dcl 1-12 set ref 191* 193 work_len 000260 automatic fixed bin(21,0) dcl 22 set ref 134* 135 140* 140 141 155 155 work_ptr 000262 automatic pointer dcl 22 set ref 132* 155 work_string based char packed unaligned dcl 22 set ref 155* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ALL internal static fixed bin(17,0) initial dcl 1-72 BOTH internal static fixed bin(17,0) initial dcl 1-72 EXPANDED internal static fixed bin(17,0) initial dcl 1-72 UNEXPANDED internal static fixed bin(17,0) initial dcl 1-72 Work_area_size internal static fixed bin(17,0) initial dcl 1-69 abs_data_version_1 internal static fixed bin(17,0) initial dcl 1-69 ec_data_ptr automatic pointer dcl 3-3 ec_data_version_1 internal static fixed bin(17,0) initial dcl 3-21 ec_data_version_id internal static char(4) initial dcl 3-21 NAMES DECLARED BY EXPLICIT CONTEXT. EGRESS 002111 constant label dcl 291 ref 99 136 141 153 154 161 352 attach_ec 001106 constant entry internal dcl 171 ref 118 bce_exec_com_ 000164 constant entry external dcl 8 check_arg_list 002130 constant entry internal dcl 309 ref 90 clean_up 002211 constant entry internal dcl 325 ref 102 291 complain 002303 constant entry internal dcl 342 ref 105 108 110 211 213 216 274 285 318 find_ec 001624 constant entry internal dcl 252 ref 118 initialize_ec_info 002116 constant entry internal dcl 295 ref 86 initiate_input_path 001720 constant entry internal dcl 267 ref 201 invoke_ready_procedure 001070 constant entry internal dcl 163 ref 128 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3404 3476 2763 3414 Length 4006 2763 72 273 420 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME bce_exec_com_ 332 external procedure is an external procedure. on unit on line 102 64 on unit begin block on line 112 162 begin block uses auto adjustable storage, and enables or reverts conditions. on unit on line 136 64 on unit on unit on line 153 64 on unit on unit on line 154 64 on unit invoke_ready_procedure internal procedure shares stack frame of begin block on line 112. attach_ec 192 internal procedure is called during a stack extension. find_ec 74 internal procedure uses returns(char(*)) or returns(bit(*)). initiate_input_path internal procedure shares stack frame of internal procedure attach_ec. initialize_ec_info internal procedure shares stack frame of external procedure bce_exec_com_. check_arg_list internal procedure shares stack frame of external procedure bce_exec_com_. clean_up 82 internal procedure is called by several nonquick procedures. complain 76 internal procedure is called during a stack extension, and is declared options(variable). STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME attach_ec 000100 arg_num attach_ec 000101 idx attach_ec 000112 input_entry_len initiate_input_path bce_exec_com_ 000114 arg_count bce_exec_com_ 000115 arg_len bce_exec_com_ 000116 arg_ptr bce_exec_com_ 000120 arg_list_ptr bce_exec_com_ 000122 actual_len bce_exec_com_ 000123 ec_file_name bce_exec_com_ 000134 my_abs_data bce_exec_com_ 000234 old_abs_data_ptr bce_exec_com_ 000236 read_len bce_exec_com_ 000240 read_ptr bce_exec_com_ 000242 seg_ptr bce_exec_com_ 000244 status bce_exec_com_ 000246 temp_seg_ptr bce_exec_com_ 000250 whoami bce_exec_com_ 000260 work_len bce_exec_com_ 000262 work_ptr bce_exec_com_ 000264 ec_info bce_exec_com_ 000346 abs_data_ptr bce_exec_com_ begin block on line 112 000100 args begin block on line 112 complain 000100 arg_list_ptr complain find_ec 000100 pathname find_ec THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_char_temp enter_begin_block call_ent_var call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac tra_ext_1 alloc_auto_adj signal_op enable_op shorten_stack ext_entry int_entry int_entry_desc set_chars_eis return_chars_eis op_empty_ ix_rev_chars THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. active_fnc_err_ bce_check_abort bce_execute_command_ bce_ready bootload_fs_$get_ptr com_err_ command_processor_$subsys_execute_line cu_$af_return_arg_rel cu_$arg_list_ptr cu_$arg_ptr_rel cu_$generate_call cv_dec_check_ get_temp_segment_ release_temp_segment_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bce_data$command_abs_data_ptr bce_data$exec_com_get_line bce_data$get_line bce_data$get_line_data_ptr bce_data$subsys_info_ptr error_table_$badopt error_table_$badpath error_table_$end_of_info error_table_$not_act_fnc error_table_$unimplemented_version sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 8 000161 84 000171 86 000174 88 000175 90 000204 92 000215 93 000220 96 000250 97 000275 99 000300 102 000301 104 000323 105 000354 107 000402 108 000426 110 000453 112 000516 113 000521 118 000530 120 000550 121 000555 127 000557 128 000560 130 000567 132 000571 133 000574 134 000576 135 000577 136 000605 137 000624 138 000631 139 000657 140 000660 141 000663 144 000675 146 000700 147 000723 149 000726 151 000727 153 000731 154 000750 155 000767 156 001037 158 001061 159 001062 160 001063 161 001064 289 001067 163 001070 166 001071 167 001104 171 001105 183 001121 185 001126 187 001130 189 001133 190 001136 191 001140 192 001143 193 001146 195 001147 196 001156 197 001161 198 001164 199 001166 201 001167 205 001201 207 001232 208 001234 210 001235 211 001250 213 001276 216 001343 219 001502 228 001512 229 001514 230 001521 232 001524 233 001526 234 001531 235 001534 236 001536 237 001540 239 001542 241 001544 242 001547 243 001552 244 001561 245 001604 246 001613 247 001615 248 001622 252 001623 259 001631 261 001644 263 001707 267 001720 273 001731 274 001763 279 002025 281 002042 282 002051 284 002055 285 002071 286 002110 291 002111 293 002115 295 002116 298 002117 300 002121 301 002122 302 002123 303 002124 304 002126 305 002127 309 002130 314 002132 316 002135 317 002154 318 002161 321 002207 325 002210 328 002216 329 002223 330 002227 331 002232 332 002236 335 002242 337 002244 338 002300 342 002302 347 002310 349 002316 350 002337 352 002354 ----------------------------------------------------------- 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