COMPILATION LISTING OF SEGMENT linus_lila_scal_fn Compiled by: Multics PL/I Compiler, Release 33a, of May 30, 1990 Compiled at: ACTC Technologies Inc. Compiled on: 10/14/90 0919.6 mdt Sun Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1990 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 /****^ HISTORY COMMENTS: 15* 1) change(90-04-30,Leskiw), approve(90-10-05,MCR8202), 16* audit(90-10-11,Bubric), install(90-10-14,MR12.4-1039): 17* Changed calls to assign_round_ from assign_ so that data is rounded. 18* END HISTORY COMMENTS */ 19 20 21 linus_lila_scal_fn: 22 proc (lcb_ptr, lsh_ptr, td_ptr, ed_ptr, code); 23 24 25 /* HISTORY: 26* 27* 77-08-01 J. C. C. Jagernauth: Initially written. 28* 29* 78-04-01 J. C. C. Jagernauth: Modified to update ls_set when new mrds 30* items are encountered, to properly handle non-arithmetic scalar functions, 31* and to properly handle recursively invoked scalar functions. 32* 33* 78-08-01 J. A. Weeldreyer: Modified to conform to new token data. 34* 35* 79-02-01 J. C. C. Jagernauth: Modified to access version 4 resultant 36* information. 37* 38* 80-01-08 Rickie E. Brinegar: Modified to pass linus_lila_alloc_lit a 39* descriptor pointer instead of an assign_ descriptor type and to do away with 40* the assign_ length. 41* 42* 80-04-11 Rickie E. Brinegar: Modified to correctly check the number of 43* arguments to a scalar function. 44* 45* 80-04-14 Rickie E. Brinegar: Modified to use a work area defined on 46* lcb.lila_area_ptr instead of getting system free area. 47* 48* 80-09-16 Rickie E. Brinegar: Modified to use linus_rel_array to obtain 49* relation information instead of calling dsl_$get_rslt_info. 50* 51* 81-02-03 Rickie E. Brinegar: Modified to use the modified linus_rel_array 52* structure. Added the rel builtin to the declarations. 53* 54* 81-06-17 Rickie E. Brinegar: Modified to not call dsl_v1_$get_fn_info. 55* 56* 81-06-19 Rickie E. Brinegar: Removed calls to dsl_$get_(rslt temp)_desc. 57* 58* 81-07-13 Rickie E. Brinegar: Removed the trapping of the conversion 59* condition. This is now relegated to higher level modules. 60* 61* 82-01-04 Bert Moberg: Fixed searching for temp relation names 62* 63* 82-06-24 DJ Schimke: renamed variable "offset" to "bit_offset" and internal 64* procedure "constant" to "process_constant" so these names are not confused 65* with pl1 builtins and keywords. 66**/ 67 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 */ 68 69 2 1 /* BEGIN INCLUDE FILE linus_ef_data.incl.pl1 -- jaw 7/21/77 */ 2 2 2 3 dcl 1 ef_data aligned based (ed_ptr), /* structure for passing expr. and fun. data among programs */ 2 4 2 var_name char (32), /* name of tuple variable */ 2 5 2 bit_length fixed bin (35), /* bit length of result */ 2 6 2 desc bit (36), /* descriptor of result */ 2 7 2 assn_ptr ptr, /* pointer to result value */ 2 8 2 assn_type fixed bin, /* assign_ type code of result */ 2 9 2 assn_len fixed bin (35), /* assign_ length */ 2 10 2 nmrds_items fixed bin, /* number of mrds items returned */ 2 11 2 mrds_items (linus_data_$max_expr_items), /* previously unselected mrds items referenced 2 12* in the expression */ 2 13 3 attr_name char (32), /* name of attribute */ 2 14 3 domain_name char (32), /* domain of attribute */ 2 15 3 bit_length fixed bin (35), /* attrib. bit length */ 2 16 3 desc bit (36), /* attrib. descriptor */ 2 17 3 assn_ptr ptr, /* pointer to receiving field of attr. */ 2 18 3 assn_type fixed bin, /* assign_ type code of attr */ 2 19 3 assn_len fixed bin (35), /* assign_ length for attr. */ 2 20 2 ef_ptr ptr; /* pointer to expr. status */ 2 21 2 22 dcl ed_ptr ptr; 2 23 2 24 /* END INCLUDE FILE linus_ef_data.incl.pl1 */ 70 71 3 1 /* BEGIN INCLUDE FILE linus_ls_block.incl.pl1 -- jaw 8/7/78 */ 3 2 3 3 dcl 1 ls_block aligned based (lsb_ptr), /* lila stack frame for outer lila block */ 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 reserved bit (36) unal, 3 6 2 ib_level fixed bin, /* current depth of inner blocks */ 3 7 2 nrs_chars fixed bin, /* total chars. in range strings */ 3 8 2 nritems fixed bin, /* current number of range items */ 3 9 2 range_items (linus_data_$max_range_items), 3 10 3 tup_var char (32) var, /* name of linus tuple variable */ 3 11 3 mrds_var char (32) var, /* name of mrds tuple variable */ 3 12 3 rel_name char (32) var, /* name of relation */ 3 13 3 rel_index fixed bin (35), /* rel. index if temp tab */ 3 14 3 level fixed bin, /* level of block generating item */ 3 15 3 arg_ptr ptr, 3 16 3 desc_ptr ptr, 3 17 2 nselects fixed bin, /* number of select items currently defined */ 3 18 2 sel_items (mrds_data_$max_select_items) char (mrds_data_$max_token_size) var, /* the mrds select items */ 3 19 2 nprops fixed bin, /* number of operators in pred stack */ 3 20 2 pred_op_stack (linus_data_$max_pred_stack_size), 3 21 3 key fixed bin (17) unal, 3 22 3 p_cnt fixed bin (17) unal, /* current paren count */ 3 23 2 pred_pcnt fixed bin, /* current paren. count in predicate */ 3 24 2 term_op fixed bin, /* rel. op. for current term */ 3 25 2 nterms fixed bin, /* no. of terms currently in term stack */ 3 26 2 dflt_ritem fixed bin, /* index of range item to be used for default */ 3 27 2 nrange_args fixed bin, /* no. of args for temp rel indexes */ 3 28 2 rs_hd_ptr ptr, /* pointer to head of range strings */ 3 29 2 term_hd_ptr ptr, /* pointer to top item in term stack */ 3 30 2 leaf_ptr (2) ptr; /* ptr to mrds block for each leaf of current term */ 3 31 3 32 dcl lsb_ptr ptr; 3 33 3 34 /* END INCLUDE FILE linus_ls_block.incl.pl1 */ 72 73 5 1 /* BEGIN INCLUDE FILE linus_ls_header.incl.pl1 -- jaw 7/28/77 */ 5 2 5 3 dcl 1 ls_header aligned based (lsh_ptr), /* header for LILA stack */ 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 cur_ptr ptr, /* pointer to current frame */ 5 6 2 src_ptr ptr, /* pointer to LILA source string */ 5 7 2 trans_failed bit (1) unal, /* on if translate failed */ 5 8 2 from_token bit (1) unal, /* on if the calling routine is linus_lila_from */ 5 9 2 reserved bit (34) unal, 5 10 2 cur_pos fixed bin (35), /* current position in source string */ 5 11 2 line_data (0 : lcb.lila_count), /* data for each source line */ 5 12 3 lno char (4), /* line number */ 5 13 3 last_char fixed bin (35); /* index of last char */ 5 14 5 15 dcl lsh_ptr ptr; 5 16 5 17 /* END INCLUDE FILE linus_ls_header.incl.pl1 */ 74 75 7 1 /* BEGIN INCLUDE FILE linus_ls_set.incl.pl1 -- jaw 7/27/78 */ 7 2 7 3 dcl 1 ls_set aligned based (lss_ptr), /* lila stack frame for lila set */ 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 nselects fixed bin, /* number of items selected */ 7 6 2 nblocks fixed bin, /* number of lila blocks in stack */ 7 7 2 nops fixed bin, /* number of set operators in stack */ 7 8 2 op_stack (linus_data_$max_set_stack_size), /* the set op stack */ 7 9 3 br_cnt fixed bin (17) unal, /* bracket count of oper. */ 7 10 3 key fixed bin (17) unal, /* token key of operator */ 7 11 2 br_cnt fixed bin, /* current bracket count */ 7 12 2 dup_flag bit (1) unal, /* on if DUP encountered */ 7 13 2 unique_flag bit (1) unal, /* on if UNIQUE encountered */ 7 14 2 rb_flag bit (1) unal, /* on if right bracket allowed */ 7 15 2 lb_flag bit (1) unal, /* on if left bracket allowed */ 7 16 2 setop_flag bit (1) unal, /* on if set op allowed */ 7 17 2 select_flag bit (1) unal, /* on if lila block allowed */ 7 18 2 end_flag bit (1) unal, /* on if end of set allowed */ 7 19 2 first_block bit (1) unal, /* on if no lila block yet processed */ 7 20 2 inv_setop bit (1) unal, /* on if a lila block cannot be included in a set oper. */ 7 21 2 reserved bit (9) unal, 7 22 2 var_ind fixed bin (17) unal, /* number for next generated variable */ 7 23 2 domain_info (mrds_data_$max_select_items), /* domain info for each selected attr. */ 7 24 3 name char (32), /* domain name */ 7 25 3 bit_length fixed bin (35), /* bit length of domain */ 7 26 3 desc bit (36), /* descriptor for domain */ 7 27 3 assn_ptr ptr, /* ptr to receiving field for this attr. */ 7 28 3 assn_type fixed bin, /* assign_ type code for this domain */ 7 29 3 assn_len fixed bin (35), /* assign_ length for this domain */ 7 30 2 si_ptr ptr, /* pointer to select info structure */ 7 31 2 blk_hd_ptr ptr; /* pointer to top item of block stack */ 7 32 7 33 dcl lss_ptr ptr; 7 34 7 35 /* END INCLUDE FILE linus_ls_set.incl.pl1 */ 76 77 9 1 /* BEGIN INCLUDE FILE -- linus_rel_array.incl.pl1 -- reb 09/09/80 9 2* 9 3* 80-09-09 Rickie E. Brinegar: Initially written. 9 4* 9 5* 81-01-29 Rickie E. Brinegar: changed to comform to standards for include 9 6* files. 9 7* 9 8**/ 9 9 9 10 dcl 1 linus_rel_array based (linus_rel_array_ptr), 9 11 2 num_of_rels fixed bin, 9 12 2 rels (num_of_rels_init refer (linus_rel_array.num_of_rels)), 9 13 3 rel_name char (32), 9 14 3 rslt_info_ptr ptr; 9 15 9 16 dcl linus_rel_array_ptr ptr; 9 17 9 18 dcl num_of_rels_init fixed bin init (0); 9 19 9 20 /* END INCLUDE FILE linus_rel_array.incl.pl1 */ 9 21 78 79 10 1 /* BEGIN INCLUDE FILE linus_scal_fn.incl.pl1 -- jaw 6/29/77 */ 10 2 10 3 dcl 1 scal_fn aligned based (sclf_ptr), /* internal rep. of scalar func. */ 10 4 2 entry_ptr ptr, /* pointer to entry to be called */ 10 5 2 arg_list_ptr ptr, /* pointer to arg list for entry call */ 10 6 2 rslt_desc bit (36), /* descriptor for result */ 10 7 2 nargs fixed bin, /* number of input args */ 10 8 2 arg (nsclf_args_init refer (scal_fn.nargs)), 10 9 3 type fixed bin (4) unal, /* 1 => constant, 10 10* 2 => linus variable 10 11* 3 => scalar function 10 12* 4 => set function 10 13* 5 => expression 10 14* 6 => data base item */ 10 15 3 must_convert bit (1) unal, /* on if source data must be converted prior to call */ 10 16 3 reserved bit (30) unal, 10 17 3 desc bit (36), /* descriptor of source data */ 10 18 3 assn_ptr ptr, /* pointer to data or result */ 10 19 3 assn_type fixed bin, /* assign_ type code of source data */ 10 20 3 assn_len fixed bin (35), /* assign_ length of source data */ 10 21 3 arg_desc bit (36), /* descriptor for converted arg */ 10 22 3 arg_assn_ptr ptr, /* assign_ ptr for converted arg */ 10 23 3 arg_assn_type fixed bin, /* assign_ type code of converted arg */ 10 24 3 arg_assn_len fixed bin (35), /* assign_ length of converted arg */ 10 25 3 ef_ptr ptr; /* pointer to expression or function structure */ 10 26 10 27 dcl sclf_ptr ptr; 10 28 dcl nsclf_args_init fixed bin; 10 29 10 30 /* END INCLUDE FILE linus_scal_fn.incl.pl1 */ 80 81 11 1 /* BEGIN INCLUDE FILE linus_temp_tab_names.incl.pl1 -- jaw 6/16/77 */ 11 2 11 3 dcl temp_tab_names (mrds_data_$max_temp_rels) char (32) based (ttn_ptr); /* names of temp rels in slot corr. to rel. index */ 11 4 11 5 dcl ttn_ptr ptr; 11 6 11 7 /* END INCLUDE FILE linus_temp_tab_names.incl.pl1 */ 82 83 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 */ 84 85 13 1 /* BEGIN INCLUDE FILE linus_variables.incl.pl1 -- jaw 7/19/77 */ 13 2 13 3 dcl 1 variables aligned based (lv_ptr), /* info for all variables */ 13 4 2 nvars_alloc fixed bin, /* no. var. slots alloc. */ 13 5 2 nvars fixed bin, /* no. of variables currently defined */ 13 6 2 var_info (nvars_init refer (variables.nvars_alloc)), 13 7 3 name char (32), /* name of variable */ 13 8 3 var_ptr ptr, /* ptr to curr. value */ 13 9 3 bit_len fixed bin (35), /* bit length of current value */ 13 10 3 assn_type fixed bin, /* assign_ type code of current value */ 13 11 3 assn_len fixed bin (35), /* assign_ length of current value */ 13 12 3 desc bit (36); /* descrptor of current value */ 13 13 13 14 dcl lv_ptr ptr; 13 15 dcl nvars_init fixed bin; 13 16 13 17 /* END INCLUDE FILE linus_variables.incl.pl1 */ 86 87 14 1 /* BEGIN mdbm_arg_list.incl.pl1 -- jaw 5/31/78 */ 14 2 /* the duplicate mrds_arg_list.incl.pl1 was eliminated by Jim Gray, Nov. 1979 */ 14 3 14 4 /* layout of argument list for IDS and DBM entries with options (variable) */ 14 5 14 6 dcl 1 arg_list based (al_ptr), 14 7 2 arg_count fixed bin (17) unal, /* 2 * no. of args. */ 14 8 2 code fixed bin (17) unal, /* 4 => normal, 8 => special */ 14 9 2 desc_count fixed bin (17) unal, /* 2 * no. of descriptors */ 14 10 2 pad fixed bin (17) unal, /* must be 0 */ 14 11 2 arg_des_ptr (num_ptrs) ptr; /* argument/descriptor pointer */ 14 12 14 13 dcl al_ptr ptr; 14 14 dcl num_ptrs fixed bin; 14 15 14 16 /* END mdbm_arg_list.incl.pl1 */ 14 17 88 89 15 1 /* BEGIN INCLUDE FILE mrds_rslt_info.incl.pl1 rgl 07/22/77 */ 15 2 15 3 /* Modified by R. Lackey 09/20/76 to handle inverted attributes */ 15 4 15 5 /* Modified by D. Woodka 06/28/82 to fix size condition */ 15 6 15 7 dcl 1 rslt_info aligned based (rslt_ptr), /* resultant information description */ 15 8 2 num_attr fixed bin, /* number of attributes in view */ 15 9 2 num_key_attr fixed bin, /* number of key attributes in data relation */ 15 10 2 key_length fixed bin (35), /* length in bits of key portion of tuple */ 15 11 2 retrieve bit (1) unal, /* retrieve permitted = "1"b */ 15 12 2 modify bit (1) unal, /* modify permitted = "1"b */ 15 13 2 store bit (1) unal, /* store permitted = "1"b */ 15 14 2 delete bit (1) unal, /* delete permitted = "1"b */ 15 15 2 total_key bit (1) unal, /* on if view includes the total key */ 15 16 2 inversion bit (1) unal, /* On if this view contains any inverted attributes */ 15 17 2 reserved bit (30) unal, /* reserved for future use */ 15 18 2 attr (rslt_alloc refer (rslt_info.num_attr)), /* per attribute info */ 15 19 3 attr_name char (32), /* name of attribute */ 15 20 3 domain_name char (32), /* name of underlying domain */ 15 21 3 attr_length fixed bin (18), /* length of attribute data in bits */ 15 22 3 attr_index fixed bin (24), /* index to bit_offset in dbcbrw */ 15 23 3 descriptor bit (36) aligned, /* attribute description */ 15 24 3 key_flag bit (1) unal, /* key attribute = "1"b */ 15 25 3 inver_flag bit (1) unal, /* On if this attribute is inverted */ 15 26 3 unused bit (34) unal, /* reserved for future use */ 15 27 3 key_attr_order fixed bin, /* order no. of this key attr. */ 15 28 3 inver_iocb_index fixed bin; /* Index to inversion iocb in dbcbw */ 15 29 15 30 15 31 15 32 dcl rslt_ptr ptr; 15 33 15 34 dcl rslt_alloc fixed bin; 15 35 15 36 /* END INCLUDE FILE mrds_rslt_info.incl.pl1 */ 15 37 90 91 16 1 /* BEGIN INCLUDE FILE mrds_scalfn_info.incl.pl1 -- jaw 5/3/77 */ 16 2 16 3 dcl 1 scalfn_info aligned based (sfi_ptr), /* info for a scalar function */ 16 4 2 fwd_ptr ptr, /* pointer to next function in list */ 16 5 2 name char (32), /* primary name of function */ 16 6 2 info_ent_ptr ptr, /* pointer to info entry for variable function, or null */ 16 7 2 entry_ptr ptr, /* pointer to entry to be called */ 16 8 2 rslt_desc bit (36), /* result descriptor for non_var. funct., or "0"b */ 16 9 2 nargs fixed bin, /* no. of input args for non-var. funct. or 0 */ 16 10 2 arg_desc (nsfi_args_init refer (scalfn_info.nargs)) bit (36); /* descriptors for each input arg */ 16 11 16 12 dcl sfi_ptr ptr; 16 13 dcl nsfi_args_init fixed bin; 16 14 16 15 /* END INCLUDE FILE mrds_scalfn_info.incl.pl1 */ 16 16 92 93 94 95 dcl 1 arg_len_bits based, 96 2 pad bit (12) unal, 97 2 length bit (24) unal; /* arg length for system standard arg list */ 98 99 dcl 1 arg_descs aligned based (ad_ptr), 100 2 ndescs fixed bin, 101 2 desc (ndescs_init refer (arg_descs.ndescs)) bit (36); 102 103 dcl ndescs_init fixed bin; 104 105 dcl ( 106 ( 107 SETFN init (4) 108 ), 109 ( 110 SCALFN init (3) 111 ), 112 ( 113 EXPR init (5) 114 ), 115 ( 116 BITVAR init (20) 117 ), 118 ( 119 CHARVAR init (22) 120 ), 121 ( 122 CONSTANT init (1) 123 ), 124 ( 125 LINVAR init (2) 126 ), 127 ( 128 DATABASE init (6) 129 ) 130 ) fixed bin int static options (constant); 131 132 dcl QUOTE char (1) int static options (constant) init (""""); 133 dcl LEFT_PAREN char (1) int static options (constant) init ("("); 134 dcl RIGHT_PAREN char (1) int static options (constant) init (")"); 135 136 dcl ( 137 ( 138 PTR_DESC init ("100110100000000000000000000000000000"b) 139 ), 140 ( 141 CMPX_FD init ("100110000000000000000000000000000000"b) 142 ), 143 ( 144 REAL_FD init ("100101000000000000000000000000000000"b) 145 ), 146 ( 147 BIT_DESC init ("101001100000000000000000000000000000"b) 148 ), 149 ( 150 CHAR_DESC init ("101010100000000000000000000000000000"b) 151 ), 152 ( 153 BIT36_DESC init ("101001100000000000000000000000100100"b) 154 ) 155 ) bit (36); 156 157 dcl 1 token_data_temp like token_data; /* for temporary storage of token data */ 158 159 dcl token_item char (must_free_len) based (must_free_ptr); 160 dcl first_char char (1) based (token_data_temp.t_ptr); 161 dcl bit_offset (10) bit (1) based; 162 dcl repl_factor char (repl_len) based (repl_ptr); 163 dcl constant_desc bit (36); 164 dcl constant_string char (cs_len) based (cs_ptr); 165 dcl one_repl_ch char (1) based (orc_ptr); 166 dcl one_source_ch char (1) based (osc_ptr); 167 168 dcl (i, j, k, temp, target_type, source_type) fixed bin; 169 170 dcl temp_desc bit (36) based; 171 172 dcl (cur_pos_temp, bit_len, cs_len, ci_len, repl_fac, repl_len, must_free_len, 173 target_length, icode, code, source_length) fixed bin (35); 174 175 dcl initial_mrds_vclock float bin (63); 176 177 dcl (expression_test, check_min_num_of_args, get_comma, repl_flag) bit (1); 178 179 dcl (addr, addrel, fixed, null, rel, search, substr, vclock) builtin; 180 181 dcl ( 182 NULL_PTR init (null), 183 ad_ptr init (null), 184 ci_ptr init (null), 185 cs_ptr init (null), 186 lit_ptr init (null), 187 must_free_ptr init (null), 188 orc_ptr init (null), 189 osc_ptr init (null), 190 repl_ptr init (null), 191 source_ptr init (null) 192 ) ptr; 193 194 dcl 1 ef_d like ef_data; 195 196 dcl ( 197 linus_data_$max_expr_items, 198 linus_data_$max_pred_stack_size, 199 linus_data_$max_range_items, 200 linus_data_$max_sclf_items, 201 linus_data_$max_set_stack_size, 202 linus_error_$expr_ovfl, 203 linus_error_$func_args_parens, 204 linus_error_$inv_sclf_args, 205 linus_error_$inv_token_type, 206 linus_error_$inv_tup_var, 207 linus_error_$no_comma, 208 linus_error_$sclf_null_arg, 209 linus_error_$select_list_ovfl, 210 linus_error_$too_few_sclf_args, 211 linus_error_$too_many_sclf_args, 212 mrds_data_$max_select_items, 213 mrds_data_$max_temp_rels, 214 mrds_data_$max_token_size, 215 sys_info$max_seg_size 216 ) fixed bin (35) ext; 217 218 dcl assign_round_ 219 entry (ptr, fixed bin, fixed bin (35), ptr, fixed bin, fixed bin (35)); 220 dcl cu_$ptr_call entry options (variable); 221 dcl dsl_$get_fn_info 222 entry (fixed bin (35), char (*), ptr, ptr, fixed bin (35)); 223 dcl linus_assign_data entry (bit (36), fixed bin, fixed bin (35)); 224 dcl linus_lila_alloc_lit entry (ptr, ptr, ptr, fixed bin (35)); 225 dcl linus_lila_build_expr_tab entry (ptr, ptr, ptr, ptr, fixed bin (35)); 226 dcl linus_lila_error entry (ptr, ptr, fixed bin (35), char (*)); 227 dcl linus_lila_get_token entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35)); 228 dcl linus_lila_set_fn entry (ptr, ptr, ptr, ptr, fixed bin (35)); 229 dcl work_area area (sys_info$max_seg_size) based (lcb.lila_area_ptr); 230 231 NULL_PTR, cs_ptr, sfi_ptr, sclf_ptr, ad_ptr, al_ptr = null; 232 233 linus_rel_array_ptr = lcb.rel_array_ptr; 234 235 ttn_ptr = lcb.ttn_ptr; 236 icode, ef_data.nmrds_items, code = 0; 237 ef_data.var_name = ""; 238 must_free_len = token_data.length; 239 must_free_ptr = token_data.t_ptr; 240 token_data_temp = token_data; 241 lv_ptr = lcb.lv_ptr; 242 lsb_ptr = ls_header.cur_ptr; 243 lss_ptr = ls_block.back_ptr; 244 245 if lcb.timing_mode then 246 initial_mrds_vclock = vclock; 247 call 248 dsl_$get_fn_info (lcb.db_index, token_item, lcb.lila_area_ptr, sfi_ptr, 249 icode); 250 if lcb.timing_mode then 251 lcb.mrds_time = lcb.mrds_time + (vclock - initial_mrds_vclock); 252 if icode ^= 0 then 253 call error (icode, ""); /* ok to continue */ 254 check_min_num_of_args = "1"b; 255 if scalfn_info.nargs = 0 then do; 256 nsclf_args_init = linus_data_$max_sclf_items; 257 check_min_num_of_args = "0"b; 258 end; 259 else nsclf_args_init = scalfn_info.nargs; 260 allocate scal_fn in (work_area); 261 scal_fn.nargs = 0; 262 call get_token; 263 if icode ^= 0 then 264 call error (icode, ""); 265 if token_data.key ^= LP then 266 call error (linus_error_$func_args_parens, ""); 267 scal_fn.entry_ptr = scalfn_info.entry_ptr; /* init function entry pointer */ 268 call get_token; 269 270 do while (token_data.key ^= RP & token_data.key ^= NULL); 271 if token_data.key = COMMA then 272 call error (linus_error_$sclf_null_arg, ""); /* comma is an invalid token */ 273 scal_fn.nargs = scal_fn.nargs + 1; 274 scal_fn.arg.ef_ptr (scal_fn.nargs) = null; 275 get_comma = "1"b; /* skip comma */ 276 if scalfn_info.info_ent_ptr = null then do; 277 call main_loop; 278 call assign_var; 279 end; 280 else do; 281 call main_loop; 282 scal_fn.arg.must_convert (scal_fn.nargs) = "0"b; /* No conversion necessary */ 283 end; 284 if get_comma then 285 call get_token; 286 if ^(token_data.key = RP | token_data.key = NULL) then 287 if token_data.key = COMMA then 288 call get_token; /* comma is scal_func arg delimeter */ 289 else call error (linus_error_$no_comma, ""); 290 if scal_fn.nargs > nsclf_args_init then do; /* too many arguments are being passed */ 291 token_data.key = NULL; 292 call error (linus_error_$too_many_sclf_args, ""); 293 end; 294 end; 295 296 if scal_fn.nargs < nsclf_args_init & check_min_num_of_args then do; 297 token_data.key = NULL; 298 call error (linus_error_$too_few_sclf_args, ""); 299 end; 300 if token_data.key = NULL then 301 call error (linus_error_$sclf_null_arg, ""); 302 else token_data.key = NULL; 303 num_ptrs = scal_fn.nargs * 2 + 2; /* number of args * 2 */ 304 allocate arg_list in (work_area); 305 scal_fn.arg_list_ptr = al_ptr; 306 arg_list.pad = 0; 307 arg_list.arg_count, arg_list.desc_count = num_ptrs; 308 arg_list.code = 4; 309 do i = 1 to scal_fn.nargs; /* set argument and descriptor pointers in arg_list */ 310 k = scal_fn.nargs + 1 + i; 311 if scal_fn.arg.must_convert (i) then do; 312 arg_list.arg_des_ptr (i) = scal_fn.arg.arg_assn_ptr (i); 313 arg_list.arg_des_ptr (k) = addr (scal_fn.arg.arg_desc (i)); 314 call var_desc ((scal_fn.arg.arg_desc (i))); 315 end; 316 else do; 317 arg_list.arg_des_ptr (i) = scal_fn.arg.assn_ptr (i); 318 arg_list.arg_des_ptr (k) = addr (scal_fn.arg.desc (i)); 319 call var_desc ((scal_fn.arg.desc (i))); 320 end; 321 end; 322 if scalfn_info.info_ent_ptr = null then 323 scal_fn.rslt_desc = scalfn_info.rslt_desc; 324 else do; 325 ndescs_init = scal_fn.nargs; /* pass descriptors to info entry to obtain result desc */ 326 allocate arg_descs in (work_area); 327 do i = 1 to arg_descs.ndescs; 328 arg_descs.desc (i) = 329 arg_list.arg_des_ptr (i + 1 + ndescs_init) -> temp_desc; 330 end; 331 call 332 cu_$ptr_call (scalfn_info.info_ent_ptr, ad_ptr, scal_fn.rslt_desc); 333 /* get result descriptor */ 334 end; 335 if ad_ptr ^= null then 336 ad_ptr = null; 337 338 ef_data.ef_ptr = sclf_ptr; 339 if scal_fn.rslt_desc = "0"b then 340 call 341 linus_lila_error (lcb_ptr, lsh_ptr, linus_error_$inv_sclf_args, 342 (scalfn_info.name)); 343 ef_data.desc = scal_fn.rslt_desc; /* set ef data */ 344 call 345 linus_assign_data ((scal_fn.rslt_desc), ef_data.assn_type, 346 ef_data.assn_len); 347 call 348 linus_lila_alloc_lit (lcb_ptr, addr (scal_fn.rslt_desc), 349 ef_data.assn_ptr, ef_data.bit_length); 350 arg_list.arg_des_ptr (arg_list.desc_count) = addr (scal_fn.rslt_desc); 351 k = arg_list.desc_count / 2; 352 arg_list.arg_des_ptr (k) = ef_data.assn_ptr; 353 call var_desc ((scal_fn.rslt_desc)); 354 355 sfi_ptr = null; 356 cs_ptr = null; 357 358 main_loop: 359 proc; 360 if ^(token_data.key > NULL & token_data.key < TAB_NAME) then 361 call error (linus_error_$inv_token_type, token_item); 362 else do; 363 expression_test = "0"b; 364 if token_data.key = SET_FN then do; 365 call 366 linus_lila_set_fn (lcb_ptr, lsh_ptr, td_ptr, addr (ef_d), icode); 367 if icode ^= 0 then 368 call error (icode, ""); 369 call update_efdata; 370 scal_fn.arg.type (scal_fn.nargs) = SETFN; 371 call 372 init_sclf_source ((ef_d.desc), ef_d.assn_ptr, ef_d.assn_type, 373 ef_d.assn_len, ef_d.ef_ptr); 374 end; 375 else if token_data.key = SCAL_FN then do; 376 call 377 linus_lila_scal_fn (lcb_ptr, lsh_ptr, td_ptr, addr (ef_d), icode) 378 ; 379 if icode ^= 0 then 380 call error (icode, ""); 381 call update_efdata; 382 scal_fn.arg.type (scal_fn.nargs) = SCALFN; 383 call 384 init_sclf_source ((ef_d.desc), ef_d.assn_ptr, ef_d.assn_type, 385 ef_d.assn_len, ef_d.ef_ptr); 386 end; 387 else if token_data.key = LP then 388 call build_expr; 389 else do; 390 call expression_check; 391 if expression_test then 392 call build_expr; /* look ahead for expression */ 393 else do; /* LIN_VAR, CONST or COL_SPEC -- init ef_data structure */ 394 if token_data.key = COL_SPEC then 395 call sclf_col_spec; /* database item */ 396 else if token_data.key = LINUS_VAR then do; 397 scal_fn.arg.type (scal_fn.nargs) = LINVAR; 398 do i = 1 to variables.nvars 399 while (variables.var_info.name (i) ^= token_item); 400 end; 401 call 402 init_sclf_source (variables.var_info.desc (i), 403 variables.var_info.var_ptr (i), 404 variables.var_info.assn_type (i), 405 variables.var_info.assn_len (i), NULL_PTR); 406 end; 407 else if token_data.key = CONST then 408 call process_constant; /* constant */ 409 end; 410 end; 411 end; 412 end main_loop; 413 414 var_desc: 415 proc (desc); /* find varying strings and bump arg_list ptr */ 416 417 dcl desc bit (36); 418 419 temp = fixed (substr (desc, 2, 6)); 420 if temp = BITVAR | temp = CHARVAR then 421 arg_list.arg_des_ptr (i) = addrel (arg_list.arg_des_ptr (i), 1); 422 423 end var_desc; 424 425 build_expr: 426 proc; 427 call 428 linus_lila_build_expr_tab (lcb_ptr, lsh_ptr, td_ptr, addr (ef_d), 429 icode); 430 if icode ^= 0 then 431 call error (icode, ""); 432 get_comma = "0"b; /* build_expr routine stops at comma */ 433 call update_efdata; 434 scal_fn.arg.type (scal_fn.nargs) = EXPR; 435 call 436 init_sclf_source ((ef_d.desc), ef_d.assn_ptr, ef_d.assn_type, 437 ef_d.assn_len, ef_d.ef_ptr); 438 end build_expr; 439 440 update_efdata: 441 proc; 442 443 444 if ef_d.var_name ^= "" then do; 445 if ef_data.var_name = "" then 446 ef_data.var_name = ef_d.var_name; 447 if ef_data.var_name ^= ef_d.var_name then 448 call error (linus_error_$inv_tup_var, ""); 449 end; 450 if ef_data.nmrds_items >= linus_data_$max_expr_items then 451 call error (linus_error_$expr_ovfl, ""); 452 if ef_d.nmrds_items ^= 0 then 453 do i = 1 to ef_d.nmrds_items; 454 ef_data.nmrds_items = ef_data.nmrds_items + 1; 455 ef_data.mrds_items.attr_name (ef_data.nmrds_items) = 456 ef_d.mrds_items.attr_name (i); 457 ef_data.mrds_items.domain_name (ef_data.nmrds_items) = 458 ef_d.mrds_items.domain_name (i); 459 ef_data.mrds_items.bit_length (ef_data.nmrds_items) = 460 ef_d.mrds_items.bit_length (i); 461 ef_data.mrds_items.desc (ef_data.nmrds_items) = 462 ef_d.mrds_items.desc (i); 463 ef_data.mrds_items.assn_ptr (ef_data.nmrds_items) = 464 ef_d.mrds_items.assn_ptr (i); 465 ef_data.mrds_items.assn_type (ef_data.nmrds_items) = 466 ef_d.mrds_items.assn_type (i); 467 ef_data.mrds_items.assn_len (ef_data.nmrds_items) = 468 ef_d.mrds_items.assn_len (i); 469 end; 470 471 end update_efdata; 472 473 sclf_col_spec: 474 proc; /* database item */ 475 476 dcl (i, j) fixed bin; 477 478 dcl rel_name char (32); 479 480 scal_fn.arg.type (scal_fn.nargs) = DATABASE; /* set item type */ 481 do i = 1 to ls_block.nselects 482 while (token_data.mvar || "." || token_item ^= ls_block.sel_items (i)); 483 end; /* see if item has already been selected */ 484 if ef_data.var_name = "" then 485 ef_data.var_name = token_data.mvar; 486 else if token_data.mvar ^= ef_data.var_name then 487 call error (linus_error_$inv_tup_var, ""); 488 if i <= ls_block.nselects then do; 489 call 490 init_sclf_source (ls_set.domain_info.desc (i), 491 ls_set.domain_info.assn_ptr (i), ls_set.domain_info.assn_type (i), 492 ls_set.domain_info.assn_len (i), NULL_PTR); 493 end; 494 else do; /* get relation name */ 495 do i = 1 to ls_block.nritems 496 while (token_data.mvar ^= ls_block.range_items.mrds_var (i)); 497 end; 498 if ls_block.range_items.rel_name (i) = ".V." then 499 rel_name = temp_tab_names (ls_block.range_items.rel_index (i)); 500 else rel_name = ls_block.range_items.rel_name (i); 501 do j = 1 to linus_rel_array.num_of_rels 502 while (linus_rel_array.rels.rel_name (j) ^= rel_name); 503 end; 504 rslt_ptr = linus_rel_array.rels.rslt_info_ptr (j); 505 do j = 1 to rslt_info.num_attr 506 while (token_item ^= rslt_info.attr.attr_name (j)); 507 end; /* get info for attribute selected */ 508 call 509 linus_assign_data ((rslt_info.attr.descriptor (j)), source_type, 510 source_length); /* 511* returns assign type and length */ 512 call 513 linus_lila_alloc_lit (lcb_ptr, addr (rslt_info.attr.descriptor (j)), 514 lit_ptr, bit_len); /* 515* allocate in literal pool */ 516 call 517 init_sclf_source (rslt_info.attr.descriptor (j), lit_ptr, 518 source_type, source_length, NULL_PTR); 519 if ls_block.nselects >= mrds_data_$max_select_items then 520 call error (linus_error_$select_list_ovfl, ""); 521 else do; 522 ls_block.nselects = ls_block.nselects + 1; 523 ls_block.sel_items (ls_block.nselects) = 524 token_data.mvar || "." || token_item; 525 end; 526 ls_set.nselects = ls_set.nselects + 1; /* update ls_set */ 527 if ls_set.nselects > mrds_data_$max_select_items then 528 call error (linus_error_$select_list_ovfl, ""); 529 ef_data.nmrds_items = ef_data.nmrds_items + 1; /* pass mrds item info in ef_data */ 530 ef_data.mrds_items.attr_name (ef_data.nmrds_items) = token_item; 531 ls_set.domain_info.bit_length (ls_set.nselects), 532 ef_data.mrds_items.bit_length (ef_data.nmrds_items) = bit_len; 533 ls_set.domain_info.assn_ptr (ls_set.nselects), 534 ef_data.mrds_items.assn_ptr (ef_data.nmrds_items) = lit_ptr; 535 ls_set.domain_info.assn_type (ls_set.nselects), 536 ef_data.mrds_items.assn_type (ef_data.nmrds_items) = source_type; 537 ls_set.domain_info.assn_len (ls_set.nselects), 538 ef_data.mrds_items.assn_len (ef_data.nmrds_items) = source_length; 539 ls_set.domain_info.desc (ls_set.nselects), 540 ef_data.mrds_items.desc (ef_data.nmrds_items) = 541 rslt_info.attr.descriptor (j); 542 ls_set.domain_info.name (ls_set.nselects), 543 ef_data.mrds_items.domain_name (ef_data.nmrds_items) = 544 rslt_info.attr.domain_name (j); 545 end; 546 547 end sclf_col_spec; 548 549 init_sclf_source: 550 proc (source_desc, source_ptr, source_type, source_len, fn_ptr); 551 dcl source_desc bit (36) aligned; 552 dcl (source_ptr, fn_ptr) ptr; 553 dcl source_type fixed bin; 554 dcl source_len fixed bin (35); 555 556 scal_fn.arg.desc (scal_fn.nargs) = source_desc; 557 scal_fn.arg.assn_ptr (scal_fn.nargs) = source_ptr; 558 scal_fn.arg.assn_type (scal_fn.nargs) = source_type; 559 scal_fn.arg.assn_len (scal_fn.nargs) = source_len; 560 scal_fn.arg.ef_ptr (scal_fn.nargs) = fn_ptr; 561 562 end init_sclf_source; /* set assign data in scalar function structure */ 563 564 assign_var: 565 proc; 566 scal_fn.arg.must_convert (scal_fn.nargs) = "1"b; /* must convert */ 567 call 568 linus_assign_data ((scalfn_info.arg_desc (scal_fn.nargs)), target_type, 569 target_length); 570 call 571 linus_lila_alloc_lit (lcb_ptr, 572 addr (scalfn_info.arg_desc (scal_fn.nargs)), lit_ptr, bit_len); 573 /* 574* allocate in literal pool */ 575 scal_fn.arg.arg_desc (scal_fn.nargs) = 576 scalfn_info.arg_desc (scal_fn.nargs); 577 scal_fn.arg.arg_assn_type (scal_fn.nargs) = target_type; 578 scal_fn.arg.arg_assn_len (scal_fn.nargs) = target_length; 579 scal_fn.arg.arg_assn_ptr (scal_fn.nargs) = lit_ptr; 580 end assign_var; 581 582 583 584 get_token: 585 proc; 586 587 if token_data.must_free then /* must free */ 588 must_free_ptr = null; 589 call 590 linus_lila_get_token (lcb_ptr, lsh_ptr, ls_header.cur_pos, td_ptr, 591 icode); 592 if icode ^= 0 then 593 call error (icode, ""); 594 must_free_len = token_data.length; 595 must_free_ptr = token_data.t_ptr; 596 597 end get_token; 598 599 expression_check: 600 proc; 601 602 cur_pos_temp = ls_header.cur_pos; /* save current token data */ 603 token_data_temp = token_data; 604 call 605 linus_lila_get_token (lcb_ptr, lsh_ptr, ls_header.cur_pos, td_ptr, 606 icode); 607 must_free_len = token_data.length; 608 must_free_ptr = token_data.t_ptr; 609 if icode ^= 0 then 610 call error (icode, ""); 611 if token_data.key > LP & token_data.key < TAB_NAME then 612 /* an 613* expression was found */ 614 expression_test = "1"b; 615 else expression_test = "0"b; 616 if token_data.must_free then /* reset token data */ 617 must_free_ptr = null; 618 ls_header.cur_pos = cur_pos_temp; 619 token_data = token_data_temp; 620 must_free_len = token_data.length; 621 must_free_ptr = token_data.t_ptr; 622 623 end expression_check; 624 625 error: 626 proc (err_code, string); 627 628 dcl err_code fixed bin (35); 629 dcl string char (*); 630 631 call linus_lila_error (lcb_ptr, lsh_ptr, err_code, string); 632 633 end error; 634 635 process_constant: 636 proc; 637 scal_fn.arg.type (scal_fn.nargs) = CONSTANT; 638 token_data_temp = token_data; 639 repl_flag = "0"b; 640 source_length = token_data.length; 641 source_ptr = token_data.t_ptr; 642 if (search (token_item, "i")) ^= NULL then 643 constant_desc = CMPX_FD; 644 else constant_desc = REAL_FD; 645 addr (constant_desc) -> arg_len_bits.length = 646 addr (token_data.length) -> arg_len_bits.length; 647 if first_char = LEFT_PAREN then do; 648 repl_flag = "1"b; /* there is a replication factor */ 649 repl_ptr, token_data.t_ptr = addr (token_data.t_ptr -> bit_offset (10)); 650 do j = 2 to token_data.length while (first_char ^= RIGHT_PAREN); 651 token_data.t_ptr = addr (token_data.t_ptr -> bit_offset (10)); 652 end; 653 repl_len = j - 2; 654 token_data.length = token_data.length - j; 655 token_data.t_ptr = addr (token_data.t_ptr -> bit_offset (10)); 656 token_data_temp = token_data; 657 repl_fac = fixed (repl_factor); 658 end; 659 if first_char = QUOTE then do; 660 ci_ptr, token_data_temp.t_ptr = 661 addr (token_data_temp.t_ptr -> bit_offset (10)); 662 do j = 2 to token_data_temp.length while (first_char ^= QUOTE); 663 token_data_temp.t_ptr = addr (token_data_temp.t_ptr -> bit_offset (10)); 664 end; 665 ci_len = token_data_temp.length - 2; 666 if j = token_data_temp.length then 667 constant_desc = CHAR_DESC; 668 else do; 669 ci_len = token_data_temp.length - 1; 670 constant_desc = BIT_DESC; 671 end; 672 addr (constant_desc) -> arg_len_bits.length = 673 addr (ci_len) -> arg_len_bits.length; 674 source_ptr = ci_ptr; 675 source_length = ci_len; 676 if repl_flag then do; 677 source_length, cs_len = repl_fac * ci_len; 678 addr (constant_desc) -> arg_len_bits.length = 679 addr (cs_len) -> arg_len_bits.length; 680 allocate constant_string in (work_area); 681 source_ptr, orc_ptr = cs_ptr; 682 do j = 1 to repl_fac; /* to number of replication factor */ 683 osc_ptr = ci_ptr; 684 do k = 1 to ci_len; /* one for each character in string */ 685 one_repl_ch = one_source_ch; 686 orc_ptr = addr (orc_ptr -> bit_offset (10)); 687 osc_ptr = addr (osc_ptr -> bit_offset (10)); 688 end; 689 end; 690 end; 691 end; 692 addr (CHAR_DESC) -> arg_len_bits.length = 693 addr (source_length) -> arg_len_bits.length; 694 call linus_assign_data ((CHAR_DESC), source_type, source_length); 695 /* returns type & length */ 696 call linus_assign_data (constant_desc, target_type, target_length); 697 call 698 linus_lila_alloc_lit (lcb_ptr, addr (constant_desc), lit_ptr, bit_len); 699 call 700 assign_round_ (lit_ptr, target_type, target_length, source_ptr, source_type, 701 source_length); 702 call 703 init_sclf_source ((constant_desc), lit_ptr, target_type, target_length, 704 NULL_PTR); 705 706 cs_ptr = null; 707 708 end process_constant; 709 710 end linus_lila_scal_fn; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/14/90 0915.0 linus_lila_scal_fn.pl1 >spec>install>1039>linus_lila_scal_fn.pl1 68 1 07/29/86 1248.4 linus_lcb.incl.pl1 >ldd>include>linus_lcb.incl.pl1 70 2 03/27/82 0534.5 linus_ef_data.incl.pl1 >ldd>include>linus_ef_data.incl.pl1 72 3 03/27/82 0534.5 linus_ls_block.incl.pl1 >ldd>include>linus_ls_block.incl.pl1 3-4 4 03/27/82 0534.5 linus_ls_common.incl.pl1 >ldd>include>linus_ls_common.incl.pl1 74 5 11/23/82 1427.2 linus_ls_header.incl.pl1 >ldd>include>linus_ls_header.incl.pl1 5-4 6 03/27/82 0534.5 linus_ls_common.incl.pl1 >ldd>include>linus_ls_common.incl.pl1 76 7 03/27/82 0534.5 linus_ls_set.incl.pl1 >ldd>include>linus_ls_set.incl.pl1 7-4 8 03/27/82 0534.5 linus_ls_common.incl.pl1 >ldd>include>linus_ls_common.incl.pl1 78 9 03/27/82 0534.5 linus_rel_array.incl.pl1 >ldd>include>linus_rel_array.incl.pl1 80 10 03/27/82 0534.5 linus_scal_fn.incl.pl1 >ldd>include>linus_scal_fn.incl.pl1 82 11 03/27/82 0534.5 linus_temp_tab_names.incl.pl1 >ldd>include>linus_temp_tab_names.incl.pl1 84 12 03/27/82 0534.5 linus_token_data.incl.pl1 >ldd>include>linus_token_data.incl.pl1 86 13 03/27/82 0534.5 linus_variables.incl.pl1 >ldd>include>linus_variables.incl.pl1 88 14 10/14/83 1709.0 mdbm_arg_list.incl.pl1 >ldd>include>mdbm_arg_list.incl.pl1 90 15 10/14/83 1709.0 mrds_rslt_info.incl.pl1 >ldd>include>mrds_rslt_info.incl.pl1 92 16 10/14/83 1708.5 mrds_scalfn_info.incl.pl1 >ldd>include>mrds_scalfn_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. BIT36_DESC 000136 automatic bit(36) initial packed unaligned dcl 136 set ref 136* BITVAR constant fixed bin(17,0) initial dcl 105 ref 420 BIT_DESC 000134 automatic bit(36) initial packed unaligned dcl 136 set ref 136* 670 CHARVAR constant fixed bin(17,0) initial dcl 105 ref 420 CHAR_DESC 000135 automatic bit(36) initial packed unaligned dcl 136 set ref 136* 666 692 694 CMPX_FD 000132 automatic bit(36) initial packed unaligned dcl 136 set ref 136* 642 COL_SPEC constant fixed bin(17,0) initial dcl 12-13 ref 394 COMMA constant fixed bin(17,0) initial dcl 12-13 ref 271 286 CONST constant fixed bin(17,0) initial dcl 12-13 ref 407 CONSTANT constant fixed bin(17,0) initial dcl 105 ref 637 DATABASE constant fixed bin(17,0) initial dcl 105 ref 480 EXPR constant fixed bin(17,0) initial dcl 105 ref 434 LEFT_PAREN 004455 constant char(1) initial packed unaligned dcl 133 ref 647 LINUS_VAR constant fixed bin(17,0) initial dcl 12-13 ref 396 LINVAR constant fixed bin(17,0) initial dcl 105 ref 397 LP constant fixed bin(17,0) initial dcl 12-13 ref 265 387 611 NULL constant fixed bin(17,0) initial dcl 12-13 ref 270 286 291 297 300 302 360 642 NULL_PTR 000216 automatic pointer initial dcl 181 set ref 181* 231* 401* 489* 516* 702* PTR_DESC 000131 automatic bit(36) initial packed unaligned dcl 136 set ref 136* QUOTE 004456 constant char(1) initial packed unaligned dcl 132 ref 659 662 REAL_FD 000133 automatic bit(36) initial packed unaligned dcl 136 set ref 136* 644 RIGHT_PAREN 004454 constant char(1) initial packed unaligned dcl 134 ref 650 RP constant fixed bin(17,0) initial dcl 12-13 ref 270 286 SCALFN constant fixed bin(17,0) initial dcl 105 ref 382 SCAL_FN constant fixed bin(17,0) initial dcl 12-13 ref 375 SETFN constant fixed bin(17,0) initial dcl 105 ref 370 SET_FN constant fixed bin(17,0) initial dcl 12-13 ref 364 TAB_NAME constant fixed bin(17,0) initial dcl 12-13 ref 360 611 ad_ptr 000220 automatic pointer initial dcl 181 set ref 181* 231* 326* 327 328 331* 335 335* addr builtin function dcl 179 ref 313 318 347 347 350 365 365 376 376 427 427 512 512 570 570 645 645 649 651 655 660 663 672 672 678 678 686 687 692 692 697 697 addrel builtin function dcl 179 ref 420 al_ptr 000120 automatic pointer dcl 14-13 set ref 231* 304* 305 306 307 307 308 312 313 317 318 328 350 350 351 352 420 420 arg 6 based structure array level 2 dcl 10-3 arg_assn_len 21 based fixed bin(35,0) array level 3 dcl 10-3 set ref 578* arg_assn_ptr 16 based pointer array level 3 dcl 10-3 set ref 312 579* arg_assn_type 20 based fixed bin(17,0) array level 3 dcl 10-3 set ref 577* arg_count based fixed bin(17,0) level 2 packed packed unaligned dcl 14-6 set ref 307* arg_des_ptr 2 based pointer array level 2 dcl 14-6 set ref 312* 313* 317* 318* 328 350* 352* 420* 420 arg_desc 14 based bit(36) array level 3 in structure "scal_fn" dcl 10-3 in procedure "linus_lila_scal_fn" set ref 313 314 575* arg_desc 20 based bit(36) array level 2 in structure "scalfn_info" dcl 16-3 in procedure "linus_lila_scal_fn" set ref 567 570 570 575 arg_descs based structure level 1 dcl 99 set ref 326 arg_len_bits based structure level 1 packed packed unaligned dcl 95 arg_list based structure level 1 unaligned dcl 14-6 set ref 304 arg_list_ptr 2 based pointer level 2 dcl 10-3 set ref 305* assign_round_ 000050 constant entry external dcl 218 ref 699 assn_len 15 based fixed bin(35,0) level 2 in structure "ef_data" dcl 2-3 in procedure "linus_lila_scal_fn" set ref 344* assn_len 45 based fixed bin(35,0) array level 3 in structure "ef_data" dcl 2-3 in procedure "linus_lila_scal_fn" set ref 467* 537* assn_len 45 000242 automatic fixed bin(35,0) array level 3 in structure "ef_d" dcl 194 in procedure "linus_lila_scal_fn" set ref 467 assn_len based fixed bin(35,0) array level 3 in structure "ls_set" dcl 7-3 in procedure "linus_lila_scal_fn" set ref 489* 537* assn_len 15 000242 automatic fixed bin(35,0) level 2 in structure "ef_d" dcl 194 in procedure "linus_lila_scal_fn" set ref 371* 383* 435* assn_len 16 based fixed bin(35,0) array level 3 in structure "variables" dcl 13-3 in procedure "linus_lila_scal_fn" set ref 401* assn_len 13 based fixed bin(35,0) array level 3 in structure "scal_fn" dcl 10-3 in procedure "linus_lila_scal_fn" set ref 559* assn_ptr 10 based pointer array level 3 in structure "scal_fn" dcl 10-3 in procedure "linus_lila_scal_fn" set ref 317 557* assn_ptr 12 based pointer level 2 in structure "ef_data" dcl 2-3 in procedure "linus_lila_scal_fn" set ref 347* 352 assn_ptr 42 based pointer array level 3 in structure "ef_data" dcl 2-3 in procedure "linus_lila_scal_fn" set ref 463* 533* assn_ptr based pointer array level 3 in structure "ls_set" dcl 7-3 in procedure "linus_lila_scal_fn" set ref 489* 533* assn_ptr 12 000242 automatic pointer level 2 in structure "ef_d" dcl 194 in procedure "linus_lila_scal_fn" set ref 371* 383* 435* assn_ptr 42 000242 automatic pointer array level 3 in structure "ef_d" dcl 194 in procedure "linus_lila_scal_fn" set ref 463 assn_type 44 based fixed bin(17,0) array level 3 in structure "ef_data" dcl 2-3 in procedure "linus_lila_scal_fn" set ref 465* 535* assn_type 14 000242 automatic fixed bin(17,0) level 2 in structure "ef_d" dcl 194 in procedure "linus_lila_scal_fn" set ref 371* 383* 435* assn_type 15 based fixed bin(17,0) array level 3 in structure "variables" dcl 13-3 in procedure "linus_lila_scal_fn" set ref 401* assn_type 14 based fixed bin(17,0) level 2 in structure "ef_data" dcl 2-3 in procedure "linus_lila_scal_fn" set ref 344* assn_type 44 000242 automatic fixed bin(17,0) array level 3 in structure "ef_d" dcl 194 in procedure "linus_lila_scal_fn" set ref 465 assn_type 12 based fixed bin(17,0) array level 3 in structure "scal_fn" dcl 10-3 in procedure "linus_lila_scal_fn" set ref 558* assn_type based fixed bin(17,0) array level 3 in structure "ls_set" dcl 7-3 in procedure "linus_lila_scal_fn" set ref 489* 535* attr 4 based structure array level 2 dcl 15-7 attr_name 20 based char(32) array level 3 in structure "ef_data" dcl 2-3 in procedure "linus_lila_scal_fn" set ref 455* 530* attr_name 4 based char(32) array level 3 in structure "rslt_info" dcl 15-7 in procedure "linus_lila_scal_fn" ref 505 attr_name 20 000242 automatic char(32) array level 3 in structure "ef_d" packed packed unaligned dcl 194 in procedure "linus_lila_scal_fn" set ref 455 back_ptr 2 based pointer level 2 dcl 3-3 ref 243 bit_len 000176 automatic fixed bin(35,0) dcl 172 set ref 512* 531 570* 697* bit_length based fixed bin(35,0) array level 3 in structure "ls_set" dcl 7-3 in procedure "linus_lila_scal_fn" set ref 531* bit_length 40 000242 automatic fixed bin(35,0) array level 3 in structure "ef_d" dcl 194 in procedure "linus_lila_scal_fn" set ref 459 bit_length 40 based fixed bin(35,0) array level 3 in structure "ef_data" dcl 2-3 in procedure "linus_lila_scal_fn" set ref 459* 531* bit_length 10 based fixed bin(35,0) level 2 in structure "ef_data" dcl 2-3 in procedure "linus_lila_scal_fn" set ref 347* bit_offset based bit(1) array packed unaligned dcl 161 set ref 649 651 655 660 663 686 687 check_min_num_of_args 000213 automatic bit(1) packed unaligned dcl 177 set ref 254* 257* 296 ci_len 000200 automatic fixed bin(35,0) dcl 172 set ref 665* 669* 672 675 677 684 ci_ptr 000222 automatic pointer initial dcl 181 set ref 181* 660* 674 683 code 0(18) based fixed bin(17,0) level 2 in structure "arg_list" packed packed unaligned dcl 14-6 in procedure "linus_lila_scal_fn" set ref 308* code parameter fixed bin(35,0) dcl 172 in procedure "linus_lila_scal_fn" set ref 21 236* constant_desc 000166 automatic bit(36) packed unaligned dcl 163 set ref 642* 644* 645 666* 670* 672 678 696* 697 697 702 constant_string based char packed unaligned dcl 164 ref 680 cs_len 000177 automatic fixed bin(35,0) dcl 172 set ref 677* 678 680 680 cs_ptr 000224 automatic pointer initial dcl 181 set ref 181* 231* 356* 680* 681 706* cu_$ptr_call 000052 constant entry external dcl 220 ref 331 cur_pos 13 based fixed bin(35,0) level 2 dcl 5-3 set ref 589* 602 604* 618* cur_pos_temp 000175 automatic fixed bin(35,0) dcl 172 set ref 602* 618 cur_ptr 6 based pointer level 2 dcl 5-3 ref 242 db_index based fixed bin(35,0) level 2 dcl 1-53 set ref 247* desc based bit(36) array level 3 in structure "ls_set" dcl 7-3 in procedure "linus_lila_scal_fn" set ref 489* 539* desc 11 000242 automatic bit(36) level 2 in structure "ef_d" packed packed unaligned dcl 194 in procedure "linus_lila_scal_fn" set ref 371 383 435 desc 11 based bit(36) level 2 in structure "ef_data" dcl 2-3 in procedure "linus_lila_scal_fn" set ref 343* desc parameter bit(36) packed unaligned dcl 417 in procedure "var_desc" ref 414 419 desc 41 000242 automatic bit(36) array level 3 in structure "ef_d" packed packed unaligned dcl 194 in procedure "linus_lila_scal_fn" set ref 461 desc 41 based bit(36) array level 3 in structure "ef_data" dcl 2-3 in procedure "linus_lila_scal_fn" set ref 461* 539* desc 7 based bit(36) array level 3 in structure "scal_fn" dcl 10-3 in procedure "linus_lila_scal_fn" set ref 318 319 556* desc 17 based bit(36) array level 3 in structure "variables" dcl 13-3 in procedure "linus_lila_scal_fn" set ref 401* desc 1 based bit(36) array level 2 in structure "arg_descs" dcl 99 in procedure "linus_lila_scal_fn" set ref 328* desc_count 1 based fixed bin(17,0) level 2 packed packed unaligned dcl 14-6 set ref 307* 350 351 descriptor 26 based bit(36) array level 3 dcl 15-7 set ref 508 512 512 516* 539 domain_info based structure array level 2 dcl 7-3 domain_name 30 based char(32) array level 3 in structure "ef_data" dcl 2-3 in procedure "linus_lila_scal_fn" set ref 457* 542* domain_name 30 000242 automatic char(32) array level 3 in structure "ef_d" packed packed unaligned dcl 194 in procedure "linus_lila_scal_fn" set ref 457 domain_name 14 based char(32) array level 3 in structure "rslt_info" dcl 15-7 in procedure "linus_lila_scal_fn" ref 542 dsl_$get_fn_info 000054 constant entry external dcl 221 ref 247 ed_ptr parameter pointer dcl 2-22 ref 21 236 237 338 343 344 344 347 347 352 445 445 447 450 454 454 455 455 457 457 459 459 461 461 463 463 465 465 467 467 484 484 486 529 529 530 530 531 531 533 533 535 535 537 537 539 539 542 542 ef_d 000242 automatic structure level 1 unaligned dcl 194 set ref 365 365 376 376 427 427 ef_data based structure level 1 dcl 2-3 ef_ptr based pointer level 2 in structure "ef_data" dcl 2-3 in procedure "linus_lila_scal_fn" set ref 338* ef_ptr 22 based pointer array level 3 in structure "scal_fn" dcl 10-3 in procedure "linus_lila_scal_fn" set ref 274* 560* ef_ptr 000242 automatic pointer level 2 in structure "ef_d" dcl 194 in procedure "linus_lila_scal_fn" set ref 371* 383* 435* entry_ptr based pointer level 2 in structure "scal_fn" dcl 10-3 in procedure "linus_lila_scal_fn" set ref 267* entry_ptr 14 based pointer level 2 in structure "scalfn_info" dcl 16-3 in procedure "linus_lila_scal_fn" ref 267 err_code parameter fixed bin(35,0) dcl 628 set ref 625 631* expression_test 000212 automatic bit(1) packed unaligned dcl 177 set ref 363* 391 611* 615* first_char based char(1) packed unaligned dcl 160 ref 647 650 659 662 fixed builtin function dcl 179 ref 419 657 fn_ptr parameter pointer dcl 552 ref 549 560 get_comma 000214 automatic bit(1) packed unaligned dcl 177 set ref 275* 284 432* i 000167 automatic fixed bin(17,0) dcl 168 in procedure "linus_lila_scal_fn" set ref 309* 310 311 312 312 313 314 317 317 318 319* 327* 328 328* 398* 398* 401 401 401 401 420 420 452* 455 457 459 461 463 465 467* i 000312 automatic fixed bin(17,0) dcl 476 in procedure "sclf_col_spec" set ref 481* 481* 488 489 489 489 489 495* 495* 498 498 500 icode 000205 automatic fixed bin(35,0) dcl 172 set ref 236* 247* 252 252* 263 263* 365* 367 367* 376* 379 379* 427* 430 430* 589* 592 592* 604* 609 609* info_ent_ptr 12 based pointer level 2 dcl 16-3 set ref 276 322 331* initial_mrds_vclock 000210 automatic float bin(63) dcl 175 set ref 245* 250 j 000313 automatic fixed bin(17,0) dcl 476 in procedure "sclf_col_spec" set ref 501* 501* 504 505* 505* 508 512 512 516 539 542 j 000170 automatic fixed bin(17,0) dcl 168 in procedure "linus_lila_scal_fn" set ref 650* 653 654 662* 666 682* k 000171 automatic fixed bin(17,0) dcl 168 set ref 310* 313 318 351* 352 684* key based fixed bin(17,0) level 2 packed packed unaligned dcl 12-3 set ref 265 270 270 271 286 286 286 291* 297* 300 302* 360 360 364 375 387 394 396 407 611 611 lcb based structure level 1 dcl 1-53 lcb_ptr parameter pointer dcl 1-121 set ref 21 233 235 241 245 247 247 250 250 250 260 304 326 339* 347* 365* 376* 427* 512* 570* 589* 604* 631* 680 697* length 23 based fixed bin(35,0) level 2 in structure "token_data" dcl 12-3 in procedure "linus_lila_scal_fn" set ref 238 594 607 620 640 645 650 654* 654 length 0(12) based bit(24) level 2 in structure "arg_len_bits" packed packed unaligned dcl 95 in procedure "linus_lila_scal_fn" set ref 645* 645 672* 672 678* 678 692* 692 length 23 000140 automatic fixed bin(35,0) level 2 in structure "token_data_temp" dcl 157 in procedure "linus_lila_scal_fn" set ref 662 665 666 669 lila_area_ptr 62 based pointer level 2 dcl 1-53 set ref 247* 260 304 326 680 linus_assign_data 000056 constant entry external dcl 223 ref 344 508 567 694 696 linus_data_$max_expr_items 000010 external static fixed bin(35,0) dcl 196 ref 194 338 450 linus_data_$max_range_items 000012 external static fixed bin(35,0) dcl 196 ref 481 481 488 519 522 522 523 523 linus_data_$max_sclf_items 000014 external static fixed bin(35,0) dcl 196 ref 256 linus_data_$max_set_stack_size 000016 external static fixed bin(35,0) dcl 196 ref 489 489 489 489 531 533 535 537 539 542 linus_error_$expr_ovfl 000020 external static fixed bin(35,0) dcl 196 set ref 450* linus_error_$func_args_parens 000022 external static fixed bin(35,0) dcl 196 set ref 265* linus_error_$inv_sclf_args 000024 external static fixed bin(35,0) dcl 196 set ref 339* linus_error_$inv_token_type 000026 external static fixed bin(35,0) dcl 196 set ref 360* linus_error_$inv_tup_var 000030 external static fixed bin(35,0) dcl 196 set ref 447* 486* linus_error_$no_comma 000032 external static fixed bin(35,0) dcl 196 set ref 289* linus_error_$sclf_null_arg 000034 external static fixed bin(35,0) dcl 196 set ref 271* 300* linus_error_$select_list_ovfl 000036 external static fixed bin(35,0) dcl 196 set ref 519* 527* linus_error_$too_few_sclf_args 000040 external static fixed bin(35,0) dcl 196 set ref 298* linus_error_$too_many_sclf_args 000042 external static fixed bin(35,0) dcl 196 set ref 292* linus_lila_alloc_lit 000060 constant entry external dcl 224 ref 347 512 570 697 linus_lila_build_expr_tab 000062 constant entry external dcl 225 ref 427 linus_lila_error 000064 constant entry external dcl 226 ref 339 631 linus_lila_get_token 000066 constant entry external dcl 227 ref 589 604 linus_lila_set_fn 000070 constant entry external dcl 228 ref 365 linus_rel_array based structure level 1 unaligned dcl 9-10 linus_rel_array_ptr 000104 automatic pointer dcl 9-16 set ref 233* 501 501 504 lit_ptr 000226 automatic pointer initial dcl 181 set ref 181* 512* 516* 533 570* 579 697* 699* 702* ls_block based structure level 1 dcl 3-3 ls_header based structure level 1 dcl 5-3 ls_set based structure level 1 dcl 7-3 lsb_ptr 000100 automatic pointer dcl 3-32 set ref 242* 243 481 481 488 495 495 498 498 500 519 522 522 523 523 lsh_ptr parameter pointer dcl 5-15 set ref 21 242 339* 365* 376* 427* 589* 589 602 604* 604 618 631* lss_ptr 000102 automatic pointer dcl 7-33 set ref 243* 489 489 489 489 526 526 527 531 531 533 533 535 535 537 537 539 539 542 542 lv_ptr 32 based pointer level 2 in structure "lcb" dcl 1-53 in procedure "linus_lila_scal_fn" ref 241 lv_ptr 000116 automatic pointer dcl 13-14 in procedure "linus_lila_scal_fn" set ref 241* 398 398 401 401 401 401 mrds_data_$max_select_items 000044 external static fixed bin(35,0) dcl 196 ref 519 527 mrds_data_$max_token_size 000046 external static fixed bin(35,0) dcl 196 ref 481 481 523 523 523 mrds_items 20 000242 automatic structure array level 2 in structure "ef_d" unaligned dcl 194 in procedure "linus_lila_scal_fn" mrds_items 20 based structure array level 2 in structure "ef_data" dcl 2-3 in procedure "linus_lila_scal_fn" mrds_time 74 based float bin(63) level 2 dcl 1-53 set ref 250* 250 mrds_var 23 based varying char(32) array level 3 dcl 3-3 ref 495 must_convert 6(05) based bit(1) array level 3 packed packed unaligned dcl 10-3 set ref 282* 311 566* must_free 0(18) based bit(1) level 2 packed packed unaligned dcl 12-3 set ref 587 616 must_free_len 000203 automatic fixed bin(35,0) dcl 172 set ref 238* 247 247 360 360 398 481 505 523 530 594* 607* 620* 642 must_free_ptr 000230 automatic pointer initial dcl 181 set ref 181* 239* 247 360 398 481 505 523 530 587* 595* 608* 616* 621* 642 mvar 1 based varying char(32) level 2 dcl 12-3 set ref 481 484 486 495 523 name 2 based char(32) level 2 in structure "scalfn_info" dcl 16-3 in procedure "linus_lila_scal_fn" ref 339 name based char(32) array level 3 in structure "ls_set" dcl 7-3 in procedure "linus_lila_scal_fn" set ref 542* name 2 based char(32) array level 3 in structure "variables" dcl 13-3 in procedure "linus_lila_scal_fn" ref 398 nargs 17 based fixed bin(17,0) level 2 in structure "scalfn_info" dcl 16-3 in procedure "linus_lila_scal_fn" ref 255 259 nargs 5 based fixed bin(17,0) level 2 in structure "scal_fn" dcl 10-3 in procedure "linus_lila_scal_fn" set ref 260* 261* 273* 273 274 282 290 296 303 309 310 325 370 382 397 434 480 556 557 558 559 560 566 567 570 570 575 575 577 578 579 637 ndescs based fixed bin(17,0) level 2 dcl 99 set ref 326* 327 ndescs_init 000130 automatic fixed bin(17,0) dcl 103 set ref 325* 326 326 328 nmrds_items 16 000242 automatic fixed bin(17,0) level 2 in structure "ef_d" dcl 194 in procedure "linus_lila_scal_fn" set ref 452 452 nmrds_items 16 based fixed bin(17,0) level 2 in structure "ef_data" dcl 2-3 in procedure "linus_lila_scal_fn" set ref 236* 450 454* 454 455 457 459 461 463 465 467 529* 529 530 531 533 535 537 539 542 nritems 11 based fixed bin(17,0) level 2 dcl 3-3 ref 495 nsclf_args_init 000112 automatic fixed bin(17,0) dcl 10-28 set ref 256* 259* 260 260 290 296 nselects 6 based fixed bin(17,0) level 2 in structure "ls_set" dcl 7-3 in procedure "linus_lila_scal_fn" set ref 526* 526 527 531 533 535 537 539 542 nselects based fixed bin(17,0) level 2 in structure "ls_block" dcl 3-3 in procedure "linus_lila_scal_fn" set ref 481 488 519 522* 522 523 null builtin function dcl 179 ref 181 181 181 181 181 181 181 181 181 181 231 274 276 322 335 335 355 356 587 616 706 num_attr based fixed bin(17,0) level 2 dcl 15-7 ref 505 num_of_rels based fixed bin(17,0) level 2 dcl 9-10 ref 501 num_of_rels_init 000106 automatic fixed bin(17,0) initial dcl 9-18 set ref 9-18* num_ptrs 000122 automatic fixed bin(17,0) dcl 14-14 set ref 303* 304 307 nvars 1 based fixed bin(17,0) level 2 dcl 13-3 ref 398 one_repl_ch based char(1) packed unaligned dcl 165 set ref 685* one_source_ch based char(1) packed unaligned dcl 166 ref 685 orc_ptr 000232 automatic pointer initial dcl 181 set ref 181* 681* 685 686* 686 osc_ptr 000234 automatic pointer initial dcl 181 set ref 181* 683* 685 687* 687 pad 1(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 14-6 set ref 306* range_items 12 based structure array level 2 dcl 3-3 rel_array_ptr 66 based pointer level 2 dcl 1-53 ref 233 rel_index 45 based fixed bin(35,0) array level 3 dcl 3-3 ref 498 rel_name 34 based varying char(32) array level 3 in structure "ls_block" dcl 3-3 in procedure "linus_lila_scal_fn" ref 498 500 rel_name 2 based char(32) array level 3 in structure "linus_rel_array" packed packed unaligned dcl 9-10 in procedure "linus_lila_scal_fn" ref 501 rel_name 000314 automatic char(32) packed unaligned dcl 478 in procedure "sclf_col_spec" set ref 498* 500* 501 rels 2 based structure array level 2 unaligned dcl 9-10 repl_fac 000201 automatic fixed bin(35,0) dcl 172 set ref 657* 677 682 repl_factor based char packed unaligned dcl 162 ref 657 repl_flag 000215 automatic bit(1) packed unaligned dcl 177 set ref 639* 648* 676 repl_len 000202 automatic fixed bin(35,0) dcl 172 set ref 653* 657 repl_ptr 000236 automatic pointer initial dcl 181 set ref 181* 649* 657 rslt_desc 16 based bit(36) level 2 in structure "scalfn_info" dcl 16-3 in procedure "linus_lila_scal_fn" ref 322 rslt_desc 4 based bit(36) level 2 in structure "scal_fn" dcl 10-3 in procedure "linus_lila_scal_fn" set ref 322* 331* 339 343 344 347 347 350 353 rslt_info based structure level 1 dcl 15-7 rslt_info_ptr 12 based pointer array level 3 dcl 9-10 ref 504 rslt_ptr 000124 automatic pointer dcl 15-32 set ref 504* 505 505 508 512 512 516 539 542 scal_fn based structure level 1 dcl 10-3 set ref 260 scalfn_info based structure level 1 dcl 16-3 sclf_ptr 000110 automatic pointer dcl 10-27 set ref 231* 260* 261 267 273 273 274 274 282 282 290 296 303 305 309 310 311 312 313 314 317 318 319 322 325 331 338 339 343 344 347 347 350 353 370 370 382 382 397 397 434 434 480 480 556 556 557 557 558 558 559 559 560 560 566 566 567 570 570 575 575 575 577 577 578 578 579 579 637 637 search builtin function dcl 179 ref 642 sel_items based varying char array level 2 dcl 3-3 set ref 481 523* sfi_ptr 000126 automatic pointer dcl 16-12 set ref 231* 247* 255 259 267 276 322 322 331 339 355* 567 570 570 575 source_desc parameter bit(36) dcl 551 ref 549 556 source_len parameter fixed bin(35,0) dcl 554 ref 549 559 source_length 000206 automatic fixed bin(35,0) dcl 172 set ref 508* 516* 537 640* 675* 677* 692 694* 699* source_ptr parameter pointer dcl 552 in procedure "init_sclf_source" ref 549 557 source_ptr 000240 automatic pointer initial dcl 181 in procedure "linus_lila_scal_fn" set ref 181* 641* 674* 681* 699* source_type 000174 automatic fixed bin(17,0) dcl 168 in procedure "linus_lila_scal_fn" set ref 508* 516* 535 694* 699* source_type parameter fixed bin(17,0) dcl 553 in procedure "init_sclf_source" ref 549 558 string parameter char packed unaligned dcl 629 set ref 625 631* substr builtin function dcl 179 ref 419 t_ptr 24 000140 automatic pointer level 2 in structure "token_data_temp" dcl 157 in procedure "linus_lila_scal_fn" set ref 647 650 659 660 660* 662 663* 663 t_ptr 24 based pointer level 2 in structure "token_data" dcl 12-3 in procedure "linus_lila_scal_fn" set ref 239 595 608 621 641 649 649* 651* 651 655* 655 target_length 000204 automatic fixed bin(35,0) dcl 172 set ref 567* 578 696* 699* 702* target_type 000173 automatic fixed bin(17,0) dcl 168 set ref 567* 577 696* 699* 702* td_ptr parameter pointer dcl 12-49 set ref 21 238 239 240 265 270 270 271 286 286 286 291 297 300 302 360 360 364 365* 375 376* 387 394 396 407 427* 481 484 486 495 523 587 589* 594 595 603 604* 607 608 611 611 616 619 620 621 638 640 641 645 649 649 650 651 651 654 654 655 655 656 temp 000172 automatic fixed bin(17,0) dcl 168 set ref 419* 420 420 temp_desc based bit(36) packed unaligned dcl 170 ref 328 temp_tab_names based char(32) array packed unaligned dcl 11-3 ref 498 timing_mode 15(05) based bit(1) level 2 packed packed unaligned dcl 1-53 ref 245 250 token_data based structure level 1 dcl 12-3 set ref 240 603 619* 638 656 token_data_temp 000140 automatic structure level 1 unaligned dcl 157 set ref 240* 603* 619 638* 656* token_item based char packed unaligned dcl 159 set ref 247* 360* 398 481 505 523 530 642 ttn_ptr 26 based pointer level 2 in structure "lcb" dcl 1-53 in procedure "linus_lila_scal_fn" ref 235 ttn_ptr 000114 automatic pointer dcl 11-5 in procedure "linus_lila_scal_fn" set ref 235* 498 type 6 based fixed bin(4,0) array level 3 packed packed unaligned dcl 10-3 set ref 370* 382* 397* 434* 480* 637* var_info 2 based structure array level 2 dcl 13-3 var_name based char(32) level 2 in structure "ef_data" dcl 2-3 in procedure "linus_lila_scal_fn" set ref 237* 445 445* 447 484 484* 486 var_name 000242 automatic char(32) level 2 in structure "ef_d" packed packed unaligned dcl 194 in procedure "linus_lila_scal_fn" set ref 444 445 447 var_ptr 12 based pointer array level 3 dcl 13-3 set ref 401* variables based structure level 1 dcl 13-3 vclock builtin function dcl 179 ref 245 250 work_area based area dcl 229 ref 260 304 326 680 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. AND 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 LB internal static fixed bin(17,0) initial dcl 12-13 LE 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 RB 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 SELECT internal static fixed bin(17,0) initial dcl 12-13 STAR 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 linus_data_$max_pred_stack_size external static fixed bin(35,0) dcl 196 mrds_data_$max_temp_rels external static fixed bin(35,0) dcl 196 nsfi_args_init automatic fixed bin(17,0) dcl 16-13 nvars_init automatic fixed bin(17,0) dcl 13-15 rel builtin function dcl 179 rslt_alloc automatic fixed bin(17,0) dcl 15-34 sys_info$max_seg_size external static fixed bin(35,0) dcl 196 NAMES DECLARED BY EXPLICIT CONTEXT. assign_var 003042 constant entry internal dcl 564 ref 278 build_expr 001502 constant entry internal dcl 425 ref 387 391 error 003375 constant entry internal dcl 625 ref 252 263 265 271 289 292 298 300 360 367 379 430 447 450 486 519 527 592 609 expression_check 003202 constant entry internal dcl 599 ref 390 get_token 003134 constant entry internal dcl 584 ref 262 268 284 286 init_sclf_source 003014 constant entry internal dcl 549 ref 371 383 401 435 489 516 702 linus_lila_scal_fn 000021 constant entry external dcl 21 ref 376 main_loop 001142 constant entry internal dcl 358 ref 277 281 process_constant 003436 constant entry internal dcl 635 ref 407 sclf_col_spec 001743 constant entry internal dcl 473 ref 394 update_efdata 001572 constant entry internal dcl 440 ref 369 381 433 var_desc 001456 constant entry internal dcl 414 ref 314 319 353 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5016 5110 4461 5026 Length 5674 4461 72 550 335 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_lila_scal_fn 658 external procedure is an external procedure. main_loop internal procedure shares stack frame of external procedure linus_lila_scal_fn. var_desc internal procedure shares stack frame of external procedure linus_lila_scal_fn. build_expr internal procedure shares stack frame of external procedure linus_lila_scal_fn. update_efdata internal procedure shares stack frame of external procedure linus_lila_scal_fn. sclf_col_spec internal procedure shares stack frame of external procedure linus_lila_scal_fn. init_sclf_source internal procedure shares stack frame of external procedure linus_lila_scal_fn. assign_var internal procedure shares stack frame of external procedure linus_lila_scal_fn. get_token internal procedure shares stack frame of external procedure linus_lila_scal_fn. expression_check internal procedure shares stack frame of external procedure linus_lila_scal_fn. error internal procedure shares stack frame of external procedure linus_lila_scal_fn. process_constant internal procedure shares stack frame of external procedure linus_lila_scal_fn. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME linus_lila_scal_fn 000100 lsb_ptr linus_lila_scal_fn 000102 lss_ptr linus_lila_scal_fn 000104 linus_rel_array_ptr linus_lila_scal_fn 000106 num_of_rels_init linus_lila_scal_fn 000110 sclf_ptr linus_lila_scal_fn 000112 nsclf_args_init linus_lila_scal_fn 000114 ttn_ptr linus_lila_scal_fn 000116 lv_ptr linus_lila_scal_fn 000120 al_ptr linus_lila_scal_fn 000122 num_ptrs linus_lila_scal_fn 000124 rslt_ptr linus_lila_scal_fn 000126 sfi_ptr linus_lila_scal_fn 000130 ndescs_init linus_lila_scal_fn 000131 PTR_DESC linus_lila_scal_fn 000132 CMPX_FD linus_lila_scal_fn 000133 REAL_FD linus_lila_scal_fn 000134 BIT_DESC linus_lila_scal_fn 000135 CHAR_DESC linus_lila_scal_fn 000136 BIT36_DESC linus_lila_scal_fn 000140 token_data_temp linus_lila_scal_fn 000166 constant_desc linus_lila_scal_fn 000167 i linus_lila_scal_fn 000170 j linus_lila_scal_fn 000171 k linus_lila_scal_fn 000172 temp linus_lila_scal_fn 000173 target_type linus_lila_scal_fn 000174 source_type linus_lila_scal_fn 000175 cur_pos_temp linus_lila_scal_fn 000176 bit_len linus_lila_scal_fn 000177 cs_len linus_lila_scal_fn 000200 ci_len linus_lila_scal_fn 000201 repl_fac linus_lila_scal_fn 000202 repl_len linus_lila_scal_fn 000203 must_free_len linus_lila_scal_fn 000204 target_length linus_lila_scal_fn 000205 icode linus_lila_scal_fn 000206 source_length linus_lila_scal_fn 000210 initial_mrds_vclock linus_lila_scal_fn 000212 expression_test linus_lila_scal_fn 000213 check_min_num_of_args linus_lila_scal_fn 000214 get_comma linus_lila_scal_fn 000215 repl_flag linus_lila_scal_fn 000216 NULL_PTR linus_lila_scal_fn 000220 ad_ptr linus_lila_scal_fn 000222 ci_ptr linus_lila_scal_fn 000224 cs_ptr linus_lila_scal_fn 000226 lit_ptr linus_lila_scal_fn 000230 must_free_ptr linus_lila_scal_fn 000232 orc_ptr linus_lila_scal_fn 000234 osc_ptr linus_lila_scal_fn 000236 repl_ptr linus_lila_scal_fn 000240 source_ptr linus_lila_scal_fn 000242 ef_d linus_lila_scal_fn 000312 i sclf_col_spec 000313 j sclf_col_spec 000314 rel_name sclf_col_spec THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_in call_ext_out_desc call_ext_out return_mac alloc_auto_adj mpfx2 shorten_stack ext_entry trunc_fx2 any_to_any_truncate_ divide_fx1 op_alloc_ vclock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. assign_round_ cu_$ptr_call dsl_$get_fn_info linus_assign_data linus_lila_alloc_lit linus_lila_build_expr_tab linus_lila_error linus_lila_get_token linus_lila_set_fn THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. linus_data_$max_expr_items linus_data_$max_range_items linus_data_$max_sclf_items linus_data_$max_set_stack_size linus_error_$expr_ovfl linus_error_$func_args_parens linus_error_$inv_sclf_args linus_error_$inv_token_type linus_error_$inv_tup_var linus_error_$no_comma linus_error_$sclf_null_arg linus_error_$select_list_ovfl linus_error_$too_few_sclf_args linus_error_$too_many_sclf_args mrds_data_$max_select_items mrds_data_$max_token_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 21 000014 9 18 000026 136 000027 181 000043 194 000056 231 000067 233 000076 235 000103 236 000105 237 000112 238 000115 239 000121 240 000123 241 000156 242 000160 243 000164 245 000166 247 000175 250 000227 252 000243 254 000250 255 000252 256 000255 257 000260 258 000261 259 000262 260 000263 261 000277 262 000300 263 000301 265 000306 267 000331 268 000334 270 000335 271 000347 273 000366 274 000370 275 000375 276 000377 277 000404 278 000405 279 000406 281 000407 282 000410 284 000415 286 000420 289 000435 290 000452 291 000456 292 000463 294 000500 296 000501 297 000507 298 000512 300 000527 302 000552 303 000555 304 000562 305 000574 306 000576 307 000600 308 000607 309 000611 310 000621 311 000626 312 000634 313 000641 314 000645 315 000651 317 000652 318 000657 319 000663 321 000667 322 000671 325 000702 326 000705 327 000720 328 000727 330 000741 331 000743 335 000765 338 000773 339 001005 343 001036 344 001044 347 001061 350 001104 351 001114 352 001123 353 001131 355 001136 356 001140 710 001141 358 001142 360 001143 363 001174 364 001175 365 001177 367 001220 369 001225 370 001226 371 001235 374 001263 375 001264 376 001266 379 001306 381 001313 382 001314 383 001323 386 001351 387 001352 390 001356 391 001357 394 001363 396 001374 397 001376 398 001405 400 001426 401 001430 406 001451 407 001452 412 001455 414 001456 419 001460 420 001467 423 001501 425 001502 427 001503 430 001525 432 001532 433 001533 434 001534 435 001543 438 001571 440 001572 444 001573 445 001600 447 001612 450 001633 452 001656 454 001667 455 001673 457 001706 459 001714 461 001720 463 001722 465 001724 467 001733 469 001740 471 001742 473 001743 480 001744 481 001753 483 002046 484 002051 486 002067 488 002113 489 002123 493 002212 495 002213 497 002237 498 002241 500 002264 501 002270 503 002306 504 002310 505 002315 507 002336 508 002340 512 002360 516 002401 519 002420 522 002445 523 002447 525 002525 526 002526 527 002530 529 002550 530 002554 531 002564 533 002631 535 002672 537 002711 539 002731 542 002774 547 003013 549 003014 556 003016 557 003023 558 003026 559 003031 560 003036 562 003041 564 003042 566 003043 567 003050 570 003067 575 003112 577 003121 578 003124 579 003131 580 003133 584 003134 587 003135 589 003144 592 003165 594 003172 595 003177 597 003201 599 003202 602 003203 603 003210 604 003246 607 003266 608 003273 609 003275 611 003302 615 003316 616 003317 618 003324 619 003330 620 003366 621 003372 623 003374 625 003375 631 003406 633 003435 635 003436 637 003437 638 003446 639 003505 640 003506 641 003507 642 003510 644 003527 645 003531 647 003535 648 003542 649 003544 650 003552 651 003570 652 003577 653 003601 654 003603 655 003614 656 003620 657 003656 659 003671 660 003676 662 003704 663 003720 664 003724 665 003726 666 003734 669 003742 670 003750 672 003752 674 003754 675 003756 676 003760 677 003762 678 003766 680 003770 681 004002 682 004004 683 004013 684 004015 685 004025 686 004032 687 004036 688 004041 689 004043 692 004045 694 004047 696 004064 697 004077 699 004117 702 004140 706 004144 708 004146 ----------------------------------------------------------- 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