COMPILATION LISTING OF SEGMENT linus_translate_query Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 07/29/86 0959.3 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_translate_query: 19 proc (sci_ptr, arg_lcb_ptr); 20 21 /* DESCRIPTION: 22* 23* This is the top level procedure of the LILA translator for LINUS. This 24* procedure deletes the previous MRDS selection expression (if any), sets up 25* the LILA stack header, places the LILA source into a single character 26* string, and calls a procedure to process a set value or a LILA set, 27* whichever is appropriate. The result of this procedure is a select_info 28* structure suitable for use by data base access requests. 29* 30* 31* 32* HISTORY: 33* 34* 77-07-01 J. A. Weeldreyer: Initially written. 35* 36* 78-03-01 J. A. Weeldreyer: Modified to give better error message. 37* 38* 78-03-02 J. A. Weeldreyer: Modified to check ending token. 39* 40* 80-03-13 Rickie E. Brinegar: Modified to use a work area based on 41* lcb.lila_area_ptr rather than getting system free area. 42* 43* 81-10-07 Rickie E. Brinegar: changed to set ls_header.(from_token 44* reserved) to "0"b. This is in response to TR11628. 45* 46* 81-10-07 Rickie E. Brinegar: changed the name of this module from 47* linus_translate to linus_lila_translate as only linus_lila calls it and its 48* purpose in life is to translate a LILA selection expression into a MRDS 49* selection expression. 50* 51* 81-11-06 Rickie E. Brinegar: Change to allocate the selection expression 52* in the lila temporary segment which has its header reset each time the 53* linus lila proc request is issued. Removed calls to linus_free_se as the 54* selection expression is now allocated in the lila area. 55* 56* 82-06-22 Dave J. Schimke: added if-then conditionals to the initialization 57* of select_info.se_vals, select_info.mrds_item, and select_info.user_item to 58* avoid stringrange errors when the extents of the arrays are zero. 59* 60* 82-06-24 Al Dupuis: added code to increment 61* lcb.selection_expression_identifier after sucessful proc'ing of lila 62* select clause. 63* 64* 82-11-15 Dave Schimke: Declared unspec builtin. 65* 66* 83-08-29 Bert Moberg: Changed to linus_translate_query and added the entry 67* point proc for lila 68* 69* 83-08-31 Al Dupuis: Added the setting of error code to 70* linus_error_$no_llila_data or linus_error_$no_current_query depending on 71* whether this was called via "translate_query" or lila "proc". 72**/ 73 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 */ 74 75 2 1 /* BEGIN INCLUDE FILE linus_lit_string.incl.pl1 -- jaw 7/1/77 */ 2 2 2 3 dcl lit_string bit (linus_data_$lit_string_size) based (lcb.lit_ptr); 2 4 2 5 dcl lit_array (0:linus_data_$lit_string_size - 1) bit (1) unal based (lcb.lit_ptr); 2 6 2 7 /* END INCLUDE FILE linus_lit_string.incl.pl1 */ 76 77 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 */ 78 79 5 1 /* BEGIN INCLUDE FILE linus_select_info.incl.pl1 */ 5 2 /* History: 77-07-29 J. A. Weeldreyer: Originally written. 5 3* Modified: 82-18-82 Dave Schimke: Added user_item.table_name 5 4**/ 5 5 dcl 1 select_info aligned based (si_ptr), /* info from LILA select clause */ 5 6 2 set_fn bit (1) unal, /* on if set fn to be applied */ 5 7 2 se_flags unal, /* flags pertaining to selection expr. */ 5 8 3 val_ret bit (1) unal, /* valid for retrieval */ 5 9 3 val_dtt bit (1) unal, /* valid for define_temp_table */ 5 10 3 val_del bit (1) unal, /* valid for delete */ 5 11 3 val_mod bit (1) unal, /* valid for modify */ 5 12 2 dup_flag bit (1) unal, /* on if dup explic. spec. somewhere */ 5 13 2 unique_flag bit (1) unal, /* on if unique explic. spec. somewhere */ 5 14 2 pad bit (29) unal, /* reserved */ 5 15 2 prior_sf_ptr ptr, /* pointer to set fns for prior eval. */ 5 16 2 se_ptr ptr, /* pointer to mrds selection expression */ 5 17 2 sel_items_ptr ptr, /* pointer to list of selected items */ 5 18 2 sel_items_len fixed bin, /* length in characters of list of selected items */ 5 19 2 se_len fixed bin (35), /* length of mrds sel. expr. */ 5 20 2 nsv_alloc fixed bin, /* no. of se. vals aloc. */ 5 21 2 nmi_alloc fixed bin, /* no. of mrds items alloc. */ 5 22 2 nui_alloc fixed bin, /* no. of user items alloc. */ 5 23 2 nsevals fixed bin, /* number of selection expr. vaules */ 5 24 2 n_mrds_items fixed bin, /* no. of items in mrds select list */ 5 25 2 n_user_items fixed bin, /* no. of items user will see */ 5 26 2 se_vals (nsv_init refer (select_info.nsv_alloc)), 5 27 3 arg_ptr ptr, 5 28 3 desc_ptr ptr, 5 29 2 mrds_item (nmi_init refer (select_info.nmi_alloc)), /* mrds select items */ 5 30 3 arg_ptr ptr, /* pointer to receiving field */ 5 31 3 bit_len fixed bin (35), /* bit length of receiving field */ 5 32 3 desc bit (36), /* descriptor for receiving field */ 5 33 3 assn_type fixed bin, /* type code for assign_ */ 5 34 3 assn_len fixed bin (35), /* length for assign_ */ 5 35 2 user_item (nui_init refer (select_info.nui_alloc)), /* user select item */ 5 36 3 name char (32) var, /* name for col. header */ 5 37 3 table_name char (32) var, /* name of containing linus table */ 5 38 3 item_type fixed bin, /* indicates type of item: 5 39* 1 => raw mrds, 5 40* 2 => expr. */ 5 41 3 rslt_desc bit (36), /* descriptor for expr. result */ 5 42 3 rslt_bit_len fixed bin (35), /* bit length of expr. result */ 5 43 3 rslt_assn_ptr ptr, /* pointer to expr. result storage loc. */ 5 44 3 rslt_assn_type fixed bin, /* assign_ type code of expr. result */ 5 45 3 rslt_assn_len fixed bin (35), /* assign_ length for expr. result */ 5 46 3 item_ptr ptr; /* pointer to item or expr. or applied set_func. structure */ 5 47 5 48 dcl (nsv_init, nmi_init, nui_init) fixed bin; 5 49 dcl si_ptr ptr; 5 50 5 51 /* END INCLUDE FILE linus_select_info.incl.pl1 */ 80 81 6 1 /* BEGIN INCLUDE FILE linus_source.incl.pl1 -- jaw 7/12/77 */ 6 2 6 3 dcl source_str char (lcb.lila_chars) based (ls_header.src_ptr); 6 4 dcl source_array (lcb.lila_chars) char (1) based (ls_header.src_ptr); 6 5 6 6 /* END INCLUDE FILE linus_source.incl.pl1 */ 82 83 7 1 /* BEGIN INCLUDE FILE linus_ef_data.incl.pl1 -- jaw 7/21/77 */ 7 2 7 3 dcl 1 ef_data aligned based (ed_ptr), /* structure for passing expr. and fun. data among programs */ 7 4 2 var_name char (32), /* name of tuple variable */ 7 5 2 bit_length fixed bin (35), /* bit length of result */ 7 6 2 desc bit (36), /* descriptor of result */ 7 7 2 assn_ptr ptr, /* pointer to result value */ 7 8 2 assn_type fixed bin, /* assign_ type code of result */ 7 9 2 assn_len fixed bin (35), /* assign_ length */ 7 10 2 nmrds_items fixed bin, /* number of mrds items returned */ 7 11 2 mrds_items (linus_data_$max_expr_items), /* previously unselected mrds items referenced 7 12* in the expression */ 7 13 3 attr_name char (32), /* name of attribute */ 7 14 3 domain_name char (32), /* domain of attribute */ 7 15 3 bit_length fixed bin (35), /* attrib. bit length */ 7 16 3 desc bit (36), /* attrib. descriptor */ 7 17 3 assn_ptr ptr, /* pointer to receiving field of attr. */ 7 18 3 assn_type fixed bin, /* assign_ type code of attr */ 7 19 3 assn_len fixed bin (35), /* assign_ length for attr. */ 7 20 2 ef_ptr ptr; /* pointer to expr. status */ 7 21 7 22 dcl ed_ptr ptr; 7 23 7 24 /* END INCLUDE FILE linus_ef_data.incl.pl1 */ 84 85 8 1 /* BEGIN INCLUDE FILE -- linus_rel_array.incl.pl1 -- reb 09/09/80 8 2* 8 3* 80-09-09 Rickie E. Brinegar: Initially written. 8 4* 8 5* 81-01-29 Rickie E. Brinegar: changed to comform to standards for include 8 6* files. 8 7* 8 8**/ 8 9 8 10 dcl 1 linus_rel_array based (linus_rel_array_ptr), 8 11 2 num_of_rels fixed bin, 8 12 2 rels (num_of_rels_init refer (linus_rel_array.num_of_rels)), 8 13 3 rel_name char (32), 8 14 3 rslt_info_ptr ptr; 8 15 8 16 dcl linus_rel_array_ptr ptr; 8 17 8 18 dcl num_of_rels_init fixed bin init (0); 8 19 8 20 /* END INCLUDE FILE linus_rel_array.incl.pl1 */ 8 21 86 87 9 1 /* BEGIN INCLUDE FILE linus_token_data.incl.pl1 -- jaw 8/7/78 */ 9 2 9 3 dcl 1 token_data aligned based (td_ptr), /* data for lila tokens */ 9 4 2 key fixed bin (17) unal, /* key of token */ 9 5 2 must_free bit (1) unal, /* on if value must be freed */ 9 6 2 temp_tab bit (1) unal, /* on if temporary table */ 9 7 2 reserved bit (16) unal, 9 8 2 mvar char (32) var, /* mrds variable if identifier */ 9 9 2 lvar char (32) var, /* linus variable if identifier */ 9 10 2 length fixed bin (35), /* char length of token value */ 9 11 2 t_ptr ptr; /* points to token value */ 9 12 9 13 dcl ((NULL init (0)), 9 14 (RP init (1)), 9 15 (COL_SPEC init (2)), 9 16 (LINUS_VAR init (3)), 9 17 (CONST init (4)), 9 18 (SET_FN init (5)), 9 19 (SCAL_FN init (6)), 9 20 (LP init (7)), 9 21 (STAR init (8)), 9 22 (DIV init (9)), 9 23 (PLUS init (10)), 9 24 (MINUS init (11)), 9 25 (TAB_NAME init (12)), 9 26 (ROW_TAB_PAIR init (13)), 9 27 (UNION init (14)), 9 28 (INTER init (15)), 9 29 (DIFFER init (16)), 9 30 (ROW_DES init (17)), 9 31 (LB init (18)), 9 32 (RB init (19)), 9 33 (SELECT init (20)), 9 34 (NOT init (21)), 9 35 (AND init (22)), 9 36 (OR init (23)), 9 37 (EQ init (24)), 9 38 (NE init (25)), 9 39 (GT init (26)), 9 40 (GE init (27)), 9 41 (LT init (28)), 9 42 (LE init (29)), 9 43 (FROM init (30)), 9 44 (WHERE init (31)), 9 45 (DUP init (32)), 9 46 (UNIQUE init (33)), 9 47 (COMMA init (34))) fixed bin int static options (constant); 9 48 9 49 dcl td_ptr ptr; 9 50 9 51 /* END INCLUDE FILE linus_token_data.incl.pl1 */ 88 89 10 1 /* BEGIN INCLUDE FILE linus_set_fn.incl.pl1 -- jaw 7/13/77 10 2* 10 3* 81-10-26 Rickie E. Brinegar: Modified to have entry variables instead of 10 4* entry pointers. This change included the addition of bit switches inorder 10 5* to be able to tell if the entry variable had been set yet. Also changed 10 6* the name of the structure from set_fn to linus_set_fn and the name of the 10 7* variable that it was based on from setf_ptr to linus_set_fn_ptr. 10 8* 10 9* 81-11-05 Rickie E. Brinegar: Changed the entry pointers to entry variables 10 10* and added bit switches to determine when the entries have or have not been 10 11* set. Renamed set_fn sturcture to linus_set_fn, setf_ptr to 10 12* linus_set_fn_ptr, and nset_fn_init_args to 10 13* initial_number_of_linus_set_fn_args. 10 14* 10 15**/ 10 16 10 17 dcl 1 linus_set_fn aligned based (linus_set_fn_ptr), /* internal rep. of set fun. */ 10 18 2 fwd_ptr ptr, /* pointer to next set function to be eval. 10 19* at this level */ 10 20 2 prior_ptr ptr, /* pointer to head of list of set functions 10 21* to be evaluated prior to this one */ 10 22 2 assign_entry entry variable, /* pointer to assign entry */ 10 23 2 calc_entry entry variable, /* pointer to calc entry */ 10 24 2 init_entry entry variable, /* pointer to initialization entry */ 10 25 2 assign_al_ptr ptr, /* pointer to assign entry arg list */ 10 26 2 calc_al_ptr ptr, /* pointer to calc entry arg list */ 10 27 2 rtrv_al_ptr ptr, /* pointer to arg list for dsl_$retrieve */ 10 28 2 flags, 10 29 3 assign_entry_set bit (1) unaligned, /* 0 => null, 1 => not null */ 10 30 3 calc_entry_set bit (1) unaligned, /* 0 => null, 1 => not null */ 10 31 3 init_entry_set bit (1) unaligned, /* 0 => null, 1 => not null */ 10 32 3 pad_bits bit (33) unaligned, 10 33 2 rslt_desc bit (36), /* descriptor for result */ 10 34 2 nargs fixed bin, /* number of input args to calc entry */ 10 35 2 arg (initial_number_of_linus_set_fn_args refer (linus_set_fn.nargs)), 10 36 3 type fixed bin (4) unal, /* 1 => constant 10 37* 2 => linus variable 10 38* 3 => scalar function 10 39* 4 => set function 10 40* 5 => expression 10 41* 6 => data base item */ 10 42 3 must_convert bit (1) unal, /* on if must convert prior to call */ 10 43 3 reserved bit (30) unal, 10 44 3 desc bit (36), /* descriptor of source data */ 10 45 3 assn_ptr ptr, /* assign_ ptr for source data */ 10 46 3 assn_type fixed bin, /* assign_ type for source data */ 10 47 3 assn_len fixed bin (35), /* assign_ length for source data */ 10 48 3 arg_desc bit (36), /* descriptor for converted arg */ 10 49 3 arg_assn_ptr ptr, /* assign_ ptr for converted arg */ 10 50 3 arg_assn_type fixed bin, /* assign_ type code for converted arg */ 10 51 3 arg_assn_len fixed bin (35), /* assign_ length for converted arg */ 10 52 3 ef_ptr ptr; /* pointer to express. or function structure */ 10 53 10 54 dcl initial_number_of_linus_set_fn_args fixed bin; 10 55 dcl linus_set_fn_ptr ptr; 10 56 10 57 /* END INCLUDE FILE linus_set_fn.incl.pl1 */ 90 91 92 dcl (sci_ptr, arg_lcb_ptr) ptr; 93 94 dcl called_from_lila bit (1); 95 dcl nargs fixed; 96 97 dcl ( 98 code, /* Output: kill flag */ 99 icode, /* internal status code */ 100 source_pos 101 ) fixed bin (35); /* curr. pos. while making source str. */ 102 103 dcl i fixed bin; /* internal index */ 104 105 dcl ( 106 rec_len, /* LILA source record length */ 107 nread 108 ) fixed bin (21); /* num. chars read */ 109 110 dcl work_area area (sys_info$max_seg_size) based (lcb.lila_area_ptr); 111 dcl fn_name char (32) var; /* name of set function */ 112 dcl 1 tok_data aligned like token_data; 113 dcl 1 set_fn_data aligned like ef_data; 114 dcl token char (tok_data.length) based (tok_data.t_ptr); /* token value */ 115 dcl sex char (select_info.se_len) based (select_info.se_ptr); 116 dcl key char (256) var; /* LILA source line no. */ 117 118 dcl BOF fixed bin int static options (constant) init (-1); 119 dcl HEADER fixed bin int static options (constant) init (1); 120 dcl SET_FUN fixed bin int static options (constant) init (3); 121 dcl KILL fixed bin (35) int static options (constant) init (1); 122 dcl NOKILL fixed bin (35) int static options (constant) init (0); 123 124 dcl ( 125 linus_data_$max_user_items, 126 linus_data_$max_expr_items, 127 linus_data_$lila_id, 128 linus_data_$lit_string_size, 129 linus_data_$max_range_items, 130 linus_data_$max_lvars, 131 linus_error_$text_follows, 132 linus_error_$no_current_query, 133 linus_error_$no_db, 134 linus_error_$no_input_arg_reqd, 135 linus_error_$no_lila_data, 136 mrds_data_$max_select_items, 137 sys_info$max_seg_size 138 ) fixed bin (35) ext; 139 140 dcl linus_lila_error_ condition; 141 142 dcl (null, substr, after, addr, fixed, rel, unspec) builtin; 143 144 dcl iox_$position entry (ptr, fixed bin, fixed bin (21), fixed bin (35)); 145 dcl iox_$read_key entry (ptr, char (256) var, fixed bin (21), fixed bin (35)); 146 dcl iox_$read_record 147 entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 148 149 dcl linus_define_area entry (ptr, char (6), fixed bin (35)); 150 dcl linus_lila_get_token entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35)); 151 dcl linus_lila_set_fn entry (ptr, ptr, ptr, ptr, fixed bin (35)); 152 dcl linus_lila_set entry (ptr, ptr, ptr, ptr, fixed bin (35)); 153 dcl linus_lila_error entry (ptr, ptr, fixed bin (35), char (*)); 154 dcl linus_print_error entry (fixed bin (35), char (*)); 155 dcl linus_convert_code entry (fixed bin (35), fixed bin (35), fixed bin (35)); 156 dcl ssu_$arg_count entry (ptr, fixed bin); 157 dcl ssu_$abort_line entry() options(variable); 158 dcl ssu_$abort_subsystem entry() options(variable); 159 160 lcb_ptr = arg_lcb_ptr; 161 called_from_lila = "0"b; 162 call ssu_$arg_count (sci_ptr, nargs); 163 if nargs ^= 0 then call error (linus_error_$no_input_arg_reqd, "", NOKILL); 164 goto common; 165 auto: entry (sci_ptr, arg_lcb_ptr); /* Auto proc doesn't care if there were arguments */ 166 lcb_ptr = arg_lcb_ptr; 167 called_from_lila = "0"b; 168 goto common; 169 170 proc: entry (arg_lcb_ptr, code); 171 172 lcb_ptr = arg_lcb_ptr; 173 called_from_lila = "1"b; 174 175 common: 176 if lcb.db_index = 0 177 then call ssu_$abort_line (lcb.subsystem_control_info_ptr, linus_error_$no_db); 178 179 si_ptr, lsh_ptr, lcb.lit_ptr = null; /* init. */ 180 lcb.si_ptr = null; 181 182 on linus_lila_error_ 183 begin; 184 if ^called_from_lila then call ssu_$abort_line (sci_ptr); 185 go to exit; 186 end; 187 188 call linus_define_area (lcb.lila_area_ptr, "LILA", icode); 189 if icode ^= 0 then call error (icode, "", icode); 190 191 linus_rel_array_ptr = lcb.rel_array_ptr; 192 linus_rel_array.num_of_rels = 0; 193 194 if lcb.lila_count <= 0 195 then if called_from_lila 196 then call error (linus_error_$no_lila_data, "", NOKILL); 197 else call error (linus_error_$no_current_query, "", NOKILL); 198 else; 199 200 201 allocate ls_header in (work_area); /* set up lila stack header */ 202 ls_header.type = HEADER; 203 ls_header.src_ptr, ls_header.back_ptr, ls_header.fwd_ptr = null; 204 ls_header.cur_ptr = lsh_ptr; 205 ls_header.trans_failed = "0"b; 206 ls_header.from_token = "0"b; 207 ls_header.reserved = "0"b; 208 209 call iox_$position (lcb.liocb_ptr, BOF, 0, icode);/* position to begining of lila source file */ 210 if icode ^= 0 then 211 call error (icode, "LILA source file", KILL); 212 allocate source_str in (work_area); /* place for string version */ 213 source_pos = 1; /* initialize */ 214 ls_header.line_data.lno (0) = "0000"; 215 ls_header.line_data.last_char (0) = 0; 216 do i = 1 to lcb.lila_count; /* for every source line */ 217 call iox_$read_key (lcb.liocb_ptr, key, rec_len, icode); 218 /* get record len. */ 219 if icode ^= 0 then 220 call error (icode, "LILA source file", KILL); 221 call 222 iox_$read_record (lcb.liocb_ptr, addr (source_array (source_pos)), 223 rec_len, nread, icode); /* read the record */ 224 if icode ^= 0 then 225 call error (icode, "LILA source file", KILL); 226 source_pos = source_pos + rec_len; /* update position */ 227 ls_header.line_data.lno (i) = key; 228 ls_header.line_data.last_char (i) = 229 ls_header.line_data.last_char (i - 1) + rec_len; /* and line char table */ 230 end; /* making source string */ 231 ls_header.cur_pos = 1; /* initialize scan pos. */ 232 233 allocate lit_string in (work_area); 234 lit_string = "0"b; 235 lcb.curr_lit_offset = 0; 236 237 call 238 linus_lila_get_token (lcb_ptr, lsh_ptr, ls_header.cur_pos, 239 addr (tok_data), icode); /* get first token */ 240 if icode ^= 0 then 241 call linus_lila_error (lcb_ptr, lsh_ptr, icode, token); 242 243 if tok_data.key = SET_FN then do; /* if set function */ 244 fn_name = token; /* save name */ 245 call 246 linus_lila_set_fn (lcb_ptr, lsh_ptr, addr (tok_data), 247 addr (set_fn_data), icode); /* process set funct. */ 248 if icode ^= 0 then 249 call error (icode, "", NOKILL); 250 251 nsv_init, nmi_init = 0; /* allocate and set up select info for set funct. */ 252 nui_init = 1; 253 allocate select_info in (work_area); 254 unspec (select_info.se_flags) = "0"b; 255 if select_info.nsv_alloc ^= 0 256 then unspec (select_info.se_vals) = "0"b; 257 if select_info.nmi_alloc ^= 0 258 then unspec (select_info.mrds_item) = "0"b; 259 if select_info.nui_alloc ^= 0 260 then unspec (select_info.user_item) = "0"b; 261 select_info.set_fn, select_info.se_flags.val_ret = "1"b; 262 select_info.dup_flag, select_info.unique_flag, 263 select_info.se_flags.val_dtt, select_info.se_flags.val_del, 264 select_info.se_flags.val_mod = "0"b; 265 select_info.prior_sf_ptr, select_info.se_ptr, 266 select_info.sel_items_ptr = null; 267 select_info.nsevals, select_info.n_mrds_items, 268 select_info.sel_items_len, select_info.se_len = 0; 269 select_info.n_user_items = 1; 270 select_info.user_item.name (1) = fn_name; 271 select_info.user_item.item_type (1) = SET_FUN; 272 select_info.user_item.rslt_desc (1) = set_fn_data.desc; 273 select_info.user_item.rslt_bit_len (1) = set_fn_data.bit_length; 274 select_info.user_item.rslt_assn_ptr (1) = set_fn_data.assn_ptr; 275 select_info.user_item.rslt_assn_type (1) = set_fn_data.assn_type; 276 select_info.user_item.rslt_assn_len (1) = set_fn_data.assn_len; 277 select_info.user_item.item_ptr = set_fn_data.ef_ptr; 278 set_fn_data.ef_ptr -> linus_set_fn.fwd_ptr = null; /* no other set fn at this level */ 279 280 end; /* if set value */ 281 282 else do; /* if lila set */ 283 284 nmi_init = mrds_data_$max_select_items; /* init and alloc select info */ 285 nui_init = linus_data_$max_user_items; 286 nsv_init = linus_data_$max_range_items + linus_data_$max_lvars; 287 allocate select_info in (work_area); 288 call linus_lila_set (lcb_ptr, lsh_ptr, addr (tok_data), si_ptr, icode); 289 /* process the lila set */ 290 if icode ^= 0 then 291 call error (icode, "", NOKILL); 292 if select_info.dup_flag & ^select_info.unique_flag then 293 /* need to add -dup */ 294 substr (after (sex, "-select "), 1, 4) = "-dup"; 295 end; /* if lila set */ 296 297 if tok_data.key ^= NULL then /* must end with null token */ 298 call 299 linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$text_follows, 300 token); 301 if ls_header.cur_pos < lcb.lila_chars then do; /* if text left */ 302 call 303 linus_lila_get_token (lcb_ptr, lsh_ptr, ls_header.cur_pos, 304 addr (tok_data), icode); 305 if icode ^= 0 then 306 call linus_lila_error (lcb_ptr, lsh_ptr, icode, token); 307 if tok_data.key ^= NULL then /* if meaningfull data at end */ 308 call 309 linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$text_follows, 310 token); 311 end; 312 313 ls_header.src_ptr = null; 314 lcb.si_ptr = si_ptr; 315 lsh_ptr = null; 316 lcb.selection_expression_identifier = lcb.selection_expression_identifier + 1; 317 318 exit: 319 return; 320 321 error: 322 proc (cd, msg, fatal_flag); 323 324 /* error procedure */ 325 326 dcl (cd, ucd, fatal_flag) fixed bin (35); 327 dcl msg char (*); 328 329 call linus_convert_code (cd, ucd, linus_data_$lila_id); 330 call linus_print_error (ucd, msg); 331 if ^called_from_lila then do; 332 if fatal_flag = NOKILL then call ssu_$abort_line (sci_ptr); 333 else call ssu_$abort_subsystem (sci_ptr); 334 end; 335 else code = fatal_flag; 336 go to exit; 337 338 end error; 339 340 end linus_translate_query; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/29/86 0939.7 linus_translate_query.pl1 >special_ldd>install>MR12.0-1106>linus_translate_query.pl1 74 1 07/29/86 0937.8 linus_lcb.incl.pl1 >special_ldd>install>MR12.0-1106>linus_lcb.incl.pl1 76 2 03/27/82 0434.5 linus_lit_string.incl.pl1 >ldd>include>linus_lit_string.incl.pl1 78 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 80 5 09/16/83 1338.0 linus_select_info.incl.pl1 >ldd>include>linus_select_info.incl.pl1 82 6 03/27/82 0434.5 linus_source.incl.pl1 >ldd>include>linus_source.incl.pl1 84 7 03/27/82 0434.5 linus_ef_data.incl.pl1 >ldd>include>linus_ef_data.incl.pl1 86 8 03/27/82 0434.5 linus_rel_array.incl.pl1 >ldd>include>linus_rel_array.incl.pl1 88 9 03/27/82 0434.5 linus_token_data.incl.pl1 >ldd>include>linus_token_data.incl.pl1 90 10 11/23/82 1327.2 linus_set_fn.incl.pl1 >ldd>include>linus_set_fn.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. BOF 000011 constant fixed bin(17,0) initial dcl 118 set ref 209* HEADER constant fixed bin(17,0) initial dcl 119 ref 202 KILL constant fixed bin(35,0) initial dcl 121 set ref 210* 219* 224* NOKILL 000006 constant fixed bin(35,0) initial dcl 122 set ref 163* 194* 197* 248* 290* 332 NULL constant fixed bin(17,0) initial dcl 9-13 ref 297 307 SET_FN constant fixed bin(17,0) initial dcl 9-13 ref 243 SET_FUN constant fixed bin(17,0) initial dcl 120 ref 271 addr builtin function dcl 142 ref 221 221 237 237 245 245 245 245 288 288 302 302 after builtin function dcl 142 ref 292 arg_lcb_ptr parameter pointer dcl 92 ref 18 160 165 166 170 172 assn_len 15 000164 automatic fixed bin(35,0) level 2 dcl 113 set ref 276 assn_ptr 12 000164 automatic pointer level 2 dcl 113 set ref 274 assn_type 14 000164 automatic fixed bin(17,0) level 2 dcl 113 set ref 275 back_ptr 2 based pointer level 2 dcl 3-3 set ref 203* bit_length 10 000164 automatic fixed bin(35,0) level 2 dcl 113 set ref 273 called_from_lila 000115 automatic bit(1) unaligned dcl 94 set ref 161* 167* 173* 184 194 331 cd parameter fixed bin(35,0) dcl 326 set ref 321 329* code parameter fixed bin(35,0) dcl 97 set ref 170 335* cur_pos 13 based fixed bin(35,0) level 2 dcl 3-3 set ref 231* 237* 301 302* cur_ptr 6 based pointer level 2 dcl 3-3 set ref 204* curr_lit_offset 142 based fixed bin(35,0) level 2 dcl 1-53 set ref 235* db_index based fixed bin(35,0) level 2 dcl 1-53 ref 175 desc 11 000164 automatic bit(36) level 2 dcl 113 set ref 272 dup_flag 0(05) based bit(1) level 2 packed unaligned dcl 5-5 set ref 262* 292 ef_data based structure level 1 dcl 7-3 ef_ptr 000164 automatic pointer level 2 dcl 113 set ref 277 278 fatal_flag parameter fixed bin(35,0) dcl 326 ref 321 332 335 fn_name 000124 automatic varying char(32) dcl 111 set ref 244* 270 from_token 12(01) based bit(1) level 2 packed unaligned dcl 3-3 set ref 206* fwd_ptr based pointer level 2 in structure "linus_set_fn" dcl 10-17 in procedure "linus_translate_query" set ref 278* fwd_ptr 4 based pointer level 2 in structure "ls_header" dcl 3-3 in procedure "linus_translate_query" set ref 203* i 000121 automatic fixed bin(17,0) dcl 103 set ref 216* 227 228 228* icode 000117 automatic fixed bin(35,0) dcl 97 set ref 188* 189 189* 189* 209* 210 210* 217* 219 219* 221* 224 224* 237* 240 240* 245* 248 248* 288* 290 290* 302* 305 305* iox_$position 000040 constant entry external dcl 144 ref 209 iox_$read_key 000042 constant entry external dcl 145 ref 217 iox_$read_record 000044 constant entry external dcl 146 ref 221 item_ptr based pointer array level 3 dcl 5-5 set ref 277* item_type based fixed bin(17,0) array level 3 dcl 5-5 set ref 271* key 000164 automatic varying char(256) dcl 116 in procedure "linus_translate_query" set ref 217* 227 key 000136 automatic fixed bin(17,0) level 2 in structure "tok_data" packed unaligned dcl 112 in procedure "linus_translate_query" set ref 243 297 307 last_char 15 based fixed bin(35,0) array level 3 dcl 3-3 set ref 215* 228* 228 lcb based structure level 1 dcl 1-53 lcb_ptr 000100 automatic pointer dcl 1-121 set ref 160* 166* 172* 175 175 179 180 188 191 194 201 201 209 212 212 212 216 217 221 233 233 234 235 237* 240* 245* 253 287 288* 297* 301 302* 305* 307* 314 316 316 length 23 000136 automatic fixed bin(35,0) level 2 dcl 112 set ref 240 240 244 297 297 305 305 307 307 lila_area_ptr 62 based pointer level 2 dcl 1-53 set ref 188* 201 212 233 253 287 lila_chars 3 based fixed bin(35,0) level 2 dcl 1-53 ref 212 212 301 lila_count 2 based fixed bin(35,0) level 2 dcl 1-53 ref 194 201 216 line_data 14 based structure array level 2 dcl 3-3 linus_convert_code 000062 constant entry external dcl 155 ref 329 linus_data_$lila_id 000014 external static fixed bin(35,0) dcl 124 set ref 329* linus_data_$lit_string_size 000016 external static fixed bin(35,0) dcl 124 ref 233 233 234 linus_data_$max_expr_items 000012 external static fixed bin(35,0) dcl 124 ref 113 linus_data_$max_lvars 000022 external static fixed bin(35,0) dcl 124 ref 286 linus_data_$max_range_items 000020 external static fixed bin(35,0) dcl 124 ref 286 linus_data_$max_user_items 000010 external static fixed bin(35,0) dcl 124 ref 285 linus_define_area 000046 constant entry external dcl 149 ref 188 linus_error_$no_current_query 000026 external static fixed bin(35,0) dcl 124 set ref 197* linus_error_$no_db 000030 external static fixed bin(35,0) dcl 124 set ref 175* linus_error_$no_input_arg_reqd 000032 external static fixed bin(35,0) dcl 124 set ref 163* linus_error_$no_lila_data 000034 external static fixed bin(35,0) dcl 124 set ref 194* linus_error_$text_follows 000024 external static fixed bin(35,0) dcl 124 set ref 297* 307* linus_lila_error 000056 constant entry external dcl 153 ref 240 297 305 307 linus_lila_error_ 000266 stack reference condition dcl 140 ref 182 linus_lila_get_token 000050 constant entry external dcl 150 ref 237 302 linus_lila_set 000054 constant entry external dcl 152 ref 288 linus_lila_set_fn 000052 constant entry external dcl 151 ref 245 linus_print_error 000060 constant entry external dcl 154 ref 330 linus_rel_array based structure level 1 unaligned dcl 8-10 linus_rel_array_ptr 000112 automatic pointer dcl 8-16 set ref 191* 192 linus_set_fn based structure level 1 dcl 10-17 liocb_ptr 16 based pointer level 2 dcl 1-53 set ref 209* 217* 221* lit_ptr 44 based pointer level 2 dcl 1-53 set ref 179* 233* 234 lit_string based bit unaligned dcl 2-3 set ref 233 234* lno 14 based char(4) array level 3 dcl 3-3 set ref 214* 227* ls_header based structure level 1 dcl 3-3 set ref 201 lsh_ptr 000102 automatic pointer dcl 3-15 set ref 179* 201* 202 203 203 203 204 204 205 206 207 212 214 215 221 221 227 228 228 231 237* 237 240* 245* 288* 297* 301 302* 302 305* 307* 313 315* mrds_data_$max_select_items 000036 external static fixed bin(35,0) dcl 124 ref 284 mrds_item based structure array level 2 dcl 5-5 set ref 257* msg parameter char unaligned dcl 327 set ref 321 330* n_mrds_items 16 based fixed bin(17,0) level 2 dcl 5-5 set ref 267* n_user_items 17 based fixed bin(17,0) level 2 dcl 5-5 set ref 269* name based varying char(32) array level 3 dcl 5-5 set ref 270* nargs 000116 automatic fixed bin(17,0) dcl 95 set ref 162* 163 nmi_alloc 13 based fixed bin(17,0) level 2 dcl 5-5 set ref 253* 257 257 259 270 271 272 273 274 275 276 277 277 287* nmi_init 000105 automatic fixed bin(17,0) dcl 5-48 set ref 251* 253 253 284* 287 287 nread 000123 automatic fixed bin(21,0) dcl 105 set ref 221* nsevals 15 based fixed bin(17,0) level 2 dcl 5-5 set ref 267* nsv_alloc 12 based fixed bin(17,0) level 2 dcl 5-5 set ref 253* 255 255 257 259 270 271 272 273 274 275 276 277 277 287* nsv_init 000104 automatic fixed bin(17,0) dcl 5-48 set ref 251* 253 253 286* 287 287 nui_alloc 14 based fixed bin(17,0) level 2 dcl 5-5 set ref 253* 259 259 277 287* nui_init 000106 automatic fixed bin(17,0) dcl 5-48 set ref 252* 253 253 285* 287 287 null builtin function dcl 142 ref 179 180 203 265 278 313 315 num_of_rels based fixed bin(17,0) level 2 dcl 8-10 set ref 192* num_of_rels_init 000114 automatic fixed bin(17,0) initial dcl 8-18 set ref 8-18* prior_sf_ptr 2 based pointer level 2 dcl 5-5 set ref 265* rec_len 000122 automatic fixed bin(21,0) dcl 105 set ref 217* 221* 226 228 rel_array_ptr 66 based pointer level 2 dcl 1-53 ref 191 reserved 12(02) based bit(34) level 2 packed unaligned dcl 3-3 set ref 207* rslt_assn_len based fixed bin(35,0) array level 3 dcl 5-5 set ref 276* rslt_assn_ptr based pointer array level 3 dcl 5-5 set ref 274* rslt_assn_type based fixed bin(17,0) array level 3 dcl 5-5 set ref 275* rslt_bit_len based fixed bin(35,0) array level 3 dcl 5-5 set ref 273* rslt_desc based bit(36) array level 3 dcl 5-5 set ref 272* sci_ptr parameter pointer dcl 92 set ref 18 162* 165 184* 332* 333* se_flags 0(01) based structure level 2 packed unaligned dcl 5-5 set ref 254* se_len 11 based fixed bin(35,0) level 2 dcl 5-5 set ref 267* 292 se_ptr 4 based pointer level 2 dcl 5-5 set ref 265* 292 se_vals 20 based structure array level 2 dcl 5-5 set ref 255* sel_items_len 10 based fixed bin(17,0) level 2 dcl 5-5 set ref 267* sel_items_ptr 6 based pointer level 2 dcl 5-5 set ref 265* select_info based structure level 1 dcl 5-5 set ref 253 287 selection_expression_identifier 105 based fixed bin(17,0) level 2 dcl 1-53 set ref 316* 316 set_fn based bit(1) level 2 packed unaligned dcl 5-5 set ref 261* set_fn_data 000164 automatic structure level 1 dcl 113 set ref 245 245 sex based char unaligned dcl 115 set ref 292* si_ptr 34 based pointer level 2 in structure "lcb" dcl 1-53 in procedure "linus_translate_query" set ref 180* 314* si_ptr 000110 automatic pointer dcl 5-49 in procedure "linus_translate_query" set ref 179* 253* 254 255 255 257 257 259 259 261 261 262 262 262 262 262 265 265 265 267 267 267 267 269 270 271 272 273 274 275 276 277 287* 288* 292 292 292 292 314 source_array based char(1) array unaligned dcl 6-4 set ref 221 221 source_pos 000120 automatic fixed bin(35,0) dcl 97 set ref 213* 221 221 226* 226 source_str based char unaligned dcl 6-3 ref 212 src_ptr 10 based pointer level 2 dcl 3-3 set ref 203* 212* 221 221 313* ssu_$abort_line 000066 constant entry external dcl 157 ref 175 184 332 ssu_$abort_subsystem 000070 constant entry external dcl 158 ref 333 ssu_$arg_count 000064 constant entry external dcl 156 ref 162 substr builtin function dcl 142 set ref 292* subsystem_control_info_ptr 102 based pointer level 2 dcl 1-53 set ref 175* t_ptr 24 000136 automatic pointer level 2 dcl 112 set ref 240 244 297 305 307 tok_data 000136 automatic structure level 1 dcl 112 set ref 237 237 245 245 288 288 302 302 token based char unaligned dcl 114 set ref 240* 244 297* 305* 307* token_data based structure level 1 dcl 9-3 trans_failed 12 based bit(1) level 2 packed unaligned dcl 3-3 set ref 205* type based fixed bin(17,0) level 2 dcl 3-3 set ref 202* ucd 000312 automatic fixed bin(35,0) dcl 326 set ref 329* 330* unique_flag 0(06) based bit(1) level 2 packed unaligned dcl 5-5 set ref 262* 292 unspec builtin function dcl 142 set ref 254* 255* 257* 259* user_item based structure array level 2 dcl 5-5 set ref 259* val_del 0(03) based bit(1) level 3 packed unaligned dcl 5-5 set ref 262* val_dtt 0(02) based bit(1) level 3 packed unaligned dcl 5-5 set ref 262* val_mod 0(04) based bit(1) level 3 packed unaligned dcl 5-5 set ref 262* val_ret 0(01) based bit(1) level 3 packed unaligned dcl 5-5 set ref 261* work_area based area dcl 110 ref 201 212 233 253 287 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. AND internal static fixed bin(17,0) initial dcl 9-13 COL_SPEC internal static fixed bin(17,0) initial dcl 9-13 COMMA internal static fixed bin(17,0) initial dcl 9-13 CONST internal static fixed bin(17,0) initial dcl 9-13 DIFFER internal static fixed bin(17,0) initial dcl 9-13 DIV internal static fixed bin(17,0) initial dcl 9-13 DUP internal static fixed bin(17,0) initial dcl 9-13 EQ internal static fixed bin(17,0) initial dcl 9-13 FROM internal static fixed bin(17,0) initial dcl 9-13 GE internal static fixed bin(17,0) initial dcl 9-13 GT internal static fixed bin(17,0) initial dcl 9-13 INTER internal static fixed bin(17,0) initial dcl 9-13 LB internal static fixed bin(17,0) initial dcl 9-13 LE internal static fixed bin(17,0) initial dcl 9-13 LINUS_VAR internal static fixed bin(17,0) initial dcl 9-13 LP internal static fixed bin(17,0) initial dcl 9-13 LT internal static fixed bin(17,0) initial dcl 9-13 MINUS internal static fixed bin(17,0) initial dcl 9-13 NE internal static fixed bin(17,0) initial dcl 9-13 NOT internal static fixed bin(17,0) initial dcl 9-13 OR internal static fixed bin(17,0) initial dcl 9-13 PLUS internal static fixed bin(17,0) initial dcl 9-13 RB internal static fixed bin(17,0) initial dcl 9-13 ROW_DES internal static fixed bin(17,0) initial dcl 9-13 ROW_TAB_PAIR internal static fixed bin(17,0) initial dcl 9-13 RP internal static fixed bin(17,0) initial dcl 9-13 SCAL_FN internal static fixed bin(17,0) initial dcl 9-13 SELECT internal static fixed bin(17,0) initial dcl 9-13 STAR internal static fixed bin(17,0) initial dcl 9-13 TAB_NAME internal static fixed bin(17,0) initial dcl 9-13 UNION internal static fixed bin(17,0) initial dcl 9-13 UNIQUE internal static fixed bin(17,0) initial dcl 9-13 WHERE internal static fixed bin(17,0) initial dcl 9-13 ed_ptr automatic pointer dcl 7-22 fixed builtin function dcl 142 initial_number_of_linus_set_fn_args automatic fixed bin(17,0) dcl 10-54 linus_set_fn_ptr automatic pointer dcl 10-55 lit_array based bit(1) array unaligned dcl 2-5 rel builtin function dcl 142 sys_info$max_seg_size external static fixed bin(35,0) dcl 124 td_ptr automatic pointer dcl 9-49 NAMES DECLARED BY EXPLICIT CONTEXT. auto 000131 constant entry external dcl 165 common 000171 constant label dcl 175 ref 164 168 error 001517 constant entry internal dcl 321 ref 163 189 194 197 210 219 224 248 290 exit 001516 constant label dcl 318 set ref 185 336 linus_translate_query 000055 constant entry external dcl 18 proc 000153 constant entry external dcl 170 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2254 2346 1706 2264 Length 3016 1706 72 434 346 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_translate_query 270 external procedure is an external procedure. on unit on line 182 70 on unit error internal procedure shares stack frame of external procedure linus_translate_query. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME linus_translate_query 000100 lcb_ptr linus_translate_query 000102 lsh_ptr linus_translate_query 000104 nsv_init linus_translate_query 000105 nmi_init linus_translate_query 000106 nui_init linus_translate_query 000110 si_ptr linus_translate_query 000112 linus_rel_array_ptr linus_translate_query 000114 num_of_rels_init linus_translate_query 000115 called_from_lila linus_translate_query 000116 nargs linus_translate_query 000117 icode linus_translate_query 000120 source_pos linus_translate_query 000121 i linus_translate_query 000122 rec_len linus_translate_query 000123 nread linus_translate_query 000124 fn_name linus_translate_query 000136 tok_data linus_translate_query 000164 key linus_translate_query 000164 set_fn_data linus_translate_query 000312 ucd error THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return tra_ext alloc_auto_adj mpfx2 enable ext_entry int_entry set_cs_eis alloc_based index_after_cs THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. iox_$position iox_$read_key iox_$read_record linus_convert_code linus_define_area linus_lila_error linus_lila_get_token linus_lila_set linus_lila_set_fn linus_print_error ssu_$abort_line ssu_$abort_subsystem ssu_$arg_count THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. linus_data_$lila_id linus_data_$lit_string_size linus_data_$max_expr_items linus_data_$max_lvars linus_data_$max_range_items linus_data_$max_user_items linus_error_$no_current_query linus_error_$no_db linus_error_$no_input_arg_reqd linus_error_$no_lila_data linus_error_$text_follows mrds_data_$max_select_items LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 8 18 000034 113 000035 18 000051 160 000066 161 000071 162 000072 163 000104 164 000126 165 000127 166 000142 167 000145 168 000146 170 000147 172 000164 173 000167 175 000171 179 000211 180 000216 182 000220 184 000234 185 000250 188 000253 189 000271 191 000276 192 000301 194 000302 197 000330 201 000350 202 000367 203 000371 204 000375 205 000376 206 000400 207 000402 209 000404 210 000423 212 000434 213 000445 214 000447 215 000451 216 000452 217 000463 219 000501 221 000512 224 000541 226 000552 227 000556 228 000566 230 000574 231 000576 233 000601 234 000613 235 000620 237 000621 240 000642 243 000673 244 000677 245 000710 248 000733 251 000740 252 000742 253 000744 254 000774 255 000776 257 001007 259 001026 261 001054 262 001060 265 001072 267 001076 269 001102 270 001104 271 001124 272 001126 273 001142 274 001145 275 001147 276 001151 277 001165 278 001225 280 001231 284 001232 285 001235 286 001237 287 001243 288 001273 290 001314 292 001321 297 001343 301 001375 302 001402 305 001423 307 001454 313 001506 314 001511 315 001514 316 001515 318 001516 321 001517 329 001530 330 001544 331 001563 332 001565 333 001603 334 001615 335 001616 336 001622 ----------------------------------------------------------- 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