COMPILATION LISTING OF SEGMENT absentee_listen_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/04/88 1312.5 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* *********************************************************** */ 8 9 10 11 /****^ HISTORY COMMENTS: 12* 1) change(86-03-13,Herbst), approve(86-04-17,MCR7376), 13* audit(86-04-17,Kissel), install(86-04-22,MR12.0-1041): 14* Fixed bug where &goto from &on unit was not resetting auto_in_handler_sw. 15* 2) change(87-02-20,Parisek), approve(87-07-23,MCR7716), 16* audit(87-08-07,Fawcett), install(87-08-11,MR12.1-1080): 17* If caller of exec_com_ is call_ec_ then turn on the exec_com_info.noabort 18* flag for subsequent notification to subroutines to not abort after an 19* ec severity 1 error. 20* 3) change(88-08-08,TLNguyen), approve(88-08-08,MCR7934), 21* audit(88-08-26,Parisek), install(88-09-16,MR12.2-1111): 22* Make the &exit statement and the &goto LABEL statement constructed within 23* the &on unit work as documented. 24* 4) change(88-09-29,TLNguyen), approve(88-09-29,PBF7934), 25* audit(88-09-29,Parisek), install(88-10-04,MR12.2-1128): 26* Add the local turned_on_in_handler_sw flag in the invoke_handler 27* internal procedure. This flag is used to control how 28* abs_data.in_handler_sw gets set/reset based on its current state 29* (ie, ON if OFF; OFF if ON). Remove setting/resetting of 30* abs_data.in_handler_sw within the any_other handler. 31* END HISTORY COMMENTS */ 32 33 34 /* format: off */ 35 36 absentee_listen_: 37 procedure (P_initial_command_line); 38 39 /* Initial coding: 25 June 1979 by J. Spencer Love */ 40 /* Modified: 8 June 1980 by J. Spencer Love for exec_com_ and absentee_listen_ */ 41 /* Added get_ec_version_ 07/28/81 S. Herbst */ 42 /* Modified for new abs_io_, April 1982, E. N. Kittlitz */ 43 /* Fixed get_ec_version_ to use uniquely-named IO switch 05/24/82 S. Herbst */ 44 /* Changed wording of "not found using search list" message 07/26/82 S. Herbst */ 45 /* Added $execute_handler and code to execute an &on unit 01/06/83 S. Herbst */ 46 /* Fixed to turn off ec_data.input_line while executing handler 06/03/83 S. Herbst */ 47 /* Fixed so that all entry points initialize "initialized" and "state" 10/05/83 S. Herbst */ 48 /* Fixed to do a PL/1 nonlocal goto to parent ec's stack frame for &goto inside an &on unit 11/17/83 S. Herbst */ 49 /* Fixed get_ec_version_ to return the right character position 11/30/83 S. Herbst */ 50 /* Changed to support exec_com command control args -trace, -no_trace, -trace_default 03/22/84 S. Herbst */ 51 /* Fixed $exec_com to initialize exec_com_info_ptr to null 08/10/84 S. Herbst */ 52 /* Fixed $absentee_listen_ to set ec_info.switch_ptr = iox_$user_io instead of null 09/17/84 Steve Herbst */ 53 /* Fixed &on any_other, ec_data.input_line="0"b executing cleanup handler 10/25/84 Steve Herbst */ 54 /* Changed $absentee_listen_ to call listen_, which knows about release/start, etc. 12/03/84 Steve Herbst */ 55 /* Changed all entry points to deal with release/start as listen_ does 12/07/84 Steve Herbst */ 56 /* Commented out support for release/start except via $absentee_listen_ 12/12/84 Steve Herbst */ 57 /* Fixed any_other handler to use auto recursion flag in case user_i/o detached 01/04/85 Steve Herbst */ 58 /* Fixed bug where revert_output or discard_output turns off abs_data.in_handler_sw 01/14/85 Steve Herbst */ 59 60 61 declare P_abs_data_ptr ptr parameter, 62 P_caller char (*) parameter, 63 P_code fixed bin (35) parameter, 64 P_condition_info_ptr ptr parameter, 65 P_continue_to_signal_sw bit (1) aligned parameter, 66 P_dn char (*) parameter, 67 P_ec_info_ptr ptr parameter, 68 P_en char (*) parameter, 69 P_exec_com_info_ptr ptr parameter, 70 P_goto_label_len fixed bin (21) parameter, 71 P_goto_label_ptr ptr parameter, 72 P_handler_node_ptr ptr parameter, 73 P_initial_command_line char (*) varying parameter, 74 P_initial_string char (*) parameter, 75 P_pathname char (*) parameter, 76 P_search_list char (*) parameter, 77 P_search_name char (*) parameter, 78 P_subsystem_dir_ptr ptr parameter, 79 P_suffix char (*) parameter, 80 P_text_pos fixed bin (21) parameter, 81 P_version fixed bin parameter; 82 83 declare (addr, addrel, baseno, charno, clock, codeptr, copy, index, length, null, rtrim, stackframeptr, string, substr, unspec) 84 builtin; 85 86 declare (any_other, cleanup, stringsize) 87 condition; 88 89 declare auto_in_handler_sw bit (1) aligned, /* to prevent looping of any_other handler */ 90 auto_cond_name char (32); 91 92 declare arg_count fixed bin, 93 arg_len fixed bin (21), 94 arg_ptr ptr, 95 arg char (arg_len) based (arg_ptr), 96 arg_list_ptr ptr, 97 actual_len fixed bin (21), 98 buffer char (512), 99 command_sw bit (1) aligned, 100 cond_name char (32), 101 continue_to_signal_sw bit (1) aligned, 102 entry_point_name char (32), 103 goto_label char (goto_label_len) based (goto_label_ptr), 104 goto_label_len fixed bin (21), 105 goto_label_ptr ptr, 106 handler_found_sw bit (1) aligned, 107 i fixed bin, 108 initialized bit (1) aligned, 109 p ptr, 110 path char (168), 111 path_arg_pos fixed bin, 112 read_len fixed bin (21), 113 read_ptr ptr, 114 ready_procedure entry (1 aligned like ready_mode) variable, 115 saved_abs_data_ptr ptr, 116 saved_in_handler_sw bit (1), 117 seg_ptr ptr, 118 spno bit (18) aligned, 119 state fixed bin, 120 status fixed bin (35), 121 X_status fixed bin (35), 122 whoami char (32), 123 work_len fixed bin (21), 124 work_ptr ptr, 125 work_string char (work_len) based (work_ptr); 126 127 declare 1 listener_control aligned like based_listener_control; 128 129 declare 1 ec_info aligned like ec_data; 130 131 declare 1 trace_info aligned like ec_trace_info; 132 133 declare 1 local_condition_info aligned like condition_info; 134 135 declare 1 ready_mode aligned, 136 2 flag bit (1) unaligned, 137 2 pad bit (35) unaligned; 138 139 declare (TRACE_OFF init ("1"b), 140 TRACE_ON init ("0"b)) bit (1) int static options (constant); 141 142 declare ( 143 IN_OUTER_PROC init (0), 144 IN_INITIALIZE_EC_INFO init (1), 145 IN_FIND_EC init (-1) 146 ) fixed bin int static options (constant); 147 declare stream_input fixed bin static options (constant) initial (1); 148 149 declare ( 150 error_table_$badopt, 151 error_table_$end_of_info, 152 error_table_$long_record, 153 error_table_$not_act_fnc, 154 error_table_$pathlong 155 ) fixed bin (35) external, 156 iox_$user_io ptr external, 157 sys_info$max_seg_size fixed bin (35) external; 158 159 dcl abs_io_$allocate_abs_data entry (ptr); 160 dcl abs_io_$initialize_abs_data entry (ptr); 161 dcl abs_io_v2_get_line$goto entry (ptr, ptr, char (*)) returns (fixed bin (35)); 162 dcl absentee_listen_$execute_handler entry 163 (ptr, ptr, ptr, ptr, ptr, ptr, fixed bin (21), bit (1) aligned, fixed bin (35)); 164 165 declare active_fnc_err_ entry options (variable), 166 active_fnc_err_$af_suppress_name 167 entry options (variable), 168 com_err_ entry options (variable), 169 com_err_$suppress_name entry options (variable), 170 continue_to_signal_ entry (fixed bin (35)), 171 cu_$af_return_arg_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr), 172 cu_$arg_list_ptr entry () returns (ptr), 173 cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)), 174 cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr), 175 cu_$generate_call entry (entry, ptr), 176 cu_$cp entry (ptr, fixed bin (21), fixed bin (35)), 177 cu_$ready_proc entry () options (variable), 178 expand_pathname_$add_suffix entry (char (*), char (*), char (*), char (*), fixed bin (35)), 179 find_condition_info_ entry (ptr, ptr, fixed bin (35)), 180 get_temp_segment_ entry (char (*), ptr, fixed bin (35)), 181 iox_$attach_name entry (char (*), ptr, char (*), ptr, fixed bin (35)), 182 iox_$control entry (ptr, char (*), ptr, fixed bin (35)), 183 iox_$detach_iocb entry (ptr, fixed bin (35)), 184 iox_$destroy_iocb entry (ptr, fixed bin (35)), 185 iox_$find_iocb entry (char (*), ptr, fixed bin (35)), 186 iox_$get_line entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)), 187 iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)), 188 release_temp_segment_ entry (char (*), ptr, fixed bin (35)), 189 request_id_ entry (fixed bin (71)) returns (char (19)), 190 requote_string_ entry (char (*)) returns (char (*)), 191 signal_io_error_ entry (char (*), ptr, fixed bin (35)), 192 unique_chars_ entry (bit (*)) returns (char (15)); 193 194 /* Called by initialize_process_, this entry point is the listener for an absentee process. */ 195 196 /* absentee_listen_: 197* procedure (P_initial_command_line); */ 198 199 entry_point_name = "absentee_listen_"; 200 201 exec_com_info_ptr = null; 202 state = IN_OUTER_PROC; /* Tell cleanup handler we have nothing for it to do */ 203 initialized = "0"b; 204 205 on cleanup call clean_up (); 206 207 call initialize_ec_info (); 208 209 ec_info.who_am_i, whoami = "Absentee facility"; 210 211 ec_info.switch_ptr = iox_$user_io; 212 213 abs_data_ptr = ec_info.switch_ptr -> iocb.attach_data_ptr; 214 initialized = "1"b; 215 216 call iox_$control (iox_$user_io, "set_ec_data_ptr", addr (ec_info), status); 217 if status ^= 0 then call complain (status, ec_info.who_am_i, "Setting ec data."); 218 219 unspec (listener_control) = "0"b; 220 listener_control.prev_ptr = null; 221 listener_control.level = 1; 222 sp = stackframeptr (); /* count the stack frame number */ 223 spno = baseno (sp); 224 i = 0; 225 do while (baseno (sp -> stack_frame.prev_sp) = spno & sp ^= null); 226 i = i + 1; 227 sp = sp -> stack_frame.prev_sp; 228 end; 229 listener_control.frame = i; 230 listener_control.release_all, listener_control.release, listener_control.new_release = RELEASE_LABEL; 231 listener_control.start = START_LABEL; 232 listen_static_data_.control_ptr = addr (listener_control); 233 234 abs_data.listener_pl1_label, abs_data.get_line_pl1_label = CONTINUE; 235 236 call cu_$cp (addrel (addr (P_initial_command_line), 1), length (P_initial_command_line), status); 237 238 if status ^= 0 & status ^= 100 then call complain (status, ec_info.who_am_i, "Executing initial command line."); 239 240 go to COMMON; 241 242 exec_com_: 243 entry (P_pathname, P_initial_string, P_caller, P_exec_com_info_ptr, P_code); 244 245 entry_point_name = "exec_com_"; 246 247 exec_com_info_ptr = P_exec_com_info_ptr; 248 state = IN_OUTER_PROC; 249 initialized = "0"b; 250 251 on cleanup call clean_up; 252 253 call initialize_ec_info (); 254 255 if unspec (exec_com_info.error) ^= ""b & codeptr (exec_com_info.error) ^= null () 256 then ec_info.error = exec_com_info.error; 257 if unspec (exec_com_info.eval_string) ^= ""b & codeptr (exec_com_info.eval_string) ^= null () 258 then ec_info.eval_string = exec_com_info.eval_string; 259 if unspec (exec_com_info.execute_line) ^= ""b & codeptr (exec_com_info.execute_line) ^= null () 260 then ec_info.execute_line = exec_com_info.execute_line; 261 if unspec (exec_com_info.ready) ^= ""b & codeptr (exec_com_info.ready) ^= null () 262 then ready_procedure = exec_com_info.ready; 263 if unspec (exec_com_info.set_ready_mode) ^= ""b & codeptr (exec_com_info.set_ready_mode) ^= null () 264 then ec_info.set_ready_mode = exec_com_info.set_ready_mode; 265 266 ec_info.call_ready_proc = "0"b; 267 ec_info.who_am_i = P_caller; 268 whoami = "exec_com_"; 269 270 call attach_ec ("ec_input_", P_pathname); 271 272 initialized = "1"b; 273 274 arg_list_ptr = exec_com_info.arg_list_ptr; 275 276 call check_arg_list (exec_com_info.arg_list_ptr); 277 278 call set_args (exec_com_info.first_arg); 279 280 if ec_info.who_am_i = "call_ec_" then 281 abs_data.switches.noabort = "1"b; 282 else abs_data.switches.noabort = ""b; 283 if codeptr (exec_com_info.execute_line) ^= null () & unspec (exec_com_info.execute_line) ^= ""b 284 then call exec_com_info.execute_line (addr (P_initial_string), length (P_initial_string), status); 285 else call cu_$cp (addr (P_initial_string), length (P_initial_string), status); 286 287 if status ^= 0 & status ^= 100 then call complain (status, ec_info.who_am_i, "Executing initial command line."); 288 289 abs_data.listener_pl1_label, abs_data.get_line_pl1_label = CONTINUE; 290 291 go to COMMON; 292 293 exec_com: 294 ec: 295 entry () options (variable); 296 297 entry_point_name = "exec_com"; 298 299 exec_com_info_ptr = null; 300 state = IN_OUTER_PROC; 301 initialized = "0"b; 302 303 on cleanup call clean_up (); 304 305 call initialize_ec_info (); 306 command_sw = "1"b; 307 308 ec_info.set_ready_mode = set_ready_mode; 309 ec_info.who_am_i, whoami = "exec_com"; 310 311 arg_list_ptr = cu_$arg_list_ptr (); 312 313 call check_arg_list (arg_list_ptr); 314 315 if arg_count < 1 316 then do; 317 COMMAND_USAGE: 318 if ec_info.active_function 319 then call active_fnc_err_$af_suppress_name (0, whoami, "Usage: [ec {-control_args} path {ec_args}]"); 320 else call com_err_$suppress_name (0, whoami, "Usage: ec {-control_args} path {ec_args}"); 321 go to EGRESS; 322 end; 323 324 path_arg_pos = 0; 325 do i = 1 to arg_count while (path_arg_pos = 0); 326 call cu_$arg_ptr (i, arg_ptr, arg_len, (0)); 327 if index (arg, "-") = 1 then do; 328 if arg = "-no_trace" | arg = "-trace" then do; 329 i = i + 1; 330 if i > arg_count then do; 331 call com_err_ (0, ec_info.who_am_i, "No value specified for ^a", arg); 332 go to EGRESS; 333 end; 334 end; 335 else if arg = "-trace_default" then; 336 else do; 337 call com_err_ (error_table_$badopt, ec_info.who_am_i, "^a", arg); 338 go to EGRESS; 339 end; 340 end; 341 else path_arg_pos = i; 342 end; 343 344 if path_arg_pos = 0 then go to COMMAND_USAGE; 345 346 call cu_$arg_ptr_rel (path_arg_pos, arg_ptr, arg_len, (0), arg_list_ptr); 347 348 call attach_ec ("ec_input_", find_ec ("ec", "exec_com", null ())); 349 350 initialized = "1"b; 351 352 unspec (trace_info) = "0"b; 353 354 do i = 1 to path_arg_pos - 1; 355 call cu_$arg_ptr (i, arg_ptr, arg_len, (0)); 356 if index (arg, "-") = 1 then do; 357 if arg = "-no_trace" then do; 358 i = i + 1; 359 call cu_$arg_ptr (i, arg_ptr, arg_len, (0)); 360 call set_trace (TRACE_OFF, arg); 361 end; 362 else if arg = "-trace" then do; 363 i = i + 1; 364 call cu_$arg_ptr (i, arg_ptr, arg_len, (0)); 365 call set_trace (TRACE_ON, arg); 366 end; 367 else if arg = "-trace_default" then unspec (trace_info) = "0"b; 368 end; 369 end; 370 371 call iox_$control (ec_info.switch_ptr, "set_trace", addr (trace_info), status); 372 if status ^= 0 then call complain (status, ec_info.who_am_i, "Setting -trace information."); 373 374 call set_args (path_arg_pos + 1); 375 376 if ec_info.active_function then ec_info.call_ready_proc = "0"b; 377 status = 100; /* Suppress initial call to ready proc */ 378 379 abs_data.listener_pl1_label, abs_data.get_line_pl1_label = CONTINUE; 380 381 go to COMMON; 382 383 execute_handler: entry (P_exec_com_info_ptr, P_ec_info_ptr, P_abs_data_ptr, P_handler_node_ptr, 384 P_condition_info_ptr, P_goto_label_ptr, P_goto_label_len, P_continue_to_signal_sw, P_code); 385 386 /* This entry point executes the text of an &on unit as if it were a separate exec_com, remembering whether it 387* has exited by means of a nonlocal &goto */ 388 389 entry_point_name = "execute_handler"; 390 391 P_goto_label_ptr = null; 392 393 state = IN_OUTER_PROC; 394 initialized = "0"b; 395 396 exec_com_info_ptr = P_exec_com_info_ptr; 397 ec_info = P_ec_info_ptr -> ec_data; 398 handler_node_ptr = P_handler_node_ptr; 399 400 /* Set up a new abs_data for executing the handler */ 401 402 abs_data_ptr = null; 403 404 on cleanup call clean_up; 405 406 call abs_io_$allocate_abs_data (abs_data_ptr); 407 408 abs_data = P_abs_data_ptr -> abs_data; /* will use some old information */ 409 410 abs_data.active = "0"b; 411 412 call abs_io_$initialize_abs_data (abs_data_ptr); /* and some new information */ 413 414 initialized = "1"b; 415 416 /* Set defaults for an &on handler */ 417 418 abs_data.io_module_name = "abs_io_"; 419 420 abs_data.input_string.ptr = handler_node.ptr; 421 abs_data.input_string.len = handler_node.len; 422 abs_data.input_string.start, abs_data.input_string.position = 1; 423 abs_data.input_string.limit = 0; 424 425 abs_data.active, abs_data.label_search_sw = "0"b; 426 abs_data.command_line.on, abs_data.comment_line.on, abs_data.control_line.on, abs_data.input_line.on = "0"b; 427 unspec (abs_data.if_info) = "0"b; 428 abs_data.prev_if_ptr = null; 429 unspec (abs_data.on_info) = "0"b; 430 abs_data.cleanup_handler_ptr, abs_data.first_handler_ptr, abs_data.goto_label_ptr = null; 431 432 abs_data.on_info.in_handler_sw = "1"b; 433 abs_data.on_info.handler_node_ptr = P_handler_node_ptr; 434 abs_data.on_info.condition_name = P_condition_info_ptr -> condition_info.condition_name; 435 abs_data.on_info.mc_ptr = P_condition_info_ptr -> condition_info.mc_ptr; 436 abs_data.on_info.info_ptr = P_condition_info_ptr -> condition_info.info_ptr; 437 abs_data.on_info.wc_ptr = P_condition_info_ptr -> condition_info.wc_ptr; 438 abs_data.on_info.was_attached_sw = (P_abs_data_ptr -> abs_data.attach.victim_ptr ^= null); 439 440 abs_data.work_area = P_abs_data_ptr -> abs_data.work_area; /* use the same area; copy it back when done */ 441 442 saved_abs_data_ptr, abs_data.on_info.parent_abs_data_ptr = ec_info.switch_ptr -> iocb.attach_data_ptr; 443 ec_info.switch_ptr -> iocb.attach_data_ptr = abs_data_ptr; 444 445 ec_info.call_ready_proc = "0"b; 446 447 go to COMMON; 448 449 COMMON: 450 451 /* Handle all conditions. This is for the benefit of &on and, in the case of 452* cleanup, for popping a listener level. */ 453 454 auto_in_handler_sw = "0"b; 455 auto_cond_name = ""; 456 457 on any_other begin; 458 459 call find_condition_info_ (null, addr (local_condition_info), 0); 460 cond_name = local_condition_info.condition_name; 461 462 if cond_name = "cleanup" then do; /* pop listener level */ 463 listen_static_data_.control_ptr = 464 listen_static_data_.control_ptr -> based_listener_control.prev_ptr; 465 if listen_static_data_.control_ptr = null then listen_static_data_.first_level_sw = "1"b; 466 end; 467 468 if ^auto_in_handler_sw | cond_name ^= auto_cond_name then do; /* prevent looping */ 469 470 auto_in_handler_sw = "1"b; 471 auto_cond_name = cond_name; 472 473 continue_to_signal_sw = "1"b; /* default if no handlers invoked */ 474 475 handler_found_sw = "0"b; 476 477 p = abs_data.on_info.first_handler_ptr; 478 do while (p ^= null); /* walk down to chain of handler nodes to find a matching condition name */ 479 480 if p -> handler_node.condition_name = cond_name then do; 481 handler_found_sw = "1"b; 482 483 call invoke_handler (p); /* execute the text of a specified condition handler (&on unit) */ 484 end; 485 else p = p -> handler_node.next_ptr; 486 end; 487 488 if ^handler_found_sw then do; /* look for an any_other handler */ 489 p = abs_data.on_info.first_handler_ptr; 490 do while (p ^= null); 491 if p -> handler_node.condition_name = "any_other" then do; 492 call invoke_handler (p); 493 end; 494 else p = p -> handler_node.next_ptr; 495 end; 496 end; 497 498 if continue_to_signal_sw then call continue_to_signal_ ((0)); /* very important! */ 499 500 auto_in_handler_sw = "0"b; 501 end; 502 end; 503 504 LISTENER_LOOP: 505 506 /* The following routine reads lines from the input file and passes them on to the command processor. It communicates 507* with abs_io_ through the attach_data block (it gets a pointer to this via a control order) in order to determine 508* when command vs. input lines are being read and what the ready mode is. */ 509 510 do while ("1"b); 511 if ec_info.call_ready_proc & status ^= 100 then call invoke_ready_procedure (); 512 513 ec_info.input_line = "0"b; 514 515 read_ptr, work_ptr = addr (buffer); 516 read_len = length (buffer); 517 work_len = 0; 518 do while (status ^= 0 | work_len = 0); 519 call iox_$get_line (ec_info.switch_ptr, read_ptr, read_len, actual_len, status); 520 work_len = work_len + actual_len; 521 if status ^= 0 522 then if status = error_table_$end_of_info 523 then if work_len = 0 524 then go to EGRESS; /* all done */ 525 else status = 0; /* abs_io_ wont do this, but if there is a partial line... */ 526 else if status = error_table_$long_record & seg_ptr = null () 527 then do; /* too big; get a temp segment and put it there instead */ 528 call get_temp_segment_ (whoami, seg_ptr, X_status); 529 if X_status ^= 0 530 then call complain (X_status, ec_info.who_am_i, "Getting temp segment."); 531 work_ptr = seg_ptr; 532 work_string = substr (buffer, 1, work_len); 533 read_ptr = addr (substr (work_string, work_len + 1)); 534 read_len = (sys_info$max_seg_size * 4) - work_len; 535 end; 536 else call signal_io_error_ ("Error while reading command line.", ec_info.switch_ptr, status); 537 end; 538 539 ec_info.input_line = "1"b; /* anything read after this point is an input line */ 540 541 saved_in_handler_sw = abs_data.in_handler_sw; /* I don't know why, but a revert_output or 542* discard_output zeroes this flag! */ 543 if codeptr (ec_info.execute_line) ^= null () 544 then call ec_info.execute_line (work_ptr, work_len, status); 545 else call cu_$cp (work_ptr, work_len, status); 546 547 abs_data.in_handler_sw = saved_in_handler_sw; 548 549 CONTINUE: 550 if seg_ptr ^= null () then call release_temp_segment_ (whoami, seg_ptr, status); 551 end; 552 553 go to EGRESS; 554 555 RELEASE_LABEL: /* transferred to by the release command */ 556 557 abs_data.active = "0"b; 558 559 go to LISTENER_LOOP; 560 561 562 563 564 START_LABEL: /* transferred to by the start command */ 565 566 listen_static_data_.control_ptr = listen_static_data_.control_ptr -> based_listener_control.prev_ptr; 567 568 return; 569 570 get_ec_version_: 571 entry (P_dn, P_en, P_version, P_text_pos, P_code); 572 573 /* Returns version number of ec and position of first character following the "&version N" stmt if any. 574* Called by program that adds copyright notices to exec_com's. */ 575 576 state = IN_OUTER_PROC; 577 initialized = "0"b; 578 579 call initialize_ec_info (); 580 581 on cleanup 582 begin; 583 if ec_info.switch_ptr ^= null () 584 then do; 585 call iox_$detach_iocb (ec_info.switch_ptr, (0)); 586 call iox_$destroy_iocb (ec_info.switch_ptr, (0)); 587 end; 588 end; 589 590 if P_dn = ">" 591 then path = ">" || P_en; 592 else path = rtrim (P_dn) || ">" || P_en; 593 594 call iox_$attach_name (unique_chars_ ("0"b), ec_info.switch_ptr, "ec_input_ " || requote_string_ (rtrim (path)), 595 codeptr (exec_com), status); 596 if status ^= 0 597 then do; 598 P_code = status; 599 if ec_info.switch_ptr ^= null () then call iox_$destroy_iocb (ec_info.switch_ptr, (0)); 600 return; 601 end; 602 603 abs_data_ptr = ec_info.switch_ptr -> iocb.attach_data_ptr; 604 605 initialized = "1"b; 606 607 P_version = abs_data.open_data.parser_version; 608 P_text_pos = abs_data.input_string.start; 609 if P_version = 1 then /* version 1 positions to newline after the "&version 1" */ 610 P_text_pos = P_text_pos + 1; /* user wants position of char after newline */ 611 P_code = 0; 612 613 call iox_$detach_iocb (ec_info.switch_ptr, status); 614 if status = 0 then call iox_$destroy_iocb (ec_info.switch_ptr, status); 615 616 return; 617 618 invoke_handler: proc (P_node_ptr); 619 620 dcl P_node_ptr ptr; 621 dcl (goto_sw, saved_input_line_sw, turned_on_in_handler_sw) bit (1) aligned; 622 623 saved_input_line_sw = ec_info.input_line; 624 ec_info.input_line = "0"b; 625 626 turned_on_in_handler_sw = "0"b; 627 if ^abs_data.in_handler_sw then /* turn on, if not already on */ 628 abs_data.in_handler_sw, turned_on_in_handler_sw = "1"b; 629 call absentee_listen_$execute_handler (exec_com_info_ptr, addr (ec_info), abs_data_ptr, 630 P_node_ptr, addr (local_condition_info), goto_label_ptr, goto_label_len, 631 continue_to_signal_sw, 0); 632 633 if goto_label_ptr ^= null then do; 634 goto_sw = "1"b; 635 status = abs_io_v2_get_line$goto (abs_data_ptr, addr (ec_info), goto_label); 636 if status ^= 0 then go to EGRESS; 637 end; 638 else goto_sw = "0"b; 639 640 ec_info.input_line = saved_input_line_sw; 641 642 if turned_on_in_handler_sw then /* only turn off, if we turned it on */ 643 abs_data.in_handler_sw = "0"b; 644 645 if goto_sw then do; 646 abs_data.active, auto_in_handler_sw = "0"b; 647 648 /* Implementing nonlocal &goto from inside an &on unit (handler). This is 649* done by a PL/1 nonlocal goto so that interrupted actions are not continued. 650* If the handler was invoked while in abs_io_v2_get_line, the target of the 651* goto is that procedure's START: label, to process the &label statement. 652* If the handler was invoked while inside cu_$cp (ec_info.input_line = "1"b), 653* the target of the goto is absentee_listen_'s CONTINUE: label, to put us 654* back in the listener loop. */ 655 656 if ec_info.input_line then go to abs_data.listener_pl1_label; 657 else go to abs_data.get_line_pl1_label; 658 end; 659 660 P_node_ptr = null; /* handler invoked; stop the caller's loop */ 661 662 return; 663 664 end invoke_handler; 665 666 invoke_ready_procedure: 667 procedure (); 668 669 if codeptr (ready_procedure) ^= null () then call ready_procedure (ready_mode); 670 /* This case is for exec_com_, if given a value */ 671 672 else if command_sw then call cu_$ready_proc (ready_mode); 673 /* This case is for the exec_com command */ 674 675 else call cu_$ready_proc (); /* This case is for absentee, or exec_com_ default */ 676 677 return; 678 679 end invoke_ready_procedure; 680 681 682 683 set_ready_mode: 684 procedure (P_ready_mode); 685 686 declare 1 P_ready_mode aligned like ready_mode; 687 688 ready_mode = P_ready_mode; 689 690 return; 691 692 end set_ready_mode; 693 694 complain: 695 procedure () options (variable); 696 697 declare arg_list_ptr ptr, 698 based_status_ptr ptr, 699 based_status fixed bin (35) based (based_status_ptr); 700 701 arg_list_ptr = cu_$arg_list_ptr (); 702 703 if state = IN_FIND_EC 704 then do; /* In exec_com_$find_ec. Set return values and punt */ 705 P_pathname = ""; 706 call cu_$arg_ptr (1, based_status_ptr, (0), (0)); 707 P_code = based_status; 708 end; 709 710 else if codeptr (ec_info.error) ^= null () then call cu_$generate_call (ec_info.error, arg_list_ptr); 711 712 else if ec_info.active_function then call cu_$generate_call (active_fnc_err_, arg_list_ptr); 713 else call cu_$generate_call (com_err_, arg_list_ptr); 714 715 go to EGRESS; 716 717 end complain; 718 719 EGRESS: 720 call finish_up (); 721 722 return; 723 724 clean_up: 725 procedure (); 726 727 dcl saved_input_line_sw bit (1) aligned; 728 729 saved_input_line_sw = ec_info.input_line; 730 ec_info.input_line = "0"b; 731 732 if initialized then 733 if abs_data.on_info.cleanup_handler_ptr ^= null then /* there is an "&on cleanup" */ 734 if abs_data.on_info.cleanup_handler_ptr -> handler_node.condition_name = "cleanup" then do; 735 /* and it's not disabled by &resignal */ 736 737 local_condition_info.condition_name = "cleanup"; 738 local_condition_info.mc_ptr, local_condition_info.info_ptr, local_condition_info.wc_ptr = null; 739 740 call absentee_listen_$execute_handler (exec_com_info_ptr, addr (ec_info), abs_data_ptr, 741 abs_data.on_info.cleanup_handler_ptr, addr (local_condition_info), null, 0, "0"b, 0); 742 /* don't honor any nonlocal &goto inside it */ 743 744 end; 745 746 ec_info.input_line = saved_input_line_sw; 747 748 call finish_up (); 749 750 end clean_up; 751 752 finish_up: procedure (); 753 754 dcl goto_label char (abs_data.goto_label_len) based (abs_data.goto_label_ptr); 755 declare status fixed bin (35); 756 declare iox_$close entry (ptr, fixed bin (35)); 757 758 if state = IN_INITIALIZE_EC_INFO 759 then do; /* clean up after initialize_ec_info */ 760 761 if ec_info.switch_ptr ^= null & abs_data_ptr ^= null then 762 if ^abs_data.in_handler_sw then do; 763 call iox_$control (ec_info.switch_ptr, "handle_cleanup", addr (ec_info), status); 764 call iox_$close (ec_info.switch_ptr, status); 765 call iox_$detach_iocb (ec_info.switch_ptr, status); 766 call iox_$destroy_iocb (ec_info.switch_ptr, status); 767 end; 768 769 if seg_ptr ^= null () then call release_temp_segment_ (whoami, seg_ptr, status); 770 end; 771 772 if initialized then 773 if abs_data_ptr ^= null then 774 if entry_point_name = "execute_handler" then do; 775 776 P_continue_to_signal_sw = abs_data.on_info.continue_to_signal_sw; 777 778 if abs_data.goto_sw then do; /* leaving &on unit via &goto */ 779 /* label must be allocated in parent's area */ 780 allocate goto_label in (saved_abs_data_ptr -> abs_data.work_area) 781 set (P_goto_label_ptr); /* set args of absentee_listen_$execute_handler */ 782 P_goto_label_ptr -> goto_label = abs_data.goto_label_ptr -> goto_label; 783 P_goto_label_len = abs_data.goto_label_len; 784 785 saved_abs_data_ptr -> abs_data.goto_statement_pos = abs_data.goto_statement_pos 786 + charno (abs_data.input_string.ptr) 787 - charno (saved_abs_data_ptr -> abs_data.input_string.ptr); 788 saved_abs_data_ptr -> abs_data.goto_statement_len = abs_data.goto_statement_len; 789 end; 790 791 saved_abs_data_ptr -> abs_data.output_file = abs_data.output_file; 792 saved_abs_data_ptr -> abs_data.variables_ptr = abs_data.variables_ptr; 793 794 free abs_data; /* free the &on unit's private abs_data */ 795 /* and restore the parent's: */ 796 797 abs_data_ptr, ec_info.switch_ptr -> attach_data_ptr = saved_abs_data_ptr; 798 end; 799 800 return; 801 802 end finish_up; 803 804 initialize_ec_info: 805 procedure (); 806 807 declare null_entry_value entry variable; 808 809 unspec (null_entry_value) = copy (unspec (null ()), 2); 810 ready_procedure = null_entry_value; 811 string (ready_mode) = ""b; 812 command_sw = "0"b; 813 814 seg_ptr = null (); 815 816 ec_info.version_id = ec_data_version_id; 817 ec_info.version = ec_data_version_1; 818 ec_info.active_function = "0"b; 819 ec_info.return_len = 0; 820 ec_info.return_ptr = null (); 821 ec_info.execute_line = null_entry_value; 822 ec_info.eval_string = null_entry_value; 823 ec_info.set_ready_mode = null_entry_value; 824 ec_info.error = null_entry_value; 825 ec_info.switch_ptr = null (); 826 ec_info.id_string = request_id_ (clock ()); 827 ec_info.input_line = "1"b; 828 ec_info.call_ready_proc = "1"b; 829 830 abs_data_ptr = null; 831 832 state = IN_INITIALIZE_EC_INFO; 833 834 return; 835 836 end initialize_ec_info; 837 838 attach_ec: 839 procedure (P_switch_name, P_path); 840 841 dcl (P_switch_name, P_path) char (*); 842 declare code fixed bin (35); 843 declare sub_error_ condition; 844 845 condition_info_ptr = addr (local_condition_info); 846 847 on sub_error_ 848 begin; 849 call find_condition_info_ (null (), condition_info_ptr, code); 850 if code = 0 851 then do; 852 sub_error_info_ptr = condition_info.info_ptr; 853 call complain (sub_error_info.status_code, ec_info.who_am_i, "^a", 854 sub_error_info.info_string); 855 end; 856 else call continue_to_signal_ ((0)); 857 end; 858 859 call iox_$attach_name (ec_info.id_string || "." || rtrim (whoami), ec_info.switch_ptr, 860 rtrim (P_switch_name) || " " || requote_string_ (rtrim (P_path)), 861 codeptr (exec_com) /* Pick up bound-in version by default */, status); 862 863 if status ^= 0 then call complain (status, ec_info.who_am_i, "Attaching ^a.", P_path); 864 865 call iox_$open (ec_info.switch_ptr, stream_input, "0"b, status); 866 if status ^= 0 then call complain (status, ec_info.who_am_i, "Opening ^a.", P_path); 867 868 revert sub_error_; 869 870 call iox_$control (ec_info.switch_ptr, "set_ec_data_ptr", addr (ec_info), status); 871 if status ^= 0 then call complain (status, ec_info.who_am_i, "Setting ec data."); 872 873 abs_data_ptr = ec_info.switch_ptr -> iocb.attach_data_ptr; 874 875 return; 876 877 end attach_ec; 878 879 check_arg_list: 880 procedure (P_arg_list_ptr); 881 882 declare P_arg_list_ptr ptr; 883 884 call cu_$af_return_arg_rel (arg_count, ec_info.return_ptr, ec_info.return_len, status, P_arg_list_ptr); 885 if status = 0 then ec_info.active_function = "1"b; 886 else if status ^= error_table_$not_act_fnc 887 then call complain (status, ec_info.who_am_i, "Getting argument list."); 888 889 return; 890 891 end check_arg_list; 892 893 894 895 set_args: 896 procedure (first_arg); 897 898 declare (first_arg, args_index, i) fixed bin; 899 900 declare 1 args aligned, /* adjustable automatic storage */ 901 2 count fixed bin, 902 2 e (arg_count - first_arg + 1), 903 3 ptr ptr unaligned, 904 3 len fixed bin (21); 905 906 args.count = arg_count - first_arg + 1; 907 args_index = 0; 908 909 do i = first_arg to arg_count; 910 call cu_$arg_ptr_rel (i, arg_ptr, arg_len, status, arg_list_ptr); 911 args_index = args_index + 1; 912 args (args_index).ptr = arg_ptr; 913 args (args_index).len = arg_len; 914 end; 915 916 call iox_$control (ec_info.switch_ptr, "set_argument_ptrs", addr (args), status); 917 if status ^= 0 then call complain (status, ec_info.who_am_i, "Setting arguments."); 918 919 return; 920 921 end set_args; 922 923 exec_com_$find_ec: 924 entry (P_search_name, P_suffix, P_search_list, P_subsystem_dir_ptr, P_pathname, P_code); 925 926 state = IN_FIND_EC; /* Tell complain that we are find_ec */ 927 initialized = "0"b; 928 929 arg_ptr = addr (P_search_name); /* find_ec uses based variable "arg" as input */ 930 arg_len = length (rtrim (P_search_name)); 931 932 on stringsize go to PATHNAME_TOO_LONG; /* Complain if "returns (char (*))" result too big */ 933 934 (stringsize): 935 P_pathname = find_ec (P_suffix, P_search_list, P_subsystem_dir_ptr); 936 P_code = 0; /* find_ec aborted through complain if it failed */ 937 938 return; 939 940 PATHNAME_TOO_LONG: 941 P_pathname = ""; 942 P_code = error_table_$pathlong; 943 944 return; 945 946 find_ec: 947 procedure (suffix, search_list, subsystem_dir_ptr) returns (char (*)); 948 949 declare suffix char (*) parameter, 950 search_list char (*) parameter, 951 subsystem_dir_ptr ptr parameter; 952 953 declare (length, null, reverse, rtrim, search) 954 builtin; 955 956 declare dirname char (168), 957 entryname char (32), 958 entryname_len fixed bin (21), 959 must_search bit (1) aligned, 960 path_len fixed bin (21), 961 path char (path_len) based (arg_ptr), 962 pathname char (169 + arg_len) varying, 963 search_dirname char (168), 964 subsystem_dir char (168); 965 966 declare ( 967 error_table_$badpath, 968 error_table_$no_search_list 969 ) fixed bin (35) external; 970 971 declare hcs_$fs_get_path_name entry (ptr, char (*), fixed bin, char (*), fixed bin (35)), 972 search_paths_$find_dir entry (char (*), ptr, char (*), char (*), char (*), fixed bin (35)); 973 974 975 must_search = "0"b; 976 path_len = arg_len; 977 978 entryname_len = search (reverse (arg), "<>") - 1; 979 if entryname_len < 0 980 then do; 981 entryname_len = arg_len; 982 if search_list ^= "" then must_search = "1"b; 983 end; 984 else if entryname_len = 0 985 then call complain (error_table_$badpath, ec_info.who_am_i, "No file name given. ^a", arg); 986 987 call expand_pathname_$add_suffix (path, suffix, dirname, entryname, status); 988 if status ^= 0 then call complain (status, ec_info.who_am_i, "^a", path); 989 990 if must_search 991 then do; 992 if subsystem_dir_ptr = null () 993 then subsystem_dir = ""; 994 else do; 995 call hcs_$fs_get_path_name (subsystem_dir_ptr, subsystem_dir, (0), (""), status); 996 if status ^= 0 then subsystem_dir = ""; 997 end; 998 999 call search_paths_$find_dir (search_list, null (), entryname, subsystem_dir, search_dirname, status); 1000 if status = 0 then dirname = search_dirname; 1001 else if status ^= error_table_$no_search_list 1002 then call complain (status, ec_info.who_am_i, "^a using ^a search list.", entryname, search_list); 1003 end; 1004 1005 pathname = rtrim (dirname); 1006 if length (pathname) ^= 1 then pathname = pathname || ">"; 1007 pathname = pathname || entryname; 1008 1009 return (pathname); 1010 1011 end find_ec; 1012 1013 set_trace: proc (P_off_sw, P_str); 1014 1015 /* Parses list of trace terms separated by commas and does the work. */ 1016 1017 dcl P_off_sw bit (1); 1018 dcl P_str char (*); 1019 dcl (i, str_len) fixed bin (21); 1020 dcl 1 tracing, 1021 2 types, 1022 3 (command, comment, control, input) bit (1) unaligned, 1023 2 (on, off, output_switch, prefix_sw) bit (1) unaligned, 1024 2 expand fixed bin, 1025 2 prefix char (32) varying, 1026 2 iocb ptr; 1027 1028 unspec (tracing) = "0"b; 1029 1030 str_len = length (P_str); 1031 begin; 1032 dcl buffer char (str_len) varying; 1033 1034 buffer = P_str; 1035 do while (buffer ^= ""); 1036 i = index (buffer, ","); 1037 if i = 0 then do; 1038 call set_term (P_off_sw, (buffer)); 1039 buffer = ""; 1040 end; 1041 else do; 1042 call set_term (P_off_sw, substr (buffer, 1, i - 1)); 1043 buffer = substr (buffer, i + 1); 1044 end; 1045 end; 1046 1047 if ^tracing.on & ^tracing.off then tracing.on = "1"b; 1048 1049 if unspec (tracing.types) = "0"b then unspec (tracing.types) = "1111"b; 1050 1051 if tracing.command then call set_one_trace (trace_info.command_line, "COMMAND"); 1052 if tracing.input then call set_one_trace (trace_info.input_line, "INPUT"); 1053 if tracing.control then call set_one_trace (trace_info.control_line, "CONTROL"); 1054 if tracing.comment then call set_one_trace (trace_info.comment_line, "COMMENT"); 1055 end; 1056 1057 return; 1058 1059 1060 set_one_trace: proc (P_line, P_type); 1061 1062 dcl 1 P_line aligned like ec_trace_info.command_line; 1063 dcl P_type char (*); 1064 1065 P_line.explicit_sw = "1"b; 1066 1067 if tracing.on then do; 1068 P_line.on = "1"b; 1069 if P_line.expand = 0 then /* apply defaults for expansion tracing */ 1070 if abs_data.absentee then P_line.expand = EXPANDED; 1071 else if P_type = "COMMENT" | P_type = "CONTROL" then P_line.expand = UNEXPANDED; 1072 else P_line.expand = EXPANDED; 1073 end; 1074 if tracing.off then P_line.on = "0"b; 1075 if tracing.expand ^= 0 then P_line.expand = tracing.expand; 1076 if tracing.prefix_sw then P_line.prefix = tracing.prefix; 1077 if tracing.output_switch then P_line.iocb = tracing.iocb; 1078 1079 end set_one_trace; 1080 1081 /* More procs internal to set_trace */ 1082 1083 set_term: proc (P_off_sw, P_str); 1084 1085 /* Handles a single trace keyword or keyword pair ("prefix=STR"). */ 1086 1087 dcl P_off_sw bit (1); 1088 dcl P_str char (*); 1089 dcl i fixed bin; 1090 1091 i = index (P_str, "="); 1092 if i ^= 0 then call set_keyword (P_off_sw, substr (P_str, 1, i - 1), "1"b, substr (P_str, i + 1)); 1093 else call set_keyword (P_off_sw, P_str, "0"b, ""); 1094 1095 return; 1096 1097 1098 set_keyword: proc (P_off_sw, P_keyword, P_value_sw, P_value); 1099 1100 /* Does the work for a single trace keyword or keyword pair. */ 1101 1102 dcl (P_off_sw, P_value_sw) bit (1); 1103 dcl (P_keyword, P_value) char (*); 1104 1105 if P_keyword = "command" then 1106 if P_value_sw then do; 1107 BAD_TRACE_SYNTAX: 1108 call complain (0, ec_info.who_am_i, "Syntax error in argument to -^[no_^]trace", P_off_sw); 1109 go to EGRESS; 1110 end; 1111 else tracing.command = "1"b; 1112 else if P_keyword = "comment" then 1113 if P_value_sw then go to BAD_TRACE_SYNTAX; 1114 else tracing.comment = "1"b; 1115 else if P_keyword = "control" then 1116 if P_value_sw then go to BAD_TRACE_SYNTAX; 1117 else tracing.control = "1"b; 1118 else if P_keyword = "input" then 1119 if P_value_sw then go to BAD_TRACE_SYNTAX; 1120 else tracing.input = "1"b; 1121 else if P_keyword = "all_types" then 1122 if P_value_sw then go to BAD_TRACE_SYNTAX; 1123 else tracing.command, tracing.comment, tracing.control, tracing.input = "1"b; 1124 1125 else if P_off_sw | open_data.parser_version <= 1 then do; 1126 call complain (0, ec_info.who_am_i, "Invalid keyword specified for ^[-no_^]trace", P_off_sw); 1127 go to EGRESS; 1128 end; 1129 1130 if P_keyword = "command" | P_keyword = "comment" | P_keyword = "control" | P_keyword = "input" then do; 1131 if P_off_sw then tracing.off = "1"b; 1132 end; 1133 1134 else if P_keyword = "unexpanded" then 1135 if P_value_sw then go to BAD_TRACE_SYNTAX; 1136 else if abs_data.parser_version = 1 then do; 1137 BAD_V1_TRACE_MODE: 1138 call complain (0, ec_info.who_am_i, "Invalid trace mode ""^a"" for a Version 1 ec.", P_keyword); 1139 go to EGRESS; 1140 end; 1141 else tracing.expand = UNEXPANDED; 1142 else if P_keyword = "expanded" then 1143 if P_value_sw then go to BAD_TRACE_SYNTAX; 1144 else if abs_data.parser_version = 1 then go to BAD_V1_TRACE_MODE; 1145 else tracing.expand = EXPANDED; 1146 else if P_keyword = "all" | P_keyword = "all_expansions" then 1147 if P_value_sw then go to BAD_TRACE_SYNTAX; 1148 else if abs_data.parser_version = 1 then go to BAD_V1_TRACE_MODE; 1149 else tracing.expand = ALL; 1150 else if P_keyword = "both" then 1151 if P_value_sw then go to BAD_TRACE_SYNTAX; 1152 else if abs_data.parser_version = 1 then go to BAD_V1_TRACE_MODE; 1153 else tracing.expand = BOTH; 1154 1155 else if P_keyword = "prefix" then 1156 if ^P_value_sw then go to BAD_TRACE_SYNTAX; 1157 else if abs_data.parser_version = 1 then go to BAD_V1_TRACE_MODE; 1158 else do; 1159 tracing.prefix_sw = "1"b; 1160 tracing.prefix = P_value; 1161 end; 1162 1163 else if P_keyword = "output_switch" | P_keyword = "osw" then 1164 if ^P_value_sw then go to BAD_TRACE_SYNTAX; 1165 else if abs_data.parser_version = 1 then go to BAD_V1_TRACE_MODE; 1166 else do; 1167 call iox_$find_iocb (P_value, tracing.iocb, status); 1168 if status ^= 0 then do; 1169 call complain (status, ec_info.who_am_i, "Finding I/O switch ""^a""", P_value); 1170 go to EGRESS; 1171 end; 1172 tracing.output_switch = "1"b; 1173 end; 1174 1175 else do; 1176 call complain (0, ec_info.who_am_i, "Invalid -^[no_^]trace keyword ^a", P_off_sw, P_keyword); 1177 go to EGRESS; 1178 end; 1179 1180 end set_keyword; 1181 1182 end set_term; 1183 1184 end set_trace; 1185 1 1 /* START OF: abs_io_data.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(87-02-20,Parisek), approve(87-07-23,MCR7716), 1 6* audit(87-07-30,Fawcett), install(87-08-11,MR12.1-1080): 1 7* Added the noabort flag for determining whether or not to abort after 1 8* exec_com error occurs. 1 9* END HISTORY COMMENTS */ 1 10 1 11 1 12 /* Initial coding: 25 June 79 by J. Spencer Love */ 1 13 /* login_channel option flag BIM 11/81 */ 1 14 /* Added this_action and next_action 04/20/82 S. Herbst */ 1 15 /* Added on_info, goto_statement_(pos len) 01/06/83 S. Herbst */ 1 16 /* Added output_file.turn_off_ssw 05/16/83 S. Herbst */ 1 17 /* Added attach.trim_whitespace_sw 06/02/83 S. Herbst */ 1 18 /* Added listener_pl1_label and get_line_pl1_label 11/17/83 S. Herbst */ 1 19 /* Added (command comment control input)_line.by_control_arg 03/20/84 S. Herbst */ 1 20 1 21 declare abs_data_ptr ptr; 1 22 1 23 declare 1 abs_data aligned based (abs_data_ptr), 1 24 2 version fixed bin, /* Version = 1 */ 1 25 2 io_module_name char (32) varying, /* either "abs_io_" or "ec_input_" */ 1 26 2 open_description char (24) varying, /* either "stream_input" or "stream_input_output" */ 1 27 2 unique_name char (15) varying, /* &! -- either blank or 15 char unique string */ 1 28 /* */ 1 29 2 ec_data_ptr ptr, /* -> communication area for exec_com */ 1 30 2 expand_data_ptr ptr, /* -> structure for abs_io_expand_ */ 1 31 /* */ 1 32 2 instance_chain, /* two way linked chain of abs_data blocks for debugging */ 1 33 3 prev_ptr ptr, /* -> next older abs_data instance */ 1 34 3 next_ptr ptr, /* -> next newer abs_data instance */ 1 35 3 level fixed bin, /* level of ec invocation in chain for debugging */ 1 36 3 pad bit (36), /* */ 1 37 /* */ 1 38 2 arg_info, /* */ 1 39 3 ec_path_ptr ptr, /* Ptr to allocated &ec_path string */ 1 40 3 ec_path_len fixed bin (21), /* Length of allocated &ec_path (&0) string */ 1 41 3 ec_path_quotes fixed bin (21), /* Number of quote chars in &ec_path, -1 if not yet counted */ 1 42 3 ec_name_ptr ptr, /* Ptr to allocated &ec_name string */ 1 43 3 ec_name_len fixed bin (21), /* Length of allocated &ec_name string */ 1 44 3 ec_name_quotes fixed bin (21), /* Number of quote chars in &ec_name, -1 if not yet counted */ 1 45 3 arg_ptr ptr, /* pointer to allocated structure containing args */ 1 46 3 arg_count fixed bin, /* number of arguments passed */ 1 47 3 args_copied bit (1), /* 1 indicates arguments were copied into work_area */ 1 48 3 default_arg_ptr ptr, /* pointer to allocated &default args */ 1 49 3 default_arg_count fixed bin, /* number of &default args */ 1 50 3 pad bit (36), /* */ 1 51 /* */ 1 52 2 input_string, /* data about input segment or archive component */ 1 53 3 ptr ptr, /* pointer to input file */ 1 54 3 len fixed bin (21), /* number of characters in input file */ 1 55 3 start fixed bin (21), /* initial value for input_pos, set beyond &version, if any */ 1 56 3 position fixed bin (21), /* current index into input file */ 1 57 3 limit fixed bin (21), /* farthest point yet reached...begin &label search here */ 1 58 /* */ 1 59 2 open_data, /* data saved at attach time for open time */ 1 60 3 output_dir char (168) unal, /* directory pathname of output file (if specified) */ 1 61 3 output_entry char (32) unal, /* entryname of output file (if specified) */ 1 62 3 parser_version fixed bin, /* indicates version of parser (get_line) for open */ 1 63 3 si bit (1) unal, /* 1 indicates opening for stream_input permitted */ 1 64 3 sio bit (1) unal, /* 1 indicates opening for stream_input_output permitted */ 1 65 3 ssf bit (1) unal, /* 1 indicates output file cannot be MSF */ 1 66 3 truncate bit (1) unal, /* 1 indicates output file truncated at open */ 1 67 3 no_set_bc bit (1) unal, /* 1 to set absout bitcount only at close */ 1 68 3 login_channel bit (1) unal, /* 1 to fish arguments from PIT */ 1 69 3 pad bit (30) unal, /* */ 1 70 /* */ 1 71 2 output_file, /* data for abs_io_put_chars */ 1 72 3 fcb_ptr ptr, /* -> File Control Block for msf_manager_, null if SSF */ 1 73 3 seg_ptr ptr, /* -> base of current component of output file */ 1 74 3 current_len fixed bin (21), /* number of characters in current component */ 1 75 3 max_len fixed bin (21), /* max number of characters in a component */ 1 76 3 MSF_seg_idx fixed bin, /* index of current MSF component. Used to get new ones */ 1 77 3 switches aligned, 1 78 4 may_be_MSF bit (1) unaligned, /* 1 indicates absout can become an MSF */ 1 79 4 turn_off_ssw bit (1) unaligned, /* 1 means safety switch of absout was off originally */ 1 80 4 mbz bit (34) unaligned, 1 81 /* */ 1 82 2 command_line, /* substructure dealing with tracing command lines */ 1 83 3 by_control_arg bit (1) unaligned, /* 1 if trace modes specified by ec control arg */ 1 84 3 on bit (1) unaligned, /* 1 to print tracing information */ 1 85 3 expand fixed bin (3) unal, /* 1 to print unexpanded, 2 expanded, 3 all, 4 both */ 1 86 3 pad1 bit (66) unaligned, /* pad to double word */ 1 87 3 iocb ptr, /* I/O switch to put trace out on */ 1 88 3 prefix char (32) varying, /* prefix for &trace tracing, eg. "COMMAND: " */ 1 89 3 pad2 bit (36), /* */ 1 90 2 (comment_line, /* for tracing comments..always unexpanded */ 1 91 control_line, /* for tracing control lines */ 1 92 input_line) /* for tracing input lines in &attach mode */ 1 93 like abs_data.command_line, 1 94 /* */ 1 95 2 attach, /* */ 1 96 3 victim_ptr ptr, /* -> IOCB affected by &attach (usually iox_$user_input */ 1 97 3 target_ptr ptr, /* -> IOCB &attached to (created by exec_com command) */ 1 98 3 save_ptr ptr, /* -> IOCB used to save previous victim_ptr -> IOCB */ 1 99 3 switches, 1 100 4 trim_whitespace_sw bit (1) unaligned, /* OFF for &attach &trim off, ON by default */ 1 101 4 noabort bit (1) unaligned, /* ON if continue after severity 1 error */ 1 102 4 pad bit (34) unaligned, 1 103 /* */ 1 104 2 allocated_chars_ptr ptr, /* -> allocated buffer for freeing */ 1 105 2 chars_ptr ptr, /* -> characters in buffer waiting to be returned */ 1 106 2 else_clause_ptr ptr, /* -> characters in deferred else clause */ 1 107 2 allocated_chars_len fixed bin (21), /* total length of allocated buffer */ 1 108 2 chars_len fixed bin (21), /* characters left in buffer to be returned */ 1 109 2 else_clause_len fixed bin (21), /* length of deferred else clause */ 1 110 /* */ 1 111 2 absentee bit (1), /* 1 indicates logout on &quit */ 1 112 2 quit bit (1), /* 1 indicates orderly exit, quit or return */ 1 113 /* */ 1 114 2 active bit (1), /* 1 indicates get_line is busy, for recursion check */ 1 115 2 eof bit (1), /* 1 indicates &quit found or no more input */ 1 116 2 last_input_line_sw bit (1), /* previous line returned was an input line */ 1 117 2 label_search_sw bit (1), /* ON when searching for target of &goto */ 1 118 2 nest_level fixed bin, /* V1: depth of &if-&then-&else nesting */ 1 119 2 expected_nest_level fixed bin, /* V1: depth that must be reached to resume execution */ 1 120 /* */ 1 121 2 goto_statement_pos fixed bin (21), /* position of last &goto stmt, for error msgs */ 1 122 2 goto_statement_len fixed bin (21), /* length of the &goto stmt */ 1 123 1 124 2 if_info aligned, /* &if-&then-&else nesting info */ 1 125 3 if_sw bit (1), /* ON if inside an &if-&then-&else construct */ 1 126 3 true_sw bit (1), /* ON after "&if true" */ 1 127 3 got_then_sw bit (1), /* ON after the &then has been seen */ 1 128 3 got_else_sw bit (1), /* ON after the &else has been seen */ 1 129 3 clause_type fixed bin, /* previous &then or &else */ 1 130 3 skip_sw bit (1), /* ON if skipping a &then or &else clause */ 1 131 3 skip_block_level fixed bin, /* how many levels of &do we are inside while skipping */ 1 132 3 prev_if_ptr ptr, /* ptr to if_info (saved) of &if we are nested inside */ 1 133 3 this_action fixed bin, /* copy of expand_data.this_statement.action */ 1 134 3 next_action fixed bin, /* copy of expand_data.next_statement.action */ 1 135 1 136 2 on_info aligned, /* info pertaining to &on units in the ec */ 1 137 3 cleanup_handler_ptr ptr, /* -> node for cleanup handler if any */ 1 138 3 first_handler_ptr ptr, /* -> top of chain of nodes for other handlers */ 1 139 3 switches aligned, 1 140 4 was_attached_sw bit (1) unal, /* 1 indicates parent ec was &attach'ed */ 1 141 4 in_handler_sw bit (1) unal, /* 1 indicates we are now executing some handler text */ 1 142 4 exit_sw bit (1) unal, /* 1 indicates ready to exit the handler via &exit or &goto */ 1 143 4 goto_sw bit (1) unal, /* 1 means this exit is accomplished by a nonlocal &goto */ 1 144 4 continue_to_signal_sw bit (1) unal, /* 1 means &continue_to_signal was executed */ 1 145 4 pad bit (31) unal, 1 146 3 handler_node_ptr ptr, /* -> parent's handler_node for this condition */ 1 147 3 parent_abs_data_ptr ptr, /* -> abs_data structure of parent ec */ 1 148 3 condition_info aligned, /* selected condition info if in_handler_sw is ON */ 1 149 4 condition_name char (32), /* name of condition signalled */ 1 150 4 mc_ptr ptr, /* machine conditions ptr for signal_ */ 1 151 4 info_ptr ptr, /* ptr to specific condition info, for signal_ */ 1 152 4 wc_ptr ptr, /* machine conditions for lower ring fault, for signal_ */ 1 153 3 goto_label_ptr ptr, /* -> &goto label if goto_sw is on */ 1 154 3 goto_label_len fixed bin (21), /* length of the &goto label */ 1 155 3 listener_pl1_label label variable, /* for nonlocal goto to parent ec's listener's stack frame */ 1 156 3 get_line_pl1_label label variable, /* for nonlocal goto to parent ec's get_line's stack frame */ 1 157 /* */ 1 158 2 saved_state_ptr ptr, /* -> top of parser stack */ 1 159 2 current_lex_block_ptr ptr, /* -> lex_block for current block position */ 1 160 2 current_proc_block_ptr ptr, /* -> proc block for current procedure */ 1 161 2 last_block_ptr ptr, /* -> last lex or proc block that has been allocated */ 1 162 2 current_loop_ptr ptr, /* -> loop_block for current active loop */ 1 163 2 last_loop_ptr ptr, /* -> last loop block that has been allocated */ 1 164 /* */ 1 165 2 labels_ptr ptr, /* hash table ptr for label hash table */ 1 166 2 first_xlabel_ptr ptr, /* first expandable label */ 1 167 2 last_xlabel_ptr ptr, /* last expandable label */ 1 168 2 variables_ptr ptr, /* hash table ptr for variable hash table */ 1 169 /* */ 1 170 2 timed_input bit (1), /* 1 indicates input requests may be delayed */ 1 171 2 low_sleep_time fixed bin (35), /* low sleep time for timed input */ 1 172 2 sleep_time_range fixed bin (35), /* high sleep time for timed input */ 1 173 2 seed fixed bin (35), /* seed for timed input random numbers */ 1 174 /* */ 1 175 2 work_area area (800); /* extensible area for args, etc. */ 1 176 1 177 declare abs_data_version_1 fixed bin static options (constant) initial (1), 1 178 Work_area_size fixed bin static options (constant) initial (800); 1 179 1 180 dcl (UNEXPANDED init (1), EXPANDED init (2), ALL init (3), BOTH init (4)) 1 181 fixed bin int static options (constant); 1 182 1 183 /* END OF: abs_io_data.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 1186 1187 2 1 /* START OF: abs_io_handler_node.incl.pl1 */ 2 2 2 3 /* Contains info on one exec_com &on unit */ 2 4 /* Initially coded 01/06/83 S. Herbst */ 2 5 2 6 dcl handler_node_ptr ptr; 2 7 2 8 dcl 1 handler_node aligned based (handler_node_ptr), 2 9 2 ptr ptr, /* -> text of &on unit */ 2 10 2 len fixed bin (21), /* length of &on unit text */ 2 11 2 condition_name char (32), 2 12 2 next_ptr ptr; /* forward thread */ 2 13 2 14 /* END OF: abs_io_handler_node.incl.pl1 */ 1188 1189 3 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 3 2 3 3 /* Structure for find_condition_info_. 3 4* 3 5* Written 1-Mar-79 by M. N. Davidoff. 3 6**/ 3 7 3 8 /* automatic */ 3 9 3 10 declare condition_info_ptr pointer; 3 11 3 12 /* based */ 3 13 3 14 declare 1 condition_info aligned based (condition_info_ptr), 3 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 3 16 2 version fixed binary, /* Must be 1 */ 3 17 2 condition_name char (32) varying, /* name of condition */ 3 18 2 info_ptr pointer, /* pointer to the condition data structure */ 3 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 3 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 3 21 2 flags unaligned, 3 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 3 23 3 pad1 bit (35), 3 24 2 pad2 bit (36), 3 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 3 26 2 pad3 (4) bit (36); 3 27 3 28 /* internal static */ 3 29 3 30 declare condition_info_version_1 3 31 fixed binary internal static options (constant) initial (1); 3 32 3 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 1190 1191 4 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 4 2 /* format: style2 */ 4 3 4 4 declare condition_info_header_ptr 4 5 pointer; 4 6 declare 1 condition_info_header 4 7 aligned based (condition_info_header_ptr), 4 8 2 length fixed bin, /* length in words of this structure */ 4 9 2 version fixed bin, /* version number of this structure */ 4 10 2 action_flags aligned, /* tell handler how to proceed */ 4 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 4 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 4 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 4 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 4 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 4 16 3 pad bit (32) unaligned, 4 17 2 info_string char (256) varying, /* may contain printable message */ 4 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 4 19 4 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 1192 1193 5 1 /* START OF: ec_data.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 5 2 5 3 declare ec_data_ptr ptr; 5 4 5 5 declare 1 ec_data aligned based (ec_data_ptr), 5 6 2 version_id char (4), /* " ec " */ 5 7 2 version fixed bin, /* 1 */ 5 8 2 active_function bit (1), /* This affects &is_af and &return */ 5 9 2 return_len fixed bin (21), /* maximum length and pointer to varying character string */ 5 10 2 return_ptr ptr, /* for active function return value */ 5 11 2 execute_line entry (ptr, fixed bin (21), fixed bin (35)), 5 12 2 eval_string entry (ptr, char (*), fixed bin, char (*) var, fixed bin (35)), 5 13 2 set_ready_mode entry (1 aligned, 2 bit (1) unal, 2 bit (35) unal), 5 14 2 error entry () options (variable), 5 15 2 switch_ptr ptr, /* switch affected by &attach */ 5 16 2 id_string char (19), /* name string for &attach save switch should contain this */ 5 17 2 input_line bit (1), /* this makes the command_line/input_line distinction */ 5 18 2 call_ready_proc bit (1), /* this implements the &ready_proc keyword */ 5 19 2 who_am_i char (72) varying; /* for error messages. It's 72 chars for subsystem requests */ 5 20 5 21 declare ec_data_version_id char (4) aligned static options (constant) initial (" ec "), 5 22 ec_data_version_1 fixed bin static options (constant) initial (1); 5 23 5 24 /* END OF: ec_data.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 1194 1195 6 1 /* BEGIN INCLUDE FILE: ec_trace_info.incl.pl1 */ 6 2 6 3 /* Information passed to exec_com "set_trace" control order, to implement ec -trace */ 6 4 /* Written 05/03/84 by Steve Herbst */ 6 5 6 6 dcl ec_trace_info_ptr ptr; 6 7 6 8 dcl 1 ec_trace_info aligned based (ec_trace_info_ptr), 6 9 2 command_line, 6 10 3 explicit_sw bit (1) unaligned, /* ON => contains meaningful info */ 6 11 3 on bit (1) unaligned, /* turn tracing on/off for this type of line */ 6 12 3 expand fixed bin (3) unaligned, /* 1=unexpanded, 2=expanded, 3=all, 4=both */ 6 13 3 pad1 bit (66) unaligned, /* pad to double word */ 6 14 3 iocb ptr, /* IOCB to write trace on */ 6 15 3 prefix char (32) varying, /* prefix for trace of this type of line */ 6 16 3 pad2 bit (36), 6 17 2 comment_line like ec_trace_info.command_line, 6 18 2 control_line like ec_trace_info.command_line, 6 19 2 input_line like ec_trace_info.command_line; 6 20 6 21 /* END OF INCLUDE FILE: ec_trace_info.incl.pl1 */ 1196 1197 7 1 /* BEGIN INCLUDE FILE ... exec_com_info.incl.pl1 */ 7 2 7 3 /* Information needed by exec_com_ */ 7 4 7 5 declare exec_com_info_ptr ptr; 7 6 7 7 declare 1 exec_com_info aligned based (exec_com_info_ptr), 7 8 2 version fixed bin, 7 9 2 arg_list_ptr ptr, 7 10 2 first_arg fixed bin, 7 11 2 execute_line entry (ptr, fixed bin (21), fixed bin (35)), 7 12 2 eval_string entry (ptr, char (*), fixed bin, char (*) var, fixed bin (35)), 7 13 2 ready entry (), 7 14 2 set_ready_mode entry (1 aligned, 2 bit (1) unal, 2 bit (35) unal), 7 15 2 error entry options (variable); 7 16 7 17 declare exec_com_info_version_1 fixed bin internal static init (1); 7 18 7 19 /* END INCLUDE FILE ... exec_com_info.incl.pl1 */ 1198 1199 8 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 8 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 8 3* version number to IOX2. */ 8 4 /* format: style2 */ 8 5 8 6 dcl 1 iocb aligned based, /* I/O control block. */ 8 7 2 version character (4) aligned, /* IOX2 */ 8 8 2 name char (32), /* I/O name of this block. */ 8 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 8 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 8 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 8 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 8 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 8 14 2 reserved bit (72), /* Reserved for future use. */ 8 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 8 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 8 17 /* open(p,mode,not_used,s) */ 8 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 8 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 8 20 /* get_line(p,bufptr,buflen,actlen,s) */ 8 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 8 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 8 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 8 24 /* put_chars(p,bufptr,buflen,s) */ 8 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 8 26 /* modes(p,newmode,oldmode,s) */ 8 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 8 28 /* position(p,u1,u2,s) */ 8 29 2 control entry (ptr, char (*), ptr, fixed (35)), 8 30 /* control(p,order,infptr,s) */ 8 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 8 32 /* read_record(p,bufptr,buflen,actlen,s) */ 8 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 8 34 /* write_record(p,bufptr,buflen,s) */ 8 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 8 36 /* rewrite_record(p,bufptr,buflen,s) */ 8 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 8 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 8 39 /* seek_key(p,key,len,s) */ 8 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 8 41 /* read_key(p,key,len,s) */ 8 42 2 read_length entry (ptr, fixed (21), fixed (35)), 8 43 /* read_length(p,len,s) */ 8 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 8 45 /* open_file(p,mode,desc,not_used,s) */ 8 46 2 close_file entry (ptr, char (*), fixed bin (35)), 8 47 /* close_file(p,desc,s) */ 8 48 2 detach entry (ptr, char (*), fixed bin (35)); 8 49 /* detach(p,desc,s) */ 8 50 8 51 declare iox_$iocb_version_sentinel 8 52 character (4) aligned external static; 8 53 8 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 1200 1201 9 1 /* INCLUDE FILE -- listener_info.incl.pl1 */ 9 2 9 3 /* Written 12/07/84 Steve Herbst */ 9 4 9 5 9 6 dcl 1 listen_static_data_ aligned external static, /* referenced by both listen_ and absentee_listen_ */ 9 7 2 control_ptr ptr init (null), /* points to current listener_control */ 9 8 2 first_level_sw bit (1) aligned init ("1"b); /* ON if this is the top listener level */ 9 9 9 10 9 11 dcl 1 based_listener_control aligned /* structure containing all control info */ 9 12 based (listen_static_data_.control_ptr), 9 13 2 prev_ptr ptr, /* to previous listener_control, if any */ 9 14 2 (release_all, /* label transferred to by "release -all" */ 9 15 release, /* label transferred to by "release" */ 9 16 new_release, /* next invocation's release label */ 9 17 start /* label transferred to by the start command */ 9 18 ) label, 9 19 2 flags aligned, 9 20 3 dont_restore_sw bit (1) unaligned, /* ON => don't restore I/O attachments on "start" */ 9 21 3 pad bit (35) unaligned, 9 22 2 frame fixed bin, /* stack frame number of current listener */ 9 23 2 level fixed bin; /* listener level number of current listener */ 9 24 9 25 /* E* END INCLUDE FILE -- listener_info.incl.pl1 */ 9 26 9 27 1202 1203 10 1 /* BEGIN INCLUDE FILE ... stack_frame.incl.pl1 ... */ 10 2 10 3 /* format: off */ 10 4 10 5 /* Modified: 16 Dec 1977, D. Levin - to add fio_ps_ptr and pl1_ps_ptr */ 10 6 /* Modified: 3 Feb 1978, P. Krupp - to add run_unit_manager bit & main_proc bit */ 10 7 /* Modified: 21 March 1978, D. Levin - change fio_ps_ptr to support_ptr */ 10 8 /* Modified: 03/01/84, S. Herbst - Added RETURN_PTR_MASK */ 10 9 10 10 10 11 /****^ HISTORY COMMENTS: 10 12* 1) change(86-09-15,Kissel), approve(86-09-15,MCR7473), 10 13* audit(86-10-01,Fawcett), install(86-11-03,MR12.0-1206): 10 14* Modified to add constants for the translator_id field in the stack_frame 10 15* structure. 10 16* END HISTORY COMMENTS */ 10 17 10 18 10 19 dcl RETURN_PTR_MASK bit (72) int static options (constant) /* mask to be AND'd with stack_frame.return_ptr */ 10 20 init ("777777777777777777000000"b3); /* when copying, to ignore bits that a call fills */ 10 21 /* with indicators (nonzero for Fortran hexfp caller) */ 10 22 /* say: unspec(ptr) = unspec(stack_frame.return_ptr) & RETURN_PTR_MASK; */ 10 23 10 24 dcl TRANSLATOR_ID_PL1V2 bit (18) internal static options (constant) init ("000000"b3); 10 25 dcl TRANSLATOR_ID_ALM bit (18) internal static options (constant) init ("000001"b3); 10 26 dcl TRANSLATOR_ID_PL1V1 bit (18) internal static options (constant) init ("000002"b3); 10 27 dcl TRANSLATOR_ID_SIGNAL_CALLER bit (18) internal static options (constant) init ("000003"b3); 10 28 dcl TRANSLATOR_ID_SIGNALLER bit (18) internal static options (constant) init ("000004"b3); 10 29 10 30 10 31 dcl sp pointer; /* pointer to beginning of stack frame */ 10 32 10 33 dcl stack_frame_min_length fixed bin static init(48); 10 34 10 35 10 36 dcl 1 stack_frame based(sp) aligned, 10 37 2 pointer_registers(0 : 7) ptr, 10 38 2 prev_sp pointer, 10 39 2 next_sp pointer, 10 40 2 return_ptr pointer, 10 41 2 entry_ptr pointer, 10 42 2 operator_and_lp_ptr ptr, /* serves as both */ 10 43 2 arg_ptr pointer, 10 44 2 static_ptr ptr unaligned, 10 45 2 support_ptr ptr unal, /* only used by fortran I/O */ 10 46 2 on_unit_relp1 bit(18) unaligned, 10 47 2 on_unit_relp2 bit(18) unaligned, 10 48 2 translator_id bit(18) unaligned, /* Translator ID (see constants above) 10 49* 0 => PL/I version II 10 50* 1 => ALM 10 51* 2 => PL/I version I 10 52* 3 => signal caller frame 10 53* 4 => signaller frame */ 10 54 2 operator_return_offset bit(18) unaligned, 10 55 2 x(0: 7) bit(18) unaligned, /* index registers */ 10 56 2 a bit(36), /* accumulator */ 10 57 2 q bit(36), /* q-register */ 10 58 2 e bit(36), /* exponent */ 10 59 2 timer bit(27) unaligned, /* timer */ 10 60 2 pad bit(6) unaligned, 10 61 2 ring_alarm_reg bit(3) unaligned; 10 62 10 63 10 64 dcl 1 stack_frame_flags based(sp) aligned, 10 65 2 pad(0 : 7) bit(72), /* skip over prs */ 10 66 2 xx0 bit(22) unal, 10 67 2 main_proc bit(1) unal, /* on if frame belongs to a main procedure */ 10 68 2 run_unit_manager bit(1) unal, /* on if frame belongs to run unit manager */ 10 69 2 signal bit(1) unal, /* on if frame belongs to logical signal_ */ 10 70 2 crawl_out bit(1) unal, /* on if this is a signal caller frame */ 10 71 2 signaller bit(1) unal, /* on if next frame is signaller's */ 10 72 2 link_trap bit(1) unal, /* on if this frame was made by the linker */ 10 73 2 support bit(1) unal, /* on if frame belongs to a support proc */ 10 74 2 condition bit(1) unal, /* on if condition established in this frame */ 10 75 2 xx0a bit(6) unal, 10 76 2 xx1 fixed bin, 10 77 2 xx2 fixed bin, 10 78 2 xx3 bit(25) unal, 10 79 2 old_crawl_out bit (1) unal, /* on if this is a signal caller frame */ 10 80 2 old_signaller bit(1) unal, /* on if next frame is signaller's */ 10 81 2 xx3a bit(9) unaligned, 10 82 2 xx4(9) bit(72) aligned, 10 83 2 v2_pl1_op_ret_base ptr, /* When a V2 PL/I program calls an operator the 10 84* * operator puts a pointer to the base of 10 85* * the calling procedure here. (text base ptr) */ 10 86 2 xx5 bit(72) aligned, 10 87 2 pl1_ps_ptr ptr; /* ptr to ps for this frame; also used by fio. */ 10 88 10 89 /* format: on */ 10 90 10 91 /* END INCLUDE FILE ... stack_frame.incl.pl1 */ 1204 1205 11 1 /* BEGIN INCLUDE FILE sub_error_info.incl.pl1 */ 11 2 /* format: style2 */ 11 3 11 4 /* The include file condition_info_header must be used with this file */ 11 5 11 6 declare sub_error_info_ptr pointer; 11 7 declare 1 sub_error_info aligned based (sub_error_info_ptr), 11 8 2 header aligned like condition_info_header, 11 9 2 retval fixed bin (35), /* return value */ 11 10 2 name char (32), /* module name */ 11 11 2 info_ptr ptr; 11 12 11 13 declare sub_error_info_version_1 11 14 internal static options (constant) fixed bin init (1); 11 15 11 16 /* END INCLUDE FILE sub_error_info.incl.pl1 */ 1206 1207 1208 1209 end absentee_listen_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/04/88 1312.5 absentee_listen_.pl1 >spec>install>1128>absentee_listen_.pl1 1186 1 08/11/87 2007.9 abs_io_data.incl.pl1 >ldd>include>abs_io_data.incl.pl1 1188 2 08/01/83 1107.8 abs_io_handler_node.incl.pl1 >ldd>include>abs_io_handler_node.incl.pl1 1190 3 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 1192 4 03/24/82 1347.2 condition_info_header.incl.pl1 >ldd>include>condition_info_header.incl.pl1 1194 5 04/13/82 1620.2 ec_data.incl.pl1 >ldd>include>ec_data.incl.pl1 1196 6 10/23/84 0848.6 ec_trace_info.incl.pl1 >ldd>include>ec_trace_info.incl.pl1 1198 7 04/13/82 1620.2 exec_com_info.incl.pl1 >ldd>include>exec_com_info.incl.pl1 1200 8 05/20/83 1846.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 1202 9 12/20/84 0952.2 listener_info.incl.pl1 >ldd>include>listener_info.incl.pl1 1204 10 11/07/86 1550.3 stack_frame.incl.pl1 >ldd>include>stack_frame.incl.pl1 1206 11 07/18/81 1100.0 sub_error_info.incl.pl1 >ldd>include>sub_error_info.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. ALL constant fixed bin(17,0) initial dcl 1-180 ref 1149 BOTH constant fixed bin(17,0) initial dcl 1-180 ref 1153 EXPANDED constant fixed bin(17,0) initial dcl 1-180 ref 1069 1072 1145 IN_FIND_EC 010525 constant fixed bin(17,0) initial dcl 142 ref 703 926 IN_INITIALIZE_EC_INFO constant fixed bin(17,0) initial dcl 142 ref 758 832 IN_OUTER_PROC constant fixed bin(17,0) initial dcl 142 ref 202 248 300 393 576 P_abs_data_ptr parameter pointer dcl 61 ref 383 408 438 440 P_arg_list_ptr parameter pointer dcl 882 set ref 879 884* P_caller parameter char packed unaligned dcl 61 ref 242 267 P_code parameter fixed bin(35,0) dcl 61 set ref 242 383 570 598* 611* 707* 923 936* 942* P_condition_info_ptr parameter pointer dcl 61 ref 383 434 435 436 437 P_continue_to_signal_sw parameter bit(1) dcl 61 set ref 383 776* P_dn parameter char packed unaligned dcl 61 ref 570 590 592 P_ec_info_ptr parameter pointer dcl 61 ref 383 397 P_en parameter char packed unaligned dcl 61 ref 570 590 592 P_exec_com_info_ptr parameter pointer dcl 61 ref 242 247 383 396 P_goto_label_len parameter fixed bin(21,0) dcl 61 set ref 383 783* P_goto_label_ptr parameter pointer dcl 61 set ref 383 391* 780* 782 P_handler_node_ptr parameter pointer dcl 61 ref 383 398 433 P_initial_command_line parameter varying char dcl 61 set ref 36 236 236 236 236 P_initial_string parameter char packed unaligned dcl 61 set ref 242 283 283 283 283 285 285 285 285 P_keyword parameter char packed unaligned dcl 1103 set ref 1098 1105 1112 1115 1118 1121 1130 1130 1130 1130 1134 1137* 1142 1146 1146 1150 1155 1163 1163 1176* P_line parameter structure level 1 dcl 1062 set ref 1060 P_node_ptr parameter pointer dcl 620 set ref 618 629* 660* P_off_sw parameter bit(1) packed unaligned dcl 1102 in procedure "set_keyword" set ref 1098 1107* 1125 1126* 1131 1176* P_off_sw parameter bit(1) packed unaligned dcl 1087 in procedure "set_term" set ref 1083 1092* 1093* P_off_sw parameter bit(1) packed unaligned dcl 1017 in procedure "set_trace" set ref 1013 1038* 1042* P_path parameter char packed unaligned dcl 841 set ref 838 859 859 863* 866* P_pathname parameter char packed unaligned dcl 61 set ref 242 270* 705* 923 934* 940* P_ready_mode parameter structure level 1 dcl 686 ref 683 688 P_search_list parameter char packed unaligned dcl 61 set ref 923 934* P_search_name parameter char packed unaligned dcl 61 set ref 923 929 930 P_str parameter char packed unaligned dcl 1018 in procedure "set_trace" ref 1013 1030 1034 P_str parameter char packed unaligned dcl 1088 in procedure "set_term" set ref 1083 1091 1092 1092 1092 1092 1093* P_subsystem_dir_ptr parameter pointer dcl 61 set ref 923 934* P_suffix parameter char packed unaligned dcl 61 set ref 923 934* P_switch_name parameter char packed unaligned dcl 841 ref 838 859 P_text_pos parameter fixed bin(21,0) dcl 61 set ref 570 608* 609* 609 P_type parameter char packed unaligned dcl 1063 ref 1060 1071 1071 P_value parameter char packed unaligned dcl 1103 set ref 1098 1160 1167* 1169* P_value_sw parameter bit(1) packed unaligned dcl 1102 ref 1098 1105 1112 1115 1118 1121 1134 1142 1146 1150 1155 1163 P_version parameter fixed bin(17,0) dcl 61 set ref 570 607* 609 TRACE_OFF 000043 constant bit(1) initial packed unaligned dcl 139 set ref 360* TRACE_ON 000044 constant bit(1) initial packed unaligned dcl 139 set ref 365* UNEXPANDED constant fixed bin(17,0) initial dcl 1-180 ref 1071 1141 X_status 000471 automatic fixed bin(35,0) dcl 92 set ref 528* 529 529* abs_data based structure level 1 dcl 1-23 set ref 408* 408 794 abs_data_ptr 000742 automatic pointer dcl 1-21 set ref 213* 234 234 280 282 289 289 379 379 402* 406* 408 410 412* 418 420 421 422 422 423 425 425 426 426 426 426 427 428 429 430 430 430 432 433 434 435 436 437 438 440 442 443 477 489 541 547 555 603* 607 608 627 627 629* 635* 642 646 656 657 732 732 740* 740 761 761 772 776 778 780 780 782 782 782 783 785 785 788 791 792 794 797* 830* 873* 1069 1125 1136 1144 1148 1152 1157 1165 abs_io_$allocate_abs_data 000030 constant entry external dcl 159 ref 406 abs_io_$initialize_abs_data 000032 constant entry external dcl 160 ref 412 abs_io_v2_get_line$goto 000034 constant entry external dcl 161 ref 635 absentee 273 based bit(1) level 2 dcl 1-23 set ref 1069 absentee_listen_$execute_handler 000036 constant entry external dcl 162 ref 629 740 active 275 based bit(1) level 2 dcl 1-23 set ref 410* 425* 555* 646* active_fnc_err_ 000040 constant entry external dcl 165 ref 712 712 active_fnc_err_$af_suppress_name 000042 constant entry external dcl 165 ref 317 active_function 2 000534 automatic bit(1) level 2 dcl 129 set ref 317 376 712 818* 885* actual_len 000142 automatic fixed bin(21,0) dcl 92 set ref 519* 520 addr builtin function dcl 83 ref 216 216 232 236 236 283 283 285 285 371 371 459 459 515 533 629 629 629 629 635 635 740 740 740 740 763 763 845 870 870 916 916 929 addrel builtin function dcl 83 ref 236 236 any_other 000100 stack reference condition dcl 86 ref 457 arg based char packed unaligned dcl 92 set ref 327 328 328 331* 335 337* 356 357 360* 362 365* 367 978 984* arg_count 000133 automatic fixed bin(17,0) dcl 92 set ref 315 325 330 884* 900 906 909 arg_len 000134 automatic fixed bin(21,0) dcl 92 set ref 326* 327 328 328 331 331 335 337 337 346* 355* 356 357 359* 360 360 362 364* 365 365 367 910* 913 930* 956 976 978 981 984 984 arg_list_ptr 2 based pointer level 2 in structure "exec_com_info" dcl 7-7 in procedure "absentee_listen_" set ref 274 276* arg_list_ptr 000140 automatic pointer dcl 92 in procedure "absentee_listen_" set ref 274* 311* 313* 346* 910* arg_list_ptr 000100 automatic pointer dcl 697 in procedure "complain" set ref 701* 710* 712* 713* arg_ptr 000136 automatic pointer dcl 92 set ref 326* 327 328 328 331 335 337 346* 355* 356 357 359* 360 362 364* 365 367 910* 912 929* 978 984 987 988 args 000102 automatic structure level 1 dcl 900 set ref 916 916 args_index 000100 automatic fixed bin(17,0) dcl 898 set ref 907* 911* 911 912 913 attach 252 based structure level 2 dcl 1-23 attach_data_ptr 16 based pointer level 2 dcl 8-6 set ref 213 442 443* 603 797* 873 auto_cond_name 000123 automatic char(32) packed unaligned dcl 89 set ref 455* 468 471* auto_in_handler_sw 000122 automatic bit(1) dcl 89 set ref 449* 468 470* 500* 646* based_listener_control based structure level 1 dcl 9-11 based_status based fixed bin(35,0) dcl 697 ref 707 based_status_ptr 000102 automatic pointer dcl 697 set ref 706* 707 baseno builtin function dcl 83 ref 223 225 buffer 000100 automatic varying char dcl 1032 in begin block on line 1031 set ref 1034* 1035 1036 1038 1039* 1042 1042 1043* 1043 buffer 000143 automatic char(512) packed unaligned dcl 92 in procedure "absentee_listen_" set ref 515 516 532 call_ready_proc 36 000534 automatic bit(1) level 2 dcl 129 set ref 266* 376* 445* 511 828* charno builtin function dcl 83 ref 785 785 cleanup 000106 stack reference condition dcl 86 ref 205 251 303 404 581 cleanup_handler_ptr 322 based pointer level 3 dcl 1-23 set ref 430* 732 732 740* clock builtin function dcl 83 ref 826 826 code 000100 automatic fixed bin(35,0) dcl 842 set ref 849* 850 codeptr builtin function dcl 83 ref 255 257 259 261 263 283 543 594 594 669 710 859 859 com_err_ 000044 constant entry external dcl 165 ref 331 337 713 713 com_err_$suppress_name 000046 constant entry external dcl 165 ref 320 command 001026 automatic bit(1) level 3 packed packed unaligned dcl 1020 set ref 1051 1111* 1123* command_line 000616 automatic structure level 2 in structure "trace_info" dcl 131 in procedure "absentee_listen_" set ref 1051* command_line based structure level 2 in structure "ec_trace_info" dcl 6-8 in procedure "absentee_listen_" command_line 162 based structure level 2 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" command_sw 000343 automatic bit(1) dcl 92 set ref 306* 672 812* comment 0(01) 001026 automatic bit(1) level 3 packed packed unaligned dcl 1020 set ref 1054 1114* 1123* comment_line 16 000616 automatic structure level 2 in structure "trace_info" dcl 131 in procedure "absentee_listen_" set ref 1054* comment_line 200 based structure level 2 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" cond_name 000344 automatic char(32) packed unaligned dcl 92 set ref 460* 462 468 471 480 condition_info 334 based structure level 3 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" condition_info based structure level 1 dcl 3-14 in procedure "absentee_listen_" condition_info_header based structure level 1 dcl 4-6 condition_info_ptr 000746 automatic pointer dcl 3-10 set ref 845* 849* 852 condition_name 3 000706 automatic varying char(32) level 2 in structure "local_condition_info" dcl 133 in procedure "absentee_listen_" set ref 460 737* condition_name 334 based char(32) level 4 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" set ref 434* condition_name 3 based char(32) level 2 in structure "handler_node" dcl 2-8 in procedure "absentee_listen_" ref 480 491 732 condition_name 3 based varying char(32) level 2 in structure "condition_info" dcl 3-14 in procedure "absentee_listen_" ref 434 continue_to_signal_ 000050 constant entry external dcl 165 ref 498 856 continue_to_signal_sw 326(04) based bit(1) level 4 in structure "abs_data" packed packed unaligned dcl 1-23 in procedure "absentee_listen_" set ref 776 continue_to_signal_sw 000354 automatic bit(1) dcl 92 in procedure "absentee_listen_" set ref 473* 498 629* control 0(02) 001026 automatic bit(1) level 3 packed packed unaligned dcl 1020 set ref 1053 1117* 1123* control_line 216 based structure level 2 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" control_line 34 000616 automatic structure level 2 in structure "trace_info" dcl 131 in procedure "absentee_listen_" set ref 1053* control_ptr 000126 external static pointer initial level 2 dcl 9-6 set ref 232* 463* 463 465 564* 564 copy builtin function dcl 83 ref 809 count 000102 automatic fixed bin(17,0) level 2 dcl 900 set ref 906* cu_$af_return_arg_rel 000052 constant entry external dcl 165 ref 884 cu_$arg_list_ptr 000054 constant entry external dcl 165 ref 311 701 cu_$arg_ptr 000056 constant entry external dcl 165 ref 326 355 359 364 706 cu_$arg_ptr_rel 000060 constant entry external dcl 165 ref 346 910 cu_$cp 000064 constant entry external dcl 165 ref 236 285 545 cu_$generate_call 000062 constant entry external dcl 165 ref 710 712 713 cu_$ready_proc 000066 constant entry external dcl 165 ref 672 675 dirname 000100 automatic char(168) packed unaligned dcl 956 set ref 987* 1000* 1005 e 1 000102 automatic structure array level 2 dcl 900 ec_data based structure level 1 dcl 5-5 ref 397 ec_data_version_1 constant fixed bin(17,0) initial dcl 5-21 ref 817 ec_data_version_id 000000 constant char(4) initial dcl 5-21 ref 816 ec_info 000534 automatic structure level 1 dcl 129 set ref 216 216 397* 629 629 635 635 740 740 763 763 870 870 ec_trace_info based structure level 1 dcl 6-8 entry_point_name 000355 automatic char(32) packed unaligned dcl 92 set ref 199* 245* 297* 389* 772 entryname 000152 automatic char(32) packed unaligned dcl 956 set ref 987* 999* 1001* 1007 entryname_len 000162 automatic fixed bin(21,0) dcl 956 set ref 978* 979 981* 984 error 22 000534 automatic entry variable level 2 in structure "ec_info" dcl 129 in procedure "absentee_listen_" set ref 255* 710 710* 824* error 26 based entry variable level 2 in structure "exec_com_info" dcl 7-7 in procedure "absentee_listen_" ref 255 255 255 error_table_$badopt 000012 external static fixed bin(35,0) dcl 149 set ref 337* error_table_$badpath 000132 external static fixed bin(35,0) dcl 966 set ref 984* error_table_$end_of_info 000014 external static fixed bin(35,0) dcl 149 ref 521 error_table_$long_record 000016 external static fixed bin(35,0) dcl 149 ref 526 error_table_$no_search_list 000134 external static fixed bin(35,0) dcl 966 ref 1001 error_table_$not_act_fnc 000020 external static fixed bin(35,0) dcl 149 ref 886 error_table_$pathlong 000022 external static fixed bin(35,0) dcl 149 ref 942 eval_string 12 000534 automatic entry variable level 2 in structure "ec_info" dcl 129 in procedure "absentee_listen_" set ref 257* 822* eval_string 12 based entry variable level 2 in structure "exec_com_info" dcl 7-7 in procedure "absentee_listen_" ref 257 257 257 exec_com_info based structure level 1 dcl 7-7 exec_com_info_ptr 000750 automatic pointer dcl 7-5 set ref 201* 247* 255 255 255 257 257 257 259 259 259 261 261 261 263 263 263 274 276 278 283 283 283 299* 396* 629* 740* execute_line 6 000534 automatic entry variable level 2 in structure "ec_info" dcl 129 in procedure "absentee_listen_" set ref 259* 543 543 821* execute_line 6 based entry variable level 2 in structure "exec_com_info" dcl 7-7 in procedure "absentee_listen_" ref 259 259 259 283 283 283 expand 1 001026 automatic fixed bin(17,0) level 2 in structure "tracing" dcl 1020 in procedure "set_trace" set ref 1075 1075 1141* 1145* 1149* 1153* expand 0(02) parameter fixed bin(3,0) level 2 in structure "P_line" packed packed unaligned dcl 1062 in procedure "set_one_trace" set ref 1069 1069* 1071* 1072* 1075* expand_pathname_$add_suffix 000070 constant entry external dcl 165 ref 987 explicit_sw parameter bit(1) level 2 packed packed unaligned dcl 1062 set ref 1065* find_condition_info_ 000072 constant entry external dcl 165 ref 459 849 first_arg 4 based fixed bin(17,0) level 2 in structure "exec_com_info" dcl 7-7 in procedure "absentee_listen_" set ref 278* first_arg parameter fixed bin(17,0) dcl 898 in procedure "set_args" ref 895 900 906 909 first_handler_ptr 324 based pointer level 3 dcl 1-23 set ref 430* 477 489 first_level_sw 2 000126 external static bit(1) initial level 2 dcl 9-6 set ref 465* frame 23 000506 automatic fixed bin(17,0) level 2 dcl 127 set ref 229* get_line_pl1_label 362 based label variable level 3 dcl 1-23 set ref 234* 289* 379* 657 get_temp_segment_ 000074 constant entry external dcl 165 ref 528 goto_label based char packed unaligned dcl 92 in procedure "absentee_listen_" set ref 635* goto_label based char packed unaligned dcl 754 in procedure "finish_up" set ref 780 782* 782 goto_label_len 354 based fixed bin(21,0) level 3 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" set ref 780 780 782 782 783 goto_label_len 000365 automatic fixed bin(21,0) dcl 92 in procedure "absentee_listen_" set ref 629* 635 635 goto_label_ptr 352 based pointer level 3 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" set ref 430* 782 goto_label_ptr 000366 automatic pointer dcl 92 in procedure "absentee_listen_" set ref 629* 633 635 goto_statement_len 304 based fixed bin(21,0) level 2 dcl 1-23 set ref 788* 788 goto_statement_pos 303 based fixed bin(21,0) level 2 dcl 1-23 set ref 785* 785 goto_sw 326(03) based bit(1) level 4 in structure "abs_data" packed packed unaligned dcl 1-23 in procedure "absentee_listen_" set ref 778 goto_sw 000106 automatic bit(1) dcl 621 in procedure "invoke_handler" set ref 634* 638* 645 handler_found_sw 000370 automatic bit(1) dcl 92 set ref 475* 481* 488 handler_node based structure level 1 dcl 2-8 handler_node_ptr 330 based pointer level 3 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" set ref 433* handler_node_ptr 000744 automatic pointer dcl 2-6 in procedure "absentee_listen_" set ref 398* 420 421 hcs_$fs_get_path_name 000136 constant entry external dcl 971 ref 995 header based structure level 2 dcl 11-7 i 001024 automatic fixed bin(21,0) dcl 1019 in procedure "set_trace" set ref 1036* 1037 1042 1042 1043 i 000371 automatic fixed bin(17,0) dcl 92 in procedure "absentee_listen_" set ref 224* 226* 226 229 325* 326* 329* 329 330 341* 354* 355* 358* 358 359* 363* 363 364* i 000100 automatic fixed bin(17,0) dcl 1089 in procedure "set_term" set ref 1091* 1092 1092 1092 1092 1092 i 000101 automatic fixed bin(17,0) dcl 898 in procedure "set_args" set ref 909* 910* id_string 30 000534 automatic char(19) level 2 dcl 129 set ref 826* 859 if_info 306 based structure level 2 dcl 1-23 set ref 427* in_handler_sw 326(01) based bit(1) level 4 packed packed unaligned dcl 1-23 set ref 432* 541 547* 627 627* 642* 761 index builtin function dcl 83 ref 327 356 1036 1091 info_ptr 14 based pointer level 2 in structure "condition_info" dcl 3-14 in procedure "absentee_listen_" ref 436 852 info_ptr 14 000706 automatic pointer level 2 in structure "local_condition_info" dcl 133 in procedure "absentee_listen_" set ref 738* info_ptr 346 based pointer level 4 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" set ref 436* info_string 3 based varying char(256) level 3 dcl 11-7 set ref 853* initialized 000372 automatic bit(1) dcl 92 set ref 203* 214* 249* 272* 301* 350* 394* 414* 577* 605* 732 772 927* input 0(03) 001026 automatic bit(1) level 3 packed packed unaligned dcl 1020 set ref 1052 1120* 1123* input_line 234 based structure level 2 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" input_line 52 000616 automatic structure level 2 in structure "trace_info" dcl 131 in procedure "absentee_listen_" set ref 1052* input_line 35 000534 automatic bit(1) level 2 in structure "ec_info" dcl 129 in procedure "absentee_listen_" set ref 513* 539* 623 624* 640* 656 729 730* 746* 827* input_string 60 based structure level 2 dcl 1-23 io_module_name 1 based varying char(32) level 2 dcl 1-23 set ref 418* iocb 14 001026 automatic pointer level 2 in structure "tracing" dcl 1020 in procedure "set_trace" set ref 1077 1167* iocb 2 parameter pointer level 2 in structure "P_line" dcl 1062 in procedure "set_one_trace" set ref 1077* iocb based structure level 1 dcl 8-6 in procedure "absentee_listen_" iox_$attach_name 000076 constant entry external dcl 165 ref 594 859 iox_$close 000130 constant entry external dcl 756 ref 764 iox_$control 000100 constant entry external dcl 165 ref 216 371 763 870 916 iox_$destroy_iocb 000104 constant entry external dcl 165 ref 586 599 614 766 iox_$detach_iocb 000102 constant entry external dcl 165 ref 585 613 765 iox_$find_iocb 000106 constant entry external dcl 165 ref 1167 iox_$get_line 000110 constant entry external dcl 165 ref 519 iox_$open 000112 constant entry external dcl 165 ref 865 iox_$user_io 000024 external static pointer dcl 149 set ref 211 216* label_search_sw 300 based bit(1) level 2 dcl 1-23 set ref 425* len 2 000102 automatic fixed bin(21,0) array level 3 in structure "args" dcl 900 in procedure "set_args" set ref 913* len 62 based fixed bin(21,0) level 3 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" set ref 421* len 2 based fixed bin(21,0) level 2 in structure "handler_node" dcl 2-8 in procedure "absentee_listen_" ref 421 length builtin function dcl 953 in procedure "find_ec" ref 1006 length builtin function dcl 83 in procedure "absentee_listen_" ref 236 236 283 283 285 285 516 930 1030 level 24 000506 automatic fixed bin(17,0) level 2 dcl 127 set ref 221* limit 65 based fixed bin(21,0) level 3 dcl 1-23 set ref 423* listen_static_data_ 000126 external static structure level 1 dcl 9-6 listener_control 000506 automatic structure level 1 dcl 127 set ref 219* 232 listener_pl1_label 356 based label variable level 3 dcl 1-23 set ref 234* 289* 379* 656 local_condition_info 000706 automatic structure level 1 dcl 133 set ref 459 459 629 629 740 740 845 mc_ptr based pointer level 2 in structure "condition_info" dcl 3-14 in procedure "absentee_listen_" ref 435 mc_ptr 344 based pointer level 4 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" set ref 435* mc_ptr 000706 automatic pointer level 2 in structure "local_condition_info" dcl 133 in procedure "absentee_listen_" set ref 738* must_search 000163 automatic bit(1) dcl 956 set ref 975* 982* 990 new_release 12 000506 automatic label variable level 2 dcl 127 set ref 230* next_ptr 14 based pointer level 2 dcl 2-8 ref 485 494 noabort 260(01) based bit(1) level 4 packed packed unaligned dcl 1-23 set ref 280* 282* null builtin function dcl 953 in procedure "find_ec" ref 992 999 999 null builtin function dcl 83 in procedure "absentee_listen_" ref 201 220 225 255 257 259 261 263 283 299 348 348 391 402 428 430 438 459 459 465 478 490 526 543 549 583 599 633 660 669 710 732 738 740 740 761 761 769 772 809 814 820 825 830 849 849 null_entry_value 001004 automatic entry variable dcl 807 set ref 809* 810 821 822 823 824 off 0(05) 001026 automatic bit(1) level 2 packed packed unaligned dcl 1020 set ref 1047 1074 1131* on 234(01) based bit(1) level 3 in structure "abs_data" packed packed unaligned dcl 1-23 in procedure "absentee_listen_" set ref 426* on 200(01) based bit(1) level 3 in structure "abs_data" packed packed unaligned dcl 1-23 in procedure "absentee_listen_" set ref 426* on 216(01) based bit(1) level 3 in structure "abs_data" packed packed unaligned dcl 1-23 in procedure "absentee_listen_" set ref 426* on 0(04) 001026 automatic bit(1) level 2 in structure "tracing" packed packed unaligned dcl 1020 in procedure "set_trace" set ref 1047 1047* 1067 on 0(01) parameter bit(1) level 2 in structure "P_line" packed packed unaligned dcl 1062 in procedure "set_one_trace" set ref 1068* 1074* on 162(01) based bit(1) level 3 in structure "abs_data" packed packed unaligned dcl 1-23 in procedure "absentee_listen_" set ref 426* on_info 322 based structure level 2 dcl 1-23 set ref 429* open_data 66 based structure level 2 dcl 1-23 output_file 152 based structure level 2 dcl 1-23 set ref 791* 791 output_switch 0(06) 001026 automatic bit(1) level 2 packed packed unaligned dcl 1020 set ref 1077 1172* p 000374 automatic pointer dcl 92 set ref 477* 478 480 483* 485* 485 489* 490 491 492* 494* 494 parent_abs_data_ptr 332 based pointer level 3 dcl 1-23 set ref 442* parser_version 150 based fixed bin(17,0) level 3 dcl 1-23 set ref 607 1125 1136 1144 1148 1152 1157 1165 path 000376 automatic char(168) packed unaligned dcl 92 in procedure "absentee_listen_" set ref 590* 592* 594 594 path based char packed unaligned dcl 956 in procedure "find_ec" set ref 987* 988* path_arg_pos 000450 automatic fixed bin(17,0) dcl 92 set ref 324* 325 341* 344 346* 354 374 path_len 000164 automatic fixed bin(21,0) dcl 956 set ref 976* 987 987 988 988 pathname 000165 automatic varying char dcl 956 set ref 1005* 1006 1006* 1006 1007* 1007 1009 position 64 based fixed bin(21,0) level 3 dcl 1-23 set ref 422* prefix 4 parameter varying char(32) level 2 in structure "P_line" dcl 1062 in procedure "set_one_trace" set ref 1076* prefix 2 001026 automatic varying char(32) level 2 in structure "tracing" dcl 1020 in procedure "set_trace" set ref 1076 1160* prefix_sw 0(07) 001026 automatic bit(1) level 2 packed packed unaligned dcl 1020 set ref 1076 1159* prev_if_ptr 316 based pointer level 3 dcl 1-23 set ref 428* prev_ptr 000506 automatic pointer level 2 in structure "listener_control" dcl 127 in procedure "absentee_listen_" set ref 220* prev_ptr based pointer level 2 in structure "based_listener_control" dcl 9-11 in procedure "absentee_listen_" ref 463 564 prev_sp 20 based pointer level 2 dcl 10-36 ref 225 227 ptr based pointer level 2 in structure "handler_node" dcl 2-8 in procedure "absentee_listen_" ref 420 ptr 1 000102 automatic pointer array level 3 in structure "args" packed packed unaligned dcl 900 in procedure "set_args" set ref 912* ptr 60 based pointer level 3 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" set ref 420* 785 785 read_len 000451 automatic fixed bin(21,0) dcl 92 set ref 516* 519* 534* read_ptr 000452 automatic pointer dcl 92 set ref 515* 519* 533* ready 16 based entry variable level 2 dcl 7-7 ref 261 261 261 ready_mode 000740 automatic structure level 1 dcl 135 set ref 669* 672* 688* 811* ready_procedure 000454 automatic entry variable dcl 92 set ref 261* 669 669 810* release 6 000506 automatic label variable level 2 dcl 127 set ref 230* release_all 2 000506 automatic label variable level 2 dcl 127 set ref 230* release_temp_segment_ 000114 constant entry external dcl 165 ref 549 769 request_id_ 000116 constant entry external dcl 165 ref 826 requote_string_ 000120 constant entry external dcl 165 ref 594 859 return_len 3 000534 automatic fixed bin(21,0) level 2 dcl 129 set ref 819* 884* return_ptr 4 000534 automatic pointer level 2 dcl 129 set ref 820* 884* reverse builtin function dcl 953 ref 978 rtrim builtin function dcl 953 in procedure "find_ec" ref 1005 rtrim builtin function dcl 83 in procedure "absentee_listen_" ref 592 594 594 859 859 859 859 930 saved_abs_data_ptr 000460 automatic pointer dcl 92 set ref 442* 780 785 785 788 791 792 797 saved_in_handler_sw 000462 automatic bit(1) packed unaligned dcl 92 set ref 541* 547 saved_input_line_sw 000100 automatic bit(1) dcl 727 in procedure "clean_up" set ref 729* 746 saved_input_line_sw 000107 automatic bit(1) dcl 621 in procedure "invoke_handler" set ref 623* 640 search builtin function dcl 953 ref 978 search_dirname 000165 automatic char(168) packed unaligned dcl 956 set ref 999* 1000 search_list parameter char packed unaligned dcl 949 set ref 946 982 999* 1001* search_paths_$find_dir 000140 constant entry external dcl 971 ref 999 seg_ptr 000464 automatic pointer dcl 92 set ref 526 528* 531 549 549* 769 769* 814* set_ready_mode 22 based entry variable level 2 in structure "exec_com_info" dcl 7-7 in procedure "absentee_listen_" ref 263 263 263 set_ready_mode 16 000534 automatic entry variable level 2 in structure "ec_info" dcl 129 in procedure "absentee_listen_" set ref 263* 308* 823* signal_io_error_ 000122 constant entry external dcl 165 ref 536 sp 000752 automatic pointer dcl 10-31 set ref 222* 223 225 225 227* 227 spno 000466 automatic bit(18) dcl 92 set ref 223* 225 stack_frame based structure level 1 dcl 10-36 stackframeptr builtin function dcl 83 ref 222 start 63 based fixed bin(21,0) level 3 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" set ref 422* 608 start 16 000506 automatic label variable level 2 in structure "listener_control" dcl 127 in procedure "absentee_listen_" set ref 231* state 000467 automatic fixed bin(17,0) dcl 92 set ref 202* 248* 300* 393* 576* 703 758 832* 926* status 000100 automatic fixed bin(35,0) dcl 755 in procedure "finish_up" set ref 763* 764* 765* 766* 769* status 000470 automatic fixed bin(35,0) dcl 92 in procedure "absentee_listen_" set ref 216* 217 217* 236* 238 238 238* 283* 285* 287 287 287* 371* 372 372* 377* 511 518 519* 521 521 525* 526 536* 543* 545* 549* 594* 596 598 613* 614 614* 635* 636 859* 863 863* 865* 866 866* 870* 871 871* 884* 885 886 886* 910* 916* 917 917* 987* 988 988* 995* 996 999* 1000 1001 1001* 1167* 1168 1169* status_code 104 based fixed bin(35,0) level 3 dcl 11-7 set ref 853* str_len 001025 automatic fixed bin(21,0) dcl 1019 set ref 1030* 1032 stream_input 000056 constant fixed bin(17,0) initial dcl 147 set ref 865* string builtin function dcl 83 set ref 811* stringsize 000114 stack reference condition dcl 86 ref 932 sub_error_ 000102 stack reference condition dcl 843 ref 847 868 sub_error_info based structure level 1 dcl 11-7 sub_error_info_ptr 000754 automatic pointer dcl 11-6 set ref 852* 853 853 substr builtin function dcl 83 ref 532 533 1042 1042 1043 1092 1092 1092 1092 subsystem_dir 000237 automatic char(168) packed unaligned dcl 956 set ref 992* 995* 996* 999* subsystem_dir_ptr parameter pointer dcl 949 set ref 946 992 995* suffix parameter char packed unaligned dcl 949 set ref 946 987* switch_ptr 26 000534 automatic pointer level 2 dcl 129 set ref 211* 213 371* 442 443 519* 536* 583 585* 586* 594* 599 599* 603 613* 614* 761 763* 764* 765* 766* 797 825* 859* 865* 870* 873 916* switches 260 based structure level 3 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" switches 326 based structure level 3 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" sys_info$max_seg_size 000026 external static fixed bin(35,0) dcl 149 ref 534 trace_info 000616 automatic structure level 1 dcl 131 set ref 352* 367* 371 371 tracing 001026 automatic structure level 1 unaligned dcl 1020 set ref 1028* turned_on_in_handler_sw 000110 automatic bit(1) dcl 621 set ref 626* 627* 642 types 001026 automatic structure level 2 packed packed unaligned dcl 1020 set ref 1049 1049* unique_chars_ 000124 constant entry external dcl 165 ref 594 594 unspec builtin function dcl 83 set ref 219* 255 257 259 261 263 283 352* 367* 427* 429* 809* 809 1028* 1049 1049* variables_ptr 410 based pointer level 2 dcl 1-23 set ref 792* 792 version 1 000534 automatic fixed bin(17,0) level 2 dcl 129 set ref 817* version_id 000534 automatic char(4) level 2 dcl 129 set ref 816* victim_ptr 252 based pointer level 3 dcl 1-23 set ref 438 was_attached_sw 326 based bit(1) level 4 packed packed unaligned dcl 1-23 set ref 438* wc_ptr 16 based pointer level 2 in structure "condition_info" dcl 3-14 in procedure "absentee_listen_" ref 437 wc_ptr 350 based pointer level 4 in structure "abs_data" dcl 1-23 in procedure "absentee_listen_" set ref 437* wc_ptr 16 000706 automatic pointer level 2 in structure "local_condition_info" dcl 133 in procedure "absentee_listen_" set ref 738* who_am_i 37 000534 automatic varying char(72) level 2 dcl 129 set ref 209* 217* 238* 267* 280 287* 309* 331* 337* 372* 529* 853* 863* 866* 871* 886* 917* 984* 988* 1001* 1107* 1126* 1137* 1169* 1176* whoami 000472 automatic char(32) packed unaligned dcl 92 set ref 209* 268* 309* 317* 320* 528* 549* 769* 859 work_area 416 based area(800) level 2 dcl 1-23 set ref 440* 440 780 work_len 000502 automatic fixed bin(21,0) dcl 92 set ref 517* 518 520* 520 521 532 532 533 533 534 543* 545* work_ptr 000504 automatic pointer dcl 92 set ref 515* 531* 532 533 543* 545* work_string based char packed unaligned dcl 92 set ref 532* 533 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. RETURN_PTR_MASK internal static bit(72) initial packed unaligned dcl 10-19 TRANSLATOR_ID_ALM internal static bit(18) initial packed unaligned dcl 10-25 TRANSLATOR_ID_PL1V1 internal static bit(18) initial packed unaligned dcl 10-26 TRANSLATOR_ID_PL1V2 internal static bit(18) initial packed unaligned dcl 10-24 TRANSLATOR_ID_SIGNALLER internal static bit(18) initial packed unaligned dcl 10-28 TRANSLATOR_ID_SIGNAL_CALLER internal static bit(18) initial packed unaligned dcl 10-27 Work_area_size internal static fixed bin(17,0) initial dcl 1-177 abs_data_version_1 internal static fixed bin(17,0) initial dcl 1-177 condition_info_header_ptr automatic pointer dcl 4-4 condition_info_version_1 internal static fixed bin(17,0) initial dcl 3-30 ec_data_ptr automatic pointer dcl 5-3 ec_trace_info_ptr automatic pointer dcl 6-6 exec_com_info_version_1 internal static fixed bin(17,0) initial dcl 7-17 iox_$iocb_version_sentinel external static char(4) dcl 8-51 stack_frame_flags based structure level 1 dcl 10-64 stack_frame_min_length internal static fixed bin(17,0) initial dcl 10-33 sub_error_info_version_1 internal static fixed bin(17,0) initial dcl 11-13 NAMES DECLARED BY EXPLICIT CONTEXT. BAD_TRACE_SYNTAX 007503 constant label dcl 1107 ref 1112 1115 1118 1121 1134 1142 1146 1150 1155 1163 BAD_V1_TRACE_MODE 007765 constant label dcl 1137 ref 1144 1148 1152 1157 1165 COMMAND_USAGE 001507 constant label dcl 317 ref 344 COMMON 002621 constant label dcl 449 ref 240 291 381 447 CONTINUE 003272 constant label dcl 549 ref 234 289 379 EGRESS 003744 constant label dcl 719 ref 321 332 338 521 553 636 715 1109 1127 1139 1170 1177 LISTENER_LOOP 003024 constant label dcl 504 ref 559 PATHNAME_TOO_LONG 004124 constant label dcl 940 ref 932 RELEASE_LABEL 003321 constant label dcl 555 ref 230 START_LABEL 003324 constant label dcl 564 ref 231 absentee_listen_ 000454 constant entry external dcl 36 attach_ec 005220 constant entry internal dcl 838 ref 270 348 check_arg_list 005757 constant entry internal dcl 879 ref 276 313 clean_up 004524 constant entry internal dcl 724 ref 205 251 303 404 complain 004367 constant entry internal dcl 694 ref 217 238 287 372 529 853 863 866 871 886 917 984 988 1001 1107 1126 1137 1169 1176 ec 001410 constant entry external dcl 293 exec_com 001417 constant entry external dcl 293 ref 594 594 859 859 exec_com_ 000776 constant entry external dcl 242 exec_com_$find_ec 003757 constant entry external dcl 923 execute_handler 002356 constant entry external dcl 383 find_ec 006214 constant entry internal dcl 946 ref 348 934 finish_up 004634 constant entry internal dcl 752 ref 719 748 get_ec_version_ 003337 constant entry external dcl 570 initialize_ec_info 005112 constant entry internal dcl 804 ref 207 253 305 579 invoke_handler 004140 constant entry internal dcl 618 ref 483 492 invoke_ready_procedure 004313 constant entry internal dcl 666 ref 511 set_args 006036 constant entry internal dcl 895 ref 278 374 set_keyword 007447 constant entry internal dcl 1098 ref 1092 1093 set_one_trace 007201 constant entry internal dcl 1060 ref 1051 1052 1053 1054 set_ready_mode 004354 constant entry internal dcl 683 ref 308 set_term 007316 constant entry internal dcl 1083 ref 1038 1042 set_trace 006672 constant entry internal dcl 1013 ref 360 365 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 11504 11646 10531 11514 Length 12430 10531 142 545 753 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME absentee_listen_ 715 external procedure is an external procedure. on unit on line 205 64 on unit on unit on line 251 64 on unit on unit on line 303 64 on unit on unit on line 404 64 on unit on unit on line 457 112 on unit on unit on line 581 72 on unit invoke_handler internal procedure shares stack frame of on unit on line 457. invoke_ready_procedure internal procedure shares stack frame of external procedure absentee_listen_. set_ready_mode 64 internal procedure is assigned to an entry variable. complain 88 internal procedure is declared options(variable). clean_up 94 internal procedure is called by several nonquick procedures. finish_up 90 internal procedure is called by several nonquick procedures. initialize_ec_info internal procedure shares stack frame of external procedure absentee_listen_. attach_ec 124 internal procedure is called during a stack extension, and enables or reverts conditions. on unit on line 847 96 on unit check_arg_list internal procedure shares stack frame of external procedure absentee_listen_. set_args 104 internal procedure uses auto adjustable storage. on unit on line 932 64 on unit find_ec 286 internal procedure uses auto adjustable storage, and uses returns(char(*)) or returns(bit(*)). set_trace internal procedure shares stack frame of external procedure absentee_listen_. begin block on line 1031 91 begin block uses auto adjustable storage. set_one_trace internal procedure shares stack frame of begin block on line 1031. set_term 96 internal procedure is called during a stack extension. set_keyword 124 internal procedure is called during a stack extension. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME absentee_listen_ 000122 auto_in_handler_sw absentee_listen_ 000123 auto_cond_name absentee_listen_ 000133 arg_count absentee_listen_ 000134 arg_len absentee_listen_ 000136 arg_ptr absentee_listen_ 000140 arg_list_ptr absentee_listen_ 000142 actual_len absentee_listen_ 000143 buffer absentee_listen_ 000343 command_sw absentee_listen_ 000344 cond_name absentee_listen_ 000354 continue_to_signal_sw absentee_listen_ 000355 entry_point_name absentee_listen_ 000365 goto_label_len absentee_listen_ 000366 goto_label_ptr absentee_listen_ 000370 handler_found_sw absentee_listen_ 000371 i absentee_listen_ 000372 initialized absentee_listen_ 000374 p absentee_listen_ 000376 path absentee_listen_ 000450 path_arg_pos absentee_listen_ 000451 read_len absentee_listen_ 000452 read_ptr absentee_listen_ 000454 ready_procedure absentee_listen_ 000460 saved_abs_data_ptr absentee_listen_ 000462 saved_in_handler_sw absentee_listen_ 000464 seg_ptr absentee_listen_ 000466 spno absentee_listen_ 000467 state absentee_listen_ 000470 status absentee_listen_ 000471 X_status absentee_listen_ 000472 whoami absentee_listen_ 000502 work_len absentee_listen_ 000504 work_ptr absentee_listen_ 000506 listener_control absentee_listen_ 000534 ec_info absentee_listen_ 000616 trace_info absentee_listen_ 000706 local_condition_info absentee_listen_ 000740 ready_mode absentee_listen_ 000742 abs_data_ptr absentee_listen_ 000744 handler_node_ptr absentee_listen_ 000746 condition_info_ptr absentee_listen_ 000750 exec_com_info_ptr absentee_listen_ 000752 sp absentee_listen_ 000754 sub_error_info_ptr absentee_listen_ 001004 null_entry_value initialize_ec_info 001024 i set_trace 001025 str_len set_trace 001026 tracing set_trace attach_ec 000100 code attach_ec begin block on line 1031 000100 buffer begin block on line 1031 clean_up 000100 saved_input_line_sw clean_up complain 000100 arg_list_ptr complain 000102 based_status_ptr complain find_ec 000100 dirname find_ec 000152 entryname find_ec 000162 entryname_len find_ec 000163 must_search find_ec 000164 path_len find_ec 000165 pathname find_ec 000165 search_dirname find_ec 000237 subsystem_dir find_ec finish_up 000100 status finish_up on unit on line 457 000106 goto_sw invoke_handler 000107 saved_input_line_sw invoke_handler 000110 turned_on_in_handler_sw invoke_handler set_args 000100 args_index set_args 000101 i set_args 000102 args set_args set_term 000100 i set_term THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_char_temp cat_realloc_chars enter_begin_block leave_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 tra_ext_2 alloc_auto_adj enable_op shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc repeat set_bits_eis return_chars_eis op_alloc_ op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. abs_io_$allocate_abs_data abs_io_$initialize_abs_data abs_io_v2_get_line$goto absentee_listen_$execute_handler active_fnc_err_ active_fnc_err_$af_suppress_name area_assign_ com_err_ com_err_$suppress_name continue_to_signal_ cu_$af_return_arg_rel cu_$arg_list_ptr cu_$arg_ptr cu_$arg_ptr_rel cu_$cp cu_$generate_call cu_$ready_proc expand_pathname_$add_suffix find_condition_info_ get_temp_segment_ hcs_$fs_get_path_name iox_$attach_name iox_$close iox_$control iox_$destroy_iocb iox_$detach_iocb iox_$find_iocb iox_$get_line iox_$open release_temp_segment_ request_id_ requote_string_ search_paths_$find_dir signal_io_error_ unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$badpath error_table_$end_of_info error_table_$long_record error_table_$no_search_list error_table_$not_act_fnc error_table_$pathlong iox_$user_io listen_static_data_ sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 36 000451 199 000467 201 000472 202 000474 203 000476 205 000477 207 000521 209 000522 211 000532 213 000536 214 000541 216 000543 217 000574 219 000622 220 000625 221 000627 222 000631 223 000632 224 000635 225 000636 226 000647 227 000650 228 000652 229 000653 230 000655 231 000674 232 000677 234 000702 236 000716 238 000741 240 000770 242 000771 245 001027 247 001032 248 001035 249 001037 251 001040 253 001062 255 001063 257 001102 259 001120 261 001136 263 001154 266 001172 267 001173 268 001205 270 001210 272 001231 274 001233 276 001236 278 001245 280 001254 282 001265 283 001270 285 001323 287 001343 289 001372 291 001406 293 001407 297 001424 299 001427 300 001431 301 001433 303 001434 305 001456 306 001457 308 001461 309 001464 311 001473 313 001502 315 001504 317 001507 320 001537 321 001564 324 001565 325 001566 326 001577 327 001615 328 001631 329 001641 330 001642 331 001645 332 001701 334 001702 335 001703 337 001710 338 001742 340 001743 341 001744 342 001746 344 001750 346 001752 348 001772 350 002045 352 002050 354 002053 355 002063 356 002101 357 002115 358 002121 359 002122 360 002140 361 002157 362 002160 363 002164 364 002165 365 002203 366 002222 367 002223 369 002232 371 002234 372 002267 374 002314 376 002325 377 002330 379 002332 381 002346 383 002347 389 002370 391 002373 393 002376 394 002400 396 002401 397 002404 398 002411 402 002414 404 002416 406 002440 408 002447 410 002457 412 002460 414 002467 418 002471 420 002477 421 002502 422 002505 423 002510 425 002511 426 002513 427 002520 428 002523 429 002525 430 002530 432 002534 433 002536 434 002542 435 002550 436 002552 437 002556 438 002562 440 002573 442 002610 443 002615 445 002617 447 002620 449 002621 455 002622 457 002625 459 002641 460 002661 462 002666 463 002672 465 002677 468 002706 470 002714 471 002716 473 002721 475 002722 477 002723 478 002726 480 002733 481 002740 483 002742 484 002750 485 002751 486 002753 488 002754 489 002756 490 002761 491 002767 492 002774 493 003002 494 003003 495 003005 498 003006 500 003021 502 003023 511 003024 513 003032 515 003033 516 003037 517 003041 518 003042 519 003046 520 003065 521 003067 525 003076 526 003100 528 003106 529 003126 531 003153 532 003155 533 003162 534 003165 535 003174 536 003175 537 003220 539 003221 541 003223 543 003230 545 003251 547 003264 549 003272 551 003317 553 003320 555 003321 559 003323 564 003324 568 003331 570 003332 576 003362 577 003364 579 003365 581 003366 583 003402 585 003407 586 003420 588 003433 590 003434 592 003462 594 003524 596 003655 598 003660 599 003661 600 003677 603 003700 605 003703 607 003705 608 003710 609 003712 611 003716 613 003717 614 003730 616 003743 719 003744 722 003750 923 003751 926 004013 927 004015 929 004016 930 004021 932 004035 934 004054 936 004121 938 004123 940 004124 942 004134 944 004137 618 004140 623 004142 624 004145 626 004146 627 004147 629 004157 633 004214 634 004221 635 004223 636 004254 637 004262 638 004263 640 004264 642 004267 645 004274 646 004276 656 004301 657 004305 660 004307 662 004312 666 004313 669 004314 672 004331 675 004345 677 004352 683 004353 688 004361 690 004365 694 004366 701 004374 703 004402 705 004406 706 004416 707 004437 708 004442 710 004443 712 004463 713 004503 715 004520 724 004523 729 004531 730 004534 732 004535 737 004551 738 004555 740 004561 746 004622 748 004625 750 004632 752 004633 758 004641 761 004645 763 004661 764 004712 765 004724 766 004736 769 004750 772 004776 776 005011 778 005017 780 005022 782 005036 783 005044 785 005046 788 005067 791 005071 792 005076 794 005101 797 005103 800 005111 804 005112 809 005113 810 005124 811 005131 812 005132 814 005133 816 005135 817 005137 818 005141 819 005142 820 005143 821 005145 822 005151 823 005155 824 005161 825 005165 826 005166 827 005207 828 005211 830 005212 832 005214 834 005216 838 005217 845 005240 847 005244 849 005260 850 005277 852 005302 853 005307 855 005336 856 005337 857 005347 859 005350 863 005547 865 005606 866 005626 868 005664 870 005665 871 005721 873 005751 875 005756 879 005757 884 005761 885 006001 886 006006 889 006034 895 006035 900 006043 906 006056 907 006061 909 006062 910 006071 911 006111 912 006112 913 006120 914 006124 916 006126 917 006160 919 006212 946 006213 956 006234 975 006246 976 006247 978 006251 979 006263 981 006264 982 006266 983 006277 984 006300 987 006334 988 006373 990 006430 992 006432 995 006443 996 006476 999 006504 1000 006545 1001 006554 1005 006615 1006 006636 1007 006650 1009 006662 1013 006672 1028 006703 1030 006706 1031 006707 1032 006712 1034 006723 1035 006735 1036 006744 1037 006757 1038 006760 1039 007006 1040 007010 1042 007011 1043 007037 1045 007054 1047 007055 1049 007063 1051 007070 1052 007111 1053 007133 1054 007155 1055 007177 1057 007200 1060 007201 1065 007212 1067 007215 1068 007221 1069 007223 1071 007237 1072 007256 1074 007262 1075 007267 1076 007275 1077 007306 1079 007314 1083 007315 1091 007331 1092 007344 1093 007416 1095 007445 1098 007446 1105 007467 1107 007503 1109 007537 1111 007542 1112 007547 1114 007560 1115 007565 1117 007576 1118 007603 1120 007614 1121 007621 1123 007632 1125 007645 1126 007660 1127 007713 1130 007716 1131 007740 1132 007747 1134 007750 1136 007761 1137 007765 1139 010022 1141 010025 1142 010030 1144 010041 1145 010045 1146 010050 1148 010065 1149 010071 1150 010074 1152 010105 1153 010111 1155 010114 1157 010125 1159 010131 1160 010133 1161 010144 1163 010145 1165 010162 1167 010166 1168 010207 1169 010213 1170 010245 1172 010250 1173 010252 1176 010253 1177 010311 1180 010314 ----------------------------------------------------------- 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