COMPILATION LISTING OF SEGMENT linus Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1112.38_Tue_mdt Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 12 /****^ HISTORY COMMENTS: 13* 1) change(86-01-13,Dupuis), approve(86-01-13,MCR7188), audit(86-07-23,GWMay), 14* install(86-07-29,MR12.0-1106): 15* Added call to ssu_$get_area and ssu_$release_area to have a general 16* freeing area around for linus work, and renamed sfr_ptr to 17* force_retrieve_scope_ptr. 18* 2) change(86-01-13,Dupuis), approve(86-05-23,MCR7404), audit(86-07-23,GWMay), 19* install(86-07-29,MR12.0-1106): 20* Changed version from 4.4. to 4.5 and removed the blast message. This new 21* version makes the assign_values, del_scope, list_scope, 22* list_values, open, and set_scope requests available as active requests. 23* It also provides a new "opened_database" active request. 24* END HISTORY COMMENTS */ 25 26 27 linus: 28 proc; 29 30 /* DESCRIPTION: 31* 32* This is the top level procedure of the LINUS subsystem. This procedure 33* does initialization, calls ssu_ to handle the request, and does termination. 34* 35* 36* 37* HISTORY: 38* 39* 77-04-01 J. A. Weeldreyer: Initially written. 40* 41* 78-11-01 J. C. C. Jagernauth: Modified to prevent quote stripping when 42* modify is requested. 43* 44* 78-09-01 J. C. C. Jagernauth: Modified for MR7.0. 45* 46* 80-01-07 Rickie E. Brinegar: Modified to use linus_invoke$pop_all. 47* 48* 80-01-28 Rickie E. Brinegar: Modified to return to command level on the 49* cleanup condition. 50* 51* 80-04-12 Rickie E. Brinegar: Modified to use linus_define_area instead of 52* get_system_free_area_. 53* 54* 80-06-01 Jim Gray: Modified to take out free of variable in non-freeing 55* area, and to fix quit handling so that a database open by linus, but not 56* closed by it, would not blow linus of the water, upon quitting. 57* 58* 80-10-28 Rickie E. Brinegar: short name cls added to create_list. 59* 60* 80-10-31 Rickie E. Brinegar: short name dl added to delete. 61* 62* 80-11-03 Jim Gray: Modified to change delete_$ptr to hcs_$delentry_seg calls 63* for performance. 64* 65* 80-11-10 Jim Gray: Modified to change delete_$path to hcs_$del_dir_tree and 66* hcs_$delentry_file calls in order to improve performance. 67* 68* 81-02-03 Rickie E. Brinegar: Modified to use the corrected linus_rel_array 69* include file. The unused declarations of delect_$(path ptr) were removed, 70* and the rel builtin was added to the declarations. 71* 72* 81-02-24 Rickie E. Brinegar: Removed the linus_set entry from the 73* declarations and set up the LINUS set request to call the 74* linus_assign_values entry instead of the linus_set entry. This permits the 75* set request to make use of the improvements made to the assign_values 76* request. 77* 78* 81-04-10 Rickie E. Brinegar: Changed the linus version number from 2 to 79* 3.0. 80* 81* 81-04-22 Rickie E. Brinegar: In one place, lcb.is_ptr (the pointer to the 82* input stream) was being used instead of lcb.ivs_ptr (the pointer to the 83* invoke stack). This was causing fatal process errors as pointed out in 84* TR9545. This has now been corrected. 85* 86* 81-05-12 Rickie E. Brinegar: Modified the sub_error_ handler to replace 87* "read_attr", "modify_attr", "append_tuple", and "delete_tuple" with "r", 88* "m", "s", and "d" respectively in sub_error_info.info_string. This will 89* keep the scope terminology in LINUS consistent. 90* 91* 81-07-07 Rickie E. Brinegar: Changed calls to release_area_ to calls to 92* release_temp_segment_. This was done as a result of TR10233. LINUS and 93* MRDS were not correctly freeing temporary segments. 94* 95* 81-07-13 Rickie E. Brinegar: Added a conversion condition trap. 96* 97* 81-09-17 Rickie E. Brinegar: Changed the checkin for a token starting with 98* ".." to insure that the token was atleast two characters long before doing 99* a substr. Corrected the order in which char_argl.nargs is incremented when 100* processing the -argument control argument to increment nargs before making 101* an assignment to the structure that depends on nargs as a limit. 102* 103* 81-09-28 Davids: modified the if statement that controled skipping of 104* double quotes in the get_token proc. Also declared q_flag in that proc. 105* This stops a subscriptrange condition from sometimes occuring. 106* 107* 81-11-12 Rickie E. Brinegar: Added code to keep track of and display the 108* virtual cpu seconds used to determine what a request has been asked, how 109* much time was spent in executing the request, broken down by how much time 110* was spent in LINUS and how much time was spent in MRDS. 111* 112* 82-01-29 David J. Schimke: Added code to initialize two new variables 113* (build_increment and build_start) in the linus control block. This is part 114* of the implementation of the build mode for lila. 115* 116* 82-02-04 Paul W. Benjamin: ssu_ conversion. Roughly 25% of the code 117* removed, the functionality being supplied by ssu_. The invoke request has 118* been retained. The intent is to supply an exec_com request as well, but 119* that implementation is not part of this change. 120* 121* 82-06-24 Al Dupuis: Added code to place sci_ptr in 122* lcb.subsystem_control_info_ptr, and call to ssu_$get_invocation_level to 123* stuff it in lcb.subsystem_invocation_level. 124* 125* 82-08-26 DJ Schimke: Added code to set report_control_info_ptr and 126* table_control_info_ptr to null on linus initiation. Added code to 127* tidy_up procedure to call linus_table$terminate if table_control_info_ptr 128* is not null and to call linus_options$terminate if report_control_info_ptr 129* is not null. 130* 131* 82-10-18 David J. Schimke: Added code to replace the ssu_$abort_line 132* procedure with a linus_abort_line procedure which calls linus_convert_code 133* before calling the standard abort_line procedure. Also fixed a bug which 134* left the lcb lying around after linus terminated. 135* 136* 82-10-27 David J. Schimke: Modified the way linus controls the iteration 137* to use the new ssu_$set_request_processor_options. Deleted the replacement 138* procedures: execute_line, evaluate_active_string, invoke_request and 139* unknown_request which were used to implement the original iteration control 140* under ssu_. This also changed the way linus turned on the optional abbrev 141* processing as this feature is also now part of the request processor 142* options. Added code to execute a subsystem start_up exec_com using 143* ssu_$execute_start_up. Added "-start_up", "-no_startup", "-no_start_up" 144* and "-ns". 145* 146* 82-11-10 Al Dupuis: Changed linus version from 4.0 to 4.1. The major changes 147* made from 4.0 to 4.1 were the inclusion of the report generator, the 148* self-identify request, and the linus_abort_line procedure. 149* 150* 83-02-23 David J. Schimke: Deleted code in tidy_up internal procedure 151* that tried to free the char_argl and macro_request areas after the lcb was 152* already deleted. These were both allocated in the lcb.static area. Also 153* deleted the timer_print call just before the linus exit, since the lcb is 154* always gone by that time and lcb.timing_mode couldn't be checked anyway. 155* 156* 83-04-07 DJ Schimke: Added code to set temp_seg_info_ptr to null on linus 157* initiation and to call linus_temp_seg_mgr$terminate in tidy_up if it is not 158* null. 159* 160* 83-04-13 DJ Schimke: Added code to check icode and call com_err_ after calls 161* to the various termination entry points so errors can be detected. 162* 163* 83-05-09 DJ Schimke: Added call to requote_string_ to protect command line 164* macro arguments from quote stripping. This is in response to TR 15139. Also 165* fixed the calls to com_err_ after termination entrys. The com_err_ calls 166* were not in do groups so they were reporting the last error redundantly. 167* 168* 169* 83-06-06 Bertley G. Moberg: Added support for -print_search_order and 170* -no_optimize 171* 172* 83-06-13 Al Dupuis: Changed linus version from 4.1 to 4.2. The change 173* made from 4.1 to 4.2 was the inclusion of the report writer display 174* request's scrolling feature and a call to ssu_$print_blast to announce 175* new features. 176* 177* 83-08-18 Al Dupuis: Changed version from 4.2 to 4.3. The chaneg made from 178* 4.2 to 4.3 was the inclusion of new report writer features suggested by 179* GM and Ford during the report writer controlled release exposure period. 180* 181* 83-08-26 Al Dupuis: Added code to get a temp segment for storing the 182* query as it is being passed around between different requests and 183* subroutines (i.e. qedx, print_query, save_query, linus_get_query, 184* linus_put_query, etc. Added code to release the temp segment at termination. 185* 186* 83-10-03 Al Dupuis: Changed version from 4.3 to 4.4. Version 4.4 is the 187* first version of the report writer that will go to general release, and also 188* includes the input_query, print_query, etc. requests, as well as the 189* write_data_file and store_from_data_file requests. 190* 191* 83-11-04 Al Dupuis: Rewrote the sub_error_ handler. 192* 193* 84-11-05 Al Dupuis: Added call to ssu_$add_request_table and 194* ssu_$add_info_dir. 195**/ 196 1 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 1 2 1 3 /* Structure for find_condition_info_. 1 4* 1 5* Written 1-Mar-79 by M. N. Davidoff. 1 6**/ 1 7 1 8 /* automatic */ 1 9 1 10 declare condition_info_ptr pointer; 1 11 1 12 /* based */ 1 13 1 14 declare 1 condition_info aligned based (condition_info_ptr), 1 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 1 16 2 version fixed binary, /* Must be 1 */ 1 17 2 condition_name char (32) varying, /* name of condition */ 1 18 2 info_ptr pointer, /* pointer to the condition data structure */ 1 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 1 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 1 21 2 flags unaligned, 1 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 1 23 3 pad1 bit (35), 1 24 2 pad2 bit (36), 1 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 1 26 2 pad3 (4) bit (36); 1 27 1 28 /* internal static */ 1 29 1 30 declare condition_info_version_1 1 31 fixed binary internal static options (constant) initial (1); 1 32 1 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 197 198 2 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 2 2 /* format: style2 */ 2 3 2 4 declare condition_info_header_ptr 2 5 pointer; 2 6 declare 1 condition_info_header 2 7 aligned based (condition_info_header_ptr), 2 8 2 length fixed bin, /* length in words of this structure */ 2 9 2 version fixed bin, /* version number of this structure */ 2 10 2 action_flags aligned, /* tell handler how to proceed */ 2 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 2 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 2 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 2 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 2 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 2 16 3 pad bit (32) unaligned, 2 17 2 info_string char (256) varying, /* may contain printable message */ 2 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 2 19 2 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 199 200 3 1 /* BEGIN INCLUDE FILE linus_lcb.incl.pl1 -- jaw 8/30/77 */ 3 2 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(86-04-23,Dupuis), approve(86-05-23,MCR7188), audit(86-07-23,GWMay), 3 7* install(86-07-29,MR12.0-1106): 3 8* Added general_work_area_ptr and renamed sfr_ptr to 3 9* force_retrieve_scope_ptr. 3 10* END HISTORY COMMENTS */ 3 11 3 12 3 13 /* HISTORY: 3 14* 3 15* 78-09-29 J. C. C. Jagernauth: Modified for MR7.0. 3 16* 3 17* 81-05-11 Rickie E. Brinegar: added security bit and andministrator bit as 3 18* a part of the attribute level control work. 3 19* 3 20* 81-06-17 Rickie E. Brinegar: deleted the sd_ptr as a part of removing the 3 21* scope_data structure from LINUS. LINUS now depends totally on MRDS for 3 22* scope information. 3 23* 3 24* 81-11-11 Rickie E. Brinegar: added the timing bit and three fields for 3 25* retaining various vcpu times to be collected when in timing mode. The 3 26* times to be collected are: LINUS parsing time, LINUS processing time, and 3 27* MRDS processing time. 3 28* 3 29* 82-01-15 DJ Schimke: Added the build_increment and build_start fields as 3 30* part of the line numbering implementation. This allows for possible later 3 31* LINUS control of the build defaults. 3 32* 3 33* 82-03-01 Paul W. Benjamin: Removed linus_prompt_chars_ptr, as that 3 34* information is now retained by ssu_. Removed parse_timer as no longer 3 35* meaningful. Added linus_version. Added iteration bit. Added 6 entry 3 36* variables for ssu_ replaceable procedures. Added actual_input_iocbp. 3 37* 3 38* 82-06-23 Al Dupuis: Added subsystem_control_info_ptr, 3 39* subsystem_invocation_level, and selection_expression_identifier. 3 40* 3 41* 82-08-26 DJ Schimke: Added report_control_info_ptr, and 3 42* table_control_info_ptr. 3 43* 3 44* 82-10-19 DJ Schimke: Added ssu_abort_line. 3 45* 3 46* 83-06-06 Bert Moberg: Added print_search_order (pso) and no_optimize (no_ot) 3 47* 3 48* 83-04-07 DJ Schimke: Added temp_seg_info_ptr. 3 49* 3 50* 83-08-26 Al Dupuis: Added query_temp_segment_ptr. 3 51**/ 3 52 3 53 dcl 1 lcb aligned based (lcb_ptr), /* LINUS control block */ 3 54 2 db_index fixed bin (35), /* index of open data base, or 0 */ 3 55 2 rb_len fixed bin (21), /* length of request buffer */ 3 56 2 lila_count fixed bin (35), /* number of LILA text lines */ 3 57 2 lila_chars fixed bin (35), /* number of LILA source test chars */ 3 58 2 trans_id fixed bin (35), /* used by checkpoint and rollback facilities (MR7.0) */ 3 59 2 lila_fn char (32) unal, /* entry name of lila data file */ 3 60 2 prompt_flag bit (1) unal, /* on if in prompt mode */ 3 61 2 test_flag bit (1) unal, /* on if in test mode */ 3 62 2 new_version bit (1) unal init (1), /* on for new version data base (MR7.0) */ 3 63 2 secured_db bit (1) unal, /* on if the db is in a secure state */ 3 64 2 administrator bit (1) unal, /* on if the user is a db administrator */ 3 65 2 timing_mode bit (1) unal, /* on if timing is to be done */ 3 66 2 iteration bit (1) unal, /* interpret parens as iteration sets */ 3 67 2 pso_flag bit (1) unal, /* add print_search_order to select */ 3 68 2 no_ot_flag bit (1) unal, /* add no_optimize to select */ 3 69 2 reserved bit (27) unal, 3 70 2 liocb_ptr ptr, /* iocb ptr for lila file */ 3 71 2 rb_ptr ptr, /* ptr to request buffer */ 3 72 2 is_ptr ptr, /* iocb ptr for currentinput stream switch */ 3 73 2 cal_ptr ptr, /* ptr to current arg list for invoke (or null) */ 3 74 2 ttn_ptr ptr, /* pointer to table info structure */ 3 75 2 force_retrieve_scope_info_ptr ptr, /* structure pointer to force retrieve scope operation */ 3 76 2 lv_ptr ptr, /* pointer linus variables */ 3 77 2 si_ptr ptr, /* pointer to select_info structure */ 3 78 2 setfi_ptr ptr, /* pointer to set function information */ 3 79 2 sclfi_ptr ptr, /* pointer to user declared scalar fun. names */ 3 80 2 ivs_ptr ptr, /* pointer to stack of invoke iocb pointers */ 3 81 2 lit_ptr ptr, /* pointer to literal pool */ 3 82 2 lvv_ptr ptr, /* pointer to linus variable alloc. pool */ 3 83 2 rd_ptr ptr, /* point to readied files mode information (MR7.0) */ 3 84 2 rt_ptr ptr, /* point to table of relation names and their readied modes 3 85* (MR7.0) */ 3 86 2 actual_input_iocbp ptr, /* ptr to input while in macros */ 3 87 2 lila_promp_chars_ptr ptr, /* pointer to the prompt characters for lila */ 3 88 2 linus_area_ptr ptr, /* LINUS temporary segment pointer */ 3 89 2 lila_area_ptr ptr, /* LILA temporary segment pointer */ 3 90 2 i_o_area_ptr ptr, /* temporary segment pointer used by write, print, create_list */ 3 91 2 rel_array_ptr ptr, /* ptr to array of names rslt info structure 3 92* for current lila expression */ 3 93 2 unused_timer float bin (63), /* future expansion */ 3 94 2 request_time float bin (63), /* How much request time was spent 3 95* in LINUS. (-1 = user has just enabled 3 96* timing, do not report) */ 3 97 2 mrds_time float bin (63), /* How much time was spent in MRDS */ 3 98 2 build_increment fixed bin, /* default increment for build mode */ 3 99 2 build_start fixed bin, /* default start count for build mode */ 3 100 2 linus_version char (4), /* current version of LINUS */ 3 101 2 subsystem_control_info_ptr ptr, /* the same ptr passed by ssu_ to each request procedure */ 3 102 2 subsystem_invocation_level fixed bin, /* identifies this invocation of LINUS */ 3 103 2 selection_expression_identifier fixed bin, /* identifies the current processed selection expression */ 3 104 2 report_control_info_ptr ptr, /* pointer to linus_report_control_info structure */ 3 105 2 table_control_info_ptr ptr, /* pointer to linus_table control structure */ 3 106 2 temp_seg_info_ptr ptr, /* pointer to linus_temp_seg_mgr control structure */ 3 107 2 query_temp_segment_ptr ptr, /* points to temp seg used for manipulating query */ 3 108 2 general_work_area_ptr ptr, /* a freeing area for general use */ 3 109 2 word_pad (6) bit (36) unal, 3 110 /* procedures that will be optionally */ 3 111 /* replaced by the user. Saved so they */ 3 112 /* can be reinstated if desired. */ 3 113 2 ssu_abort_line entry options (variable), 3 114 2 ssu_post_request_line variable entry (ptr), 3 115 2 ssu_pre_request_line variable entry (ptr), 3 116 3 117 2 curr_lit_offset fixed bin (35), /* index of first free bit in lit. pool */ 3 118 2 curr_lv_val_offset fixed bin (35), /* index of first free bit lv. val. pool */ 3 119 2 static_area area (sys_info$max_seg_size - fixed (rel (addr (lcb.static_area))) + 1); 3 120 3 121 dcl lcb_ptr ptr; 3 122 3 123 /* END INCLUDE FILE linus_lcb.incl.pl1 */ 201 202 4 1 /* BEGIN INCLUDE FILE ... cp_character_types.incl.pl1 */ 4 2 /* Created: June 1982 by G. Palter */ 4 3 4 4 /* Character types used to define Multics command language and subsystem request languages */ 4 5 4 6 dcl (NORMAL_CHARACTER initial ( 0), /* normal everyday character */ 4 7 4 8 WHITESPACE initial ( 1), /* separates tokens but is otherwise ignored (ie: does not 4 9* appear in the command/request name or any arguments */ 4 10 4 11 COMMAND_SEPARATOR initial ( 2), /* separate multiple commands/requests on the line but is 4 12* otherwise ignored (as above) (semi-colon) */ 4 13 COMMAND_SEPARATOR_OR_WHITESPACE initial ( 3), /* separate multiple commands/requests on the line and is also 4 14* treated as whitespace when rescanning |[...] return values 4 15* (newline) */ 4 16 4 17 SINGLE_TOKEN initial ( 4), /* appears as a one character argument to the command/request 4 18* even if not surrounded by whitespace (causes a break) */ 4 19 4 20 COMPOUND_TOKEN initial ( 5), /* appears as an argument to the command/request even if not 4 21* surrounded by whitespace; if several of this type character 4 22* appear on the line without any intervening characters, they 4 23* are merged into a single argument (eg: ^=) */ 4 24 4 25 QUOTE_CHARACTER initial ( 6), /* begin and end a quoted string ("): only the same character 4 26* ends the quoted string (ie: "' isn't a completed string); 4 27* within the string, any occurence of this character must be 4 28* doubled */ 4 29 4 30 ACTIVE_STRING_MODIFIER initial ( 7), /* modifies interpretation of an active string (|) */ 4 31 4 32 BEGIN_ITERATION_1 initial (17), /* starts an iteration set; only matches END_ITERATION_1 */ 4 33 BEGIN_ITERATION_2 initial (18), /* starts an iteration set; only matches END_ITERATION_2 */ 4 34 BEGIN_ITERATION_3 initial (19), /* ... */ 4 35 BEGIN_ITERATION_4 initial (20), /* ... */ 4 36 BEGIN_ITERATION_5 initial (21), /* ... */ 4 37 BEGIN_ITERATION_6 initial (22), /* ... */ 4 38 BEGIN_ITERATION_7 initial (23), /* ... */ 4 39 BEGIN_ITERATION_8 initial (24), /* ... */ 4 40 4 41 END_ITERATION_1 initial (25), /* ends an iteration set; only matches BEGIN_ITERATION_1 */ 4 42 END_ITERATION_2 initial (26), /* ends an iteration set; only matches BEGIN_ITERATION_2 */ 4 43 END_ITERATION_3 initial (27), /* ... */ 4 44 END_ITERATION_4 initial (28), /* ... */ 4 45 END_ITERATION_5 initial (29), /* ... */ 4 46 END_ITERATION_6 initial (30), /* ... */ 4 47 END_ITERATION_7 initial (31), /* ... */ 4 48 END_ITERATION_8 initial (32), /* ... */ 4 49 4 50 BEGIN_ACTIVE_STRING_1 initial (33), /* starts active string; only matches END_ACTIVE_STRING_1 */ 4 51 BEGIN_ACTIVE_STRING_2 initial (34), /* starts active string; only matches END_ACTIVE_STRING_2 */ 4 52 BEGIN_ACTIVE_STRING_3 initial (35), /* ... */ 4 53 BEGIN_ACTIVE_STRING_4 initial (36), /* ... */ 4 54 BEGIN_ACTIVE_STRING_5 initial (37), /* ... */ 4 55 BEGIN_ACTIVE_STRING_6 initial (38), /* ... */ 4 56 BEGIN_ACTIVE_STRING_7 initial (39), /* ... */ 4 57 BEGIN_ACTIVE_STRING_8 initial (40), /* ... */ 4 58 4 59 END_ACTIVE_STRING_1 initial (41), /* ends active string; only matches BEGIN_ACTIVE_STRING_1 */ 4 60 END_ACTIVE_STRING_2 initial (42), /* ends active string; only matches BEGIN_ACTIVE_STRING_2 */ 4 61 END_ACTIVE_STRING_3 initial (43), /* ... */ 4 62 END_ACTIVE_STRING_4 initial (44), /* ... */ 4 63 END_ACTIVE_STRING_5 initial (45), /* ... */ 4 64 END_ACTIVE_STRING_6 initial (46), /* ... */ 4 65 END_ACTIVE_STRING_7 initial (47), /* ... */ 4 66 END_ACTIVE_STRING_8 initial (48)) /* ... */ 4 67 fixed binary (9) unsigned static options (constant); 4 68 4 69 /* END INCLUDE FILE ... cp_character_types.incl.pl1 */ 203 204 5 1 /* BEGIN INCLUDE FILE definition.incl.pl1 */ 5 2 5 3 5 4 5 5 /****^ HISTORY COMMENTS: 5 6* 1) change(86-05-02,Elhard), approve(86-05-02,MCR7391), 5 7* audit(86-07-18,DGHowe), install(86-11-20,MR12.0-1222): 5 8* Modified to add indirect bit to definition flags. 5 9* END HISTORY COMMENTS */ 5 10 5 11 5 12 dcl 1 definition aligned based, 5 13 2 forward unal bit(18), /* offset of next def */ 5 14 2 backward unal bit(18), /* offset of previous def */ 5 15 2 value unal bit(18), 5 16 2 flags unal, 5 17 3 new bit(1), 5 18 3 ignore bit(1), 5 19 3 entry bit(1), 5 20 3 retain bit(1), 5 21 3 argcount bit(1), 5 22 3 descriptors bit(1), 5 23 3 indirect bit(1), 5 24 3 unused bit(8), 5 25 2 class unal bit(3), 5 26 2 symbol unal bit(18), /* offset of ACC for symbol */ 5 27 2 segname unal bit(18); /* offset of segname def */ 5 28 5 29 /* END INCLUDE FILE definition.incl.pl1 */ 205 206 6 1 /* BEGIN INCLUDE FILE linus_char_argl.incl.pl1 -- jaw 2/11/77 */ 6 2 6 3 /* HISTORY: 6 4* 6 5* 82-02-05 Paul W. Benjamin: Changed arg_len to fixed bin (21). 6 6* 6 7**/ 6 8 6 9 dcl 1 char_argl aligned based (ca_ptr), /* structure for general char. arg. list */ 6 10 2 nargs fixed bin, /* number of args */ 6 11 2 arg (nargs_init refer (char_argl.nargs)), 6 12 3 arg_ptr ptr, /* ptr to first char. of arg */ 6 13 3 arg_len fixed bin (21); /* no. of chars. in arg */ 6 14 6 15 dcl ca_ptr ptr; 6 16 dcl nargs_init fixed bin; 6 17 6 18 /* END INCLUDE FILE linus_char_argl.incl.pl1 */ 207 208 7 1 /* BEGIN INCLUDE FILE -- linus_rel_array.incl.pl1 -- reb 09/09/80 7 2* 7 3* 80-09-09 Rickie E. Brinegar: Initially written. 7 4* 7 5* 81-01-29 Rickie E. Brinegar: changed to comform to standards for include 7 6* files. 7 7* 7 8**/ 7 9 7 10 dcl 1 linus_rel_array based (linus_rel_array_ptr), 7 11 2 num_of_rels fixed bin, 7 12 2 rels (num_of_rels_init refer (linus_rel_array.num_of_rels)), 7 13 3 rel_name char (32), 7 14 3 rslt_info_ptr ptr; 7 15 7 16 dcl linus_rel_array_ptr ptr; 7 17 7 18 dcl num_of_rels_init fixed bin init (0); 7 19 7 20 /* END INCLUDE FILE linus_rel_array.incl.pl1 */ 7 21 209 210 8 1 /* BEGIN INCLUDE FILE ... object_info.incl.pl1 8 2*coded February 8, 1972 by Michael J. Spier */ 8 3 /* modified May 26, 1972 by M. Weaver */ 8 4 /* modified 15 April, 1975 by M. Weaver */ 8 5 8 6 declare 1 object_info aligned based, /* structure containing object info based, returned by object_info_ */ 8 7 2 version_number fixed bin, /* version number of current structure format (=2) */ 8 8 2 textp pointer, /* pointer to beginning of text section */ 8 9 2 defp pointer, /* pointer to beginning of definition section */ 8 10 2 linkp pointer, /* pointer to beginning of linkage section */ 8 11 2 statp pointer, /* pointer to beginning of static section */ 8 12 2 symbp pointer, /* pointer to beginning of symbol section */ 8 13 2 bmapp pointer, /* pointer to beginning of break map (may be null) */ 8 14 2 tlng fixed bin, /* length in words of text section */ 8 15 2 dlng fixed bin, /* length in words of definition section */ 8 16 2 llng fixed bin, /* length in words of linkage section */ 8 17 2 ilng fixed bin, /* length in words of static section */ 8 18 2 slng fixed bin, /* length in words of symbol section */ 8 19 2 blng fixed bin, /* length in words of break map */ 8 20 2 format, /* word containing bit flags about object type */ 8 21 3 old_format bit(1) unaligned, /* on if segment isn't in new format, i.e. has old style object map */ 8 22 3 bound bit(1) unaligned, /* on if segment is bound */ 8 23 3 relocatable bit(1) unaligned, /* on if seg has relocation info in its first symbol block */ 8 24 3 procedure bit(1) unaligned, /* on if segment is an executable object program */ 8 25 3 standard bit(1) unaligned, /* on if seg is in standard format (more than just standard map) */ 8 26 3 gate bit(1) unaligned, /* on if segment is a gate */ 8 27 3 separate_static bit(1) unaligned, /* on if static not in linkage */ 8 28 3 links_in_text bit(1) unaligned, /* on if there are threaded links in text */ 8 29 3 perprocess_static bit (1) unaligned, /* on if static is not to be per run unit */ 8 30 3 pad bit(27) unaligned, 8 31 2 entry_bound fixed bin, /* entry bound if segment is a gate */ 8 32 2 textlinkp pointer, /* ptr to first link in text */ 8 33 8 34 /* LIMIT OF BRIEF STRUCTURE */ 8 35 8 36 2 compiler char(8) aligned, /* name of processor which generated segment */ 8 37 2 compile_time fixed bin(71), /* clock reading of date/time object was generated */ 8 38 2 userid char(32) aligned, /* standard Multics id of creator of object segment */ 8 39 2 cvers aligned, /* generator version name in printable char string form */ 8 40 3 offset bit(18) unaligned, /* offset of name in words relative to base of symbol section */ 8 41 3 length bit(18) unaligned, /* length of name in characters */ 8 42 2 comment aligned, /* printable comment concerning generator or generation of segment */ 8 43 3 offset bit(18) unaligned, /* offset of comment in words relative to base of symbol section */ 8 44 3 length bit(18) unaligned, /* length of comment in characters */ 8 45 2 source_map fixed bin, /* offset, relative to base of symbol section, of source map structure */ 8 46 8 47 /* LIMIT OF DISPLAY STRUCTURE */ 8 48 8 49 2 rel_text pointer, /* pointer to text section relocation info */ 8 50 2 rel_def pointer, /* pointer to definition section relocation info */ 8 51 2 rel_link pointer, /* pointer to linkage section relocation info */ 8 52 2 rel_static pointer, /* pointer to static section relocation info */ 8 53 2 rel_symbol pointer, /* pointer to symbol section relocation info */ 8 54 2 text_boundary fixed bin, /* specifies mod of text section base boundary */ 8 55 2 static_boundary fixed bin, /* specifies mod of internal static base boundary */ 8 56 /* currently not used by system */ 8 57 2 default_truncate fixed bin, /* offset rel to symbp for binder to automatically trunc. symb sect. */ 8 58 2 optional_truncate fixed bin; /* offset rel to symbp for binder to optionally trunc. symb sect. */ 8 59 8 60 declare object_info_version_2 fixed bin int static init(2); 8 61 8 62 /* END INCLUDE FILE ... object_info.incl.pl1 */ 211 212 9 1 /* BEGIN INCLUDE FILE ... ssu_prompt_modes.incl.pl1 */ 9 2 /* Created: 15 February 1982 by G. Palter */ 9 3 9 4 /* Values for use in calls to ssu_$set_prompt_mode to control prompting by the subsystem listener */ 9 5 9 6 dcl PROMPT bit (1) static options (constant) initial ("0"b); 9 7 dcl DONT_PROMPT bit (1) static options (constant) initial ("1"b); 9 8 9 9 dcl PROMPT_AFTER_NULL_LINES bit (2) static options (constant) initial ("01"b); 9 10 dcl DONT_PROMPT_AFTER_NULL_LINES bit (2) static options (constant) initial ("00"b); 9 11 9 12 dcl PROMPT_IF_TYPEAHEAD bit (3) static options (constant) initial ("000"b); 9 13 dcl DONT_PROMPT_IF_TYPEAHEAD bit (3) static options (constant) initial ("001"b); 9 14 9 15 /* For example: 9 16* call ssu_$set_prompt_mode (sci_ptr, PROMPT | DONT_PROMPT_AFTER_NULL_LINES | DONT_PROMPT_IF_TYPEAHEAD); */ 9 17 9 18 /* END INCLUDE FILE ... ssu_prompt_modes.incl.pl1 */ 213 214 10 1 /* BEGIN INCLUDE FILE ... ssu_rp_options.incl.pl1 */ 10 2 /* Created: June 1982 by G. Palter */ 10 3 10 4 /* Options for the standard subsystem request processor */ 10 5 10 6 dcl 1 rp_options aligned based (rp_options_ptr), 10 7 2 version character (8), 10 8 2 language_info, /* defines the request language */ 10 9 3 non_standard_language bit (1) aligned, /* ... ON => use language defined in following array */ 10 10 3 character_types (0 : 511) fixed binary (9) unaligned unsigned, 10 11 2 abbrev_info, /* information related to abbreviation processing ... */ 10 12 3 expand_request_lines bit (1) aligned, /* ... ON => request processor should expand abbreviations */ 10 13 3 default_profile_ptr pointer, /* ... -> profile to use if ".u" given without pathname */ 10 14 3 profile_ptr pointer; /* ... -> abbreviation profile used by this subsystem */ 10 15 10 16 dcl rp_options_ptr pointer; 10 17 10 18 dcl RP_OPTIONS_VERSION_1 character (8) static options (constant) initial ("rpo_0001"); 10 19 10 20 /* END INCLUDE FILE ... ssu_rp_options.incl.pl1 */ 215 216 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 */ 217 218 219 dcl sci_ptr ptr; /* used in all ssu calls */ 220 221 dcl ( 222 i, 223 j, 224 nargs /* no. of args in linus command */ 225 ) fixed bin; 226 227 dcl ( 228 acc_ptr init (null), /* pointer to acc string */ 229 arg_ptr init (null), /* ptr to arg list to request processor */ 230 ctl_ptr init (null), 231 d_ptr init (null), /* pointer to a defn. block */ 232 ent_ptr init (null), /* ptr to request processor entry */ 233 lb_ptr init (null), /* pointer to base of linus_builtin_ */ 234 ptr_sink init (null) /* sink for envir. ptr */ 235 ) ptr; 236 237 dcl code fixed bin (35); /* status code from subroutines */ 238 239 dcl ( 240 initial_linus_vclock, /* keep track of the initial vclock values */ 241 initial_mrds_vclock 242 ) float bin (63) int static; /* needs changed if linus allows recursion */ 243 244 dcl ab bit (1); /* user wants abbrevs */ 245 dcl bit18 bit (18) based; /* template */ 246 dcl ctl_arg char (ctl_len) based (ctl_ptr); 247 dcl ctl_len fixed bin (21); /* length of control arg */ 248 dcl dname char (168); /* for calls to expand_pathname_ */ 249 dcl ename char (32); /* & hcs_$initiate */ 250 dcl function_entry entry variable; 251 dcl function_name char (32) varying; 252 dcl highest_numbered_subsystem_invocation fixed bin; /* for call to ssu_, unused at present */ 253 dcl lb_bc fixed bin (24); /* bit count of builtin seg */ 254 dcl lb_type fixed bin (2); /* seg type code for linus_builtin_ */ 255 dcl macro_request char (macro_rq_len) based (macro_rq_ptr); /* macro request string */ 256 dcl macro_rq_len fixed bin (21); /* length of macro request string */ 257 dcl macro_rq_ptr ptr; /* pointer to macro request string */ 258 dcl pf_arg_len fixed bin (21); /* length of profile arg */ 259 dcl pf_arg_ptr ptr; /* ptr to profile arg */ 260 dcl req_buf char (linus_data_$req_buf_len); /* the request buffer */ 261 dcl rq_arg_len fixed bin (21); /* length of request arg */ 262 dcl rq_arg_ptr ptr; /* ptr to request arg */ 263 dcl start_up bit (1); /* execute start_up */ 264 dcl lila_prompt_char char (32) varying based (lcb.lila_promp_chars_ptr); 265 dcl 1 local_rpo aligned like rp_options; 266 dcl ptr_desc bit (36) init ("100110100000000000000000000000000000"b); 267 dcl fixed_bin_35_desc bit (36) init ("100000110000000000000000000000100011"b); 268 269 dcl 1 obj_info aligned like object_info; 270 271 dcl 1 acc aligned based (acc_ptr), /* template for acc string */ 272 2 len fixed bin (8) unal, 273 2 string char (0 refer (acc.len)) unal; 274 275 dcl recursed bit (1) int static init ("0"b); /* flag to tell us if this is second time around */ 276 dcl RW fixed bin (5) int static options (constant) init (01010b); 277 dcl WHITESPACE_OR_QUOTE char (7) int static options (constant) init (" 278 """); 279 dcl LAST_POSITION_IN_THE_TABLE fixed bin internal static options (constant) init (9999); 280 dcl my_name char (5) int static options (constant) init ("linus"); 281 282 dcl ( 283 SEG init ("011"b), 284 TEXT init ("000"b) 285 ) bit (3) int static options (constant); 286 287 dcl ( 288 error_table_$badopt, 289 error_table_$inconsistent, 290 error_table_$notadir, 291 error_table_$noentry, 292 linus_data_$max_range_items, 293 linus_data_$req_buf_len, 294 linus_data_$req_proc_id, 295 linus_error_$abort, 296 linus_error_$bad_builtin_obj, 297 linus_error_$conv, 298 linus_error_$dup_ctl_args, 299 linus_error_$inval_ctl_arg, 300 linus_error_$recursed, 301 linus_error_$too_few_ctl_args, 302 linus_rq_table_$linus_rq_table_, 303 ssu_et_$request_line_aborted, 304 ssu_et_$subsystem_aborted, 305 sys_info$max_seg_size 306 ) ext fixed bin (35); 307 308 dcl ssu_info_directories_$standard_requests char (168) external; 309 dcl ssu_request_tables_$standard_requests bit(36) aligned external; 310 311 312 dcl iox_$user_input ptr ext static; 313 314 dcl (cleanup, conversion, sub_error_) condition; 315 316 dcl (addr, addrel, empty, fixed, null, ptr, rank, rel, 317 rtrim, search, substr, vclock) builtin; 318 319 /* Multics Subroutines */ 320 321 dcl com_err_ entry options (variable); 322 dcl continue_to_signal_ entry (fixed bin(35)); 323 dcl cu_$arg_count entry (fixed bin); 324 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 325 dcl cu_$decode_entry_value entry (entry, ptr, ptr); 326 dcl cv_entry_ entry (char (*), ptr, fixed bin (35)) returns (entry); 327 dcl expand_pathname_$add_suffix entry (char (*), char (*), char (*), char (*), 328 fixed bin (35)); 329 dcl find_condition_info_ entry (ptr, ptr, fixed bin(35)); 330 dcl get_pdir_ entry returns (char (168)); 331 dcl hcs_$del_dir_tree entry (char (*), char (*), fixed bin (35)); 332 dcl hcs_$delentry_file entry (char (*), char (*), fixed bin (35)); 333 dcl hcs_$delentry_seg entry (ptr, fixed bin (35)); /* deletes segs without ref names */ 334 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), 335 fixed bin (2), ptr, fixed bin (35)); 336 dcl hcs_$make_seg 337 entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)) 338 ; 339 dcl hcs_$status_mins 340 entry (ptr, fixed bin (2), fixed bin (24), fixed bin (35)); 341 dcl ioa_ entry options (variable); 342 dcl iox_$close entry (ptr, fixed bin (35)); 343 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 344 dcl iox_$destroy_iocb entry (ptr, fixed bin (35)); 345 dcl object_info_$brief entry (ptr, fixed bin (24), ptr, fixed bin (35)); 346 dcl release_temp_segment_ entry (char (*), ptr, fixed bin (35)); 347 dcl requote_string_ entry (char(*)) returns(char(*)); 348 dcl ssu_$add_info_dir entry (ptr, char(*), fixed bin, fixed bin(35)); 349 dcl ssu_$add_request_table entry (ptr, ptr, fixed bin, fixed bin(35)); 350 dcl ssu_$create_invocation entry (char (*), char (*), ptr, ptr, char (*), ptr, 351 fixed bin (35)); 352 dcl ssu_$destroy_invocation entry (ptr); 353 dcl ssu_$execute_line entry (ptr, ptr, fixed bin (21), fixed bin (35)); 354 dcl ssu_$execute_start_up entry () options (variable); 355 dcl ssu_$get_area entry (ptr, ptr, char(*), ptr); 356 dcl ssu_$get_info_ptr entry (ptr) returns (ptr); 357 dcl ssu_$get_invocation_count entry (ptr, fixed bin, fixed bin); 358 dcl ssu_$get_procedure entry (ptr, char (*), entry, fixed bin (35)); 359 dcl ssu_$get_request_processor_options 360 entry (ptr, char(8), ptr, fixed bin(35)); 361 dcl ssu_$listen entry (ptr, ptr, fixed bin (35)); 362 dcl ssu_$print_message entry options (variable); 363 dcl ssu_$release_area entry (ptr, ptr); 364 dcl ssu_$set_ec_suffix entry (ptr, char (32)); 365 dcl ssu_$set_procedure entry (ptr, char (*), entry, fixed bin (35)); 366 dcl ssu_$set_prompt entry (ptr, char (64) varying); 367 dcl ssu_$set_prompt_mode entry (ptr, bit (*)); 368 dcl ssu_$set_request_processor_options 369 entry (ptr, ptr, fixed bin(35)); 370 dcl unique_chars_ entry (bit (*)) returns (char (15)); 371 372 /* LINUS/MRDS Subroutines */ 373 374 dcl linus_abort_line entry() options(variable); 375 dcl linus_convert_code entry (fixed bin (35), fixed bin (35), fixed bin (35)); 376 dcl linus_invoke$pop_all entry (ptr, fixed bin (35)); 377 dcl linus_invoke$pop_all_on_pi entry (ptr); 378 dcl linus_thread_fn_list 379 entry (ptr, entry, char (168) varying, char (32) varying, 380 fixed bin (35)); 381 dcl linus_builtin_ entry; 382 dcl linus_define_area entry (ptr, char (6), fixed bin (35)); 383 dcl linus_options$terminate entry (ptr, fixed bin (35)); 384 dcl linus_table$terminate entry (ptr, fixed bin (35)); 385 dcl linus_temp_seg_mgr$get_segment 386 entry (ptr, char(*), char(*), ptr, fixed bin(35)); 387 dcl linus_temp_seg_mgr$release_segment 388 entry (ptr, char(*), ptr, fixed bin(35)); 389 dcl linus_temp_seg_mgr$terminate 390 entry (ptr, fixed bin(35)); 391 dcl dsl_$close entry options (variable); 392 393 sci_ptr = null; 394 lcb_ptr = null; 395 if recursed then do; /* if this is second time around */ 396 call com_err_ (linus_error_$recursed, my_name); 397 return; 398 end; 399 else do; 400 on cleanup call tidy_up; /* so we leave no traces */ 401 recursed = "1"b; /* remember we have arrived */ 402 end; 403 404 arg_ptr, ca_ptr, ent_ptr = null; /* initialize */ 405 macro_rq_ptr, pf_arg_ptr, rq_arg_ptr = null; 406 ab = "0"b; 407 start_up = "1"b; /* execute start_up by default */ 408 409 call 410 hcs_$make_seg ("", unique_chars_ ("0"b) || ".lcb", "", RW, ptr_sink, 411 code); /* make an LCB */ 412 if ptr_sink = null then 413 call error (code, "^/Creating LINUS Control Block"); 414 415 ptr_sink -> lcb.linus_area_ptr, ptr_sink -> lcb.lila_area_ptr, 416 ptr_sink -> lcb.i_o_area_ptr = null; 417 418 ptr_sink -> lcb.lila_count, ptr_sink -> lcb.lila_chars, 419 ptr_sink -> lcb.curr_lv_val_offset, ptr_sink -> lcb.curr_lit_offset, 420 ptr_sink -> lcb.db_index = 0; /* initialize the LCB */ 421 ptr_sink -> lcb.request_time, ptr_sink -> lcb.mrds_time = 0; 422 ptr_sink -> lcb.prompt_flag = "1"b; /* default to prompt mode */ 423 ptr_sink -> lcb.test_flag = "0"b; /* default is not test mode */ 424 ptr_sink -> lcb.pso_flag = "0"b; /* default is to not print search order */ 425 ptr_sink -> lcb.no_ot_flag = "0"b; /* default is to optimize */ 426 ptr_sink -> lcb.cal_ptr, ptr_sink -> lcb.ttn_ptr, ptr_sink -> lcb.si_ptr, 427 ptr_sink -> lcb.force_retrieve_scope_info_ptr, ptr_sink -> lcb.setfi_ptr, 428 ptr_sink -> lcb.sclfi_ptr, ptr_sink -> lcb.lv_ptr, 429 ptr_sink -> lcb.lvv_ptr, ptr_sink -> lcb.ivs_ptr, 430 ptr_sink -> lcb.lit_ptr, ptr_sink -> lcb.liocb_ptr = null; 431 ptr_sink -> lcb.is_ptr = iox_$user_input; /* init pointer to input stream */ 432 ptr_sink -> lcb.rb_len = linus_data_$req_buf_len; 433 ptr_sink -> lcb.lila_fn = ""; 434 ptr_sink -> lcb.static_area = empty; 435 436 ptr_sink -> lcb.build_increment = 10; 437 ptr_sink -> lcb.build_start = 10; 438 439 ptr_sink -> lcb.linus_version = "4.5"; /* SET LINUS VERSION */ 440 ptr_sink -> lcb.iteration = "0"b; 441 ptr_sink -> lcb.report_control_info_ptr = null; 442 ptr_sink -> lcb.table_control_info_ptr = null; 443 ptr_sink -> lcb.temp_seg_info_ptr = null; 444 ptr_sink -> lcb.query_temp_segment_ptr = null; 445 ptr_sink -> lcb.general_work_area_ptr = null; 446 447 lcb_ptr = ptr_sink; 448 ptr_sink = null; 449 450 call ssu_$create_invocation ("linus", (lcb.linus_version), lcb_ptr, 451 addr (linus_rq_table_$linus_rq_table_), ">doc>ss>linus", sci_ptr, code); 452 if code ^= 0 453 then call error (code, ""); 454 call ssu_$add_request_table (sci_ptr, 455 addr (ssu_request_tables_$standard_requests), LAST_POSITION_IN_THE_TABLE, code); 456 if code ^= 0 457 then call error (code, "Unable to add the ssu_ standard requests."); 458 call ssu_$add_info_dir (sci_ptr, ssu_info_directories_$standard_requests, LAST_POSITION_IN_THE_TABLE, code); 459 if code ^= 0 460 then call error (code, "Unable to add the ssu_ standard request info segs."); 461 462 lcb.subsystem_control_info_ptr = sci_ptr; 463 call ssu_$get_invocation_count (sci_ptr, lcb.subsystem_invocation_level, 464 highest_numbered_subsystem_invocation); 465 466 allocate lila_prompt_char in (lcb.static_area) set (lcb.lila_promp_chars_ptr); 467 lila_prompt_char = "->"; 468 469 num_of_rels_init = linus_data_$max_range_items; 470 allocate linus_rel_array in (lcb.static_area); 471 lcb.rel_array_ptr = linus_rel_array_ptr; 472 linus_rel_array.num_of_rels = 0; 473 474 call cu_$decode_entry_value (linus_builtin_, lb_ptr, ptr_sink); 475 /* get pointer to linus_builtin_ object */ 476 if lb_ptr ^= null then do; /* if found segment */ 477 lb_ptr = ptr (lb_ptr, 0); /* point to base of seg */ 478 call hcs_$status_mins (lb_ptr, lb_type, lb_bc, code); 479 /* get bit count */ 480 if code ^= 0 then 481 call error (linus_error_$bad_builtin_obj, ""); 482 call object_info_$brief (lb_ptr, lb_bc, addr (obj_info), code); 483 /* get object data */ 484 if code ^= 0 then 485 call error (linus_error_$bad_builtin_obj, ""); 486 487 do d_ptr = addrel (obj_info.defp, obj_info.defp -> bit18) 488 /* search for class 3 defn for linus_builtin_ */ 489 repeat addrel (obj_info.defp, d_ptr -> definition.value) 490 while (addrel (obj_info.defp, d_ptr -> definition.symbol) 491 -> acc.string ^= "linus_builtin_" 492 & addrel (obj_info.defp, d_ptr -> definition.forward) -> bit18 493 ^= "0"b); 494 end; 495 if addrel (obj_info.defp, d_ptr -> definition.symbol) -> acc.string 496 ^= "linus_builtin_" then 497 call error (linus_error_$bad_builtin_obj, ""); 498 499 do d_ptr = addrel (obj_info.defp, d_ptr -> definition.segname) 500 /* look through entry points in this block */ 501 repeat addrel (obj_info.defp, d_ptr -> definition.forward) 502 while (d_ptr -> definition.class ^= SEG 503 & d_ptr -> definition.forward ^= "0"b); 504 if d_ptr -> definition.class = TEXT 505 & ^d_ptr -> definition.flags.ignore 506 & d_ptr -> definition.flags.entry then do; /* if external entry point */ 507 acc_ptr = addrel (obj_info.defp, d_ptr -> definition.symbol); 508 /* point to entry name */ 509 if substr (acc.string, acc.len - 4, 5) = "_calc" then do; 510 /* if calc entry */ 511 function_name = substr (acc.string, 1, acc.len - 5); 512 function_entry = 513 cv_entry_ ("linus_builtin_$" || acc.string, null, code); 514 if code ^= 0 then 515 call 516 error (code, 517 "^/Converting builtin entry: " || function_name); 518 call 519 linus_thread_fn_list (lcb_ptr, function_entry, 520 "linus_builtin_", function_name, code); /* thread function info into list */ 521 if code ^= 0 then 522 call error (code, ""); 523 end; /* if true function entry */ 524 end; /* if text entry */ 525 end; /* entry point loop */ 526 end; /* if builtin segment found */ 527 528 if lcb.setfi_ptr = null then /* if did not find any builtins */ 529 call error (linus_error_$bad_builtin_obj, ""); 530 531 lcb.rb_ptr = addr (req_buf); 532 533 on conversion call error (linus_error_$conv, ""); /* print error and reset for next request */ 534 535 /* set up pi handler */ 536 call ssu_$set_procedure (sci_ptr, "program_interrupt", linus_invoke$pop_all_on_pi, code); 537 if code ^= 0 538 then call error (code, ""); 539 540 call cu_$arg_count (nargs); /* see if we have args */ 541 542 do i = 1 to nargs; 543 call cu_$arg_ptr (i, ctl_ptr, ctl_len, code); 544 if code ^= 0 then 545 call error (code, ctl_arg); 546 547 if ctl_arg = "-set_linus_prompt_string" | ctl_arg = "-slups" | ctl_arg = "-prompt" 548 then do; 549 if i >= nargs then 550 call 551 error (linus_error_$too_few_ctl_args, 552 "^2/-set_linus_prompt_string requires a parameter"); 553 i = i + 1; 554 call cu_$arg_ptr (i, ctl_ptr, ctl_len, code); 555 if code ^= 0 then 556 call error (code, ctl_arg); 557 call ssu_$set_prompt (sci_ptr, (ctl_arg)); 558 end; 559 else if ctl_arg = "-set_lila_prompt_string" | ctl_arg = "-slaps" 560 then do; 561 if i >= nargs then 562 call 563 error (linus_error_$too_few_ctl_args, 564 "^2/-set_lila_prompt_string requires a parameter"); 565 i = i + 1; 566 call cu_$arg_ptr (i, ctl_ptr, ctl_len, code); 567 if code ^= 0 then 568 call error (code, ctl_arg); 569 lila_prompt_char = ctl_arg; 570 end; 571 else if ctl_arg = "-no_prompt" | ctl_arg = "-npmt" then do; 572 lcb.prompt_flag = "0"b; 573 call ssu_$set_prompt_mode (sci_ptr, DONT_PROMPT); 574 end; 575 else if ctl_arg = "-print_search_order" | ctl_arg = "-pso" 576 then lcb.pso_flag = "1"b; 577 else if ctl_arg = "-no_optimize" | ctl_arg = "-no_ot" 578 then lcb.no_ot_flag = "1"b; 579 else if ctl_arg = "-abbrev" | ctl_arg = "-ab" 580 then ab = "1"b; 581 else if ctl_arg = "-no_abbrev" | ctl_arg = "-nab" 582 then ab = "0"b; 583 else if ctl_arg = "-profile" | ctl_arg = "-pf" 584 then do; 585 if i >= nargs 586 then call error (linus_error_$too_few_ctl_args, 587 "^2/-profile requires a parameter"); 588 i = i + 1; 589 call cu_$arg_ptr (i, pf_arg_ptr, pf_arg_len, code); 590 if code ^= 0 591 then call error (code, ctl_arg); 592 ab = "1"b; 593 end; 594 else if ctl_arg = "-request" | ctl_arg = "-rq" 595 then do; 596 if ca_ptr ^= null 597 then call error (error_table_$inconsistent, 598 "^2/A LINUS macro cannot be specified in addition to -request."); 599 if i >= nargs 600 then call error (linus_error_$too_few_ctl_args, 601 "^2/-request requires a parameter"); 602 i = i + 1; 603 call cu_$arg_ptr (i, rq_arg_ptr, rq_arg_len, code); 604 if code ^= 0 605 then call error (code, ctl_arg); 606 end; 607 else if ctl_arg = "-iteration" | ctl_arg = "-it" 608 then lcb.iteration = "1"b; 609 else if ctl_arg = "-no_iteration" | ctl_arg = "-nit" 610 then lcb.iteration = "0"b; 611 else if ctl_arg = "-start_up" | ctl_arg = "-su" 612 then start_up = "1"b; 613 else if ctl_arg = "-no_startup" | ctl_arg = "-no_start_up" 614 | ctl_arg = "-ns" | ctl_arg = "-nsu" then start_up = "0"b; 615 else if ctl_arg = "-arguments" | ctl_arg = "-ag" then do; 616 if ca_ptr = null then 617 call 618 error (linus_error_$inval_ctl_arg, 619 "^2/A macro_name must be given before the -arguments control argument is vaild." 620 ); 621 622 if i >= nargs then 623 call 624 error (linus_error_$too_few_ctl_args, 625 "^2/-arguments requires at least one parameter"); 626 i = i + 1; 627 j = 2; 628 do while (i ^> nargs); 629 char_argl.nargs = char_argl.nargs + 1; 630 call 631 cu_$arg_ptr (i, char_argl.arg.arg_ptr (j), 632 char_argl.arg.arg_len (j), code); /* put arg info into structure */ 633 if code ^= 0 then 634 call error (code, "macro argument"); 635 i = i + 1; 636 j = j + 1; 637 end; 638 end; 639 else if substr (ctl_arg, 1, 1) ^= "-" then do; 640 if ca_ptr ^= null then 641 call 642 error (linus_error_$dup_ctl_args, 643 "^2/Only one macro path may be given: " || ctl_arg); 644 if rq_arg_ptr ^= null 645 then call error (error_table_$inconsistent, 646 "^2/A LINUS macro cannot be specified in addition to -request."); 647 nargs_init = nargs - i + 1; 648 if nargs_init > 1 then 649 nargs_init = nargs_init - 1; 650 allocate char_argl in (lcb.static_area); 651 char_argl.nargs = 1; 652 char_argl.arg.arg_ptr (1) = ctl_ptr; 653 char_argl.arg.arg_len (1) = ctl_len; 654 end; 655 else call error (error_table_$badopt, ctl_arg); 656 end; /* if macro args */ 657 658 call ssu_$set_ec_suffix (sci_ptr, "lec"); /* setup for exec_coms */ 659 660 /* The pre_request_line and post_request_line procedures may be replaced 661* for timing mode where we have pre- and post- request procedures. The 662* procedures that we will replace them with are in this module and we 663* need to get the default procedures because they will be used when 664* timing is turned off.*/ 665 666 call ssu_$get_procedure (sci_ptr, "pre_request_line", lcb.ssu_pre_request_line, code); 667 if code ^= 0 668 then call error (code, ""); 669 670 call ssu_$get_procedure (sci_ptr, "post_request_line", lcb.ssu_post_request_line, code); 671 if code ^= 0 672 then call error (code, ""); 673 674 /* Setup linus_abort_line as replacement for the standard abort_line. 675* Save the abort_line procedure, first, because linus_abort_line will 676* call the standard ssu_abort_line. */ 677 678 call ssu_$get_procedure (sci_ptr, "abort_line", lcb.ssu_abort_line, code); 679 if code ^= 0 680 then call error (code, ""); 681 682 call ssu_$set_procedure (sci_ptr, "abort_line", linus_abort_line, code); 683 if code ^= 0 684 then call error (code, ""); 685 686 /* Get the request_processor options so we can set up for abbrev processing 687* and iteration. Linus iteration is off by default but ssu_ defaults to on. */ 688 689 call ssu_$get_request_processor_options (sci_ptr, RP_OPTIONS_VERSION_1, addr(local_rpo), code); 690 if code ^= 0 then call error (code, ""); 691 692 if ^lcb.iteration /* don't interpret parens */ 693 then do; /* as causing iteration */ 694 local_rpo.language_info.non_standard_language = "1"b; 695 local_rpo.language_info.character_types (rank ("(")) = NORMAL_CHARACTER; 696 local_rpo.language_info.character_types (rank (")")) = NORMAL_CHARACTER; 697 end; 698 699 if ab = "1"b /* user wants abbrevs */ 700 then do; 701 if pf_arg_ptr ^= null /* user specified a profile */ 702 then do; 703 ctl_len = pf_arg_len; 704 ctl_ptr = pf_arg_ptr; 705 call expand_pathname_$add_suffix (ctl_arg, "profile", dname, ename, code); 706 if code ^= 0 707 then call error (code, ctl_arg); 708 call hcs_$initiate (dname, ename, "", 0, 0, local_rpo.abbrev_info.default_profile_ptr, code); 709 if local_rpo.abbrev_info.default_profile_ptr = null 710 then call error (code, rtrim (dname) || ">" || ename); 711 end; 712 713 local_rpo.abbrev_info.expand_request_lines = "1"b; 714 end; 715 716 call ssu_$set_request_processor_options (sci_ptr, addr(local_rpo), code); 717 if code ^= 0 then call error (code, ""); 718 719 if ca_ptr ^= null then do; /* macro given */ 720 macro_rq_len = 6 + char_argl.nargs; 721 do i = 1 to char_argl.nargs; 722 macro_rq_len = macro_rq_len + char_argl.arg.arg_len (i) + 1; 723 end; 724 macro_rq_len = macro_rq_len * 2 +2; /* allow room for requoting */ 725 allocate macro_request in (lcb.static_area); 726 macro_request = "invoke"; 727 do i = 1 to char_argl.nargs; 728 ctl_ptr = char_argl.arg.arg_ptr (i); 729 ctl_len = char_argl.arg.arg_len (i); 730 if ctl_len = 0 731 then macro_request = rtrim(macro_request) || " """""; 732 else if search (ctl_arg, WHITESPACE_OR_QUOTE) ^= 0 733 then call requote_arg (ctl_arg); 734 else macro_request = rtrim(macro_request) || " " || ctl_arg; 735 end; 736 free char_argl; 737 call ssu_$execute_line (sci_ptr, macro_rq_ptr, macro_rq_len, code); /* set up to take input from macro */ 738 free macro_request; 739 if code = ssu_et_$subsystem_aborted 740 then do; 741 call tidy_up; 742 goto exit; 743 end; 744 else if code ^= 0 & code ^= ssu_et_$request_line_aborted 745 then do; 746 call error (linus_error_$abort, ""); 747 return; 748 end; 749 end; 750 751 on sub_error_ call sub_error_handler; 752 753 call linus_define_area (lcb.lila_area_ptr, "LILA", code); 754 if code ^= 0 then 755 call error (code, ""); 756 757 call linus_define_area (lcb.linus_area_ptr, "LINUS", code); 758 if code ^= 0 759 then call error (code, ""); 760 761 call linus_temp_seg_mgr$get_segment (lcb_ptr, "LINUS", "", 762 lcb.query_temp_segment_ptr, code); 763 if code ^= 0 764 then call error (code, "^/While trying to aquire a temp segment for the query."); 765 call ssu_$get_area (sci_ptr, null, "general use area", lcb.general_work_area_ptr); 766 767 768 if start_up 769 then do; 770 call ssu_$execute_start_up (sci_ptr, code); 771 if code ^= 0 & code ^= error_table_$noentry 772 then call error (code, "While executing start_up"); 773 end; 774 775 initial_linus_vclock = vclock; 776 lcb.request_time, lcb.mrds_time = 0; 777 778 if rq_arg_ptr ^= null /* execute the -rq stuff */ 779 then do; 780 call ssu_$execute_line (sci_ptr, rq_arg_ptr, rq_arg_len, code); 781 if code = ssu_et_$subsystem_aborted 782 then do; 783 call tidy_up; 784 goto exit; 785 end; 786 else if code ^= 0 /* nonfatal */ 787 then call ssu_$print_message (sci_ptr, code); 788 end; 789 790 listen: 791 call ssu_$listen (sci_ptr, iox_$user_input, code); 792 if code ^= ssu_et_$subsystem_aborted 793 then call error (linus_error_$abort, ""); /* if fatal error in handler */ 794 call tidy_up; 795 796 exit: 797 return; 798 799 timer_print: 800 proc; 801 802 call 803 ioa_ ("^/LINUS time^13t= ^10.3f" || "^/MRDS time^13t= ^10.3f" 804 || "^/Total time^13t= ^10.3f^/", 805 lcb.request_time / 1000000, lcb.mrds_time / 1000000, 806 (lcb.request_time + lcb.mrds_time) / 1000000); 807 lcb.request_time, lcb.mrds_time = 0; 808 809 end timer_print; 810 811 tidy_up: 812 proc; 813 814 /* Procedure to clean up loose ends */ 815 816 dcl icode fixed bin (35); 817 dcl temp_index fixed bin (35); /* temp storage for database index */ 818 819 if lcb.general_work_area_ptr ^= null 820 then call ssu_$release_area (sci_ptr, lcb.general_work_area_ptr); 821 822 if sci_ptr ^= null /* if there is an ssu_ invocation */ 823 then call ssu_$destroy_invocation (sci_ptr); 824 825 if lcb_ptr ^= null then do; /* if we have a LCB */ 826 827 if lcb.is_ptr ^= iox_$user_input 828 then do; /* if we were in macro */ 829 lcb.prompt_flag = "0"b; /* make sure pop doesn't try and call ssu_! */ 830 call linus_invoke$pop_all (lcb_ptr, icode); 831 end; 832 if lcb.db_index ^= 0 then do; /* if a data base open, close it */ 833 temp_index = lcb.db_index; 834 lcb.db_index = 0; 835 on sub_error_ ; 836 if lcb.timing_mode then 837 initial_mrds_vclock = vclock; 838 call dsl_$close (temp_index, icode); 839 if lcb.timing_mode then 840 lcb.mrds_time = lcb.mrds_time + vclock - initial_mrds_vclock; 841 revert sub_error_; 842 end; 843 844 if lcb.liocb_ptr ^= null then do; /* clean up the lila file */ 845 call iox_$close (lcb.liocb_ptr, icode); 846 call iox_$detach_iocb (lcb.liocb_ptr, icode); 847 call iox_$destroy_iocb (lcb.liocb_ptr, icode); 848 lcb.liocb_ptr = null; 849 call hcs_$del_dir_tree (get_pdir_ (), lcb.lila_fn, icode); 850 if icode = error_table_$notadir | icode = 0 then 851 call hcs_$delentry_file (get_pdir_ (), lcb.lila_fn, icode); 852 853 end; /* cleaning up lila file */ 854 if lcb.linus_area_ptr ^= null then do; 855 call 856 release_temp_segment_ ("LINUS.LINUS.area", lcb.linus_area_ptr, 857 icode); 858 if icode ^= 0 then 859 call com_err_ (icode, my_name); 860 lcb.linus_area_ptr = null; 861 end; 862 if lcb.lila_area_ptr ^= null then do; 863 call 864 release_temp_segment_ ("LINUS.LILA.area", lcb.lila_area_ptr, 865 icode); 866 if icode ^= 0 then 867 call com_err_ (icode, my_name); 868 lcb.lila_area_ptr = null; 869 end; 870 if lcb.i_o_area_ptr ^= null then do; 871 call 872 release_temp_segment_ ("LINUS.I_O_.area", lcb.i_o_area_ptr, 873 icode); 874 if icode ^= 0 then 875 call com_err_ (icode, my_name); 876 lcb.i_o_area_ptr = null; 877 end; 878 if lcb.table_control_info_ptr ^= null 879 then do; 880 call linus_table$terminate (lcb_ptr, icode); 881 if icode ^= 0 then 882 call com_err_ (icode, my_name); 883 end; 884 if lcb.report_control_info_ptr ^= null 885 then do; 886 call linus_options$terminate (lcb_ptr, icode); 887 if icode ^= 0 then 888 call com_err_ (icode, my_name); 889 end; 890 if lcb.query_temp_segment_ptr ^= null 891 then do; 892 call linus_temp_seg_mgr$release_segment (lcb_ptr, 893 "LINUS", lcb.query_temp_segment_ptr, icode); 894 if icode ^= 0 895 then call com_err_ (icode, my_name); 896 else; 897 end; 898 if lcb.temp_seg_info_ptr ^= null 899 then do; 900 call linus_temp_seg_mgr$terminate (lcb_ptr, icode); 901 if icode ^= 0 then 902 call com_err_ (icode, my_name); 903 end; 904 if lcb_ptr ^= null then do; 905 call hcs_$delentry_seg (lcb_ptr, icode); /* delete the LCB */ 906 if icode ^= 0 then 907 call com_err_ (icode, my_name); 908 lcb_ptr = null; 909 end; 910 else if ptr_sink ^= null then do; 911 call hcs_$delentry_seg (ptr_sink, icode); 912 if icode ^= 0 then 913 call com_err_ (icode, my_name); 914 ptr_sink = null; 915 end; 916 917 918 end; /* if we had an LCB */ 919 920 recursed = "0"b; /* so we can be called again */ 921 922 end tidy_up; 923 924 error: 925 proc (icode, msg_str); 926 927 /* Error procedure, prints a message and cleans up */ 928 929 dcl (icode, user_code) fixed bin (35); 930 dcl msg_str char (*); 931 932 call linus_convert_code (icode, user_code, linus_data_$req_proc_id); 933 call com_err_ (user_code, my_name, msg_str); 934 call tidy_up; 935 go to exit; 936 937 end error; 938 939 requote_arg: 940 proc(arg); 941 dcl arg char(*) parm; 942 macro_request = rtrim(macro_request) || " " || requote_string_(arg); 943 end requote_arg; 944 945 sub_error_handler: proc; 946 947 /* 948* Find the sub_error_info structure and if it wasn't mrds that 949* signalled it then continue to signal. Change appropriate mrds_error_ 950* codes to linus_error_ codes and print the message. Do a non-local goto 951* so the current request will have its cleanup handler invoked but won't 952* print the error message we just printed. 953**/ 954 955 dcl 1 local_condition_info like condition_info; 956 dcl seh_code fixed bin (35); 957 958 condition_info_ptr = addr (local_condition_info); 959 condition_info.version = condition_info_version_1; 960 call find_condition_info_ (null (), condition_info_ptr, seh_code); 961 if seh_code ^= 0 962 then do; 963 call tidy_up; 964 goto exit; 965 end; 966 967 sub_error_info_ptr = condition_info.info_ptr; 968 if substr (sub_error_info.name, 1, 9) ^= "mrds_dsl_" 969 & substr (sub_error_info.name, 1, 3) ^= "mu_" 970 & substr (sub_error_info.name, 1, 4) ^= "mus_" 971 then do; 972 call continue_to_signal_ (seh_code); 973 return; 974 end; 975 976 call linus_convert_code (sub_error_info.header.status_code, seh_code, 977 linus_data_$req_proc_id); 978 call ssu_$print_message (sci_ptr, seh_code, sub_error_info.header.info_string); 979 980 goto listen; 981 982 end sub_error_handler; 983 984 pre_request_line: 985 entry (bv_sci_ptr); 986 987 /* This procedure is called prior to the execution of a request line. If the 988* user has enabled timing mode, it initializes some timers and returns. 989**/ 990 dcl bv_sci_ptr ptr parameter; 991 992 lcb_ptr = ssu_$get_info_ptr (bv_sci_ptr); 993 if ^lcb.timing_mode 994 then return; 995 lcb.mrds_time = 0; 996 initial_linus_vclock = vclock; 997 return; 998 999 post_request_line: 1000 entry (bv_sci_ptr); 1001 1002 /* This procedure is called after a request line has been executed. If the 1003* user has timing mode on, it diddles some timers, prints some statistics 1004* and returns. 1005**/ 1006 1007 lcb_ptr = ssu_$get_info_ptr (bv_sci_ptr); 1008 if ^lcb.timing_mode 1009 then return; 1010 if lcb.request_time = -1 /* user just turned on timing */ 1011 then do; 1012 lcb.request_time = 0; 1013 return; 1014 end; 1015 lcb.request_time = vclock - initial_linus_vclock - lcb.mrds_time; 1016 call timer_print; 1017 return; 1018 1019 end linus; 1020 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1112.3 linus.pl1 >udd>sm>ds>w>ml>linus.pl1 197 1 06/28/79 1304.8 condition_info.incl.pl1 >ldd>incl>condition_info.incl.pl1 199 2 03/24/82 1447.2 condition_info_header.incl.pl1 >ldd>incl>condition_info_header.incl.pl1 201 3 07/29/86 1248.4 linus_lcb.incl.pl1 >ldd>incl>linus_lcb.incl.pl1 203 4 09/09/82 1518.0 cp_character_types.incl.pl1 >ldd>incl>cp_character_types.incl.pl1 205 5 11/24/86 1326.9 definition.incl.pl1 >ldd>incl>definition.incl.pl1 207 6 11/23/82 1427.3 linus_char_argl.incl.pl1 >ldd>incl>linus_char_argl.incl.pl1 209 7 03/27/82 0534.5 linus_rel_array.incl.pl1 >ldd>incl>linus_rel_array.incl.pl1 211 8 08/05/77 1122.5 object_info.incl.pl1 >ldd>incl>object_info.incl.pl1 213 9 04/13/82 1720.2 ssu_prompt_modes.incl.pl1 >ldd>incl>ssu_prompt_modes.incl.pl1 215 10 09/28/82 1537.6 ssu_rp_options.incl.pl1 >ldd>incl>ssu_rp_options.incl.pl1 217 11 07/18/81 1200.0 sub_error_info.incl.pl1 >ldd>incl>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. DONT_PROMPT 000076 constant bit(1) initial packed unaligned dcl 9-7 set ref 573* LAST_POSITION_IN_THE_TABLE 000002 constant fixed bin(17,0) initial dcl 279 set ref 454* 458* NORMAL_CHARACTER constant fixed bin(9,0) initial unsigned dcl 4-6 ref 695 696 RP_OPTIONS_VERSION_1 000006 constant char(8) initial packed unaligned dcl 10-18 set ref 689* RW 000105 constant fixed bin(5,0) initial dcl 276 set ref 409* SEG constant bit(3) initial packed unaligned dcl 282 ref 499 TEXT constant bit(3) initial packed unaligned dcl 282 ref 504 WHITESPACE_OR_QUOTE 000004 constant char(7) initial packed unaligned dcl 277 ref 732 ab 000143 automatic bit(1) packed unaligned dcl 244 set ref 406* 579* 581* 592* 699 abbrev_info 204 000266 automatic structure level 2 dcl 265 acc based structure level 1 dcl 271 acc_ptr 000124 automatic pointer initial dcl 227 set ref 227* 507* 509 509 511 511 512 addr builtin function dcl 316 ref 434 450 450 454 454 482 482 531 689 689 716 716 958 addrel builtin function dcl 316 ref 487 487 487 494 495 499 507 525 arg 2 based structure array level 2 in structure "char_argl" dcl 6-9 in procedure "linus" arg parameter char packed unaligned dcl 941 in procedure "requote_arg" set ref 939 942* arg_len 4 based fixed bin(21,0) array level 3 dcl 6-9 set ref 630* 653* 722 729 arg_ptr 000126 automatic pointer initial dcl 227 in procedure "linus" set ref 227* 404* arg_ptr 2 based pointer array level 3 in structure "char_argl" dcl 6-9 in procedure "linus" set ref 630* 652* 728 bit18 based bit(18) packed unaligned dcl 245 ref 487 487 build_increment 76 based fixed bin(17,0) level 2 dcl 3-53 set ref 436* build_start 77 based fixed bin(17,0) level 2 dcl 3-53 set ref 437* bv_sci_ptr parameter pointer dcl 990 set ref 984 992* 999 1007* ca_ptr 000104 automatic pointer dcl 6-15 set ref 404* 596 616 629 629 630 630 640 650* 651 652 653 719 720 721 722 727 728 729 736 cal_ptr 24 based pointer level 2 dcl 3-53 set ref 426* char_argl based structure level 1 dcl 6-9 set ref 650 736 character_types 3 000266 automatic fixed bin(9,0) array level 3 packed packed unsigned unaligned dcl 265 set ref 695* 696* class 1(33) based bit(3) level 2 packed packed unaligned dcl 5-12 ref 499 504 cleanup 000570 stack reference condition dcl 314 ref 400 code 000142 automatic fixed bin(35,0) dcl 237 set ref 409* 412* 450* 452 452* 454* 456 456* 458* 459 459* 478* 480 482* 484 512* 514 514* 518* 521 521* 536* 537 537* 543* 544 544* 554* 555 555* 566* 567 567* 589* 590 590* 603* 604 604* 630* 633 633* 666* 667 667* 670* 671 671* 678* 679 679* 682* 683 683* 689* 690 690* 705* 706 706* 708* 709* 716* 717 717* 737* 739 744 744 753* 754 754* 757* 758 758* 761* 763 763* 770* 771 771 771* 780* 781 786 786* 790* 792 com_err_ 000070 constant entry external dcl 321 ref 396 858 866 874 881 887 894 901 906 912 933 condition_info based structure level 1 dcl 1-14 condition_info_header based structure level 1 dcl 2-6 condition_info_ptr 000100 automatic pointer dcl 1-10 set ref 958* 959 960* 967 condition_info_version_1 constant fixed bin(17,0) initial dcl 1-30 ref 959 continue_to_signal_ 000072 constant entry external dcl 322 ref 972 conversion 000576 stack reference condition dcl 314 ref 533 ctl_arg based char packed unaligned dcl 246 set ref 544* 547 547 547 555* 557 559 559 567* 569 571 571 575 575 577 577 579 579 581 581 583 583 590* 594 594 604* 607 607 609 609 611 611 613 613 613 613 615 615 639 640 655* 705* 706* 732 732* 734 ctl_len 000144 automatic fixed bin(21,0) dcl 247 set ref 543* 544 544 547 547 547 554* 555 555 557 559 559 566* 567 567 569 571 571 575 575 577 577 579 579 581 581 583 583 590 590 594 594 604 604 607 607 609 609 611 611 613 613 613 613 615 615 639 640 653 655 655 703* 705 705 706 706 729* 730 732 732 732 734 ctl_ptr 000130 automatic pointer initial dcl 227 set ref 227* 543* 544 547 547 547 554* 555 557 559 559 566* 567 569 571 571 575 575 577 577 579 579 581 581 583 583 590 594 594 604 607 607 609 609 611 611 613 613 613 613 615 615 639 640 652 655 704* 705 706 728* 732 732 734 cu_$arg_count 000074 constant entry external dcl 323 ref 540 cu_$arg_ptr 000076 constant entry external dcl 324 ref 543 554 566 589 603 630 cu_$decode_entry_value 000100 constant entry external dcl 325 ref 474 curr_lit_offset 142 based fixed bin(35,0) level 2 dcl 3-53 set ref 418* curr_lv_val_offset 143 based fixed bin(35,0) level 2 dcl 3-53 set ref 418* cv_entry_ 000102 constant entry external dcl 326 ref 512 d_ptr 000132 automatic pointer initial dcl 227 set ref 227* 487* 487 487* 494 495 499* 499 499 499* 504 504 504 507* 525 db_index based fixed bin(35,0) level 2 dcl 3-53 set ref 418* 832 833 834* default_profile_ptr 206 000266 automatic pointer level 3 dcl 265 set ref 708* 709 definition based structure level 1 dcl 5-12 defp 4 000502 automatic pointer level 2 dcl 269 set ref 487 487 487 487 494 495 499 507 525 dname 000145 automatic char(168) packed unaligned dcl 248 set ref 705* 708* 709 dsl_$close 000244 constant entry external dcl 391 ref 838 empty builtin function dcl 316 ref 434 ename 000217 automatic char(32) packed unaligned dcl 249 set ref 705* 708* 709 ent_ptr 000134 automatic pointer initial dcl 227 set ref 227* 404* entry 1(20) based bit(1) level 3 packed packed unaligned dcl 5-12 ref 504 error_table_$badopt 000016 external static fixed bin(35,0) dcl 287 set ref 655* error_table_$inconsistent 000020 external static fixed bin(35,0) dcl 287 set ref 596* 644* error_table_$noentry 000024 external static fixed bin(35,0) dcl 287 ref 771 error_table_$notadir 000022 external static fixed bin(35,0) dcl 287 ref 850 expand_pathname_$add_suffix 000104 constant entry external dcl 327 ref 705 expand_request_lines 204 000266 automatic bit(1) level 3 dcl 265 set ref 713* find_condition_info_ 000106 constant entry external dcl 329 ref 960 fixed builtin function dcl 316 ref 434 fixed_bin_35_desc 000501 automatic bit(36) initial packed unaligned dcl 267 set ref 267* flags 1(18) based structure level 2 packed packed unaligned dcl 5-12 force_retrieve_scope_info_ptr 30 based pointer level 2 dcl 3-53 set ref 426* forward based bit(18) level 2 packed packed unaligned dcl 5-12 ref 487 499 525 function_entry 000230 automatic entry variable dcl 250 set ref 512* 518* function_name 000234 automatic varying char(32) dcl 251 set ref 511* 514 518* general_work_area_ptr 116 based pointer level 2 dcl 3-53 set ref 445* 765* 819 819* get_pdir_ 000110 constant entry external dcl 330 ref 849 849 850 850 hcs_$del_dir_tree 000112 constant entry external dcl 331 ref 849 hcs_$delentry_file 000114 constant entry external dcl 332 ref 850 hcs_$delentry_seg 000116 constant entry external dcl 333 ref 905 911 hcs_$initiate 000120 constant entry external dcl 334 ref 708 hcs_$make_seg 000122 constant entry external dcl 336 ref 409 hcs_$status_mins 000124 constant entry external dcl 339 ref 478 header based structure level 2 dcl 11-7 highest_numbered_subsystem_invocation 000245 automatic fixed bin(17,0) dcl 252 set ref 463* i 000120 automatic fixed bin(17,0) dcl 221 set ref 542* 543* 549 553* 553 554* 561 565* 565 566* 585 588* 588 589* 599 602* 602 603* 622 626* 626 628 630* 635* 635 647* 721* 722* 727* 728 729* i_o_area_ptr 64 based pointer level 2 dcl 3-53 set ref 415* 870 871* 876* icode parameter fixed bin(35,0) dcl 929 in procedure "error" set ref 924 932* icode 000100 automatic fixed bin(35,0) dcl 816 in procedure "tidy_up" set ref 830* 838* 845* 846* 847* 849* 850 850 850* 855* 858 858* 863* 866 866* 871* 874 874* 880* 881 881* 886* 887 887* 892* 894 894* 900* 901 901* 905* 906 906* 911* 912 912* ignore 1(19) based bit(1) level 3 packed packed unaligned dcl 5-12 ref 504 info_ptr 14 based pointer level 2 dcl 1-14 ref 967 info_string 3 based varying char(256) level 3 dcl 11-7 set ref 978* initial_linus_vclock 000010 internal static float bin(63) dcl 239 set ref 775* 996* 1015 initial_mrds_vclock 000012 internal static float bin(63) dcl 239 set ref 836* 839 ioa_ 000126 constant entry external dcl 341 ref 802 iox_$close 000130 constant entry external dcl 342 ref 845 iox_$destroy_iocb 000134 constant entry external dcl 344 ref 847 iox_$detach_iocb 000132 constant entry external dcl 343 ref 846 iox_$user_input 000066 external static pointer dcl 312 set ref 431 790* 827 is_ptr 22 based pointer level 2 dcl 3-53 set ref 431* 827 iteration 15(06) based bit(1) level 2 packed packed unaligned dcl 3-53 set ref 440* 607* 609* 692 ivs_ptr 42 based pointer level 2 dcl 3-53 set ref 426* j 000121 automatic fixed bin(17,0) dcl 221 set ref 627* 630 630 636* 636 language_info 2 000266 automatic structure level 2 dcl 265 lb_bc 000246 automatic fixed bin(24,0) dcl 253 set ref 478* 482* lb_ptr 000136 automatic pointer initial dcl 227 set ref 227* 474* 476 477* 477 478* 482* lb_type 000247 automatic fixed bin(2,0) dcl 254 set ref 478* lcb based structure level 1 dcl 3-53 lcb_ptr 000102 automatic pointer dcl 3-121 set ref 394* 434 447* 450 450* 462 463 466 466 467 470 471 518* 528 531 569 572 575 577 607 609 650 666 670 678 692 725 753 757 761* 761 765 776 776 802 802 802 802 807 807 819 819 825 827 829 830* 832 833 834 836 839 839 839 844 845 846 847 848 849 850 854 855 860 862 863 868 870 871 876 878 880* 884 886* 890 892* 892 898 900* 904 905* 908* 992* 993 995 1007* 1008 1010 1012 1015 1015 len based fixed bin(8,0) level 2 packed packed unaligned dcl 271 ref 487 495 509 509 511 511 512 lila_area_ptr 62 based pointer level 2 dcl 3-53 set ref 415* 753* 862 863* 868* lila_chars 3 based fixed bin(35,0) level 2 dcl 3-53 set ref 418* lila_count 2 based fixed bin(35,0) level 2 dcl 3-53 set ref 418* lila_fn 5 based char(32) level 2 packed packed unaligned dcl 3-53 set ref 433* 849* 850* lila_promp_chars_ptr 56 based pointer level 2 dcl 3-53 set ref 466* 467 569 lila_prompt_char based varying char(32) dcl 264 set ref 466 467* 569* linus_abort_line 000214 constant entry external dcl 374 ref 682 682 linus_area_ptr 60 based pointer level 2 dcl 3-53 set ref 415* 757* 854 855* 860* linus_builtin_ 000226 constant entry external dcl 381 ref 474 474 linus_convert_code 000216 constant entry external dcl 375 ref 932 976 linus_data_$max_range_items 000026 external static fixed bin(35,0) dcl 287 ref 469 linus_data_$req_buf_len 000030 external static fixed bin(35,0) dcl 287 ref 260 432 linus_data_$req_proc_id 000032 external static fixed bin(35,0) dcl 287 set ref 932* 976* linus_define_area 000230 constant entry external dcl 382 ref 753 757 linus_error_$abort 000034 external static fixed bin(35,0) dcl 287 set ref 746* 792* linus_error_$bad_builtin_obj 000036 external static fixed bin(35,0) dcl 287 set ref 480* 484* 495* 528* linus_error_$conv 000040 external static fixed bin(35,0) dcl 287 set ref 533* linus_error_$dup_ctl_args 000042 external static fixed bin(35,0) dcl 287 set ref 640* linus_error_$inval_ctl_arg 000044 external static fixed bin(35,0) dcl 287 set ref 616* linus_error_$recursed 000046 external static fixed bin(35,0) dcl 287 set ref 396* linus_error_$too_few_ctl_args 000050 external static fixed bin(35,0) dcl 287 set ref 549* 561* 585* 599* 622* linus_invoke$pop_all 000220 constant entry external dcl 376 ref 830 linus_invoke$pop_all_on_pi 000222 constant entry external dcl 377 ref 536 536 linus_options$terminate 000232 constant entry external dcl 383 ref 886 linus_rel_array based structure level 1 unaligned dcl 7-10 set ref 470 linus_rel_array_ptr 000110 automatic pointer dcl 7-16 set ref 470* 471 472 linus_rq_table_$linus_rq_table_ 000052 external static fixed bin(35,0) dcl 287 set ref 450 450 linus_table$terminate 000234 constant entry external dcl 384 ref 880 linus_temp_seg_mgr$get_segment 000236 constant entry external dcl 385 ref 761 linus_temp_seg_mgr$release_segment 000240 constant entry external dcl 387 ref 892 linus_temp_seg_mgr$terminate 000242 constant entry external dcl 389 ref 900 linus_thread_fn_list 000224 constant entry external dcl 378 ref 518 linus_version 100 based char(4) level 2 dcl 3-53 set ref 439* 450 liocb_ptr 16 based pointer level 2 dcl 3-53 set ref 426* 844 845* 846* 847* 848* lit_ptr 44 based pointer level 2 dcl 3-53 set ref 426* local_condition_info 000106 automatic structure level 1 unaligned dcl 955 set ref 958 local_rpo 000266 automatic structure level 1 dcl 265 set ref 689 689 716 716 lv_ptr 32 based pointer level 2 dcl 3-53 set ref 426* lvv_ptr 46 based pointer level 2 dcl 3-53 set ref 426* macro_request based char packed unaligned dcl 255 set ref 725 726* 730* 730 734* 734 738 942* 942 macro_rq_len 000250 automatic fixed bin(21,0) dcl 256 set ref 720* 722* 722 724* 724 725 725 726 730 730 734 734 737* 738 738 942 942 macro_rq_ptr 000252 automatic pointer dcl 257 set ref 405* 725* 726 730 730 734 734 737* 738 942 942 mrds_time 74 based float bin(63) level 2 dcl 3-53 set ref 421* 776* 802 802 807* 839* 839 995* 1015 msg_str parameter char packed unaligned dcl 930 set ref 924 933* my_name 000000 constant char(5) initial packed unaligned dcl 280 set ref 396* 858* 866* 874* 881* 887* 894* 901* 906* 912* 933* name 106 based char(32) level 2 dcl 11-7 ref 968 968 968 nargs based fixed bin(17,0) level 2 in structure "char_argl" dcl 6-9 in procedure "linus" set ref 629* 629 650* 651* 720 721 727 736 nargs 000122 automatic fixed bin(17,0) dcl 221 in procedure "linus" set ref 540* 542 549 561 585 599 622 628 647 nargs_init 000106 automatic fixed bin(17,0) dcl 6-16 set ref 647* 648 648* 648 650 650 no_ot_flag 15(08) based bit(1) level 2 packed packed unaligned dcl 3-53 set ref 425* 577* non_standard_language 2 000266 automatic bit(1) level 3 dcl 265 set ref 694* null builtin function dcl 316 ref 227 227 227 227 227 227 227 393 394 404 405 412 415 426 441 442 443 444 445 448 476 512 512 528 596 616 640 644 701 709 719 765 765 778 819 822 825 844 848 854 860 862 868 870 876 878 884 890 898 904 908 910 914 960 960 num_of_rels based fixed bin(17,0) level 2 dcl 7-10 set ref 470* 472* num_of_rels_init 000112 automatic fixed bin(17,0) initial dcl 7-18 set ref 469* 470 470 7-18* obj_info 000502 automatic structure level 1 dcl 269 set ref 482 482 object_info based structure level 1 dcl 8-6 object_info_$brief 000136 constant entry external dcl 345 ref 482 pf_arg_len 000254 automatic fixed bin(21,0) dcl 258 set ref 589* 703 pf_arg_ptr 000256 automatic pointer dcl 259 set ref 405* 589* 701 704 prompt_flag 15 based bit(1) level 2 packed packed unaligned dcl 3-53 set ref 422* 572* 829* pso_flag 15(07) based bit(1) level 2 packed packed unaligned dcl 3-53 set ref 424* 575* ptr builtin function dcl 316 ref 477 ptr_desc 000500 automatic bit(36) initial packed unaligned dcl 266 set ref 266* ptr_sink 000140 automatic pointer initial dcl 227 set ref 227* 409* 412 415 415 415 418 418 418 418 418 421 421 422 423 424 425 426 426 426 426 426 426 426 426 426 426 426 431 432 433 434 436 437 439 440 441 442 443 444 445 447 448* 474* 910 911* 914* query_temp_segment_ptr 114 based pointer level 2 dcl 3-53 set ref 444* 761* 890 892* rank builtin function dcl 316 ref 695 696 rb_len 1 based fixed bin(21,0) level 2 dcl 3-53 set ref 432* rb_ptr 20 based pointer level 2 dcl 3-53 set ref 531* recursed 000014 internal static bit(1) initial packed unaligned dcl 275 set ref 395 401* 920* rel builtin function dcl 316 ref 434 rel_array_ptr 66 based pointer level 2 dcl 3-53 set ref 471* release_temp_segment_ 000140 constant entry external dcl 346 ref 855 863 871 report_control_info_ptr 106 based pointer level 2 dcl 3-53 set ref 441* 884 req_buf 000260 automatic char packed unaligned dcl 260 set ref 531 request_time 72 based float bin(63) level 2 dcl 3-53 set ref 421* 776* 802 802 807* 1010 1012* 1015* requote_string_ 000142 constant entry external dcl 347 ref 942 rp_options based structure level 1 dcl 10-6 rq_arg_len 000260 automatic fixed bin(21,0) dcl 261 set ref 603* 780* rq_arg_ptr 000262 automatic pointer dcl 262 set ref 405* 603* 644 778 780* rtrim builtin function dcl 316 ref 709 730 734 942 sci_ptr 000116 automatic pointer dcl 219 set ref 393* 450* 454* 458* 462 463* 536* 557* 573* 658* 666* 670* 678* 682* 689* 716* 737* 765* 770* 780* 786* 790* 819* 822 822* 978* sclfi_ptr 40 based pointer level 2 dcl 3-53 set ref 426* search builtin function dcl 316 ref 732 segname 2(18) based bit(18) level 2 packed packed unaligned dcl 5-12 ref 499 seh_code 000140 automatic fixed bin(35,0) dcl 956 set ref 960* 961 972* 976* 978* setfi_ptr 36 based pointer level 2 dcl 3-53 set ref 426* 528 si_ptr 34 based pointer level 2 dcl 3-53 set ref 426* ssu_$add_info_dir 000144 constant entry external dcl 348 ref 458 ssu_$add_request_table 000146 constant entry external dcl 349 ref 454 ssu_$create_invocation 000150 constant entry external dcl 350 ref 450 ssu_$destroy_invocation 000152 constant entry external dcl 352 ref 822 ssu_$execute_line 000154 constant entry external dcl 353 ref 737 780 ssu_$execute_start_up 000156 constant entry external dcl 354 ref 770 ssu_$get_area 000160 constant entry external dcl 355 ref 765 ssu_$get_info_ptr 000162 constant entry external dcl 356 ref 992 1007 ssu_$get_invocation_count 000164 constant entry external dcl 357 ref 463 ssu_$get_procedure 000166 constant entry external dcl 358 ref 666 670 678 ssu_$get_request_processor_options 000170 constant entry external dcl 359 ref 689 ssu_$listen 000172 constant entry external dcl 361 ref 790 ssu_$print_message 000174 constant entry external dcl 362 ref 786 978 ssu_$release_area 000176 constant entry external dcl 363 ref 819 ssu_$set_ec_suffix 000200 constant entry external dcl 364 ref 658 ssu_$set_procedure 000202 constant entry external dcl 365 ref 536 682 ssu_$set_prompt 000204 constant entry external dcl 366 ref 557 ssu_$set_prompt_mode 000206 constant entry external dcl 367 ref 573 ssu_$set_request_processor_options 000210 constant entry external dcl 368 ref 716 ssu_abort_line 126 based entry variable level 2 dcl 3-53 set ref 678* ssu_et_$request_line_aborted 000054 external static fixed bin(35,0) dcl 287 ref 744 ssu_et_$subsystem_aborted 000056 external static fixed bin(35,0) dcl 287 ref 739 781 792 ssu_info_directories_$standard_requests 000062 external static char(168) packed unaligned dcl 308 set ref 458* ssu_post_request_line 132 based entry variable level 2 dcl 3-53 set ref 670* ssu_pre_request_line 136 based entry variable level 2 dcl 3-53 set ref 666* ssu_request_tables_$standard_requests 000064 external static bit(36) dcl 309 set ref 454 454 start_up 000264 automatic bit(1) packed unaligned dcl 263 set ref 407* 611* 613* 768 static_area 144 based area level 2 dcl 3-53 set ref 434* 434 466 470 650 725 status_code 104 based fixed bin(35,0) level 3 dcl 11-7 set ref 976* string 0(09) based char level 2 packed packed unaligned dcl 271 ref 487 495 509 511 512 sub_error_ 000604 stack reference condition dcl 314 ref 751 835 841 sub_error_info based structure level 1 dcl 11-7 sub_error_info_ptr 000114 automatic pointer dcl 11-6 set ref 967* 968 968 968 976 978 substr builtin function dcl 316 ref 509 511 639 968 968 968 subsystem_control_info_ptr 102 based pointer level 2 dcl 3-53 set ref 462* subsystem_invocation_level 104 based fixed bin(17,0) level 2 dcl 3-53 set ref 463* symbol 2 based bit(18) level 2 packed packed unaligned dcl 5-12 ref 487 495 507 sys_info$max_seg_size 000060 external static fixed bin(35,0) dcl 287 ref 434 table_control_info_ptr 110 based pointer level 2 dcl 3-53 set ref 442* 878 temp_index 000101 automatic fixed bin(35,0) dcl 817 set ref 833* 838* temp_seg_info_ptr 112 based pointer level 2 dcl 3-53 set ref 443* 898 test_flag 15(01) based bit(1) level 2 packed packed unaligned dcl 3-53 set ref 423* timing_mode 15(05) based bit(1) level 2 packed packed unaligned dcl 3-53 ref 836 839 993 1008 ttn_ptr 26 based pointer level 2 dcl 3-53 set ref 426* unique_chars_ 000212 constant entry external dcl 370 ref 409 user_code 000100 automatic fixed bin(35,0) dcl 929 set ref 932* 933* value 1 based bit(18) level 2 packed packed unaligned dcl 5-12 ref 494 vclock builtin function dcl 316 ref 775 836 839 996 1015 version 2 based fixed bin(17,0) level 2 dcl 1-14 set ref 959* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTIVE_STRING_MODIFIER internal static fixed bin(9,0) initial unsigned dcl 4-6 BEGIN_ACTIVE_STRING_1 internal static fixed bin(9,0) initial unsigned dcl 4-6 BEGIN_ACTIVE_STRING_2 internal static fixed bin(9,0) initial unsigned dcl 4-6 BEGIN_ACTIVE_STRING_3 internal static fixed bin(9,0) initial unsigned dcl 4-6 BEGIN_ACTIVE_STRING_4 internal static fixed bin(9,0) initial unsigned dcl 4-6 BEGIN_ACTIVE_STRING_5 internal static fixed bin(9,0) initial unsigned dcl 4-6 BEGIN_ACTIVE_STRING_6 internal static fixed bin(9,0) initial unsigned dcl 4-6 BEGIN_ACTIVE_STRING_7 internal static fixed bin(9,0) initial unsigned dcl 4-6 BEGIN_ACTIVE_STRING_8 internal static fixed bin(9,0) initial unsigned dcl 4-6 BEGIN_ITERATION_1 internal static fixed bin(9,0) initial unsigned dcl 4-6 BEGIN_ITERATION_2 internal static fixed bin(9,0) initial unsigned dcl 4-6 BEGIN_ITERATION_3 internal static fixed bin(9,0) initial unsigned dcl 4-6 BEGIN_ITERATION_4 internal static fixed bin(9,0) initial unsigned dcl 4-6 BEGIN_ITERATION_5 internal static fixed bin(9,0) initial unsigned dcl 4-6 BEGIN_ITERATION_6 internal static fixed bin(9,0) initial unsigned dcl 4-6 BEGIN_ITERATION_7 internal static fixed bin(9,0) initial unsigned dcl 4-6 BEGIN_ITERATION_8 internal static fixed bin(9,0) initial unsigned dcl 4-6 COMMAND_SEPARATOR internal static fixed bin(9,0) initial unsigned dcl 4-6 COMMAND_SEPARATOR_OR_WHITESPACE internal static fixed bin(9,0) initial unsigned dcl 4-6 COMPOUND_TOKEN internal static fixed bin(9,0) initial unsigned dcl 4-6 DONT_PROMPT_AFTER_NULL_LINES internal static bit(2) initial packed unaligned dcl 9-10 DONT_PROMPT_IF_TYPEAHEAD internal static bit(3) initial packed unaligned dcl 9-13 END_ACTIVE_STRING_1 internal static fixed bin(9,0) initial unsigned dcl 4-6 END_ACTIVE_STRING_2 internal static fixed bin(9,0) initial unsigned dcl 4-6 END_ACTIVE_STRING_3 internal static fixed bin(9,0) initial unsigned dcl 4-6 END_ACTIVE_STRING_4 internal static fixed bin(9,0) initial unsigned dcl 4-6 END_ACTIVE_STRING_5 internal static fixed bin(9,0) initial unsigned dcl 4-6 END_ACTIVE_STRING_6 internal static fixed bin(9,0) initial unsigned dcl 4-6 END_ACTIVE_STRING_7 internal static fixed bin(9,0) initial unsigned dcl 4-6 END_ACTIVE_STRING_8 internal static fixed bin(9,0) initial unsigned dcl 4-6 END_ITERATION_1 internal static fixed bin(9,0) initial unsigned dcl 4-6 END_ITERATION_2 internal static fixed bin(9,0) initial unsigned dcl 4-6 END_ITERATION_3 internal static fixed bin(9,0) initial unsigned dcl 4-6 END_ITERATION_4 internal static fixed bin(9,0) initial unsigned dcl 4-6 END_ITERATION_5 internal static fixed bin(9,0) initial unsigned dcl 4-6 END_ITERATION_6 internal static fixed bin(9,0) initial unsigned dcl 4-6 END_ITERATION_7 internal static fixed bin(9,0) initial unsigned dcl 4-6 END_ITERATION_8 internal static fixed bin(9,0) initial unsigned dcl 4-6 PROMPT internal static bit(1) initial packed unaligned dcl 9-6 PROMPT_AFTER_NULL_LINES internal static bit(2) initial packed unaligned dcl 9-9 PROMPT_IF_TYPEAHEAD internal static bit(3) initial packed unaligned dcl 9-12 QUOTE_CHARACTER internal static fixed bin(9,0) initial unsigned dcl 4-6 SINGLE_TOKEN internal static fixed bin(9,0) initial unsigned dcl 4-6 WHITESPACE internal static fixed bin(9,0) initial unsigned dcl 4-6 condition_info_header_ptr automatic pointer dcl 2-4 object_info_version_2 internal static fixed bin(17,0) initial dcl 8-60 rp_options_ptr automatic pointer dcl 10-16 sub_error_info_version_1 internal static fixed bin(17,0) initial dcl 11-13 NAMES DECLARED BY EXPLICIT CONTEXT. error 006323 constant entry internal dcl 924 ref 412 452 456 459 480 484 495 514 521 528 533 537 544 549 555 561 567 585 590 596 599 604 616 622 633 640 644 655 667 671 679 683 690 706 709 717 746 754 758 763 771 792 exit 005110 constant label dcl 796 ref 742 784 935 964 linus 000632 constant entry external dcl 27 listen 005051 constant label dcl 790 ref 980 post_request_line 005152 constant entry external dcl 999 pre_request_line 005114 constant entry external dcl 984 requote_arg 006404 constant entry internal dcl 939 ref 732 sub_error_handler 006507 constant entry internal dcl 945 ref 751 tidy_up 005270 constant entry internal dcl 811 ref 400 741 783 794 934 963 timer_print 005216 constant entry internal dcl 799 ref 1016 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 10252 10520 7051 10262 Length 11330 7051 246 574 1200 6 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus 605 external procedure is an external procedure. on unit on line 400 64 on unit on unit on line 533 78 on unit on unit on line 751 122 on unit timer_print internal procedure shares stack frame of external procedure linus. tidy_up 146 internal procedure enables or reverts conditions. on unit on line 835 64 on unit error 88 internal procedure is called during a stack extension. requote_arg internal procedure shares stack frame of external procedure linus. sub_error_handler internal procedure shares stack frame of on unit on line 751. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 initial_linus_vclock linus 000012 initial_mrds_vclock linus 000014 recursed linus STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME error 000100 user_code error linus 000100 condition_info_ptr linus 000102 lcb_ptr linus 000104 ca_ptr linus 000106 nargs_init linus 000110 linus_rel_array_ptr linus 000112 num_of_rels_init linus 000114 sub_error_info_ptr linus 000116 sci_ptr linus 000120 i linus 000121 j linus 000122 nargs linus 000124 acc_ptr linus 000126 arg_ptr linus 000130 ctl_ptr linus 000132 d_ptr linus 000134 ent_ptr linus 000136 lb_ptr linus 000140 ptr_sink linus 000142 code linus 000143 ab linus 000144 ctl_len linus 000145 dname linus 000217 ename linus 000230 function_entry linus 000234 function_name linus 000245 highest_numbered_subsystem_invocation linus 000246 lb_bc linus 000247 lb_type linus 000250 macro_rq_len linus 000252 macro_rq_ptr linus 000254 pf_arg_len linus 000256 pf_arg_ptr linus 000260 req_buf linus 000260 rq_arg_len linus 000262 rq_arg_ptr linus 000264 start_up linus 000266 local_rpo linus 000500 ptr_desc linus 000501 fixed_bin_35_desc linus 000502 obj_info linus on unit on line 751 000106 local_condition_info sub_error_handler 000140 seh_code sub_error_handler tidy_up 000100 icode tidy_up 000101 temp_index tidy_up THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac tra_ext_1 alloc_auto_adj enable_op shorten_stack ext_entry int_entry int_entry_desc op_alloc_ op_freen_ op_empty_ vclock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ continue_to_signal_ cu_$arg_count cu_$arg_ptr cu_$decode_entry_value cv_entry_ dsl_$close expand_pathname_$add_suffix find_condition_info_ get_pdir_ hcs_$del_dir_tree hcs_$delentry_file hcs_$delentry_seg hcs_$initiate hcs_$make_seg hcs_$status_mins ioa_ iox_$close iox_$destroy_iocb iox_$detach_iocb linus_abort_line linus_builtin_ linus_convert_code linus_define_area linus_invoke$pop_all linus_invoke$pop_all_on_pi linus_options$terminate linus_table$terminate linus_temp_seg_mgr$get_segment linus_temp_seg_mgr$release_segment linus_temp_seg_mgr$terminate linus_thread_fn_list object_info_$brief release_temp_segment_ requote_string_ ssu_$add_info_dir ssu_$add_request_table ssu_$create_invocation ssu_$destroy_invocation ssu_$execute_line ssu_$execute_start_up ssu_$get_area ssu_$get_info_ptr ssu_$get_invocation_count ssu_$get_procedure ssu_$get_request_processor_options ssu_$listen ssu_$print_message ssu_$release_area ssu_$set_ec_suffix ssu_$set_procedure ssu_$set_prompt ssu_$set_prompt_mode ssu_$set_request_processor_options unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$inconsistent error_table_$noentry error_table_$notadir iox_$user_input linus_data_$max_range_items linus_data_$req_buf_len linus_data_$req_proc_id linus_error_$abort linus_error_$bad_builtin_obj linus_error_$conv linus_error_$dup_ctl_args linus_error_$inval_ctl_arg linus_error_$recursed linus_error_$too_few_ctl_args linus_rq_table_$linus_rq_table_ ssu_et_$request_line_aborted ssu_et_$subsystem_aborted ssu_info_directories_$standard_requests ssu_request_tables_$standard_requests sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 7 18 000602 227 000603 260 000613 266 000623 267 000625 27 000631 393 000640 394 000642 395 000643 396 000646 397 000662 400 000663 401 000705 404 000710 405 000714 406 000720 407 000721 409 000722 412 001002 415 001025 418 001032 421 001037 422 001042 423 001044 424 001046 425 001050 426 001052 431 001066 432 001072 433 001074 434 001077 436 001111 437 001114 439 001115 440 001117 441 001121 442 001123 443 001124 444 001125 445 001126 447 001127 448 001130 450 001131 452 001203 454 001221 456 001240 458 001261 459 001306 462 001327 463 001332 466 001345 467 001354 469 001360 470 001363 471 001375 472 001377 474 001400 476 001417 477 001423 478 001425 480 001442 482 001461 484 001500 487 001517 494 001556 495 001564 499 001606 504 001625 507 001635 509 001642 511 001650 512 001661 514 001726 518 001762 521 002007 525 002025 528 002033 531 002055 533 002060 536 002112 537 002151 540 002167 542 002176 543 002205 544 002222 547 002243 549 002261 553 002304 554 002305 555 002322 557 002343 558 002365 559 002366 561 002376 565 002421 566 002422 567 002437 569 002460 570 002473 571 002474 572 002504 573 002507 574 002524 575 002525 577 002541 579 002555 581 002570 583 002602 585 002612 588 002635 589 002636 590 002653 592 002674 593 002676 594 002677 596 002707 599 002733 602 002756 603 002757 604 002774 606 003015 607 003016 609 003032 611 003046 613 003061 615 003103 616 003113 622 003137 626 003162 627 003163 628 003165 629 003171 630 003172 633 003212 635 003234 636 003235 637 003236 638 003237 639 003240 640 003244 644 003302 647 003327 648 003333 650 003337 651 003351 652 003353 653 003355 654 003357 655 003360 656 003400 658 003402 666 003416 667 003450 670 003466 671 003522 678 003540 679 003573 682 003611 683 003647 689 003665 690 003704 692 003722 694 003726 695 003730 696 003736 699 003744 701 003747 703 003753 704 003755 705 003757 706 004014 708 004035 709 004100 711 004156 713 004157 716 004161 717 004176 719 004214 720 004220 721 004223 722 004233 723 004241 724 004243 725 004247 726 004257 727 004263 728 004273 729 004277 730 004301 732 004334 734 004363 735 004426 736 004431 737 004436 738 004453 739 004460 741 004464 742 004470 744 004471 746 004475 747 004511 751 004512 753 004530 754 004546 757 004564 758 004602 761 004620 763 004653 765 004674 768 004726 770 004730 771 004745 775 004771 776 004776 778 005002 780 005006 781 005022 783 005026 784 005032 786 005033 790 005051 792 005064 794 005104 796 005110 984 005111 992 005122 993 005134 995 005140 996 005142 997 005147 999 005150 1007 005160 1008 005172 1010 005176 1012 005201 1013 005203 1015 005204 1016 005214 1017 005215 799 005216 802 005217 807 005262 809 005266 811 005267 819 005275 822 005313 825 005327 827 005334 829 005342 830 005344 832 005354 833 005357 834 005360 835 005361 836 005376 838 005410 839 005424 841 005440 844 005441 845 005447 846 005460 847 005473 848 005506 849 005512 850 005544 854 005603 855 005611 858 005636 860 005655 862 005661 863 005666 866 005713 868 005732 870 005736 871 005743 874 005770 876 006007 878 006013 880 006020 881 006031 884 006050 886 006056 887 006067 890 006106 892 006114 894 006142 898 006161 900 006167 901 006200 904 006217 905 006224 906 006235 908 006254 909 006257 910 006260 911 006264 912 006275 914 006314 920 006317 922 006321 924 006322 932 006336 933 006351 934 006374 935 006401 939 006404 942 006415 943 006505 945 006507 958 006510 959 006513 960 006515 961 006532 963 006534 964 006541 967 006544 968 006551 972 006564 973 006573 976 006574 978 006607 980 006632 ----------------------------------------------------------- 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