COMPILATION LISTING OF SEGMENT linus_lila_set Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 07/29/86 1003.9 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 /* ****************************************************** 10* * * 11* * * 12* * Copyright (c) 1972 by Massachusetts Institute of * 13* * Technology and Honeywell Information Systems, Inc. * 14* * * 15* * * 16* ****************************************************** */ 17 18 linus_lila_set: 19 proc (lcb_ptr, lsh_ptr, td_ptr, si_ptr, code); 20 21 /* DESCRIPTION: 22* 23* This procedure handles the LILA set, which consists of one or more LILA 24* blocks combined via specified set operators (inter, differ, union), and 25* possibly grouped by brackets ({}). Lower level procedures are called to 26* process each LILA block. This procedure combines the translated LILA 27* blocks according to explicitly specified grouping and set operator 28* precedence. 29* 30* 31* 32* HISTORY: 33* 34* 77-07-01 J. A. Weeldreyer: Initially written. 35* 36* 78-07-01 J. A. Weeldreyer: Modified to initiallize gen. variable index. 37* 38* 78-08-01 J. A. Weeldreyer: Modified to always pass back next token. 39* 40* 80-04-13 Rickie E. Brinegar: Modified to use a work area defined on 41* lcb.lila_area_ptr instead of getting system free area. 42* 43* 80-12-03 Rickie E. Brinegar: Modified to add one to the sel_offset for 44* each ( added as a result of being in an inner block. This is the result of 45* TR8422 submitted, with this fix suggested, from Moberg at FORD. 46* 47* 81-07-15 Rickie E. Brinegar: Removed useless cleanup condition handler. 48* 49* 81-11-06 Rickie E. Brinegar: Removed unreferenced NL variable which was an 50* options constant variable initiated to a new line character. 51* 52**/ 53 1 1 /* BEGIN INCLUDE FILE linus_lcb.incl.pl1 -- jaw 8/30/77 */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(86-04-23,Dupuis), approve(86-05-23,MCR7188), audit(86-07-23,GWMay), 1 7* install(86-07-29,MR12.0-1106): 1 8* Added general_work_area_ptr and renamed sfr_ptr to 1 9* force_retrieve_scope_ptr. 1 10* END HISTORY COMMENTS */ 1 11 1 12 1 13 /* HISTORY: 1 14* 1 15* 78-09-29 J. C. C. Jagernauth: Modified for MR7.0. 1 16* 1 17* 81-05-11 Rickie E. Brinegar: added security bit and andministrator bit as 1 18* a part of the attribute level control work. 1 19* 1 20* 81-06-17 Rickie E. Brinegar: deleted the sd_ptr as a part of removing the 1 21* scope_data structure from LINUS. LINUS now depends totally on MRDS for 1 22* scope information. 1 23* 1 24* 81-11-11 Rickie E. Brinegar: added the timing bit and three fields for 1 25* retaining various vcpu times to be collected when in timing mode. The 1 26* times to be collected are: LINUS parsing time, LINUS processing time, and 1 27* MRDS processing time. 1 28* 1 29* 82-01-15 DJ Schimke: Added the build_increment and build_start fields as 1 30* part of the line numbering implementation. This allows for possible later 1 31* LINUS control of the build defaults. 1 32* 1 33* 82-03-01 Paul W. Benjamin: Removed linus_prompt_chars_ptr, as that 1 34* information is now retained by ssu_. Removed parse_timer as no longer 1 35* meaningful. Added linus_version. Added iteration bit. Added 6 entry 1 36* variables for ssu_ replaceable procedures. Added actual_input_iocbp. 1 37* 1 38* 82-06-23 Al Dupuis: Added subsystem_control_info_ptr, 1 39* subsystem_invocation_level, and selection_expression_identifier. 1 40* 1 41* 82-08-26 DJ Schimke: Added report_control_info_ptr, and 1 42* table_control_info_ptr. 1 43* 1 44* 82-10-19 DJ Schimke: Added ssu_abort_line. 1 45* 1 46* 83-06-06 Bert Moberg: Added print_search_order (pso) and no_optimize (no_ot) 1 47* 1 48* 83-04-07 DJ Schimke: Added temp_seg_info_ptr. 1 49* 1 50* 83-08-26 Al Dupuis: Added query_temp_segment_ptr. 1 51**/ 1 52 1 53 dcl 1 lcb aligned based (lcb_ptr), /* LINUS control block */ 1 54 2 db_index fixed bin (35), /* index of open data base, or 0 */ 1 55 2 rb_len fixed bin (21), /* length of request buffer */ 1 56 2 lila_count fixed bin (35), /* number of LILA text lines */ 1 57 2 lila_chars fixed bin (35), /* number of LILA source test chars */ 1 58 2 trans_id fixed bin (35), /* used by checkpoint and rollback facilities (MR7.0) */ 1 59 2 lila_fn char (32) unal, /* entry name of lila data file */ 1 60 2 prompt_flag bit (1) unal, /* on if in prompt mode */ 1 61 2 test_flag bit (1) unal, /* on if in test mode */ 1 62 2 new_version bit (1) unal init (1), /* on for new version data base (MR7.0) */ 1 63 2 secured_db bit (1) unal, /* on if the db is in a secure state */ 1 64 2 administrator bit (1) unal, /* on if the user is a db administrator */ 1 65 2 timing_mode bit (1) unal, /* on if timing is to be done */ 1 66 2 iteration bit (1) unal, /* interpret parens as iteration sets */ 1 67 2 pso_flag bit (1) unal, /* add print_search_order to select */ 1 68 2 no_ot_flag bit (1) unal, /* add no_optimize to select */ 1 69 2 reserved bit (27) unal, 1 70 2 liocb_ptr ptr, /* iocb ptr for lila file */ 1 71 2 rb_ptr ptr, /* ptr to request buffer */ 1 72 2 is_ptr ptr, /* iocb ptr for currentinput stream switch */ 1 73 2 cal_ptr ptr, /* ptr to current arg list for invoke (or null) */ 1 74 2 ttn_ptr ptr, /* pointer to table info structure */ 1 75 2 force_retrieve_scope_info_ptr ptr, /* structure pointer to force retrieve scope operation */ 1 76 2 lv_ptr ptr, /* pointer linus variables */ 1 77 2 si_ptr ptr, /* pointer to select_info structure */ 1 78 2 setfi_ptr ptr, /* pointer to set function information */ 1 79 2 sclfi_ptr ptr, /* pointer to user declared scalar fun. names */ 1 80 2 ivs_ptr ptr, /* pointer to stack of invoke iocb pointers */ 1 81 2 lit_ptr ptr, /* pointer to literal pool */ 1 82 2 lvv_ptr ptr, /* pointer to linus variable alloc. pool */ 1 83 2 rd_ptr ptr, /* point to readied files mode information (MR7.0) */ 1 84 2 rt_ptr ptr, /* point to table of relation names and their readied modes 1 85* (MR7.0) */ 1 86 2 actual_input_iocbp ptr, /* ptr to input while in macros */ 1 87 2 lila_promp_chars_ptr ptr, /* pointer to the prompt characters for lila */ 1 88 2 linus_area_ptr ptr, /* LINUS temporary segment pointer */ 1 89 2 lila_area_ptr ptr, /* LILA temporary segment pointer */ 1 90 2 i_o_area_ptr ptr, /* temporary segment pointer used by write, print, create_list */ 1 91 2 rel_array_ptr ptr, /* ptr to array of names rslt info structure 1 92* for current lila expression */ 1 93 2 unused_timer float bin (63), /* future expansion */ 1 94 2 request_time float bin (63), /* How much request time was spent 1 95* in LINUS. (-1 = user has just enabled 1 96* timing, do not report) */ 1 97 2 mrds_time float bin (63), /* How much time was spent in MRDS */ 1 98 2 build_increment fixed bin, /* default increment for build mode */ 1 99 2 build_start fixed bin, /* default start count for build mode */ 1 100 2 linus_version char (4), /* current version of LINUS */ 1 101 2 subsystem_control_info_ptr ptr, /* the same ptr passed by ssu_ to each request procedure */ 1 102 2 subsystem_invocation_level fixed bin, /* identifies this invocation of LINUS */ 1 103 2 selection_expression_identifier fixed bin, /* identifies the current processed selection expression */ 1 104 2 report_control_info_ptr ptr, /* pointer to linus_report_control_info structure */ 1 105 2 table_control_info_ptr ptr, /* pointer to linus_table control structure */ 1 106 2 temp_seg_info_ptr ptr, /* pointer to linus_temp_seg_mgr control structure */ 1 107 2 query_temp_segment_ptr ptr, /* points to temp seg used for manipulating query */ 1 108 2 general_work_area_ptr ptr, /* a freeing area for general use */ 1 109 2 word_pad (6) bit (36) unal, 1 110 /* procedures that will be optionally */ 1 111 /* replaced by the user. Saved so they */ 1 112 /* can be reinstated if desired. */ 1 113 2 ssu_abort_line entry options (variable), 1 114 2 ssu_post_request_line variable entry (ptr), 1 115 2 ssu_pre_request_line variable entry (ptr), 1 116 1 117 2 curr_lit_offset fixed bin (35), /* index of first free bit in lit. pool */ 1 118 2 curr_lv_val_offset fixed bin (35), /* index of first free bit lv. val. pool */ 1 119 2 static_area area (sys_info$max_seg_size - fixed (rel (addr (lcb.static_area))) + 1); 1 120 1 121 dcl lcb_ptr ptr; 1 122 1 123 /* END INCLUDE FILE linus_lcb.incl.pl1 */ 54 55 2 1 /* BEGIN INCLUDE FILE linus_ls_header.incl.pl1 -- jaw 7/28/77 */ 2 2 2 3 dcl 1 ls_header aligned based (lsh_ptr), /* header for LILA stack */ 3 1 /* BEGIN INCLUDE FILE linus_ls_common.incl.pl1 -- jaw 7/12/77 */ 3 2 3 3 2 type fixed bin, /* type of frame: 3 4* 1 => header, 3 5* 2 => set value, 3 6* 3 => lila set, 3 7* 4 => lila block */ 3 8 2 back_ptr ptr, /* pointer to previous frame */ 3 9 2 fwd_ptr ptr, /* pointer to next frame */ 3 10 3 11 /* END INCLUDE FILE linus_ls_common.incl.pl1 */ 2 4 2 5 2 cur_ptr ptr, /* pointer to current frame */ 2 6 2 src_ptr ptr, /* pointer to LILA source string */ 2 7 2 trans_failed bit (1) unal, /* on if translate failed */ 2 8 2 from_token bit (1) unal, /* on if the calling routine is linus_lila_from */ 2 9 2 reserved bit (34) unal, 2 10 2 cur_pos fixed bin (35), /* current position in source string */ 2 11 2 line_data (0 : lcb.lila_count), /* data for each source line */ 2 12 3 lno char (4), /* line number */ 2 13 3 last_char fixed bin (35); /* index of last char */ 2 14 2 15 dcl lsh_ptr ptr; 2 16 2 17 /* END INCLUDE FILE linus_ls_header.incl.pl1 */ 56 57 4 1 /* BEGIN INCLUDE FILE linus_ls_set.incl.pl1 -- jaw 7/27/78 */ 4 2 4 3 dcl 1 ls_set aligned based (lss_ptr), /* lila stack frame for lila set */ 5 1 /* BEGIN INCLUDE FILE linus_ls_common.incl.pl1 -- jaw 7/12/77 */ 5 2 5 3 2 type fixed bin, /* type of frame: 5 4* 1 => header, 5 5* 2 => set value, 5 6* 3 => lila set, 5 7* 4 => lila block */ 5 8 2 back_ptr ptr, /* pointer to previous frame */ 5 9 2 fwd_ptr ptr, /* pointer to next frame */ 5 10 5 11 /* END INCLUDE FILE linus_ls_common.incl.pl1 */ 4 4 4 5 2 nselects fixed bin, /* number of items selected */ 4 6 2 nblocks fixed bin, /* number of lila blocks in stack */ 4 7 2 nops fixed bin, /* number of set operators in stack */ 4 8 2 op_stack (linus_data_$max_set_stack_size), /* the set op stack */ 4 9 3 br_cnt fixed bin (17) unal, /* bracket count of oper. */ 4 10 3 key fixed bin (17) unal, /* token key of operator */ 4 11 2 br_cnt fixed bin, /* current bracket count */ 4 12 2 dup_flag bit (1) unal, /* on if DUP encountered */ 4 13 2 unique_flag bit (1) unal, /* on if UNIQUE encountered */ 4 14 2 rb_flag bit (1) unal, /* on if right bracket allowed */ 4 15 2 lb_flag bit (1) unal, /* on if left bracket allowed */ 4 16 2 setop_flag bit (1) unal, /* on if set op allowed */ 4 17 2 select_flag bit (1) unal, /* on if lila block allowed */ 4 18 2 end_flag bit (1) unal, /* on if end of set allowed */ 4 19 2 first_block bit (1) unal, /* on if no lila block yet processed */ 4 20 2 inv_setop bit (1) unal, /* on if a lila block cannot be included in a set oper. */ 4 21 2 reserved bit (9) unal, 4 22 2 var_ind fixed bin (17) unal, /* number for next generated variable */ 4 23 2 domain_info (mrds_data_$max_select_items), /* domain info for each selected attr. */ 4 24 3 name char (32), /* domain name */ 4 25 3 bit_length fixed bin (35), /* bit length of domain */ 4 26 3 desc bit (36), /* descriptor for domain */ 4 27 3 assn_ptr ptr, /* ptr to receiving field for this attr. */ 4 28 3 assn_type fixed bin, /* assign_ type code for this domain */ 4 29 3 assn_len fixed bin (35), /* assign_ length for this domain */ 4 30 2 si_ptr ptr, /* pointer to select info structure */ 4 31 2 blk_hd_ptr ptr; /* pointer to top item of block stack */ 4 32 4 33 dcl lss_ptr ptr; 4 34 4 35 /* END INCLUDE FILE linus_ls_set.incl.pl1 */ 58 59 6 1 /* BEGIN INCLUDE FILE linus_select_info.incl.pl1 */ 6 2 /* History: 77-07-29 J. A. Weeldreyer: Originally written. 6 3* Modified: 82-18-82 Dave Schimke: Added user_item.table_name 6 4**/ 6 5 dcl 1 select_info aligned based (si_ptr), /* info from LILA select clause */ 6 6 2 set_fn bit (1) unal, /* on if set fn to be applied */ 6 7 2 se_flags unal, /* flags pertaining to selection expr. */ 6 8 3 val_ret bit (1) unal, /* valid for retrieval */ 6 9 3 val_dtt bit (1) unal, /* valid for define_temp_table */ 6 10 3 val_del bit (1) unal, /* valid for delete */ 6 11 3 val_mod bit (1) unal, /* valid for modify */ 6 12 2 dup_flag bit (1) unal, /* on if dup explic. spec. somewhere */ 6 13 2 unique_flag bit (1) unal, /* on if unique explic. spec. somewhere */ 6 14 2 pad bit (29) unal, /* reserved */ 6 15 2 prior_sf_ptr ptr, /* pointer to set fns for prior eval. */ 6 16 2 se_ptr ptr, /* pointer to mrds selection expression */ 6 17 2 sel_items_ptr ptr, /* pointer to list of selected items */ 6 18 2 sel_items_len fixed bin, /* length in characters of list of selected items */ 6 19 2 se_len fixed bin (35), /* length of mrds sel. expr. */ 6 20 2 nsv_alloc fixed bin, /* no. of se. vals aloc. */ 6 21 2 nmi_alloc fixed bin, /* no. of mrds items alloc. */ 6 22 2 nui_alloc fixed bin, /* no. of user items alloc. */ 6 23 2 nsevals fixed bin, /* number of selection expr. vaules */ 6 24 2 n_mrds_items fixed bin, /* no. of items in mrds select list */ 6 25 2 n_user_items fixed bin, /* no. of items user will see */ 6 26 2 se_vals (nsv_init refer (select_info.nsv_alloc)), 6 27 3 arg_ptr ptr, 6 28 3 desc_ptr ptr, 6 29 2 mrds_item (nmi_init refer (select_info.nmi_alloc)), /* mrds select items */ 6 30 3 arg_ptr ptr, /* pointer to receiving field */ 6 31 3 bit_len fixed bin (35), /* bit length of receiving field */ 6 32 3 desc bit (36), /* descriptor for receiving field */ 6 33 3 assn_type fixed bin, /* type code for assign_ */ 6 34 3 assn_len fixed bin (35), /* length for assign_ */ 6 35 2 user_item (nui_init refer (select_info.nui_alloc)), /* user select item */ 6 36 3 name char (32) var, /* name for col. header */ 6 37 3 table_name char (32) var, /* name of containing linus table */ 6 38 3 item_type fixed bin, /* indicates type of item: 6 39* 1 => raw mrds, 6 40* 2 => expr. */ 6 41 3 rslt_desc bit (36), /* descriptor for expr. result */ 6 42 3 rslt_bit_len fixed bin (35), /* bit length of expr. result */ 6 43 3 rslt_assn_ptr ptr, /* pointer to expr. result storage loc. */ 6 44 3 rslt_assn_type fixed bin, /* assign_ type code of expr. result */ 6 45 3 rslt_assn_len fixed bin (35), /* assign_ length for expr. result */ 6 46 3 item_ptr ptr; /* pointer to item or expr. or applied set_func. structure */ 6 47 6 48 dcl (nsv_init, nmi_init, nui_init) fixed bin; 6 49 dcl si_ptr ptr; 6 50 6 51 /* END INCLUDE FILE linus_select_info.incl.pl1 */ 60 61 7 1 /* BEGIN INCLUDE FILE linus_token_data.incl.pl1 -- jaw 8/7/78 */ 7 2 7 3 dcl 1 token_data aligned based (td_ptr), /* data for lila tokens */ 7 4 2 key fixed bin (17) unal, /* key of token */ 7 5 2 must_free bit (1) unal, /* on if value must be freed */ 7 6 2 temp_tab bit (1) unal, /* on if temporary table */ 7 7 2 reserved bit (16) unal, 7 8 2 mvar char (32) var, /* mrds variable if identifier */ 7 9 2 lvar char (32) var, /* linus variable if identifier */ 7 10 2 length fixed bin (35), /* char length of token value */ 7 11 2 t_ptr ptr; /* points to token value */ 7 12 7 13 dcl ((NULL init (0)), 7 14 (RP init (1)), 7 15 (COL_SPEC init (2)), 7 16 (LINUS_VAR init (3)), 7 17 (CONST init (4)), 7 18 (SET_FN init (5)), 7 19 (SCAL_FN init (6)), 7 20 (LP init (7)), 7 21 (STAR init (8)), 7 22 (DIV init (9)), 7 23 (PLUS init (10)), 7 24 (MINUS init (11)), 7 25 (TAB_NAME init (12)), 7 26 (ROW_TAB_PAIR init (13)), 7 27 (UNION init (14)), 7 28 (INTER init (15)), 7 29 (DIFFER init (16)), 7 30 (ROW_DES init (17)), 7 31 (LB init (18)), 7 32 (RB init (19)), 7 33 (SELECT init (20)), 7 34 (NOT init (21)), 7 35 (AND init (22)), 7 36 (OR init (23)), 7 37 (EQ init (24)), 7 38 (NE init (25)), 7 39 (GT init (26)), 7 40 (GE init (27)), 7 41 (LT init (28)), 7 42 (LE init (29)), 7 43 (FROM init (30)), 7 44 (WHERE init (31)), 7 45 (DUP init (32)), 7 46 (UNIQUE init (33)), 7 47 (COMMA init (34))) fixed bin int static options (constant); 7 48 7 49 dcl td_ptr ptr; 7 50 7 51 /* END INCLUDE FILE linus_token_data.incl.pl1 */ 62 63 8 1 /* BEGIN INCLUDE FILE linus_mrds_block.incl.pl1 -- jaw 7/21/77 */ 8 2 8 3 dcl 1 mrds_block aligned based (mblk_ptr), /* partial mrds selection expr */ 8 4 2 fwd_ptr ptr, /* pointer to previous item in stack */ 8 5 2 sel_offset fixed bin (35), /* offset of first select item in mrds_string */ 8 6 2 sel_length fixed bin (35), /* length of first select list in mrds string */ 8 7 2 nval_args fixed bin, /* number of value args */ 8 8 2 val_args (nval_args_init refer (mrds_block.nval_args)), 8 9 3 arg_ptr ptr, 8 10 3 desc_ptr ptr, 8 11 2 ms_len fixed bin (35), /* length of the mrds string */ 8 12 2 mrds_string char (ms_len_init refer (mrds_block.ms_len)) var; 8 13 8 14 dcl nval_args_init fixed bin; 8 15 dcl ms_len_init fixed bin (35); 8 16 dcl mblk_ptr ptr; 8 17 8 18 /* END INCLUDE FILE linus_mrds_block.incl.pl1 */ 64 65 66 dcl ( 67 code, /* Output* status code */ 68 icode, /* internal status code */ 69 string_len 70 ) fixed bin (35); /* length for string alloc. */ 71 72 dcl work_area area (sys_info$max_seg_size) based (lcb.lila_area_ptr); 73 74 dcl done bit (1); /* Internal flag */ 75 76 dcl token char (token_data.length) based (token_data.t_ptr); 77 78 dcl string char (string_len) based; 79 80 dcl sexy (select_info.se_len) char (1) unal based (select_info.se_ptr); 81 82 dcl setop_prec (14:16) fixed bin (11) int static options (constant) init (1, 83 /* union */ 84 2, /* inter */ 85 2); /* differ */ 86 87 dcl mrds_setop (14:16) char (11) var int static options (constant) 88 init (") -union (", ") -inter (", ") -differ ("); 89 90 dcl SET fixed bin int static options (constant) init (2); 91 92 dcl OP fixed bin int static options (constant) init (1); 93 94 dcl BRACKET fixed bin int static options (constant) init (2); 95 96 dcl END fixed bin int static options (constant) init (3); 97 98 dcl ( 99 linus_data_$max_set_stack_size, 100 linus_error_$early_end, 101 linus_error_$misplaced_select, 102 linus_error_$misplaced_setop, 103 linus_error_$setop_ovfl, 104 linus_error_$syntax, 105 linus_error_$unalld_setop, 106 mrds_data_$max_select_items, 107 sys_info$max_seg_size 108 ) fixed bin (35) ext; 109 110 dcl (addr, fixed, length, null, rel) builtin; 111 112 dcl linus_lila_block entry (ptr, ptr, ptr, ptr, fixed bin (35)); 113 dcl linus_lila_error entry (ptr, ptr, fixed bin (35), char (*)); 114 dcl linus_lila_get_token entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35)); 115 116 mblk_ptr, lss_ptr = null; /* initiallize */ 117 118 allocate ls_set in (work_area); /* alloc. and set up set stack fram */ 119 ls_set.fwd_ptr, ls_set.blk_hd_ptr = null; 120 ls_set.back_ptr = ls_header.cur_ptr; 121 ls_set.type = SET; 122 ls_set.si_ptr = si_ptr; 123 ls_set.br_cnt, ls_set.var_ind, ls_set.nblocks, ls_set.nops, 124 ls_set.nselects = 0; 125 ls_set.dup_flag, ls_set.unique_flag, ls_set.rb_flag, ls_set.setop_flag, 126 ls_set.inv_setop, ls_set.end_flag = "0"b; 127 ls_set.lb_flag, ls_set.first_block, ls_set.select_flag = "1"b; 128 ls_header.cur_ptr -> ls_set.fwd_ptr = lss_ptr; /* thread to end of stack */ 129 ls_header.cur_ptr = lss_ptr; 130 131 select_info.prior_sf_ptr, /* initialize the select info block */ 132 select_info.se_ptr, select_info.sel_items_ptr = null; 133 select_info.sel_items_len, select_info.se_len, select_info.nsevals, 134 select_info.n_mrds_items, select_info.n_user_items = 0; 135 select_info.dup_flag, select_info.unique_flag, select_info.set_fn = "0"b; 136 select_info.se_flags.val_ret, /* assume valid until proven otherwise */ 137 select_info.se_flags.val_dtt, select_info.se_flags.val_del, 138 select_info.se_flags.val_mod = "1"b; 139 140 done = "0"b; /* init. */ 141 do while (^done); /* main processing loop */ 142 143 if token_data.key = NULL then do; /* if token not already there */ 144 call 145 linus_lila_get_token (lcb_ptr, lsh_ptr, ls_header.cur_pos, 146 td_ptr, icode); 147 if icode ^= 0 then 148 call linus_lila_error (lcb_ptr, lsh_ptr, icode, token); 149 end; /* if needed to get new token */ 150 151 go to token_proc (token_data.key); /* go process the token */ 152 153 token_proc (1): /* ) */ 154 token_proc (2): /* column specif. */ 155 token_proc (3): /* linus variable */ 156 token_proc (4): /* constant */ 157 token_proc (5): /* set function */ 158 token_proc (6): /* scalar function */ 159 token_proc (7): /* ( */ 160 token_proc (8): /* * */ 161 token_proc (9): /* / */ 162 token_proc (10): /* + */ 163 token_proc (11): /* - */ 164 token_proc (12): /* table name */ 165 token_proc (13): /* row table pair */ 166 token_proc (17): /* row designator */ 167 token_proc (21): /* ^ */ 168 token_proc (22): /* & */ 169 token_proc (23): /* | */ 170 token_proc (24): /* = */ 171 token_proc (25): /* ^= */ 172 token_proc (26): /* > */ 173 token_proc (27): /* >= */ 174 token_proc (28): /* < */ 175 token_proc (29): /* <= */ 176 token_proc (30): /* from */ 177 token_proc (31): /* where */ 178 token_proc (32): /* dup */ 179 token_proc (33): /* unique */ 180 token_proc (34): /* , */ 181 if ls_set.end_flag then 182 call finish; /* may be beyond set */ 183 else call 184 linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$syntax, token) 185 ; 186 go to next; 187 188 token_proc (0): /* null */ 189 if ^ls_set.end_flag then 190 call 191 linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$early_end, "") 192 ; 193 call finish; /* if end expected */ 194 go to next; 195 196 token_proc (14): /* union */ 197 token_proc (15): /* inter */ 198 token_proc (16): /* differ */ 199 if ^ls_set.setop_flag then /* if set oper. not expected */ 200 if ls_set.end_flag then 201 call finish; /* may be out of set */ 202 else call 203 linus_lila_error (lcb_ptr, lsh_ptr, 204 linus_error_$misplaced_setop, token); 205 else do; /* if set oper. expected */ 206 if ls_set.inv_setop then /* we already have LILA block which cant use set op. */ 207 call 208 linus_lila_error (lcb_ptr, lsh_ptr, 209 linus_error_$unalld_setop, token); 210 if ls_set.nops > 0 then /* if oper. stacked */ 211 if ls_set.op_stack.br_cnt (ls_set.nops) = ls_set.br_cnt then 212 /* if in same bracket */ 213 if setop_prec (token_data.key) 214 <= setop_prec (ls_set.op_stack.key (ls_set.nops)) then 215 call reduce (OP); /* if curr.op lower prec, can reduce */ 216 217 if ls_set.nops + 1 > linus_data_$max_set_stack_size then 218 /* if another op will ovfl. */ 219 call 220 linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$setop_ovfl, 221 token); 222 ls_set.nops = ls_set.nops + 1; /* add latest op to stack */ 223 ls_set.op_stack.br_cnt (ls_set.nops) = ls_set.br_cnt; 224 ls_set.op_stack.key (ls_set.nops) = token_data.key; 225 226 select_info.se_flags.val_del, /* set ops not valid for update */ 227 select_info.se_flags.val_mod = "0"b; 228 229 ls_set.lb_flag, /* reset state flags */ 230 ls_set.select_flag = "1"b; 231 ls_set.rb_flag, ls_set.setop_flag, ls_set.end_flag = "0"b; 232 233 token_data.key = NULL; /* so we get new token */ 234 end; /* if oper. expected */ 235 go to next; /* end set operators */ 236 237 token_proc (18): /* { */ 238 if ^ls_set.lb_flag then 239 call 240 linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$syntax, token) 241 ; 242 ls_set.br_cnt = ls_set.br_cnt + 1; /* increment bracket level count */ 243 ls_set.end_flag = "0"b; /* cant end now */ 244 token_data.key = NULL; /* must get new token */ 245 go to next; /* end { */ 246 247 token_proc (19): /* } */ 248 if ^ls_set.rb_flag | ls_set.br_cnt <= 0 then /* if not expected */ 249 if ls_set.end_flag then /* may be done with set */ 250 call finish; 251 else call 252 linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$syntax, 253 token); 254 else do; /* if expected */ 255 if ls_set.nops > 0 then /* if may need to reduce */ 256 if ls_set.op_stack.br_cnt (ls_set.nops) = ls_set.br_cnt then 257 /* have recuction */ 258 call reduce (BRACKET); /* reduce all items in bracket */ 259 260 ls_set.br_cnt = ls_set.br_cnt - 1; /* decr. bracket lev. count */ 261 ls_set.end_flag = "0"b; 262 token_data.key = NULL; /* force new token */ 263 end; /* if expected */ 264 go to next; /* end } */ 265 266 token_proc (20): /* select */ 267 if ^ls_set.select_flag then /* if not expected */ 268 if ls_set.end_flag then 269 call finish; /* may be out of set */ 270 else call 271 linus_lila_error (lcb_ptr, lsh_ptr, 272 linus_error_$misplaced_select, token); 273 else do; /* if expected */ 274 call linus_lila_block (lcb_ptr, lsh_ptr, td_ptr, mblk_ptr, icode); 275 /* translate the block */ 276 if icode ^= 0 then 277 call linus_lila_error (lcb_ptr, lsh_ptr, icode, ""); 278 ls_set.nblocks = ls_set.nblocks + 1; /* put results at top of stack */ 279 ls_set.first_block = "0"b; 280 mrds_block.fwd_ptr = ls_set.blk_hd_ptr; 281 ls_set.blk_hd_ptr = mblk_ptr; 282 mblk_ptr = null; 283 if ls_set.br_cnt = 0 then 284 ls_set.end_flag = "1"b; /* end will be OK */ 285 else ls_set.end_flag = "0"b; 286 ls_set.lb_flag, /* reset other state flags */ 287 ls_set.select_flag = "0"b; 288 ls_set.rb_flag, ls_set.setop_flag = "1"b; 289 end; /* if select expected */ 290 go to next; /* end select */ 291 292 next: 293 end; /* main processing loop */ 294 295 code = 0; /* made it OK */ 296 297 exit: 298 return; 299 300 finish: 301 proc; 302 303 /* Procedure to finish up the lila set */ 304 305 dcl i fixed bin; 306 307 if ls_set.nops > 0 & ls_set.nblocks > 1 then /* if reduction needed */ 308 call reduce (END); /* do final reduction */ 309 if ls_set.nops ^= 0 | ls_set.nblocks ^= 1 then /* have error somewhere */ 310 call linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$syntax, ""); 311 312 mblk_ptr = ls_set.blk_hd_ptr; /* finalize select info */ 313 ls_set.blk_hd_ptr = null; 314 string_len = length (mrds_block.mrds_string); 315 allocate string in (work_area) set (select_info.se_ptr); 316 /* place for mrds sel. expr. */ 317 select_info.se_ptr -> string = mrds_block.mrds_string; /* copy it */ 318 select_info.se_len = string_len; 319 do i = 1 to mrds_block.nval_args; /* copy value args */ 320 select_info.se_vals.arg_ptr (i) = mrds_block.val_args.arg_ptr (i); 321 select_info.se_vals.desc_ptr (i) = mrds_block.val_args.desc_ptr (i); 322 end; 323 select_info.nsevals = mrds_block.nval_args; 324 select_info.dup_flag = ls_set.dup_flag; 325 select_info.unique_flag = ls_set.unique_flag; 326 select_info.sel_items_ptr = addr (sexy (mrds_block.sel_offset)); 327 select_info.sel_items_len = mrds_block.sel_length; 328 mblk_ptr = null; /* finished with this */ 329 ls_set.back_ptr -> ls_set.fwd_ptr = null; /* remove ls_set from stack */ 330 ls_header.cur_ptr = ls_set.back_ptr; 331 lss_ptr = null; 332 333 done = "1"b; /* to get out of main loop */ 334 335 end finish; 336 337 reduce: 338 proc (type); 339 340 /* Procedure to reduce items on stack. Three types of reduction are 341* provided, (1) for lower prec. operators, (2) for right bracket, and (3) final 342* reduction. */ 343 344 dcl type fixed bin; 345 dcl done_flag bit (1); 346 347 if type = END then 348 do while (ls_set.nops > 0 & ls_set.nblocks > 1); 349 call combine; /* combine top two items and oper. */ 350 end; 351 352 else if type = BRACKET then 353 do while (ls_set.op_stack.br_cnt (ls_set.nops) = ls_set.br_cnt 354 & ls_set.nops > 0 & ls_set.nblocks > 1); 355 call combine; 356 end; 357 358 else do; 359 done_flag = "1"b; 360 do while (done_flag); 361 if ls_set.nops ^> 0 | ls_set.nblocks ^> 1 then 362 done_flag = "0"b; 363 else if ls_set.op_stack.br_cnt (ls_set.nops) = ls_set.br_cnt 364 & setop_prec (token_data.key) 365 <= setop_prec (ls_set.op_stack.key (ls_set.nops)) then 366 call combine; 367 else done_flag = "0"b; 368 end; 369 end; 370 371 combine: 372 proc; 373 374 /* Procedure to combine top two string blocks and top operator into one string 375* block */ 376 377 dcl (b1p, b2p) ptr; 378 dcl i fixed bin; 379 380 b2p = ls_set.blk_hd_ptr; /* top stack item */ 381 b1p = b2p -> mrds_block.fwd_ptr; /* next to top */ 382 ms_len_init = 383 12 + fixed (ls_set.op_stack.key (ls_set.nops) = DIFFER) 384 + length (b1p -> mrds_block.mrds_string) 385 + length (b2p -> mrds_block.mrds_string); 386 nval_args_init = 387 b1p -> mrds_block.nval_args + b2p -> mrds_block.nval_args; 388 allocate mrds_block in (work_area); /* place for combined string */ 389 mrds_block.fwd_ptr = b1p -> mrds_block.fwd_ptr; /* new item will replace top 2 */ 390 mrds_block.mrds_string = 391 "(" || b1p -> mrds_block.mrds_string 392 || mrds_setop (ls_set.op_stack.key (ls_set.nops)) 393 || b2p -> mrds_block.mrds_string || ")"; /* combined string */ 394 do i = 1 to b1p -> mrds_block.nval_args; /* combine value args */ 395 mrds_block.val_args.arg_ptr (i) = 396 b1p -> mrds_block.val_args.arg_ptr (i); 397 mrds_block.val_args.desc_ptr (i) = 398 b1p -> mrds_block.val_args.desc_ptr (i); 399 end; 400 do i = b1p -> mrds_block.nval_args + 1 to mrds_block.nval_args; 401 mrds_block.val_args.arg_ptr (i) = 402 b2p 403 -> mrds_block.val_args.arg_ptr (i - b1p -> mrds_block.nval_args); 404 mrds_block.val_args.desc_ptr (i) = 405 b2p 406 -> mrds_block.val_args.desc_ptr (i - b1p -> mrds_block.nval_args); 407 end; 408 mrds_block.sel_offset = b1p -> mrds_block.sel_offset + 1; 409 mrds_block.sel_length = b1p -> mrds_block.sel_length; 410 411 ls_set.nops = ls_set.nops - 1; /* readjust stacks */ 412 ls_set.nblocks = ls_set.nblocks - 1; 413 ls_set.blk_hd_ptr = mblk_ptr; 414 mblk_ptr = null; 415 b1p = null; /* no need for b1p, b2p-> mrds_block anymore */ 416 b2p = null; 417 418 end combine; 419 420 end reduce; 421 422 end linus_lila_set; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/29/86 0939.9 linus_lila_set.pl1 >special_ldd>install>MR12.0-1106>linus_lila_set.pl1 54 1 07/29/86 0937.8 linus_lcb.incl.pl1 >special_ldd>install>MR12.0-1106>linus_lcb.incl.pl1 56 2 11/23/82 1327.2 linus_ls_header.incl.pl1 >ldd>include>linus_ls_header.incl.pl1 2-4 3 03/27/82 0434.5 linus_ls_common.incl.pl1 >ldd>include>linus_ls_common.incl.pl1 58 4 03/27/82 0434.5 linus_ls_set.incl.pl1 >ldd>include>linus_ls_set.incl.pl1 4-4 5 03/27/82 0434.5 linus_ls_common.incl.pl1 >ldd>include>linus_ls_common.incl.pl1 60 6 09/16/83 1338.0 linus_select_info.incl.pl1 >ldd>include>linus_select_info.incl.pl1 62 7 03/27/82 0434.5 linus_token_data.incl.pl1 >ldd>include>linus_token_data.incl.pl1 64 8 03/27/82 0434.5 linus_mrds_block.incl.pl1 >ldd>include>linus_mrds_block.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. BRACKET constant fixed bin(17,0) initial dcl 94 set ref 255* 352 DIFFER constant fixed bin(17,0) initial dcl 7-13 ref 382 END constant fixed bin(17,0) initial dcl 96 set ref 307* 347 NULL constant fixed bin(17,0) initial dcl 7-13 ref 143 233 244 262 OP constant fixed bin(17,0) initial dcl 92 set ref 210* SET constant fixed bin(17,0) initial dcl 90 ref 121 addr builtin function dcl 110 ref 326 arg_ptr 6 based pointer array level 3 in structure "mrds_block" dcl 8-3 in procedure "linus_lila_set" set ref 320 395* 395 401* 401 arg_ptr 20 based pointer array level 3 in structure "select_info" dcl 6-5 in procedure "linus_lila_set" set ref 320* b1p 000140 automatic pointer dcl 377 set ref 381* 382 386 389 390 394 395 397 400 401 404 408 409 415* b2p 000142 automatic pointer dcl 377 set ref 380* 381 382 386 390 401 404 416* back_ptr 2 based pointer level 2 dcl 4-3 set ref 120* 329 330 blk_hd_ptr based pointer level 2 dcl 4-3 set ref 119* 280 281* 312 313* 380 413* br_cnt 11 based fixed bin(17,0) array level 3 in structure "ls_set" packed unaligned dcl 4-3 in procedure "linus_lila_set" set ref 210 223* 255 352 363 br_cnt based fixed bin(17,0) level 2 in structure "ls_set" dcl 4-3 in procedure "linus_lila_set" set ref 123* 210 223 242* 242 247 255 260* 260 283 352 363 code parameter fixed bin(35,0) dcl 66 set ref 18 295* cur_pos 13 based fixed bin(35,0) level 2 dcl 2-3 set ref 144* cur_ptr 6 based pointer level 2 dcl 2-3 set ref 120 128 129* 330* desc_ptr 10 based pointer array level 3 in structure "mrds_block" dcl 8-3 in procedure "linus_lila_set" set ref 321 397* 397 404* 404 desc_ptr 22 based pointer array level 3 in structure "select_info" dcl 6-5 in procedure "linus_lila_set" set ref 321* done 000110 automatic bit(1) unaligned dcl 74 set ref 140* 141 333* done_flag 000130 automatic bit(1) unaligned dcl 345 set ref 359* 360 361* 367* dup_flag 0(05) based bit(1) level 2 in structure "select_info" packed unaligned dcl 6-5 in procedure "linus_lila_set" set ref 135* 324* dup_flag based bit(1) level 2 in structure "ls_set" packed unaligned dcl 4-3 in procedure "linus_lila_set" set ref 125* 324 end_flag based bit(1) level 2 packed unaligned dcl 4-3 set ref 125* 153 188 196 231* 243* 247 261* 266 283* 285* first_block based bit(1) level 2 packed unaligned dcl 4-3 set ref 127* 279* fixed builtin function dcl 110 ref 382 fwd_ptr 4 based pointer level 2 in structure "ls_set" dcl 4-3 in procedure "linus_lila_set" set ref 119* 128* 329* fwd_ptr based pointer level 2 in structure "mrds_block" dcl 8-3 in procedure "linus_lila_set" set ref 280* 381 389* 389 i 000120 automatic fixed bin(17,0) dcl 305 in procedure "finish" set ref 319* 320 320 321 321* i 000144 automatic fixed bin(17,0) dcl 378 in procedure "combine" set ref 394* 395 395 397 397* 400* 401 401 404 404* icode 000106 automatic fixed bin(35,0) dcl 66 set ref 144* 147 147* 274* 276 276* inv_setop based bit(1) level 2 packed unaligned dcl 4-3 set ref 125* 206 key 11(18) based fixed bin(17,0) array level 3 in structure "ls_set" packed unaligned dcl 4-3 in procedure "linus_lila_set" set ref 210 224* 363 382 390 key based fixed bin(17,0) level 2 in structure "token_data" packed unaligned dcl 7-3 in procedure "linus_lila_set" set ref 143 151 210 224 233* 244* 262* 363 lb_flag based bit(1) level 2 packed unaligned dcl 4-3 set ref 127* 229* 237 286* lcb based structure level 1 dcl 1-53 lcb_ptr parameter pointer dcl 1-121 set ref 18 118 144* 147* 183* 188* 202* 206* 217* 237* 251* 270* 274* 276* 309* 315 388 length builtin function dcl 110 in procedure "linus_lila_set" ref 314 382 382 length 23 based fixed bin(35,0) level 2 in structure "token_data" dcl 7-3 in procedure "linus_lila_set" ref 147 147 183 183 202 202 206 206 217 217 237 237 251 251 270 270 lila_area_ptr 62 based pointer level 2 dcl 1-53 ref 118 315 388 linus_data_$max_set_stack_size 000010 external static fixed bin(35,0) dcl 98 ref 118 119 122 123 123 125 125 125 125 125 125 127 127 127 153 188 196 196 206 210 217 223 229 229 231 231 231 237 242 242 243 247 247 247 255 260 260 261 266 266 279 280 281 283 283 285 286 286 288 288 312 313 324 325 352 363 380 413 linus_error_$early_end 000012 external static fixed bin(35,0) dcl 98 set ref 188* linus_error_$misplaced_select 000014 external static fixed bin(35,0) dcl 98 set ref 270* linus_error_$misplaced_setop 000016 external static fixed bin(35,0) dcl 98 set ref 202* linus_error_$setop_ovfl 000020 external static fixed bin(35,0) dcl 98 set ref 217* linus_error_$syntax 000022 external static fixed bin(35,0) dcl 98 set ref 183* 237* 251* 309* linus_error_$unalld_setop 000024 external static fixed bin(35,0) dcl 98 set ref 206* linus_lila_block 000030 constant entry external dcl 112 ref 274 linus_lila_error 000032 constant entry external dcl 113 ref 147 183 188 202 206 217 237 251 270 276 309 linus_lila_get_token 000034 constant entry external dcl 114 ref 144 ls_header based structure level 1 dcl 2-3 ls_set based structure level 1 dcl 4-3 set ref 118 lsh_ptr parameter pointer dcl 2-15 set ref 18 120 128 129 144* 144 147* 183* 188* 202* 206* 217* 237* 251* 270* 274* 276* 309* 330 lss_ptr 000100 automatic pointer dcl 4-33 set ref 116* 118* 119 119 120 121 122 123 123 123 123 123 125 125 125 125 125 125 127 127 127 128 129 153 188 196 196 206 210 210 210 210 210 210 217 222 222 223 223 223 224 224 229 229 231 231 231 237 242 242 243 247 247 247 255 255 255 255 260 260 261 266 266 278 278 279 280 281 283 283 285 286 286 288 288 307 307 309 309 312 313 324 325 329 330 331* 347 347 352 352 352 352 352 361 361 363 363 363 363 363 380 382 382 390 390 411 411 412 412 413 mblk_ptr 000104 automatic pointer dcl 8-16 set ref 116* 274* 280 281 282* 312* 314 317 319 320 321 323 326 327 328* 388* 389 390 395 397 400 401 404 408 409 413 414* mrds_block based structure level 1 dcl 8-3 set ref 388 mrds_data_$max_select_items 000026 external static fixed bin(35,0) dcl 98 ref 118 119 122 280 281 312 313 380 413 mrds_setop 000043 constant varying char(11) initial array dcl 87 ref 390 mrds_string based varying char level 2 dcl 8-3 set ref 314 317 382 382 390* 390 390 ms_len based fixed bin(35,0) level 2 dcl 8-3 set ref 388* 390 ms_len_init 000103 automatic fixed bin(35,0) dcl 8-15 set ref 382* 388 388 n_mrds_items 16 based fixed bin(17,0) level 2 dcl 6-5 set ref 133* n_user_items 17 based fixed bin(17,0) level 2 dcl 6-5 set ref 133* nblocks 7 based fixed bin(17,0) level 2 dcl 4-3 set ref 123* 278* 278 307 309 347 352 361 412* 412 nops 10 based fixed bin(17,0) level 2 dcl 4-3 set ref 123* 210 210 210 217 222* 222 223 224 255 255 307 309 347 352 352 361 363 363 382 390 411* 411 nselects 6 based fixed bin(17,0) level 2 dcl 4-3 set ref 123* nsevals 15 based fixed bin(17,0) level 2 dcl 6-5 set ref 133* 323* null builtin function dcl 110 ref 116 119 131 282 313 328 329 331 414 415 416 nval_args 4 based fixed bin(17,0) level 2 dcl 8-3 set ref 314 317 319 323 382 382 386 386 388* 388 390 390 390 390 394 400 400 401 404 nval_args_init 000102 automatic fixed bin(17,0) dcl 8-14 set ref 386* 388 388 op_stack 11 based structure array level 2 dcl 4-3 prior_sf_ptr 2 based pointer level 2 dcl 6-5 set ref 131* rb_flag based bit(1) level 2 packed unaligned dcl 4-3 set ref 125* 231* 247 288* se_flags 0(01) based structure level 2 packed unaligned dcl 6-5 se_len 11 based fixed bin(35,0) level 2 dcl 6-5 set ref 133* 318* se_ptr 4 based pointer level 2 dcl 6-5 set ref 131* 315* 317 326 se_vals 20 based structure array level 2 dcl 6-5 sel_items_len 10 based fixed bin(17,0) level 2 dcl 6-5 set ref 133* 327* sel_items_ptr 6 based pointer level 2 dcl 6-5 set ref 131* 326* sel_length 3 based fixed bin(35,0) level 2 dcl 8-3 set ref 327 409* 409 sel_offset 2 based fixed bin(35,0) level 2 dcl 8-3 set ref 326 408* 408 select_flag based bit(1) level 2 packed unaligned dcl 4-3 set ref 127* 229* 266 286* select_info based structure level 1 dcl 6-5 set_fn based bit(1) level 2 packed unaligned dcl 6-5 set ref 135* setop_flag based bit(1) level 2 packed unaligned dcl 4-3 set ref 125* 196 231* 288* setop_prec 000057 constant fixed bin(11,0) initial array dcl 82 ref 210 210 363 363 sexy based char(1) array unaligned dcl 80 set ref 326 si_ptr parameter pointer dcl 6-49 in procedure "linus_lila_set" ref 18 122 131 131 131 133 133 133 133 133 135 135 135 136 136 136 136 226 226 315 317 318 320 321 323 324 325 326 326 327 si_ptr based pointer level 2 in structure "ls_set" dcl 4-3 in procedure "linus_lila_set" set ref 122* string based char unaligned dcl 78 set ref 315 317* string_len 000107 automatic fixed bin(35,0) dcl 66 set ref 314* 315 315 317 318 t_ptr 24 based pointer level 2 dcl 7-3 ref 147 183 202 206 217 237 251 270 td_ptr parameter pointer dcl 7-49 set ref 18 143 144* 147 147 147 151 183 183 183 202 202 202 206 206 206 210 217 217 217 224 233 237 237 237 244 251 251 251 262 270 270 270 274* 363 token based char unaligned dcl 76 set ref 147* 183* 202* 206* 217* 237* 251* 270* token_data based structure level 1 dcl 7-3 type parameter fixed bin(17,0) dcl 344 in procedure "reduce" ref 337 347 352 type based fixed bin(17,0) level 2 in structure "ls_set" dcl 4-3 in procedure "linus_lila_set" set ref 121* unique_flag 0(06) based bit(1) level 2 in structure "select_info" packed unaligned dcl 6-5 in procedure "linus_lila_set" set ref 135* 325* unique_flag based bit(1) level 2 in structure "ls_set" packed unaligned dcl 4-3 in procedure "linus_lila_set" set ref 125* 325 val_args 6 based structure array level 2 dcl 8-3 val_del 0(03) based bit(1) level 3 packed unaligned dcl 6-5 set ref 136* 226* val_dtt 0(02) based bit(1) level 3 packed unaligned dcl 6-5 set ref 136* val_mod 0(04) based bit(1) level 3 packed unaligned dcl 6-5 set ref 136* 226* val_ret 0(01) based bit(1) level 3 packed unaligned dcl 6-5 set ref 136* var_ind based fixed bin(17,0) level 2 packed unaligned dcl 4-3 set ref 123* work_area based area dcl 72 ref 118 315 388 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. AND internal static fixed bin(17,0) initial dcl 7-13 COL_SPEC internal static fixed bin(17,0) initial dcl 7-13 COMMA internal static fixed bin(17,0) initial dcl 7-13 CONST internal static fixed bin(17,0) initial dcl 7-13 DIV internal static fixed bin(17,0) initial dcl 7-13 DUP internal static fixed bin(17,0) initial dcl 7-13 EQ internal static fixed bin(17,0) initial dcl 7-13 FROM internal static fixed bin(17,0) initial dcl 7-13 GE internal static fixed bin(17,0) initial dcl 7-13 GT internal static fixed bin(17,0) initial dcl 7-13 INTER internal static fixed bin(17,0) initial dcl 7-13 LB internal static fixed bin(17,0) initial dcl 7-13 LE internal static fixed bin(17,0) initial dcl 7-13 LINUS_VAR internal static fixed bin(17,0) initial dcl 7-13 LP internal static fixed bin(17,0) initial dcl 7-13 LT internal static fixed bin(17,0) initial dcl 7-13 MINUS internal static fixed bin(17,0) initial dcl 7-13 NE internal static fixed bin(17,0) initial dcl 7-13 NOT internal static fixed bin(17,0) initial dcl 7-13 OR internal static fixed bin(17,0) initial dcl 7-13 PLUS internal static fixed bin(17,0) initial dcl 7-13 RB internal static fixed bin(17,0) initial dcl 7-13 ROW_DES internal static fixed bin(17,0) initial dcl 7-13 ROW_TAB_PAIR internal static fixed bin(17,0) initial dcl 7-13 RP internal static fixed bin(17,0) initial dcl 7-13 SCAL_FN internal static fixed bin(17,0) initial dcl 7-13 SELECT internal static fixed bin(17,0) initial dcl 7-13 SET_FN internal static fixed bin(17,0) initial dcl 7-13 STAR internal static fixed bin(17,0) initial dcl 7-13 TAB_NAME internal static fixed bin(17,0) initial dcl 7-13 UNION internal static fixed bin(17,0) initial dcl 7-13 UNIQUE internal static fixed bin(17,0) initial dcl 7-13 WHERE internal static fixed bin(17,0) initial dcl 7-13 nmi_init automatic fixed bin(17,0) dcl 6-48 nsv_init automatic fixed bin(17,0) dcl 6-48 nui_init automatic fixed bin(17,0) dcl 6-48 rel builtin function dcl 110 sys_info$max_seg_size external static fixed bin(35,0) dcl 98 NAMES DECLARED BY EXPLICIT CONTEXT. combine 001711 constant entry internal dcl 371 ref 349 355 363 exit 001333 constant label dcl 297 finish 001334 constant entry internal dcl 300 ref 153 193 196 247 266 linus_lila_set 000101 constant entry external dcl 18 next 001331 constant label dcl 292 ref 186 194 235 245 264 290 reduce 001610 constant entry internal dcl 337 ref 210 255 307 token_proc 000000 constant label array(0:34) dcl 153 ref 151 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2510 2546 2331 2520 Length 3152 2331 36 370 157 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_lila_set 166 external procedure is an external procedure. finish internal procedure shares stack frame of external procedure linus_lila_set. reduce internal procedure shares stack frame of external procedure linus_lila_set. combine internal procedure shares stack frame of external procedure linus_lila_set. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME linus_lila_set 000100 lss_ptr linus_lila_set 000102 nval_args_init linus_lila_set 000103 ms_len_init linus_lila_set 000104 mblk_ptr linus_lila_set 000106 icode linus_lila_set 000107 string_len linus_lila_set 000110 done linus_lila_set 000120 i finish 000130 done_flag reduce 000140 b1p combine 000142 b2p combine 000144 i combine THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out return mpfx2 shorten_stack ext_entry alloc_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. linus_lila_block linus_lila_error linus_lila_get_token THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. linus_data_$max_set_stack_size linus_error_$early_end linus_error_$misplaced_select linus_error_$misplaced_setop linus_error_$setop_ovfl linus_error_$syntax linus_error_$unalld_setop mrds_data_$max_select_items LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000074 116 000106 118 000111 119 000157 120 000221 121 000226 122 000231 123 000234 125 000246 127 000262 128 000270 129 000274 131 000277 133 000311 135 000320 136 000326 140 000336 141 000337 143 000342 144 000347 147 000370 151 000424 153 000430 183 000440 186 000467 188 000470 193 000521 194 000522 196 000523 202 000537 206 000567 210 000621 217 000644 222 000703 223 000705 224 000714 226 000722 229 000727 231 000735 233 000743 235 000746 237 000747 242 001004 243 001010 244 001014 245 001021 247 001022 251 001043 255 001073 260 001103 261 001110 262 001114 264 001121 266 001122 270 001136 274 001166 276 001204 278 001233 279 001235 280 001242 281 001302 282 001304 283 001306 285 001315 286 001320 288 001324 290 001330 295 001331 297 001333 300 001334 307 001335 309 001345 312 001400 313 001441 314 001445 315 001452 317 001467 318 001503 319 001505 320 001515 321 001524 322 001531 323 001533 324 001541 325 001551 326 001560 327 001566 328 001573 329 001575 330 001600 331 001604 333 001605 335 001607 337 001610 347 001612 349 001624 350 001625 352 001627 355 001647 356 001650 359 001652 360 001654 361 001656 363 001666 367 001706 368 001707 420 001710 371 001711 380 001712 381 001753 382 001755 386 001777 388 002002 389 002030 390 002033 394 002140 395 002151 397 002156 399 002162 400 002164 401 002177 404 002211 407 002215 408 002217 409 002225 411 002227 412 002232 413 002234 414 002273 415 002275 416 002276 418 002277 ----------------------------------------------------------- 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