COMPILATION LISTING OF SEGMENT linus_lila_set_fn Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 07/29/86 1004.2 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_fn: 19 proc (lcb_ptr, lsh_ptr, td_ptr, ed_ptr, code); 20 21 /* DESCRIPTION: 22* 23* This procedure translates a set function into tabular form suitable for 24* evaluation. 25* 26* 27* 28* HISTORY: 29* 30* 77-08-01 J. A. Weeldreyer: Initially written. 31* 32* 78-08-01 J. A. Weeldreyer: Modified to move parsing of set fn. brackets 33* to within this program. 34* 35* 80-01-08 Rickie E. Brinegar: Modified to pass linus_lila_alloc_lit a 36* descriptor pointer instead of an assign_ descriptor type and to eliminate 37* the assign_ length parameter. 38* 39* 80-03-13 Rickie E. Brinegar: Modified to use a work area defined on 40* lcb.lila_area_ptr instead of getting system free area. 41* 42* 81-07-07 Rickie E. Brinegar: Changed to check for a null token when no 43* right bracket was found. This is in response to TR10283. 44* 45* 81-09-18 Rickie E. Brinegar: Replaced the checking of varying strings by 46* indexing into a bit string called is_var with a call to 47* mdbm_util_$varying_data_class. At the same time, all calls to set_arg_ptr 48* where changed to pass a pointer to the descriptor in question instead of 49* the assign_ data type. This eliminates problems with subscript range 50* faults. 51* 52* 81-11-06 Rickie E. Brinegar: Added the unspec builtin for initializing the 53* select_info structure. Modified to use the entry variables in the 54* linus_set_fn structure instead of the entry pointers that used to be used. 55* 56* 82-11-15 Dave Schimke: Removed useless cleanup procedure which called 57* linus_free_se$free_sel_info on a cleanup condition. This was part of an 58* earlier change by Rickie Brinegar which moved the select_info to the lila 59* temp_seg. Removed dcl of cleanup condition and linus_free_se$free_sel_info. 60**/ 61 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 */ 62 63 2 1 /* BEGIN INCLUDE FILE linus_select_info.incl.pl1 */ 2 2 /* History: 77-07-29 J. A. Weeldreyer: Originally written. 2 3* Modified: 82-18-82 Dave Schimke: Added user_item.table_name 2 4**/ 2 5 dcl 1 select_info aligned based (si_ptr), /* info from LILA select clause */ 2 6 2 set_fn bit (1) unal, /* on if set fn to be applied */ 2 7 2 se_flags unal, /* flags pertaining to selection expr. */ 2 8 3 val_ret bit (1) unal, /* valid for retrieval */ 2 9 3 val_dtt bit (1) unal, /* valid for define_temp_table */ 2 10 3 val_del bit (1) unal, /* valid for delete */ 2 11 3 val_mod bit (1) unal, /* valid for modify */ 2 12 2 dup_flag bit (1) unal, /* on if dup explic. spec. somewhere */ 2 13 2 unique_flag bit (1) unal, /* on if unique explic. spec. somewhere */ 2 14 2 pad bit (29) unal, /* reserved */ 2 15 2 prior_sf_ptr ptr, /* pointer to set fns for prior eval. */ 2 16 2 se_ptr ptr, /* pointer to mrds selection expression */ 2 17 2 sel_items_ptr ptr, /* pointer to list of selected items */ 2 18 2 sel_items_len fixed bin, /* length in characters of list of selected items */ 2 19 2 se_len fixed bin (35), /* length of mrds sel. expr. */ 2 20 2 nsv_alloc fixed bin, /* no. of se. vals aloc. */ 2 21 2 nmi_alloc fixed bin, /* no. of mrds items alloc. */ 2 22 2 nui_alloc fixed bin, /* no. of user items alloc. */ 2 23 2 nsevals fixed bin, /* number of selection expr. vaules */ 2 24 2 n_mrds_items fixed bin, /* no. of items in mrds select list */ 2 25 2 n_user_items fixed bin, /* no. of items user will see */ 2 26 2 se_vals (nsv_init refer (select_info.nsv_alloc)), 2 27 3 arg_ptr ptr, 2 28 3 desc_ptr ptr, 2 29 2 mrds_item (nmi_init refer (select_info.nmi_alloc)), /* mrds select items */ 2 30 3 arg_ptr ptr, /* pointer to receiving field */ 2 31 3 bit_len fixed bin (35), /* bit length of receiving field */ 2 32 3 desc bit (36), /* descriptor for receiving field */ 2 33 3 assn_type fixed bin, /* type code for assign_ */ 2 34 3 assn_len fixed bin (35), /* length for assign_ */ 2 35 2 user_item (nui_init refer (select_info.nui_alloc)), /* user select item */ 2 36 3 name char (32) var, /* name for col. header */ 2 37 3 table_name char (32) var, /* name of containing linus table */ 2 38 3 item_type fixed bin, /* indicates type of item: 2 39* 1 => raw mrds, 2 40* 2 => expr. */ 2 41 3 rslt_desc bit (36), /* descriptor for expr. result */ 2 42 3 rslt_bit_len fixed bin (35), /* bit length of expr. result */ 2 43 3 rslt_assn_ptr ptr, /* pointer to expr. result storage loc. */ 2 44 3 rslt_assn_type fixed bin, /* assign_ type code of expr. result */ 2 45 3 rslt_assn_len fixed bin (35), /* assign_ length for expr. result */ 2 46 3 item_ptr ptr; /* pointer to item or expr. or applied set_func. structure */ 2 47 2 48 dcl (nsv_init, nmi_init, nui_init) fixed bin; 2 49 dcl si_ptr ptr; 2 50 2 51 /* END INCLUDE FILE linus_select_info.incl.pl1 */ 64 65 3 1 /* BEGIN INCLUDE FILE linus_ls_header.incl.pl1 -- jaw 7/28/77 */ 3 2 3 3 dcl 1 ls_header aligned based (lsh_ptr), /* header for LILA stack */ 4 1 /* BEGIN INCLUDE FILE linus_ls_common.incl.pl1 -- jaw 7/12/77 */ 4 2 4 3 2 type fixed bin, /* type of frame: 4 4* 1 => header, 4 5* 2 => set value, 4 6* 3 => lila set, 4 7* 4 => lila block */ 4 8 2 back_ptr ptr, /* pointer to previous frame */ 4 9 2 fwd_ptr ptr, /* pointer to next frame */ 4 10 4 11 /* END INCLUDE FILE linus_ls_common.incl.pl1 */ 3 4 3 5 2 cur_ptr ptr, /* pointer to current frame */ 3 6 2 src_ptr ptr, /* pointer to LILA source string */ 3 7 2 trans_failed bit (1) unal, /* on if translate failed */ 3 8 2 from_token bit (1) unal, /* on if the calling routine is linus_lila_from */ 3 9 2 reserved bit (34) unal, 3 10 2 cur_pos fixed bin (35), /* current position in source string */ 3 11 2 line_data (0 : lcb.lila_count), /* data for each source line */ 3 12 3 lno char (4), /* line number */ 3 13 3 last_char fixed bin (35); /* index of last char */ 3 14 3 15 dcl lsh_ptr ptr; 3 16 3 17 /* END INCLUDE FILE linus_ls_header.incl.pl1 */ 66 67 5 1 /* BEGIN INCLUDE FILE linus_ls_set.incl.pl1 -- jaw 7/27/78 */ 5 2 5 3 dcl 1 ls_set aligned based (lss_ptr), /* lila stack frame for lila set */ 6 1 /* BEGIN INCLUDE FILE linus_ls_common.incl.pl1 -- jaw 7/12/77 */ 6 2 6 3 2 type fixed bin, /* type of frame: 6 4* 1 => header, 6 5* 2 => set value, 6 6* 3 => lila set, 6 7* 4 => lila block */ 6 8 2 back_ptr ptr, /* pointer to previous frame */ 6 9 2 fwd_ptr ptr, /* pointer to next frame */ 6 10 6 11 /* END INCLUDE FILE linus_ls_common.incl.pl1 */ 5 4 5 5 2 nselects fixed bin, /* number of items selected */ 5 6 2 nblocks fixed bin, /* number of lila blocks in stack */ 5 7 2 nops fixed bin, /* number of set operators in stack */ 5 8 2 op_stack (linus_data_$max_set_stack_size), /* the set op stack */ 5 9 3 br_cnt fixed bin (17) unal, /* bracket count of oper. */ 5 10 3 key fixed bin (17) unal, /* token key of operator */ 5 11 2 br_cnt fixed bin, /* current bracket count */ 5 12 2 dup_flag bit (1) unal, /* on if DUP encountered */ 5 13 2 unique_flag bit (1) unal, /* on if UNIQUE encountered */ 5 14 2 rb_flag bit (1) unal, /* on if right bracket allowed */ 5 15 2 lb_flag bit (1) unal, /* on if left bracket allowed */ 5 16 2 setop_flag bit (1) unal, /* on if set op allowed */ 5 17 2 select_flag bit (1) unal, /* on if lila block allowed */ 5 18 2 end_flag bit (1) unal, /* on if end of set allowed */ 5 19 2 first_block bit (1) unal, /* on if no lila block yet processed */ 5 20 2 inv_setop bit (1) unal, /* on if a lila block cannot be included in a set oper. */ 5 21 2 reserved bit (9) unal, 5 22 2 var_ind fixed bin (17) unal, /* number for next generated variable */ 5 23 2 domain_info (mrds_data_$max_select_items), /* domain info for each selected attr. */ 5 24 3 name char (32), /* domain name */ 5 25 3 bit_length fixed bin (35), /* bit length of domain */ 5 26 3 desc bit (36), /* descriptor for domain */ 5 27 3 assn_ptr ptr, /* ptr to receiving field for this attr. */ 5 28 3 assn_type fixed bin, /* assign_ type code for this domain */ 5 29 3 assn_len fixed bin (35), /* assign_ length for this domain */ 5 30 2 si_ptr ptr, /* pointer to select info structure */ 5 31 2 blk_hd_ptr ptr; /* pointer to top item of block stack */ 5 32 5 33 dcl lss_ptr ptr; 5 34 5 35 /* END INCLUDE FILE linus_ls_set.incl.pl1 */ 68 69 7 1 /* BEGIN INCLUDE FILE linus_ls_block.incl.pl1 -- jaw 8/7/78 */ 7 2 7 3 dcl 1 ls_block aligned based (lsb_ptr), /* lila stack frame for outer lila block */ 8 1 /* BEGIN INCLUDE FILE linus_ls_common.incl.pl1 -- jaw 7/12/77 */ 8 2 8 3 2 type fixed bin, /* type of frame: 8 4* 1 => header, 8 5* 2 => set value, 8 6* 3 => lila set, 8 7* 4 => lila block */ 8 8 2 back_ptr ptr, /* pointer to previous frame */ 8 9 2 fwd_ptr ptr, /* pointer to next frame */ 8 10 8 11 /* END INCLUDE FILE linus_ls_common.incl.pl1 */ 7 4 7 5 2 reserved bit (36) unal, 7 6 2 ib_level fixed bin, /* current depth of inner blocks */ 7 7 2 nrs_chars fixed bin, /* total chars. in range strings */ 7 8 2 nritems fixed bin, /* current number of range items */ 7 9 2 range_items (linus_data_$max_range_items), 7 10 3 tup_var char (32) var, /* name of linus tuple variable */ 7 11 3 mrds_var char (32) var, /* name of mrds tuple variable */ 7 12 3 rel_name char (32) var, /* name of relation */ 7 13 3 rel_index fixed bin (35), /* rel. index if temp tab */ 7 14 3 level fixed bin, /* level of block generating item */ 7 15 3 arg_ptr ptr, 7 16 3 desc_ptr ptr, 7 17 2 nselects fixed bin, /* number of select items currently defined */ 7 18 2 sel_items (mrds_data_$max_select_items) char (mrds_data_$max_token_size) var, /* the mrds select items */ 7 19 2 nprops fixed bin, /* number of operators in pred stack */ 7 20 2 pred_op_stack (linus_data_$max_pred_stack_size), 7 21 3 key fixed bin (17) unal, 7 22 3 p_cnt fixed bin (17) unal, /* current paren count */ 7 23 2 pred_pcnt fixed bin, /* current paren. count in predicate */ 7 24 2 term_op fixed bin, /* rel. op. for current term */ 7 25 2 nterms fixed bin, /* no. of terms currently in term stack */ 7 26 2 dflt_ritem fixed bin, /* index of range item to be used for default */ 7 27 2 nrange_args fixed bin, /* no. of args for temp rel indexes */ 7 28 2 rs_hd_ptr ptr, /* pointer to head of range strings */ 7 29 2 term_hd_ptr ptr, /* pointer to top item in term stack */ 7 30 2 leaf_ptr (2) ptr; /* ptr to mrds block for each leaf of current term */ 7 31 7 32 dcl lsb_ptr ptr; 7 33 7 34 /* END INCLUDE FILE linus_ls_block.incl.pl1 */ 70 71 9 1 /* BEGIN INCLUDE FILE linus_set_fn.incl.pl1 -- jaw 7/13/77 9 2* 9 3* 81-10-26 Rickie E. Brinegar: Modified to have entry variables instead of 9 4* entry pointers. This change included the addition of bit switches inorder 9 5* to be able to tell if the entry variable had been set yet. Also changed 9 6* the name of the structure from set_fn to linus_set_fn and the name of the 9 7* variable that it was based on from setf_ptr to linus_set_fn_ptr. 9 8* 9 9* 81-11-05 Rickie E. Brinegar: Changed the entry pointers to entry variables 9 10* and added bit switches to determine when the entries have or have not been 9 11* set. Renamed set_fn sturcture to linus_set_fn, setf_ptr to 9 12* linus_set_fn_ptr, and nset_fn_init_args to 9 13* initial_number_of_linus_set_fn_args. 9 14* 9 15**/ 9 16 9 17 dcl 1 linus_set_fn aligned based (linus_set_fn_ptr), /* internal rep. of set fun. */ 9 18 2 fwd_ptr ptr, /* pointer to next set function to be eval. 9 19* at this level */ 9 20 2 prior_ptr ptr, /* pointer to head of list of set functions 9 21* to be evaluated prior to this one */ 9 22 2 assign_entry entry variable, /* pointer to assign entry */ 9 23 2 calc_entry entry variable, /* pointer to calc entry */ 9 24 2 init_entry entry variable, /* pointer to initialization entry */ 9 25 2 assign_al_ptr ptr, /* pointer to assign entry arg list */ 9 26 2 calc_al_ptr ptr, /* pointer to calc entry arg list */ 9 27 2 rtrv_al_ptr ptr, /* pointer to arg list for dsl_$retrieve */ 9 28 2 flags, 9 29 3 assign_entry_set bit (1) unaligned, /* 0 => null, 1 => not null */ 9 30 3 calc_entry_set bit (1) unaligned, /* 0 => null, 1 => not null */ 9 31 3 init_entry_set bit (1) unaligned, /* 0 => null, 1 => not null */ 9 32 3 pad_bits bit (33) unaligned, 9 33 2 rslt_desc bit (36), /* descriptor for result */ 9 34 2 nargs fixed bin, /* number of input args to calc entry */ 9 35 2 arg (initial_number_of_linus_set_fn_args refer (linus_set_fn.nargs)), 9 36 3 type fixed bin (4) unal, /* 1 => constant 9 37* 2 => linus variable 9 38* 3 => scalar function 9 39* 4 => set function 9 40* 5 => expression 9 41* 6 => data base item */ 9 42 3 must_convert bit (1) unal, /* on if must convert prior to call */ 9 43 3 reserved bit (30) unal, 9 44 3 desc bit (36), /* descriptor of source data */ 9 45 3 assn_ptr ptr, /* assign_ ptr for source data */ 9 46 3 assn_type fixed bin, /* assign_ type for source data */ 9 47 3 assn_len fixed bin (35), /* assign_ length for source data */ 9 48 3 arg_desc bit (36), /* descriptor for converted arg */ 9 49 3 arg_assn_ptr ptr, /* assign_ ptr for converted arg */ 9 50 3 arg_assn_type fixed bin, /* assign_ type code for converted arg */ 9 51 3 arg_assn_len fixed bin (35), /* assign_ length for converted arg */ 9 52 3 ef_ptr ptr; /* pointer to express. or function structure */ 9 53 9 54 dcl initial_number_of_linus_set_fn_args fixed bin; 9 55 dcl linus_set_fn_ptr ptr; 9 56 9 57 /* END INCLUDE FILE linus_set_fn.incl.pl1 */ 72 73 10 1 /* BEGIN INCLUDE FILE linus_set_fn_info.incl.pl1 -- jaw 6/16/77 10 2* 10 3* 81-10-26 Rickie E. Brinegar: Changed the entry pointer to entry variables 10 4* and added bits to define whether or not the entry variables had been set. 10 5* Renamed the structure from set_fn_info to linus_set_fn_info and the pointer 10 6* that it was based on from setfi_ptr to linus_set_fn_info_ptr. 10 7* 10 8* 81-11-05 Rickie E. Brinegar: Changed the entry pointers to entry variables 10 9* and added bit switches to determine when the entries have or have not been 10 10* set. Renamed the set_fn_info structure to linus_set_fn_info, the setfi_ptr 10 11* to linus_set_fn_info_ptr, and nset_fn_info_init_args to 10 12* initial_number_of_set_fn_info_args. 10 13* 10 14**/ 10 15 10 16 dcl 1 linus_set_fn_info aligned based (linus_set_fn_info_ptr), 10 17 /* set function info block */ 10 18 2 fwd_ptr ptr, /* pointer too next function in list */ 10 19 2 name char (32), /* name of function */ 10 20 2 assign_entry entry variable, /* pointer to assign entry */ 10 21 2 calc_entry entry variable, /* pointer to calc entry */ 10 22 2 info_entry entry variable, /* pointer to info entry, if var. fun. */ 10 23 2 init_entry entry variable, /* pointer to initialization entry */ 10 24 2 flags, 10 25 3 assign_entry_set bit (1) unaligned, /* 0 => null, 1 => not null */ 10 26 3 calc_entry_set bit (1) unaligned, /* 0 => null, 1 => not null */ 10 27 3 info_entry_set bit (1) unaligned, /* 0 => null, 1 => not null */ 10 28 3 init_entry_set bit (1) unaligned, /* 0 => null, 1 => not null */ 10 29 3 pad_bits bit (32) unaligned, 10 30 2 rslt_desc bit (36), /* descriptor of result of fixed fun */ 10 31 2 nargs fixed bin, /* no of input args of calc entry */ 10 32 2 arg_desc (initial_number_of_set_fn_info_args refer (linus_set_fn_info.nargs)) bit (36); /* descriptor 10 33* for each input arg */ 10 34 10 35 dcl linus_set_fn_info_ptr ptr; 10 36 dcl initial_number_of_set_fn_info_args fixed bin; 10 37 10 38 /* END INCLUDE FILE linus_set_fn_info.incl.pl1 */ 74 75 11 1 /* BEGIN INCLUDE FILE linus_ef_data.incl.pl1 -- jaw 7/21/77 */ 11 2 11 3 dcl 1 ef_data aligned based (ed_ptr), /* structure for passing expr. and fun. data among programs */ 11 4 2 var_name char (32), /* name of tuple variable */ 11 5 2 bit_length fixed bin (35), /* bit length of result */ 11 6 2 desc bit (36), /* descriptor of result */ 11 7 2 assn_ptr ptr, /* pointer to result value */ 11 8 2 assn_type fixed bin, /* assign_ type code of result */ 11 9 2 assn_len fixed bin (35), /* assign_ length */ 11 10 2 nmrds_items fixed bin, /* number of mrds items returned */ 11 11 2 mrds_items (linus_data_$max_expr_items), /* previously unselected mrds items referenced 11 12* in the expression */ 11 13 3 attr_name char (32), /* name of attribute */ 11 14 3 domain_name char (32), /* domain of attribute */ 11 15 3 bit_length fixed bin (35), /* attrib. bit length */ 11 16 3 desc bit (36), /* attrib. descriptor */ 11 17 3 assn_ptr ptr, /* pointer to receiving field of attr. */ 11 18 3 assn_type fixed bin, /* assign_ type code of attr */ 11 19 3 assn_len fixed bin (35), /* assign_ length for attr. */ 11 20 2 ef_ptr ptr; /* pointer to expr. status */ 11 21 11 22 dcl ed_ptr ptr; 11 23 11 24 /* END INCLUDE FILE linus_ef_data.incl.pl1 */ 76 77 12 1 /* BEGIN INCLUDE FILE linus_token_data.incl.pl1 -- jaw 8/7/78 */ 12 2 12 3 dcl 1 token_data aligned based (td_ptr), /* data for lila tokens */ 12 4 2 key fixed bin (17) unal, /* key of token */ 12 5 2 must_free bit (1) unal, /* on if value must be freed */ 12 6 2 temp_tab bit (1) unal, /* on if temporary table */ 12 7 2 reserved bit (16) unal, 12 8 2 mvar char (32) var, /* mrds variable if identifier */ 12 9 2 lvar char (32) var, /* linus variable if identifier */ 12 10 2 length fixed bin (35), /* char length of token value */ 12 11 2 t_ptr ptr; /* points to token value */ 12 12 12 13 dcl ((NULL init (0)), 12 14 (RP init (1)), 12 15 (COL_SPEC init (2)), 12 16 (LINUS_VAR init (3)), 12 17 (CONST init (4)), 12 18 (SET_FN init (5)), 12 19 (SCAL_FN init (6)), 12 20 (LP init (7)), 12 21 (STAR init (8)), 12 22 (DIV init (9)), 12 23 (PLUS init (10)), 12 24 (MINUS init (11)), 12 25 (TAB_NAME init (12)), 12 26 (ROW_TAB_PAIR init (13)), 12 27 (UNION init (14)), 12 28 (INTER init (15)), 12 29 (DIFFER init (16)), 12 30 (ROW_DES init (17)), 12 31 (LB init (18)), 12 32 (RB init (19)), 12 33 (SELECT init (20)), 12 34 (NOT init (21)), 12 35 (AND init (22)), 12 36 (OR init (23)), 12 37 (EQ init (24)), 12 38 (NE init (25)), 12 39 (GT init (26)), 12 40 (GE init (27)), 12 41 (LT init (28)), 12 42 (LE init (29)), 12 43 (FROM init (30)), 12 44 (WHERE init (31)), 12 45 (DUP init (32)), 12 46 (UNIQUE init (33)), 12 47 (COMMA init (34))) fixed bin int static options (constant); 12 48 12 49 dcl td_ptr ptr; 12 50 12 51 /* END INCLUDE FILE linus_token_data.incl.pl1 */ 78 79 13 1 /* BEGIN mdbm_arg_list.incl.pl1 -- jaw 5/31/78 */ 13 2 /* the duplicate mrds_arg_list.incl.pl1 was eliminated by Jim Gray, Nov. 1979 */ 13 3 13 4 /* layout of argument list for IDS and DBM entries with options (variable) */ 13 5 13 6 dcl 1 arg_list based (al_ptr), 13 7 2 arg_count fixed bin (17) unal, /* 2 * no. of args. */ 13 8 2 code fixed bin (17) unal, /* 4 => normal, 8 => special */ 13 9 2 desc_count fixed bin (17) unal, /* 2 * no. of descriptors */ 13 10 2 pad fixed bin (17) unal, /* must be 0 */ 13 11 2 arg_des_ptr (num_ptrs) ptr; /* argument/descriptor pointer */ 13 12 13 13 dcl al_ptr ptr; 13 14 dcl num_ptrs fixed bin; 13 15 13 16 /* END mdbm_arg_list.incl.pl1 */ 13 17 80 81 82 dcl fn_name char (32); /* function name */ 83 84 dcl (i, type, nargs) fixed bin; 85 86 dcl ( 87 bit_len, /* bit length variable */ 88 code, /* Output: return code */ 89 icode, /* internal status code */ 90 len 91 ) fixed bin (35); 92 93 dcl ( 94 arg_desc_ptr init (null), /* a pointer to arg_desc structure */ 95 mi_ptr init (null) 96 ) ptr; /* pointer to a mrds item */ 97 98 dcl BITD bit (36) int static options (constant) 99 init ("101001100000000000000000000000100100"b); 100 dcl DB fixed bin (4) int static options (constant) init (6); 101 dcl EXPRESS fixed bin (4) int static options (constant) init (5); 102 dcl FB35D bit (36) int static options (constant) 103 init ("100000100000000000000000000000100011"b); 104 dcl MRDS fixed bin int static options (constant) init (1); 105 dcl bit36 bit (36) based; 106 dcl char_desc_bits bit (36) based (addr (char_desc)); 107 dcl sex char (select_info.se_len) based (select_info.se_ptr); 108 dcl token char (token_data.length) based (token_data.t_ptr); 109 dcl work_area area (sys_info$max_seg_size) based (lcb.lila_area_ptr); 110 111 dcl 1 arg_desc aligned, /* descs. for info ent. call */ 112 2 ndescs fixed bin, 113 2 desc (linus_data_$max_user_items) bit (36); 114 115 dcl 1 char_desc aligned, /* character desc. */ 116 2 const bit (12) unal init ("101010110000"b), 117 2 len fixed bin (23) unal; 118 119 dcl 1 m_item aligned like select_info.mrds_item based (mi_ptr); 120 121 dcl 1 rslt_desc_arg_list aligned, 122 2 arg_count fixed bin (17) unsigned unal init (2), 123 2 pad1 bit (1) unal init ("0"b), 124 2 call_type fixed bin (18) unsigned unal init (4), 125 2 desc_count fixed bin (17) unsigned unal init (0), 126 2 pad2 bit (19) unal init ("0"b), 127 2 arg_ptrs (2) ptr; 128 129 130 dcl (addr, fixed, rel, after, substr, addrel, null, unspec) builtin; 131 132 dcl ( 133 linus_error_$setfn_nargs, 134 linus_error_$inv_setfn_set, 135 linus_error_$cant_alloc_lit, 136 linus_error_$inv_setfn_args, 137 linus_error_$setfn_syntax, 138 linus_data_$max_user_items, 139 linus_data_$max_set_stack_size, 140 linus_data_$max_pred_stack_size, 141 linus_data_$max_expr_items, 142 linus_data_$max_range_items, 143 linus_data_$max_lvars, 144 mrds_data_$max_select_items, 145 mrds_data_$max_token_size, 146 sys_info$max_seg_size 147 ) fixed bin (35) ext; 148 149 dcl cu_$generate_call entry (entry, ptr); 150 dcl linus_lila_set entry (ptr, ptr, ptr, ptr, fixed bin (35)); 151 dcl linus_lila_error entry (ptr, ptr, fixed bin (35), char (*)); 152 dcl linus_lila_alloc_lit entry (ptr, ptr, ptr, fixed bin (35)); 153 dcl linus_lila_get_token entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35)); 154 dcl linus_assign_data entry (bit (36), fixed bin, fixed bin (35)); 155 dcl mdbm_util_$varying_data_class entry (ptr) returns (bit (1) aligned); 156 157 si_ptr, /* initialize */ 158 linus_set_fn_ptr = null; 159 lsb_ptr = ls_header.cur_ptr; 160 lss_ptr = ls_block.back_ptr; 161 162 fn_name = token; /* save function name for later */ 163 call 164 linus_lila_get_token (lcb_ptr, lsh_ptr, ls_header.cur_pos, td_ptr, 165 icode); 166 if icode ^= 0 then 167 call linus_lila_error (lcb_ptr, lsh_ptr, icode, token); 168 if token_data.key ^= LB then /* must have left br. following fn name */ 169 call 170 linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$setfn_syntax, 171 token); 172 token_data.key = NULL; /* dont pass token to linus_lila_set */ 173 nmi_init = mrds_data_$max_select_items; 174 nui_init = linus_data_$max_user_items; 175 nsv_init = linus_data_$max_range_items + linus_data_$max_lvars; 176 allocate select_info in (work_area); /* temp select_info */ 177 unspec (select_info.se_flags) = "0"b; 178 do i = 1 to select_info.nui_alloc; 179 unspec (select_info.user_item (i)) = "0"b; 180 select_info.user_item.name (i) = ""; 181 end; 182 select_info.prior_sf_ptr, select_info.se_ptr, select_info.sel_items_ptr = 183 null; 184 do i = 1 to nsv_init; 185 unspec (select_info.se_vals (i)) = "0"b; 186 select_info.se_vals (i).arg_ptr, select_info.se_vals (i).arg_ptr = 187 null; 188 end; 189 do i = 1 to nmi_init; 190 unspec (select_info.mrds_item (i)) = "0"b; 191 select_info.mrds_item (i).arg_ptr = null; 192 end; 193 do i = 1 to nui_init; 194 select_info.user_item (i).rslt_assn_ptr, 195 select_info.user_item (i).item_ptr = null; 196 end; 197 call linus_lila_set (lcb_ptr, lsh_ptr, td_ptr, si_ptr, icode); 198 /* translate the input LILA set */ 199 if icode ^= 0 then 200 call linus_lila_error (lcb_ptr, lsh_ptr, icode, token); 201 if token_data.key = NULL then do; /* if need to get new token */ 202 call 203 linus_lila_get_token (lcb_ptr, lsh_ptr, ls_header.cur_pos, td_ptr, 204 icode); 205 if icode ^= 0 then 206 call linus_lila_error (lcb_ptr, lsh_ptr, icode, token); 207 end; 208 if token_data.key ^= RB then do; /* must finish with right br. */ 209 if token_data.key = NULL then 210 call 211 linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$setfn_syntax, 212 ""); 213 else call 214 linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$setfn_syntax, 215 token); 216 end; 217 token_data.key = NULL; /* so noone else will use this token */ 218 219 do linus_set_fn_info_ptr = lcb.setfi_ptr repeat linus_set_fn_info.fwd_ptr 220 /* get info for set fn. */ 221 while (fn_name ^= linus_set_fn_info.name 222 & linus_set_fn_info.fwd_ptr ^= null); 223 end; /* are guaranteed to find it */ 224 225 if linus_set_fn_info.nargs > 0 then /* if fixed args, check for quant. match */ 226 if linus_set_fn_info.nargs ^= select_info.n_user_items then 227 call 228 linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$setfn_nargs, 229 fn_name); 230 if ^select_info.se_flags.val_ret then /* input expr. must be valid for retr. */ 231 call 232 linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$inv_setfn_set, 233 fn_name); 234 235 initial_number_of_linus_set_fn_args = select_info.n_user_items; 236 /* alloc. set fn struct. */ 237 allocate linus_set_fn in (work_area); /* need to keep it around */ 238 linus_set_fn.calc_al_ptr, linus_set_fn.assign_al_ptr, 239 linus_set_fn.rtrv_al_ptr = null; /* start filling it in */ 240 linus_set_fn.calc_entry_set = linus_set_fn_info.calc_entry_set; 241 if linus_set_fn_info.calc_entry_set then 242 linus_set_fn.calc_entry = linus_set_fn_info.calc_entry; 243 linus_set_fn.init_entry_set = linus_set_fn_info.init_entry_set; 244 if linus_set_fn_info.init_entry_set then 245 linus_set_fn.init_entry = linus_set_fn_info.init_entry; 246 linus_set_fn.assign_entry_set = linus_set_fn_info.assign_entry_set; 247 if linus_set_fn_info.assign_entry_set then 248 linus_set_fn.assign_entry = linus_set_fn_info.assign_entry; 249 linus_set_fn.prior_ptr = select_info.prior_sf_ptr; 250 linus_set_fn.fwd_ptr = null; 251 linus_set_fn.nargs = select_info.n_user_items; 252 253 do i = 1 to select_info.n_user_items; /* copy input arg info */ 254 if select_info.user_item.item_type (i) = MRDS then do; 255 /* if data base item */ 256 mi_ptr = select_info.user_item.item_ptr (i); 257 linus_set_fn.arg.desc (i) = m_item.desc; 258 linus_set_fn.arg.assn_ptr (i) = m_item.arg_ptr; 259 linus_set_fn.arg.assn_type (i) = m_item.assn_type; 260 linus_set_fn.arg.assn_len (i) = m_item.assn_len; 261 linus_set_fn.arg.type (i) = DB; 262 linus_set_fn.arg.ef_ptr (i) = null; 263 linus_set_fn.arg.arg_assn_ptr (i) = null; 264 end; /* if data base item */ 265 else do; /* if is expr. */ 266 linus_set_fn.arg.type (i) = EXPRESS; 267 linus_set_fn.arg.desc (i) = select_info.user_item.rslt_desc (i); 268 linus_set_fn.arg.assn_ptr (i) = 269 select_info.user_item.rslt_assn_ptr (i); 270 linus_set_fn.arg.assn_type (i) = 271 select_info.user_item.rslt_assn_type (i); 272 linus_set_fn.arg.assn_len (i) = 273 select_info.user_item.rslt_assn_len (i); 274 linus_set_fn.arg.ef_ptr (i) = select_info.user_item.item_ptr (i); 275 end; /* if is expression */ 276 end; /* first arg copy loop */ 277 278 num_ptrs = 2 * linus_set_fn.nargs; /* set up and init. the calc. arg list */ 279 allocate arg_list in (work_area); 280 linus_set_fn.calc_al_ptr = al_ptr; 281 arg_list.arg_count, arg_list.desc_count = num_ptrs; 282 arg_list.code = 4; 283 284 if linus_set_fn_info.nargs > 0 then do; /* if fixed-arg function */ 285 linus_set_fn.rslt_desc = linus_set_fn_info.rslt_desc; 286 /* fill in result desc. */ 287 do i = 1 to linus_set_fn.nargs; /* another pass through input args */ 288 if linus_set_fn_info.arg_desc (i) = linus_set_fn.arg.desc (i) 289 then do; /* no conv. req. */ 290 linus_set_fn.arg.must_convert = "0"b; 291 arg_list.arg_des_ptr (i) = 292 set_arg_ptr (linus_set_fn.arg.assn_ptr (i), 293 addr (linus_set_fn.arg.desc (i))); /* fill in calc. arg list */ 294 arg_list.arg_des_ptr (i + linus_set_fn.nargs) = 295 addr (linus_set_fn.arg.desc (i)); 296 end; /* if no conv. req. */ 297 else do; /* set up for arg conversion */ 298 linus_set_fn.arg.must_convert = "1"b; 299 linus_set_fn.arg.arg_desc (i) = linus_set_fn_info.arg_desc (i); 300 call 301 linus_assign_data ((linus_set_fn.arg.arg_desc (i)), 302 linus_set_fn.arg.arg_assn_type (i), 303 linus_set_fn.arg.arg_assn_len (i)); 304 call 305 linus_lila_alloc_lit (lcb_ptr, 306 addr (linus_set_fn.arg.arg_desc (i)), 307 linus_set_fn.arg.arg_assn_ptr (i), bit_len); 308 if linus_set_fn.arg.arg_assn_ptr (i) = null then 309 /* trouble */ 310 call 311 linus_lila_error (lcb_ptr, lsh_ptr, 312 linus_error_$cant_alloc_lit, ""); 313 arg_list.arg_des_ptr (i) = 314 set_arg_ptr (linus_set_fn.arg.arg_assn_ptr (i), 315 addr (linus_set_fn.arg.arg_desc (i))); /* fill in calc arg list */ 316 arg_list.arg_des_ptr (i + linus_set_fn.nargs) = 317 addr (linus_set_fn.arg.arg_desc (i)); 318 end; /* setting up for arg conv. */ 319 end; /* loop through args */ 320 end; /* if fixed arg function call */ 321 322 else do; /* variable arg function */ 323 arg_desc.ndescs = linus_set_fn.nargs; 324 do i = 1 to linus_set_fn.nargs; /* pass through input args */ 325 linus_set_fn.arg.must_convert (i) = "0"b; /* never need to convert */ 326 arg_desc.desc (i) = linus_set_fn.arg.desc (i); /* save for info call */ 327 arg_list.arg_des_ptr (i) = 328 set_arg_ptr (linus_set_fn.arg.assn_ptr (i), 329 addr (linus_set_fn.arg.desc (i))); /* fill in calc arg list */ 330 arg_list.arg_des_ptr (i + linus_set_fn.nargs) = 331 addr (linus_set_fn.arg.desc (i)); 332 end; /* arg loop */ 333 arg_desc_ptr = addr (arg_desc); 334 rslt_desc_arg_list.arg_ptrs (1) = addr (arg_desc_ptr); 335 rslt_desc_arg_list.arg_ptrs (2) = addr (linus_set_fn.rslt_desc); 336 call 337 cu_$generate_call (linus_set_fn_info.info_entry, 338 addr (rslt_desc_arg_list)); /* call info ent for rslt. */ 339 if linus_set_fn.rslt_desc = "0"b then /* if couldn't handle this input */ 340 call 341 linus_lila_error (lcb_ptr, lsh_ptr, 342 linus_error_$inv_setfn_args, fn_name); 343 end; /* variable arg function call */ 344 345 num_ptrs = 2; /* set up assign entry arg list */ 346 allocate arg_list in (work_area); 347 linus_set_fn.assign_al_ptr = al_ptr; 348 arg_list.arg_count, arg_list.desc_count = 2; 349 arg_list.code = 4; 350 ef_data.desc = linus_set_fn.rslt_desc; /* set up ef_data while we are at it */ 351 call 352 linus_assign_data ((ef_data.desc), ef_data.assn_type, ef_data.assn_len) 353 ; 354 call 355 linus_lila_alloc_lit (lcb_ptr, addr (ef_data.desc), ef_data.assn_ptr, 356 ef_data.bit_length); 357 if ef_data.assn_ptr = null then 358 call 359 linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$cant_alloc_lit, 360 ""); 361 ef_data.var_name = ""; 362 ef_data.nmrds_items = 0; 363 ef_data.ef_ptr = linus_set_fn_ptr; 364 arg_list.arg_des_ptr (1) = 365 set_arg_ptr (ef_data.assn_ptr, addr (ef_data.desc)); 366 /* back to assign arg list */ 367 arg_list.arg_des_ptr (2) = addr (linus_set_fn.rslt_desc); 368 369 nargs = 3 + select_info.nsevals + select_info.n_mrds_items; 370 num_ptrs = 2 * nargs; /* set up retrieval arg list */ 371 allocate arg_list in (work_area); 372 linus_set_fn.rtrv_al_ptr = al_ptr; 373 arg_list.arg_count, arg_list.desc_count = num_ptrs; 374 arg_list.code = 4; 375 376 arg_list.arg_des_ptr (1) = addr (lcb.db_index); /* data base index */ 377 arg_list.arg_des_ptr (nargs + 1) = addr (FB35D); 378 arg_list.arg_des_ptr (2) = select_info.se_ptr; /* selection expr. */ 379 call 380 linus_lila_alloc_lit (lcb_ptr, addr (BITD), 381 arg_list.arg_des_ptr (nargs + 2), bit_len); 382 if arg_list.arg_des_ptr (nargs + 2) = null then 383 call 384 linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$cant_alloc_lit, 385 ""); 386 char_desc.len = select_info.se_len; 387 arg_list.arg_des_ptr (2 + nargs) -> bit36 = char_desc_bits; 388 if ^select_info.unique_flag /* decide if need to tell MRDS to fetch dups */ 389 | (select_info.unique_flag & select_info.dup_flag) then 390 substr (after (sex, "-select "), 1, 4) = "-dup"; 391 392 do i = 3 to select_info.nsevals + 2; /* add se_val args */ 393 call 394 linus_assign_data (select_info.se_vals.desc_ptr (i - 2) -> bit36, 395 type, len); 396 arg_list.arg_des_ptr (i) = 397 set_arg_ptr (select_info.se_vals.arg_ptr (i - 2), 398 select_info.se_vals.desc_ptr (i - 2)); 399 arg_list.arg_des_ptr (nargs + i) = 400 select_info.se_vals.desc_ptr (i - 2); 401 end; /* adding se_val args */ 402 403 do i = select_info.nsevals + 3 to nargs - 1; /* add retrieval args */ 404 arg_list.arg_des_ptr (i) = 405 set_arg_ptr (select_info.mrds_item 406 .arg_ptr (i - select_info.nsevals - 2), 407 addr (select_info.mrds_item.desc (i - select_info.nsevals - 2))); 408 call 409 linus_lila_alloc_lit (lcb_ptr, addr (BITD), 410 arg_list.arg_des_ptr (nargs + i), bit_len); 411 if arg_list.arg_des_ptr (nargs + i) = null then 412 call 413 linus_lila_error (lcb_ptr, lsh_ptr, 414 linus_error_$cant_alloc_lit, ""); 415 arg_list.arg_des_ptr (nargs + i) -> bit36 = 416 select_info.mrds_item.desc (i - select_info.nsevals - 2); 417 end; /* adding retrieval args */ 418 419 call 420 linus_lila_alloc_lit (lcb_ptr, addr (FB35D), 421 arg_list.arg_des_ptr (nargs), bit_len); /* add code */ 422 if arg_list.arg_des_ptr (nargs) = null then 423 call 424 linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$cant_alloc_lit, 425 ""); 426 arg_list.arg_des_ptr (num_ptrs) = addr (FB35D); 427 428 si_ptr = null; /* we have taken everything out */ 429 430 if lss_ptr ^= null then do; /* if not outer set fn */ 431 linus_set_fn.fwd_ptr = ls_set.si_ptr -> select_info.prior_sf_ptr; 432 /* put this block into chain */ 433 ls_set.si_ptr -> select_info.prior_sf_ptr = linus_set_fn_ptr; 434 end; 435 436 code = 0; 437 return; 438 439 set_arg_ptr: 440 proc (a_ptr, a_desc_ptr) returns (ptr); 441 442 /* procedure to return a valid arg pointer given an internal pointer, i.e. 443* resolves the var. str. problem. */ 444 445 dcl a_ptr ptr; 446 dcl r_ptr ptr; 447 dcl a_desc_ptr ptr; 448 449 if mdbm_util_$varying_data_class (a_desc_ptr) then 450 r_ptr = addrel (a_ptr, 1); 451 else r_ptr = a_ptr; 452 return (r_ptr); 453 454 end set_arg_ptr; 455 456 end linus_lila_set_fn; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/29/86 0939.9 linus_lila_set_fn.pl1 >special_ldd>install>MR12.0-1106>linus_lila_set_fn.pl1 62 1 07/29/86 0937.8 linus_lcb.incl.pl1 >special_ldd>install>MR12.0-1106>linus_lcb.incl.pl1 64 2 09/16/83 1338.0 linus_select_info.incl.pl1 >ldd>include>linus_select_info.incl.pl1 66 3 11/23/82 1327.2 linus_ls_header.incl.pl1 >ldd>include>linus_ls_header.incl.pl1 3-4 4 03/27/82 0434.5 linus_ls_common.incl.pl1 >ldd>include>linus_ls_common.incl.pl1 68 5 03/27/82 0434.5 linus_ls_set.incl.pl1 >ldd>include>linus_ls_set.incl.pl1 5-4 6 03/27/82 0434.5 linus_ls_common.incl.pl1 >ldd>include>linus_ls_common.incl.pl1 70 7 03/27/82 0434.5 linus_ls_block.incl.pl1 >ldd>include>linus_ls_block.incl.pl1 7-4 8 03/27/82 0434.5 linus_ls_common.incl.pl1 >ldd>include>linus_ls_common.incl.pl1 72 9 11/23/82 1327.2 linus_set_fn.incl.pl1 >ldd>include>linus_set_fn.incl.pl1 74 10 11/23/82 1327.2 linus_set_fn_info.incl.pl1 >ldd>include>linus_set_fn_info.incl.pl1 76 11 03/27/82 0434.5 linus_ef_data.incl.pl1 >ldd>include>linus_ef_data.incl.pl1 78 12 03/27/82 0434.5 linus_token_data.incl.pl1 >ldd>include>linus_token_data.incl.pl1 80 13 10/14/83 1609.0 mdbm_arg_list.incl.pl1 >ldd>include>mdbm_arg_list.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. BITD 000000 constant bit(36) initial unaligned dcl 98 set ref 379 379 408 408 DB constant fixed bin(4,0) initial dcl 100 ref 261 EXPRESS constant fixed bin(4,0) initial dcl 101 ref 266 FB35D 000006 constant bit(36) initial unaligned dcl 102 set ref 377 419 419 426 LB constant fixed bin(17,0) initial dcl 12-13 ref 168 MRDS constant fixed bin(17,0) initial dcl 104 ref 254 NULL constant fixed bin(17,0) initial dcl 12-13 ref 172 201 209 217 RB constant fixed bin(17,0) initial dcl 12-13 ref 208 a_desc_ptr parameter pointer dcl 447 set ref 439 449* a_ptr parameter pointer dcl 445 ref 439 449 451 addr builtin function dcl 130 ref 291 291 294 304 304 313 313 316 327 327 330 333 334 335 336 336 354 354 364 364 367 376 377 379 379 387 404 404 408 408 419 419 426 addrel builtin function dcl 130 ref 449 after builtin function dcl 130 ref 388 al_ptr 000120 automatic pointer dcl 13-13 set ref 279* 280 281 281 282 291 294 313 316 327 330 346* 347 348 348 349 364 367 371* 372 373 373 374 376 377 378 379 382 387 396 399 404 408 411 415 419 422 426 arg 32 based structure array level 2 dcl 9-17 arg_assn_len 45 based fixed bin(35,0) array level 3 dcl 9-17 set ref 300* arg_assn_ptr 42 based pointer array level 3 dcl 9-17 set ref 263* 304* 308 313* arg_assn_type 44 based fixed bin(17,0) array level 3 dcl 9-17 set ref 300* arg_count based fixed bin(17,0) level 2 in structure "arg_list" packed unaligned dcl 13-6 in procedure "linus_lila_set_fn" set ref 281* 348* 373* arg_count 000150 automatic fixed bin(17,0) initial level 2 in structure "rslt_desc_arg_list" packed unsigned unaligned dcl 121 in procedure "linus_lila_set_fn" set ref 121* arg_des_ptr 2 based pointer array level 2 dcl 13-6 set ref 291* 294* 313* 316* 327* 330* 364* 367* 376* 377* 378* 379* 382 387 396* 399* 404* 408* 411 415 419* 422 426* arg_desc 40 based bit(36) array level 3 in structure "linus_set_fn" dcl 9-17 in procedure "linus_lila_set_fn" set ref 299* 300 304 304 313 313 316 arg_desc 35 based bit(36) array level 2 in structure "linus_set_fn_info" dcl 10-16 in procedure "linus_lila_set_fn" ref 288 299 arg_desc 000146 automatic structure level 1 dcl 111 in procedure "linus_lila_set_fn" set ref 333 arg_desc_ptr 000142 automatic pointer initial dcl 93 set ref 93* 333* 334 arg_list based structure level 1 unaligned dcl 13-6 set ref 279 346 371 arg_ptr 20 based pointer array level 3 in structure "select_info" dcl 2-5 in procedure "linus_lila_set_fn" set ref 186* 186* 396* arg_ptr based pointer array level 3 in structure "select_info" dcl 2-5 in procedure "linus_lila_set_fn" set ref 191* 404* arg_ptr based pointer level 2 in structure "m_item" dcl 119 in procedure "linus_lila_set_fn" ref 258 arg_ptrs 2 000150 automatic pointer array level 2 dcl 121 set ref 334* 335* assign_al_ptr 20 based pointer level 2 dcl 9-17 set ref 238* 347* assign_entry 12 based entry variable level 2 in structure "linus_set_fn_info" dcl 10-16 in procedure "linus_lila_set_fn" ref 247 assign_entry 4 based entry variable level 2 in structure "linus_set_fn" dcl 9-17 in procedure "linus_lila_set_fn" set ref 247* assign_entry_set 26 based bit(1) level 3 in structure "linus_set_fn" packed unaligned dcl 9-17 in procedure "linus_lila_set_fn" set ref 246* assign_entry_set 32 based bit(1) level 3 in structure "linus_set_fn_info" packed unaligned dcl 10-16 in procedure "linus_lila_set_fn" ref 246 247 assn_len 15 based fixed bin(35,0) level 2 in structure "ef_data" dcl 11-3 in procedure "linus_lila_set_fn" set ref 351* assn_len 37 based fixed bin(35,0) array level 3 in structure "linus_set_fn" dcl 9-17 in procedure "linus_lila_set_fn" set ref 260* 272* assn_len 5 based fixed bin(35,0) level 2 in structure "m_item" dcl 119 in procedure "linus_lila_set_fn" ref 260 assn_ptr 12 based pointer level 2 in structure "ef_data" dcl 11-3 in procedure "linus_lila_set_fn" set ref 354* 357 364* assn_ptr 34 based pointer array level 3 in structure "linus_set_fn" dcl 9-17 in procedure "linus_lila_set_fn" set ref 258* 268* 291* 327* assn_type 36 based fixed bin(17,0) array level 3 in structure "linus_set_fn" dcl 9-17 in procedure "linus_lila_set_fn" set ref 259* 270* assn_type 14 based fixed bin(17,0) level 2 in structure "ef_data" dcl 11-3 in procedure "linus_lila_set_fn" set ref 351* assn_type 4 based fixed bin(17,0) level 2 in structure "m_item" dcl 119 in procedure "linus_lila_set_fn" ref 259 back_ptr 2 based pointer level 2 dcl 7-3 ref 160 bit36 based bit(36) unaligned dcl 105 set ref 387* 393* 415* bit_len 000136 automatic fixed bin(35,0) dcl 86 set ref 304* 379* 408* 419* bit_length 10 based fixed bin(35,0) level 2 dcl 11-3 set ref 354* calc_al_ptr 22 based pointer level 2 dcl 9-17 set ref 238* 280* calc_entry 16 based entry variable level 2 in structure "linus_set_fn_info" dcl 10-16 in procedure "linus_lila_set_fn" ref 241 calc_entry 10 based entry variable level 2 in structure "linus_set_fn" dcl 9-17 in procedure "linus_lila_set_fn" set ref 241* calc_entry_set 32(01) based bit(1) level 3 in structure "linus_set_fn_info" packed unaligned dcl 10-16 in procedure "linus_lila_set_fn" ref 240 241 calc_entry_set 26(01) based bit(1) level 3 in structure "linus_set_fn" packed unaligned dcl 9-17 in procedure "linus_lila_set_fn" set ref 240* call_type 0(18) 000150 automatic fixed bin(18,0) initial level 2 packed unsigned unaligned dcl 121 set ref 121* char_desc 000146 automatic structure level 1 dcl 115 set ref 387 char_desc_bits based bit(36) unaligned dcl 106 ref 387 code 0(18) based fixed bin(17,0) level 2 in structure "arg_list" packed unaligned dcl 13-6 in procedure "linus_lila_set_fn" set ref 282* 349* 374* code parameter fixed bin(35,0) dcl 86 in procedure "linus_lila_set_fn" set ref 18 436* const 000146 automatic bit(12) initial level 2 packed unaligned dcl 115 set ref 115* cu_$generate_call 000036 constant entry external dcl 149 ref 336 cur_pos 13 based fixed bin(35,0) level 2 dcl 3-3 set ref 163* 202* cur_ptr 6 based pointer level 2 dcl 3-3 ref 159 db_index based fixed bin(35,0) level 2 dcl 1-53 set ref 376 desc 11 based bit(36) level 2 in structure "ef_data" dcl 11-3 in procedure "linus_lila_set_fn" set ref 350* 351 354 354 364 364 desc 1 000146 automatic bit(36) array level 2 in structure "arg_desc" dcl 111 in procedure "linus_lila_set_fn" set ref 326* desc 33 based bit(36) array level 3 in structure "linus_set_fn" dcl 9-17 in procedure "linus_lila_set_fn" set ref 257* 267* 288 291 291 294 326 327 327 330 desc 3 based bit(36) level 2 in structure "m_item" dcl 119 in procedure "linus_lila_set_fn" ref 257 desc based bit(36) array level 3 in structure "select_info" dcl 2-5 in procedure "linus_lila_set_fn" set ref 404 404 415 desc_count 1 based fixed bin(17,0) level 2 in structure "arg_list" packed unaligned dcl 13-6 in procedure "linus_lila_set_fn" set ref 281* 348* 373* desc_count 1 000150 automatic fixed bin(17,0) initial level 2 in structure "rslt_desc_arg_list" packed unsigned unaligned dcl 121 in procedure "linus_lila_set_fn" set ref 121* desc_ptr 22 based pointer array level 3 dcl 2-5 set ref 393 396* 399 dup_flag 0(05) based bit(1) level 2 packed unaligned dcl 2-5 ref 388 ed_ptr parameter pointer dcl 11-22 ref 18 350 351 351 351 354 354 354 354 357 361 362 363 364 364 364 ef_data based structure level 1 dcl 11-3 ef_ptr based pointer level 2 in structure "ef_data" dcl 11-3 in procedure "linus_lila_set_fn" set ref 363* ef_ptr 46 based pointer array level 3 in structure "linus_set_fn" dcl 9-17 in procedure "linus_lila_set_fn" set ref 262* 274* flags 26 based structure level 2 in structure "linus_set_fn" dcl 9-17 in procedure "linus_lila_set_fn" flags 32 based structure level 2 in structure "linus_set_fn_info" dcl 10-16 in procedure "linus_lila_set_fn" fn_name 000123 automatic char(32) unaligned dcl 82 set ref 162* 219 225* 230* 339* fwd_ptr based pointer level 2 in structure "linus_set_fn_info" dcl 10-16 in procedure "linus_lila_set_fn" ref 219 223 fwd_ptr based pointer level 2 in structure "linus_set_fn" dcl 9-17 in procedure "linus_lila_set_fn" set ref 250* 431* i 000133 automatic fixed bin(17,0) dcl 84 set ref 178* 179 180* 184* 185 186 186* 189* 190 191* 193* 194 194* 253* 254 256 257 258 259 260 261 262 263 266 267 267 268 268 270 270 272 272 274 274* 287* 288 288 291 291 291 291 294 294 299 299 300 300 300 304 304 304 308 313 313 313 313 316 316* 324* 325 326 326 327 327 327 327 330 330* 392* 393 396 396 396 399 399* 403* 404 404 404 404 408 411 415 415* icode 000137 automatic fixed bin(35,0) dcl 86 set ref 163* 166 166* 197* 199 199* 202* 205 205* info_entry 22 based entry variable level 2 dcl 10-16 set ref 336* init_entry 14 based entry variable level 2 in structure "linus_set_fn" dcl 9-17 in procedure "linus_lila_set_fn" set ref 244* init_entry 26 based entry variable level 2 in structure "linus_set_fn_info" dcl 10-16 in procedure "linus_lila_set_fn" ref 244 init_entry_set 26(02) based bit(1) level 3 in structure "linus_set_fn" packed unaligned dcl 9-17 in procedure "linus_lila_set_fn" set ref 243* init_entry_set 32(03) based bit(1) level 3 in structure "linus_set_fn_info" packed unaligned dcl 10-16 in procedure "linus_lila_set_fn" ref 243 244 initial_number_of_linus_set_fn_args 000112 automatic fixed bin(17,0) dcl 9-54 set ref 235* 237 237 item_ptr based pointer array level 3 dcl 2-5 set ref 194* 256 274 item_type based fixed bin(17,0) array level 3 dcl 2-5 set ref 254 key based fixed bin(17,0) level 2 packed unaligned dcl 12-3 set ref 168 172* 201 208 209 217* lcb based structure level 1 dcl 1-53 lcb_ptr parameter pointer dcl 1-121 set ref 18 163* 166* 168* 176 197* 199* 202* 205* 209* 213* 219 225* 230* 237 279 304* 308* 339* 346 354* 357* 371 376 379* 382* 408* 411* 419* 422* len 000140 automatic fixed bin(35,0) dcl 86 in procedure "linus_lila_set_fn" set ref 393* len 0(12) 000146 automatic fixed bin(23,0) level 2 in structure "char_desc" packed unaligned dcl 115 in procedure "linus_lila_set_fn" set ref 386* length 23 based fixed bin(35,0) level 2 dcl 12-3 ref 162 166 166 168 168 199 199 205 205 213 213 lila_area_ptr 62 based pointer level 2 dcl 1-53 ref 176 237 279 346 371 linus_assign_data 000050 constant entry external dcl 154 ref 300 351 393 linus_data_$max_expr_items 000026 external static fixed bin(35,0) dcl 132 ref 363 linus_data_$max_lvars 000032 external static fixed bin(35,0) dcl 132 ref 175 linus_data_$max_range_items 000030 external static fixed bin(35,0) dcl 132 ref 175 linus_data_$max_set_stack_size 000024 external static fixed bin(35,0) dcl 132 ref 431 433 linus_data_$max_user_items 000022 external static fixed bin(35,0) dcl 132 ref 111 174 linus_error_$cant_alloc_lit 000014 external static fixed bin(35,0) dcl 132 set ref 308* 357* 382* 411* 422* linus_error_$inv_setfn_args 000016 external static fixed bin(35,0) dcl 132 set ref 339* linus_error_$inv_setfn_set 000012 external static fixed bin(35,0) dcl 132 set ref 230* linus_error_$setfn_nargs 000010 external static fixed bin(35,0) dcl 132 set ref 225* linus_error_$setfn_syntax 000020 external static fixed bin(35,0) dcl 132 set ref 168* 209* 213* linus_lila_alloc_lit 000044 constant entry external dcl 152 ref 304 354 379 408 419 linus_lila_error 000042 constant entry external dcl 151 ref 166 168 199 205 209 213 225 230 308 339 357 382 411 422 linus_lila_get_token 000046 constant entry external dcl 153 ref 163 202 linus_lila_set 000040 constant entry external dcl 150 ref 197 linus_set_fn based structure level 1 dcl 9-17 set ref 237 linus_set_fn_info based structure level 1 dcl 10-16 linus_set_fn_info_ptr 000116 automatic pointer dcl 10-35 set ref 219* 219 219* 223 225 225 240 241 241 243 244 244 246 247 247 284 285 288 299 336 linus_set_fn_ptr 000114 automatic pointer dcl 9-55 set ref 157* 237* 238 238 238 240 241 243 244 246 247 249 250 251 257 258 259 260 261 262 263 266 267 268 270 272 274 278 280 285 287 288 290 291 291 291 294 294 298 299 300 300 300 304 304 304 308 313 313 313 316 316 323 324 325 326 327 327 327 330 330 335 339 347 350 363 367 372 431 433 ls_block based structure level 1 dcl 7-3 ls_header based structure level 1 dcl 3-3 ls_set based structure level 1 dcl 5-3 lsb_ptr 000110 automatic pointer dcl 7-32 set ref 159* 160 lsh_ptr parameter pointer dcl 3-15 set ref 18 159 163* 163 166* 168* 197* 199* 202* 202 205* 209* 213* 225* 230* 308* 339* 357* 382* 411* 422* lss_ptr 000106 automatic pointer dcl 5-33 set ref 160* 430 431 433 m_item based structure level 1 dcl 119 mdbm_util_$varying_data_class 000052 constant entry external dcl 155 ref 449 mi_ptr 000144 automatic pointer initial dcl 93 set ref 93* 256* 257 258 259 260 mrds_data_$max_select_items 000034 external static fixed bin(35,0) dcl 132 ref 173 431 433 mrds_item based structure array level 2 dcl 2-5 set ref 190* must_convert 32(05) based bit(1) array level 3 packed unaligned dcl 9-17 set ref 290* 298* 325* n_mrds_items 16 based fixed bin(17,0) level 2 dcl 2-5 ref 369 n_user_items 17 based fixed bin(17,0) level 2 dcl 2-5 ref 225 235 251 253 name 2 based char(32) level 2 in structure "linus_set_fn_info" dcl 10-16 in procedure "linus_lila_set_fn" ref 219 name based varying char(32) array level 3 in structure "select_info" dcl 2-5 in procedure "linus_lila_set_fn" set ref 180* nargs 000135 automatic fixed bin(17,0) dcl 84 in procedure "linus_lila_set_fn" set ref 369* 370 377 379 382 387 399 403 408 411 415 419 422 nargs 34 based fixed bin(17,0) level 2 in structure "linus_set_fn_info" dcl 10-16 in procedure "linus_lila_set_fn" ref 225 225 284 nargs 30 based fixed bin(17,0) level 2 in structure "linus_set_fn" dcl 9-17 in procedure "linus_lila_set_fn" set ref 237* 251* 278 287 290 294 298 316 323 324 330 ndescs 000146 automatic fixed bin(17,0) level 2 dcl 111 set ref 323* nmi_alloc 13 based fixed bin(17,0) level 2 dcl 2-5 set ref 176* 179 180 194 194 254 256 267 268 270 272 274 nmi_init 000101 automatic fixed bin(17,0) dcl 2-48 set ref 173* 176 176 189 nmrds_items 16 based fixed bin(17,0) level 2 dcl 11-3 set ref 362* nsevals 15 based fixed bin(17,0) level 2 dcl 2-5 ref 369 392 403 404 404 404 415 nsv_alloc 12 based fixed bin(17,0) level 2 dcl 2-5 set ref 176* 179 180 190 191 194 194 254 256 267 268 270 272 274 404 404 404 415 nsv_init 000100 automatic fixed bin(17,0) dcl 2-48 set ref 175* 176 176 184 nui_alloc 14 based fixed bin(17,0) level 2 dcl 2-5 set ref 176* 178 nui_init 000102 automatic fixed bin(17,0) dcl 2-48 set ref 174* 176 176 193 null builtin function dcl 130 ref 93 93 157 182 186 191 194 219 238 250 262 263 308 357 382 411 422 428 430 num_ptrs 000122 automatic fixed bin(17,0) dcl 13-14 set ref 278* 279 281 345* 346 370* 371 373 426 pad1 0(17) 000150 automatic bit(1) initial level 2 packed unaligned dcl 121 set ref 121* pad2 1(17) 000150 automatic bit(19) initial level 2 packed unaligned dcl 121 set ref 121* prior_ptr 2 based pointer level 2 dcl 9-17 set ref 249* prior_sf_ptr 2 based pointer level 2 dcl 2-5 set ref 182* 249 431 433* r_ptr 000200 automatic pointer dcl 446 set ref 449* 451* 452 rslt_assn_len based fixed bin(35,0) array level 3 dcl 2-5 set ref 272 rslt_assn_ptr based pointer array level 3 dcl 2-5 set ref 194* 268 rslt_assn_type based fixed bin(17,0) array level 3 dcl 2-5 set ref 270 rslt_desc 33 based bit(36) level 2 in structure "linus_set_fn_info" dcl 10-16 in procedure "linus_lila_set_fn" ref 285 rslt_desc based bit(36) array level 3 in structure "select_info" dcl 2-5 in procedure "linus_lila_set_fn" set ref 267 rslt_desc 27 based bit(36) level 2 in structure "linus_set_fn" dcl 9-17 in procedure "linus_lila_set_fn" set ref 285* 335 339 350 367 rslt_desc_arg_list 000150 automatic structure level 1 dcl 121 set ref 336 336 rtrv_al_ptr 24 based pointer level 2 dcl 9-17 set ref 238* 372* se_flags 0(01) based structure level 2 packed unaligned dcl 2-5 set ref 177* se_len 11 based fixed bin(35,0) level 2 dcl 2-5 ref 386 388 se_ptr 4 based pointer level 2 dcl 2-5 set ref 182* 378 388 se_vals 20 based structure array level 2 dcl 2-5 set ref 185* sel_items_ptr 6 based pointer level 2 dcl 2-5 set ref 182* select_info based structure level 1 dcl 2-5 set ref 176 setfi_ptr 36 based pointer level 2 dcl 1-53 ref 219 sex based char unaligned dcl 107 set ref 388* si_ptr 000104 automatic pointer dcl 2-49 in procedure "linus_lila_set_fn" set ref 157* 176* 177 178 179 180 182 182 182 185 186 186 190 191 194 194 197* 225 230 235 249 251 253 254 256 267 268 270 272 274 369 369 378 386 388 388 388 388 388 392 393 396 396 399 403 404 404 404 404 404 404 415 415 428* si_ptr based pointer level 2 in structure "ls_set" dcl 5-3 in procedure "linus_lila_set_fn" ref 431 433 substr builtin function dcl 130 set ref 388* t_ptr 24 based pointer level 2 dcl 12-3 ref 162 166 168 199 205 213 td_ptr parameter pointer dcl 12-49 set ref 18 162 162 163* 166 166 166 168 168 168 168 172 197* 199 199 199 201 202* 205 205 205 208 209 213 213 213 217 token based char unaligned dcl 108 set ref 162 166* 168* 199* 205* 213* token_data based structure level 1 dcl 12-3 type 32 based fixed bin(4,0) array level 3 in structure "linus_set_fn" packed unaligned dcl 9-17 in procedure "linus_lila_set_fn" set ref 261* 266* type 000134 automatic fixed bin(17,0) dcl 84 in procedure "linus_lila_set_fn" set ref 393* unique_flag 0(06) based bit(1) level 2 packed unaligned dcl 2-5 ref 388 388 unspec builtin function dcl 130 set ref 177* 179* 185* 190* user_item based structure array level 2 dcl 2-5 set ref 179* val_ret 0(01) based bit(1) level 3 packed unaligned dcl 2-5 set ref 230 var_name based char(32) level 2 dcl 11-3 set ref 361* work_area based area dcl 109 ref 176 237 279 346 371 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. AND internal static fixed bin(17,0) initial dcl 12-13 COL_SPEC internal static fixed bin(17,0) initial dcl 12-13 COMMA internal static fixed bin(17,0) initial dcl 12-13 CONST internal static fixed bin(17,0) initial dcl 12-13 DIFFER internal static fixed bin(17,0) initial dcl 12-13 DIV internal static fixed bin(17,0) initial dcl 12-13 DUP internal static fixed bin(17,0) initial dcl 12-13 EQ internal static fixed bin(17,0) initial dcl 12-13 FROM internal static fixed bin(17,0) initial dcl 12-13 GE internal static fixed bin(17,0) initial dcl 12-13 GT internal static fixed bin(17,0) initial dcl 12-13 INTER internal static fixed bin(17,0) initial dcl 12-13 LE internal static fixed bin(17,0) initial dcl 12-13 LINUS_VAR internal static fixed bin(17,0) initial dcl 12-13 LP internal static fixed bin(17,0) initial dcl 12-13 LT internal static fixed bin(17,0) initial dcl 12-13 MINUS internal static fixed bin(17,0) initial dcl 12-13 NE internal static fixed bin(17,0) initial dcl 12-13 NOT internal static fixed bin(17,0) initial dcl 12-13 OR internal static fixed bin(17,0) initial dcl 12-13 PLUS internal static fixed bin(17,0) initial dcl 12-13 ROW_DES internal static fixed bin(17,0) initial dcl 12-13 ROW_TAB_PAIR internal static fixed bin(17,0) initial dcl 12-13 RP internal static fixed bin(17,0) initial dcl 12-13 SCAL_FN internal static fixed bin(17,0) initial dcl 12-13 SELECT internal static fixed bin(17,0) initial dcl 12-13 SET_FN internal static fixed bin(17,0) initial dcl 12-13 STAR internal static fixed bin(17,0) initial dcl 12-13 TAB_NAME internal static fixed bin(17,0) initial dcl 12-13 UNION internal static fixed bin(17,0) initial dcl 12-13 UNIQUE internal static fixed bin(17,0) initial dcl 12-13 WHERE internal static fixed bin(17,0) initial dcl 12-13 fixed builtin function dcl 130 initial_number_of_set_fn_info_args automatic fixed bin(17,0) dcl 10-36 linus_data_$max_pred_stack_size external static fixed bin(35,0) dcl 132 mrds_data_$max_token_size external static fixed bin(35,0) dcl 132 rel builtin function dcl 130 sys_info$max_seg_size external static fixed bin(35,0) dcl 132 NAMES DECLARED BY EXPLICIT CONTEXT. linus_lila_set_fn 000021 constant entry external dcl 18 set_arg_ptr 002571 constant entry internal dcl 439 ref 291 313 327 364 396 404 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3100 3154 2627 3110 Length 3664 2627 54 473 251 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_lila_set_fn 176 external procedure is an external procedure. set_arg_ptr internal procedure shares stack frame of external procedure linus_lila_set_fn. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME linus_lila_set_fn 000100 nsv_init linus_lila_set_fn 000101 nmi_init linus_lila_set_fn 000102 nui_init linus_lila_set_fn 000104 si_ptr linus_lila_set_fn 000106 lss_ptr linus_lila_set_fn 000110 lsb_ptr linus_lila_set_fn 000112 initial_number_of_linus_set_fn_args linus_lila_set_fn 000114 linus_set_fn_ptr linus_lila_set_fn 000116 linus_set_fn_info_ptr linus_lila_set_fn 000120 al_ptr linus_lila_set_fn 000122 num_ptrs linus_lila_set_fn 000123 fn_name linus_lila_set_fn 000133 i linus_lila_set_fn 000134 type linus_lila_set_fn 000135 nargs linus_lila_set_fn 000136 bit_len linus_lila_set_fn 000137 icode linus_lila_set_fn 000140 len linus_lila_set_fn 000142 arg_desc_ptr linus_lila_set_fn 000144 mi_ptr linus_lila_set_fn 000146 arg_desc linus_lila_set_fn 000146 char_desc linus_lila_set_fn 000150 rslt_desc_arg_list linus_lila_set_fn 000200 r_ptr set_arg_ptr THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return alloc_auto_adj mpfx2 ext_entry set_cs_eis alloc_based index_after_cs THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$generate_call linus_assign_data linus_lila_alloc_lit linus_lila_error linus_lila_get_token linus_lila_set mdbm_util_$varying_data_class THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. linus_data_$max_expr_items linus_data_$max_lvars linus_data_$max_range_items linus_data_$max_set_stack_size linus_data_$max_user_items linus_error_$cant_alloc_lit linus_error_$inv_setfn_args linus_error_$inv_setfn_set linus_error_$setfn_nargs linus_error_$setfn_syntax mrds_data_$max_select_items LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000014 93 000026 111 000031 115 000036 121 000040 157 000056 159 000061 160 000066 162 000070 163 000077 166 000115 168 000151 172 000207 173 000214 174 000217 175 000221 176 000225 177 000257 178 000261 179 000267 180 000310 181 000311 182 000313 184 000320 185 000327 186 000335 188 000340 189 000342 190 000351 191 000364 192 000367 193 000371 194 000401 196 000426 197 000430 199 000450 201 000504 202 000511 205 000532 208 000566 209 000574 213 000623 217 000653 219 000660 223 000675 225 000700 230 000732 235 000762 237 000765 238 001001 240 001005 241 001012 243 001022 244 001030 246 001037 247 001043 249 001052 250 001055 251 001057 253 001062 254 001071 256 001113 257 001120 258 001125 259 001127 260 001132 261 001134 262 001140 263 001142 264 001143 266 001144 267 001153 268 001161 270 001166 272 001173 274 001211 276 001216 278 001220 279 001224 280 001236 281 001240 282 001247 284 001251 285 001254 287 001256 288 001265 290 001275 291 001311 294 001330 296 001341 298 001342 299 001355 300 001362 304 001376 308 001421 313 001454 316 001475 319 001506 320 001510 323 001511 324 001513 325 001523 326 001527 327 001532 330 001551 332 001562 333 001564 334 001566 335 001570 336 001573 339 001607 345 001637 346 001641 347 001653 348 001655 349 001660 350 001662 351 001667 354 001703 357 001725 361 001760 362 001766 363 001767 364 001777 367 002016 369 002022 370 002027 371 002031 372 002043 373 002045 374 002054 376 002056 377 002062 378 002066 379 002071 382 002112 386 002145 387 002150 388 002156 392 002202 393 002213 396 002231 399 002247 401 002260 403 002262 404 002275 408 002331 411 002355 415 002407 417 002430 419 002432 422 002455 426 002507 428 002513 430 002515 431 002520 433 002562 436 002566 437 002570 439 002571 449 002573 451 002615 452 002621 ----------------------------------------------------------- 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