/* START OF: abs_io_data.incl.pl1 * * * * * * * * * * * * * * * * * * * */ /****^ HISTORY COMMENTS: 1) change(87-02-20,Parisek), approve(87-07-23,MCR7716), audit(87-07-30,Fawcett), install(87-08-11,MR12.1-1080): Added the noabort flag for determining whether or not to abort after exec_com error occurs. END HISTORY COMMENTS */ /* Initial coding: 25 June 79 by J. Spencer Love */ /* login_channel option flag BIM 11/81 */ /* Added this_action and next_action 04/20/82 S. Herbst */ /* Added on_info, goto_statement_(pos len) 01/06/83 S. Herbst */ /* Added output_file.turn_off_ssw 05/16/83 S. Herbst */ /* Added attach.trim_whitespace_sw 06/02/83 S. Herbst */ /* Added listener_pl1_label and get_line_pl1_label 11/17/83 S. Herbst */ /* Added (command comment control input)_line.by_control_arg 03/20/84 S. Herbst */ declare abs_data_ptr ptr; declare 1 abs_data aligned based (abs_data_ptr), 2 version fixed bin, /* Version = 1 */ 2 io_module_name char (32) varying, /* either "abs_io_" or "ec_input_" */ 2 open_description char (24) varying, /* either "stream_input" or "stream_input_output" */ 2 unique_name char (15) varying, /* &! -- either blank or 15 char unique string */ /* */ 2 ec_data_ptr ptr, /* -> communication area for exec_com */ 2 expand_data_ptr ptr, /* -> structure for abs_io_expand_ */ /* */ 2 instance_chain, /* two way linked chain of abs_data blocks for debugging */ 3 prev_ptr ptr, /* -> next older abs_data instance */ 3 next_ptr ptr, /* -> next newer abs_data instance */ 3 level fixed bin, /* level of ec invocation in chain for debugging */ 3 pad bit (36), /* */ /* */ 2 arg_info, /* */ 3 ec_path_ptr ptr, /* Ptr to allocated &ec_path string */ 3 ec_path_len fixed bin (21), /* Length of allocated &ec_path (&0) string */ 3 ec_path_quotes fixed bin (21), /* Number of quote chars in &ec_path, -1 if not yet counted */ 3 ec_name_ptr ptr, /* Ptr to allocated &ec_name string */ 3 ec_name_len fixed bin (21), /* Length of allocated &ec_name string */ 3 ec_name_quotes fixed bin (21), /* Number of quote chars in &ec_name, -1 if not yet counted */ 3 arg_ptr ptr, /* pointer to allocated structure containing args */ 3 arg_count fixed bin, /* number of arguments passed */ 3 args_copied bit (1), /* 1 indicates arguments were copied into work_area */ 3 default_arg_ptr ptr, /* pointer to allocated &default args */ 3 default_arg_count fixed bin, /* number of &default args */ 3 pad bit (36), /* */ /* */ 2 input_string, /* data about input segment or archive component */ 3 ptr ptr, /* pointer to input file */ 3 len fixed bin (21), /* number of characters in input file */ 3 start fixed bin (21), /* initial value for input_pos, set beyond &version, if any */ 3 position fixed bin (21), /* current index into input file */ 3 limit fixed bin (21), /* farthest point yet reached...begin &label search here */ /* */ 2 open_data, /* data saved at attach time for open time */ 3 output_dir char (168) unal, /* directory pathname of output file (if specified) */ 3 output_entry char (32) unal, /* entryname of output file (if specified) */ 3 parser_version fixed bin, /* indicates version of parser (get_line) for open */ 3 si bit (1) unal, /* 1 indicates opening for stream_input permitted */ 3 sio bit (1) unal, /* 1 indicates opening for stream_input_output permitted */ 3 ssf bit (1) unal, /* 1 indicates output file cannot be MSF */ 3 truncate bit (1) unal, /* 1 indicates output file truncated at open */ 3 no_set_bc bit (1) unal, /* 1 to set absout bitcount only at close */ 3 login_channel bit (1) unal, /* 1 to fish arguments from PIT */ 3 pad bit (30) unal, /* */ /* */ 2 output_file, /* data for abs_io_put_chars */ 3 fcb_ptr ptr, /* -> File Control Block for msf_manager_, null if SSF */ 3 seg_ptr ptr, /* -> base of current component of output file */ 3 current_len fixed bin (21), /* number of characters in current component */ 3 max_len fixed bin (21), /* max number of characters in a component */ 3 MSF_seg_idx fixed bin, /* index of current MSF component. Used to get new ones */ 3 switches aligned, 4 may_be_MSF bit (1) unaligned, /* 1 indicates absout can become an MSF */ 4 turn_off_ssw bit (1) unaligned, /* 1 means safety switch of absout was off originally */ 4 mbz bit (34) unaligned, /* */ 2 command_line, /* substructure dealing with tracing command lines */ 3 by_control_arg bit (1) unaligned, /* 1 if trace modes specified by ec control arg */ 3 on bit (1) unaligned, /* 1 to print tracing information */ 3 expand fixed bin (3) unal, /* 1 to print unexpanded, 2 expanded, 3 all, 4 both */ 3 pad1 bit (66) unaligned, /* pad to double word */ 3 iocb ptr, /* I/O switch to put trace out on */ 3 prefix char (32) varying, /* prefix for &trace tracing, eg. "COMMAND: " */ 3 pad2 bit (36), /* */ 2 (comment_line, /* for tracing comments..always unexpanded */ control_line, /* for tracing control lines */ input_line) /* for tracing input lines in &attach mode */ like abs_data.command_line, /* */ 2 attach, /* */ 3 victim_ptr ptr, /* -> IOCB affected by &attach (usually iox_$user_input */ 3 target_ptr ptr, /* -> IOCB &attached to (created by exec_com command) */ 3 save_ptr ptr, /* -> IOCB used to save previous victim_ptr -> IOCB */ 3 switches, 4 trim_whitespace_sw bit (1) unaligned, /* OFF for &attach &trim off, ON by default */ 4 noabort bit (1) unaligned, /* ON if continue after severity 1 error */ 4 pad bit (34) unaligned, /* */ 2 allocated_chars_ptr ptr, /* -> allocated buffer for freeing */ 2 chars_ptr ptr, /* -> characters in buffer waiting to be returned */ 2 else_clause_ptr ptr, /* -> characters in deferred else clause */ 2 allocated_chars_len fixed bin (21), /* total length of allocated buffer */ 2 chars_len fixed bin (21), /* characters left in buffer to be returned */ 2 else_clause_len fixed bin (21), /* length of deferred else clause */ /* */ 2 absentee bit (1), /* 1 indicates logout on &quit */ 2 quit bit (1), /* 1 indicates orderly exit, quit or return */ /* */ 2 active bit (1), /* 1 indicates get_line is busy, for recursion check */ 2 eof bit (1), /* 1 indicates &quit found or no more input */ 2 last_input_line_sw bit (1), /* previous line returned was an input line */ 2 label_search_sw bit (1), /* ON when searching for target of &goto */ 2 nest_level fixed bin, /* V1: depth of &if-&then-&else nesting */ 2 expected_nest_level fixed bin, /* V1: depth that must be reached to resume execution */ /* */ 2 goto_statement_pos fixed bin (21), /* position of last &goto stmt, for error msgs */ 2 goto_statement_len fixed bin (21), /* length of the &goto stmt */ 2 if_info aligned, /* &if-&then-&else nesting info */ 3 if_sw bit (1), /* ON if inside an &if-&then-&else construct */ 3 true_sw bit (1), /* ON after "&if true" */ 3 got_then_sw bit (1), /* ON after the &then has been seen */ 3 got_else_sw bit (1), /* ON after the &else has been seen */ 3 clause_type fixed bin, /* previous &then or &else */ 3 skip_sw bit (1), /* ON if skipping a &then or &else clause */ 3 skip_block_level fixed bin, /* how many levels of &do we are inside while skipping */ 3 prev_if_ptr ptr, /* ptr to if_info (saved) of &if we are nested inside */ 3 this_action fixed bin, /* copy of expand_data.this_statement.action */ 3 next_action fixed bin, /* copy of expand_data.next_statement.action */ 2 on_info aligned, /* info pertaining to &on units in the ec */ 3 cleanup_handler_ptr ptr, /* -> node for cleanup handler if any */ 3 first_handler_ptr ptr, /* -> top of chain of nodes for other handlers */ 3 switches aligned, 4 was_attached_sw bit (1) unal, /* 1 indicates parent ec was &attach'ed */ 4 in_handler_sw bit (1) unal, /* 1 indicates we are now executing some handler text */ 4 exit_sw bit (1) unal, /* 1 indicates ready to exit the handler via &exit or &goto */ 4 goto_sw bit (1) unal, /* 1 means this exit is accomplished by a nonlocal &goto */ 4 continue_to_signal_sw bit (1) unal, /* 1 means &continue_to_signal was executed */ 4 pad bit (31) unal, 3 handler_node_ptr ptr, /* -> parent's handler_node for this condition */ 3 parent_abs_data_ptr ptr, /* -> abs_data structure of parent ec */ 3 condition_info aligned, /* selected condition info if in_handler_sw is ON */ 4 condition_name char (32), /* name of condition signalled */ 4 mc_ptr ptr, /* machine conditions ptr for signal_ */ 4 info_ptr ptr, /* ptr to specific condition info, for signal_ */ 4 wc_ptr ptr, /* machine conditions for lower ring fault, for signal_ */ 3 goto_label_ptr ptr, /* -> &goto label if goto_sw is on */ 3 goto_label_len fixed bin (21), /* length of the &goto label */ 3 listener_pl1_label label variable, /* for nonlocal goto to parent ec's listener's stack frame */ 3 get_line_pl1_label label variable, /* for nonlocal goto to parent ec's get_line's stack frame */ /* */ 2 saved_state_ptr ptr, /* -> top of parser stack */ 2 current_lex_block_ptr ptr, /* -> lex_block for current block position */ 2 current_proc_block_ptr ptr, /* -> proc block for current procedure */ 2 last_block_ptr ptr, /* -> last lex or proc block that has been allocated */ 2 current_loop_ptr ptr, /* -> loop_block for current active loop */ 2 last_loop_ptr ptr, /* -> last loop block that has been allocated */ /* */ 2 labels_ptr ptr, /* hash table ptr for label hash table */ 2 first_xlabel_ptr ptr, /* first expandable label */ 2 last_xlabel_ptr ptr, /* last expandable label */ 2 variables_ptr ptr, /* hash table ptr for variable hash table */ /* */ 2 timed_input bit (1), /* 1 indicates input requests may be delayed */ 2 low_sleep_time fixed bin (35), /* low sleep time for timed input */ 2 sleep_time_range fixed bin (35), /* high sleep time for timed input */ 2 seed fixed bin (35), /* seed for timed input random numbers */ /* */ 2 work_area area (800); /* extensible area for args, etc. */ declare abs_data_version_1 fixed bin static options (constant) initial (1), Work_area_size fixed bin static options (constant) initial (800); dcl (UNEXPANDED init (1), EXPANDED init (2), ALL init (3), BOTH init (4)) fixed bin int static options (constant); /* END OF: abs_io_data.incl.pl1 * * * * * * * * * * * * * * * * * * * */ */ ----------------------------------------------------------- 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 */