COMPILATION LISTING OF SEGMENT linus_assign_values Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 07/29/86 0950.9 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 12 13 /****^ HISTORY COMMENTS: 14* 1) change(86-04-02,Dupuis), approve(86-05-23,MCR7404), audit(86-07-23,GWMay), 15* install(86-07-29,MR12.0-1106): 16* Changed to also work as an active request. Returns true if a value was 17* retrieved, and false if one wasn't. 18* END HISTORY COMMENTS */ 19 20 21 linus_assign_values: 22 proc (sci_ptr, lcb_ptr); 23 24 25 /* DESCRIPTION: 26* 27* Retrieved data are assigned to LINUS variables specified in the 28* assign_values request. This capability allows information obtained from one 29* retrieval to be used in subsequent data base accesses. The LINUS variables 30* can also be passed as arguments to LINUS macros. 31* 32* 33* 34* HISTORY: 35* 36* 77-05-01 J. C. C. Jagernauth: Initially written. 37* 38* 80-01-09 Rickie E. Brinegar: Modified to pass linus_lila_alloc_lit a 39* descriptor pointer instead of an assign_ descriptor type and eliminate the 40* assign_ length parameter. 41* 42* 80-02-01 Rickie E. Brinegar: Renamed from linus_set. This was done to 43* remove confusion with set functions and mathmatical sets. 44* 45* 80-02-15 Rickie E. Brinegar: Modified to use only one variable slot for set 46* functions, instead of two. 47* 48* 80-07-07 Rickie E. Brinegar: Modified to check the number of variables 49* slots already used instead just using the next slot. This was done to 50* insure that we don't write all over ourselves. 51* 52* 81-01-15 Rickie E. Brinegar: Modified to not use the slot of the twentieth 53* variable to allocate all variables after the twentieth variable is 54* allocated. This involved changing the statement variables.var_info.name 55* (variables.nvars) to be variables.var_info.name (j) instead. 56* 57* 81-02-09 Rickie E. Brinegar: Deleted lines containing 58* variables.var_info.name (j) = temp_char, replacing them in check_linvar, the 59* variables name manager. This was pointed out by TR9104. 60* 61* 81-02-10 Rickie E. Brinegar: Modified to properly use all variables until 62* there are no more values to be assigned. This routine will be exited 63* normally when 1) all of the variable names supplied are used up or 2) when 64* there are no more tuples to be retrieved. This was the result of TR9101. 65* 66* 81-02-13 Rickie E. Brinegar: Modified to allocate bit arrays for each 67* variable that a value is assigned to, and to free and reallocate those bit 68* arrays when the descriptor of a new value does not match the descriptor of 69* the value already assigned to that value. Also changed the call to assign_ 70* to be straight assignments between two bit arrays. This work was done as a 71* result of TR9103. 72* 73* 81-02-17 Rickie E. Brinegar: Added code to change varying strings to fixed 74* strings the exact size being used. This is in response to TR9105. 75* 76* 81-06-25 Rickie E. Brinegar: Modified to set variables.var_info.assn_len 77* from user_item.assn_len for non varying strings. 78* 79* 81-07-13 Rickie E. Brinegar: Removed trapping of the conversion condition. 80* This has been relegated to the linus module. 81* 82* 81-09-21 Rickie E. Brinegar: Changed the assignment of num_ptrs to itself 83* to an assignment of arg_list.arg_count to num_ptrs. This will eliminate 84* subscript range conditions. 85* 86* 82-02-09 Paul W. Benjamin: ssu_ conversion 87* 88* 82-10-13 Dave Schimke: Added call to linus_table$async_retrieval before the 89* first retrieve to keep linus_table from getting lost when loading in the 90* incremental mode. 91* 92* 83-08-30 Bert Moberg: Added call to linus_translate_query if no current 93* select expression is available 94**/ 95 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 */ 96 97 2 1 /* BEGIN INCLUDE FILE linus_arg_list.incl.pl1 -- jccj 4/15/77 */ 2 2 2 3 dcl 1 char_desc aligned based (char_ptr), /* Structure for character descriptors */ 2 4 2 fb_desc bit (36) aligned init ("100000100000000000000000000000100011"b), /* Fixed bin descriptor */ 2 5 2 n_chars fixed bin, 2 6 2 arr (n_chars_init refer (char_desc.n_chars)), 2 7 3 const bit (12) unal init ("101010100000"b), /* Constant part */ 2 8 3 var bit (24) unal; /* Variable part */ 2 9 2 10 dcl char_ptr ptr; 2 11 dcl n_chars_init fixed bin; 2 12 2 13 /* END INCLUDE FILE linus_arg_list.incl.pl1 */ 98 99 3 1 /* BEGIN INCLUDE FILE linus_char_argl.incl.pl1 -- jaw 2/11/77 */ 3 2 3 3 /* HISTORY: 3 4* 3 5* 82-02-05 Paul W. Benjamin: Changed arg_len to fixed bin (21). 3 6* 3 7**/ 3 8 3 9 dcl 1 char_argl aligned based (ca_ptr), /* structure for general char. arg. list */ 3 10 2 nargs fixed bin, /* number of args */ 3 11 2 arg (nargs_init refer (char_argl.nargs)), 3 12 3 arg_ptr ptr, /* ptr to first char. of arg */ 3 13 3 arg_len fixed bin (21); /* no. of chars. in arg */ 3 14 3 15 dcl ca_ptr ptr; 3 16 dcl nargs_init fixed bin; 3 17 3 18 /* END INCLUDE FILE linus_char_argl.incl.pl1 */ 100 101 4 1 /* BEGIN INCLUDE FILE linus_select_info.incl.pl1 */ 4 2 /* History: 77-07-29 J. A. Weeldreyer: Originally written. 4 3* Modified: 82-18-82 Dave Schimke: Added user_item.table_name 4 4**/ 4 5 dcl 1 select_info aligned based (si_ptr), /* info from LILA select clause */ 4 6 2 set_fn bit (1) unal, /* on if set fn to be applied */ 4 7 2 se_flags unal, /* flags pertaining to selection expr. */ 4 8 3 val_ret bit (1) unal, /* valid for retrieval */ 4 9 3 val_dtt bit (1) unal, /* valid for define_temp_table */ 4 10 3 val_del bit (1) unal, /* valid for delete */ 4 11 3 val_mod bit (1) unal, /* valid for modify */ 4 12 2 dup_flag bit (1) unal, /* on if dup explic. spec. somewhere */ 4 13 2 unique_flag bit (1) unal, /* on if unique explic. spec. somewhere */ 4 14 2 pad bit (29) unal, /* reserved */ 4 15 2 prior_sf_ptr ptr, /* pointer to set fns for prior eval. */ 4 16 2 se_ptr ptr, /* pointer to mrds selection expression */ 4 17 2 sel_items_ptr ptr, /* pointer to list of selected items */ 4 18 2 sel_items_len fixed bin, /* length in characters of list of selected items */ 4 19 2 se_len fixed bin (35), /* length of mrds sel. expr. */ 4 20 2 nsv_alloc fixed bin, /* no. of se. vals aloc. */ 4 21 2 nmi_alloc fixed bin, /* no. of mrds items alloc. */ 4 22 2 nui_alloc fixed bin, /* no. of user items alloc. */ 4 23 2 nsevals fixed bin, /* number of selection expr. vaules */ 4 24 2 n_mrds_items fixed bin, /* no. of items in mrds select list */ 4 25 2 n_user_items fixed bin, /* no. of items user will see */ 4 26 2 se_vals (nsv_init refer (select_info.nsv_alloc)), 4 27 3 arg_ptr ptr, 4 28 3 desc_ptr ptr, 4 29 2 mrds_item (nmi_init refer (select_info.nmi_alloc)), /* mrds select items */ 4 30 3 arg_ptr ptr, /* pointer to receiving field */ 4 31 3 bit_len fixed bin (35), /* bit length of receiving field */ 4 32 3 desc bit (36), /* descriptor for receiving field */ 4 33 3 assn_type fixed bin, /* type code for assign_ */ 4 34 3 assn_len fixed bin (35), /* length for assign_ */ 4 35 2 user_item (nui_init refer (select_info.nui_alloc)), /* user select item */ 4 36 3 name char (32) var, /* name for col. header */ 4 37 3 table_name char (32) var, /* name of containing linus table */ 4 38 3 item_type fixed bin, /* indicates type of item: 4 39* 1 => raw mrds, 4 40* 2 => expr. */ 4 41 3 rslt_desc bit (36), /* descriptor for expr. result */ 4 42 3 rslt_bit_len fixed bin (35), /* bit length of expr. result */ 4 43 3 rslt_assn_ptr ptr, /* pointer to expr. result storage loc. */ 4 44 3 rslt_assn_type fixed bin, /* assign_ type code of expr. result */ 4 45 3 rslt_assn_len fixed bin (35), /* assign_ length for expr. result */ 4 46 3 item_ptr ptr; /* pointer to item or expr. or applied set_func. structure */ 4 47 4 48 dcl (nsv_init, nmi_init, nui_init) fixed bin; 4 49 dcl si_ptr ptr; 4 50 4 51 /* END INCLUDE FILE linus_select_info.incl.pl1 */ 102 103 5 1 /* BEGIN INCLUDE FILE linus_variables.incl.pl1 -- jaw 7/19/77 */ 5 2 5 3 dcl 1 variables aligned based (lv_ptr), /* info for all variables */ 5 4 2 nvars_alloc fixed bin, /* no. var. slots alloc. */ 5 5 2 nvars fixed bin, /* no. of variables currently defined */ 5 6 2 var_info (nvars_init refer (variables.nvars_alloc)), 5 7 3 name char (32), /* name of variable */ 5 8 3 var_ptr ptr, /* ptr to curr. value */ 5 9 3 bit_len fixed bin (35), /* bit length of current value */ 5 10 3 assn_type fixed bin, /* assign_ type code of current value */ 5 11 3 assn_len fixed bin (35), /* assign_ length of current value */ 5 12 3 desc bit (36); /* descrptor of current value */ 5 13 5 14 dcl lv_ptr ptr; 5 15 dcl nvars_init fixed bin; 5 16 5 17 /* END INCLUDE FILE linus_variables.incl.pl1 */ 104 105 6 1 /* BEGIN mdbm_arg_list.incl.pl1 -- jaw 5/31/78 */ 6 2 /* the duplicate mrds_arg_list.incl.pl1 was eliminated by Jim Gray, Nov. 1979 */ 6 3 6 4 /* layout of argument list for IDS and DBM entries with options (variable) */ 6 5 6 6 dcl 1 arg_list based (al_ptr), 6 7 2 arg_count fixed bin (17) unal, /* 2 * no. of args. */ 6 8 2 code fixed bin (17) unal, /* 4 => normal, 8 => special */ 6 9 2 desc_count fixed bin (17) unal, /* 2 * no. of descriptors */ 6 10 2 pad fixed bin (17) unal, /* must be 0 */ 6 11 2 arg_des_ptr (num_ptrs) ptr; /* argument/descriptor pointer */ 6 12 6 13 dcl al_ptr ptr; 6 14 dcl num_ptrs fixed bin; 6 15 6 16 /* END mdbm_arg_list.incl.pl1 */ 6 17 106 107 7 1 /* BEGIN mdbm_descriptor.incl.pl1 -- jaw 5/31/78 */ 7 2 /* modified by Jim Gray - - Nov. 1979, to change type from fixed bin(5) to 7 3* unsigned fixed bin(6), so new packed decimal data types could be handled. 7 4* also the duplicate mrds_descriptor.incl.pl1 was eliminated. */ 7 5 7 6 dcl 1 descriptor based (desc_ptr), /* map of Multics descriptor */ 7 7 2 version bit (1) unal, /* DBM handles vers. 1 only */ 7 8 2 type unsigned fixed bin (6) unal, /* data type */ 7 9 2 packed bit (1) unal, /* on if data item is packed */ 7 10 2 number_dims bit (4) unal, /* dimensions */ 7 11 2 size, /* size for string data */ 7 12 3 scale bit (12) unal, /* scale for num. data */ 7 13 3 precision bit (12) unal, /* prec. for num. data */ 7 14 2 array_info (num_dims), 7 15 3 lower_bound fixed bin (35), /* lower bound of dimension */ 7 16 3 upper_bound fixed bin (35), /* upper bound of dimension */ 7 17 3 multiplier fixed bin (35); /* element separation */ 7 18 7 19 dcl desc_ptr ptr; 7 20 dcl num_dims fixed bin init (0) ; /* more useful form of number_dims */ 7 21 7 22 /* END mdbm_descriptor.incl.pl1 */ 7 23 7 24 108 109 110 dcl sci_ptr ptr; /* for ssu_ */ 111 112 dcl 1 char_descriptor based, 113 2 version bit (1) unal, 114 2 type unsigned fixed bin (6) unal, 115 2 packed bit (1) unal, 116 2 number_dims bit (4) unal, 117 2 length bit (24) unal; 118 119 dcl 1 user_item aligned based (user_item_ptr), 120 2 arg_ptr ptr, 121 2 bit_len fixed bin (35), 122 2 desc bit (36), 123 2 assn_type fixed bin, 124 2 assn_len fixed bin (35); 125 126 dcl EXPR fixed bin (2) int static options (constant) init (2); 127 128 dcl cleanup condition; 129 130 dcl first_char char (1) based (char_argl.arg.arg_ptr (k)); 131 dcl temp_char char (char_argl.arg.arg_len (k)) 132 based (char_argl.arg.arg_ptr (k)); 133 134 dcl allocated bit (1); 135 dcl active_request_flag bit (1) aligned; 136 dcl first_tuple_retrieved bit (1) aligned; 137 dcl return_value char (return_value_length) varying based (return_value_ptr); 138 dcl return_value_length fixed bin (21); 139 dcl return_value_ptr ptr; 140 141 dcl bit_array bit (variables.var_info (j).bit_len) based; 142 143 dcl (caller, i, j, k) fixed bin; 144 145 dcl temp_len fixed bin (23) unal; 146 147 dcl (code, icode, out_code) fixed bin (35); 148 149 dcl (addr, addrel, fixed, index, null, rel, substr, unspec) builtin; 150 151 dcl varying_length fixed bin (35) based; 152 153 dcl offset (10) bit (1) based; 154 155 dcl ( 156 e_ptr init (null), 157 destination_ptr init (null), 158 user_item_ptr init (null) 159 ) ptr; 160 161 dcl ( 162 linus_data_$av_id, 163 linus_data_$max_lvars, 164 linus_error_$inv_lin_var, 165 linus_error_$inv_linus_var, 166 linus_error_$long_lv_name, 167 linus_error_$no_db, 168 linus_error_$no_var_list, 169 linus_error_$ret_not_valid, 170 linus_error_$var_stck_ovrflw, 171 mrds_data_$max_id_len, 172 mrds_error_$tuple_not_found, 173 sys_info$max_seg_size 174 ) fixed bin (35) ext; 175 176 dcl linus_convert_code entry (fixed bin (35), fixed bin (35), fixed bin (35)); 177 dcl linus_eval_expr 178 entry (ptr, ptr, ptr, fixed bin, fixed bin, fixed bin (35)); 179 dcl linus_eval_set_func entry (ptr, ptr, fixed bin (35)); 180 dcl linus_retrieve entry (ptr, ptr, ptr, ptr, ptr, fixed bin (35)); 181 dcl linus_table$async_retrieval 182 entry (ptr, fixed bin (35)); 183 dcl linus_translate_query$auto entry (ptr, ptr); 184 dcl mdbm_util_$bit_data_class entry (ptr) returns (bit (1)); 185 dcl mdbm_util_$get_data_bit_length entry (bit (36)) returns (fixed bin (35)); 186 dcl mdbm_util_$varying_data_class entry (ptr) returns (bit (1)); 187 dcl ssu_$abort_line entry options (variable); 188 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin(21)); 189 dcl ssu_$return_arg entry (ptr, fixed bin, bit(1) aligned, ptr, fixed bin(21)); 190 191 al_ptr, ca_ptr, char_ptr = null; 192 193 caller = 1; /* for expression evaluator */ 194 destination_ptr = lcb.si_ptr; /* for expression evaluator */ 195 icode, code = 0; 196 lv_ptr = lcb.lv_ptr; /* Init */ 197 first_tuple_retrieved = "0"b; 198 199 if lcb.db_index = 0 then 200 call error (linus_error_$no_db, ""); 201 call ssu_$return_arg (sci_ptr, nargs_init, 202 active_request_flag, return_value_ptr, return_value_length); 203 if active_request_flag 204 then return_value = "false"; 205 if nargs_init = 0 then 206 call error (linus_error_$no_var_list, ""); 207 allocate char_argl in (lcb.static_area); 208 on cleanup begin; 209 if ca_ptr ^= null 210 then free char_argl; 211 end; 212 do i = 1 to nargs_init; 213 call ssu_$arg_ptr (sci_ptr, i, char_argl.arg.arg_ptr (i), char_argl.arg.arg_len (i)); 214 end; 215 216 do k = 1 to char_argl.nargs; /* Make sure that all linus variables begin with ! */ 217 if index (substr (temp_char, 2), "!") ^= 0 then 218 call error (linus_error_$inv_lin_var, temp_char); 219 if first_char ^= "!" then 220 call error (linus_error_$inv_linus_var, temp_char); 221 char_argl.arg.arg_ptr (k) = 222 addr (char_argl.arg.arg_ptr (k) -> offset (10)); /* skip ! */ 223 char_argl.arg.arg_len (k) = char_argl.arg.arg_len (k) - 1; 224 if char_argl.arg.arg_len (k) > mrds_data_$max_id_len then 225 call error (linus_error_$long_lv_name, temp_char); 226 end; 227 228 if lcb.si_ptr = null then call linus_translate_query$auto (sci_ptr, lcb_ptr); /* try translating it */ 229 if lcb.si_ptr = null then return; /* No good? Oh, well */ 230 231 si_ptr = lcb.si_ptr; 232 if ^select_info.se_flags.val_ret then 233 call error (linus_error_$ret_not_valid, ""); /* 234* valid for retrieve ? */ 235 if lv_ptr = null then do; /* Make sure space has not already been allocated for linus 236* variables */ 237 nvars_init = linus_data_$max_lvars; /* Allocate space for maximum number of linus variables 238* */ 239 allocate variables in (lcb.static_area);/* Linus variables */ 240 lcb.lv_ptr = lv_ptr; 241 variables.nvars = 0; /* Initialize count of linus variables */ 242 end; 243 if select_info.prior_sf_ptr ^= null then 244 call linus_eval_set_func (lcb_ptr, select_info.prior_sf_ptr, icode); 245 if icode ^= 0 then 246 call error (icode, ""); 247 if select_info.set_fn then 248 call apply_set_function; 249 else do; 250 call linus_table$async_retrieval (lcb_ptr, icode); 251 if icode ^= 0 then 252 call error (icode, ""); 253 call 254 linus_retrieve (lcb_ptr, ca_ptr, char_ptr, al_ptr, e_ptr, icode); 255 /* Access data base */ 256 end; 257 /* Update linus variables structure */ 258 if al_ptr ^= null then 259 num_ptrs = arg_list.arg_count; 260 if icode ^= 0 then 261 call error (icode, ""); /* 81-02-10 Rickie E. Brinegar: code added */ 262 263 first_tuple_retrieved = "1"b; 264 k = 1; /* 81-02-10 Rickie E. Brinegar: added */ 265 do while (icode = 0 & k ^> char_argl.nargs); /* 81-02-10 Rickie E. Brinegar: added 266* While we have variable names left, 267* continue to assign values if no error is encountered */ 268 269 do i = 1 to select_info.n_user_items 270 while (icode = 0 & k ^> char_argl.nargs); /* 81-02-10 Rickie E. Brinegar 271* char_argl.nargs <= select_info.n_user_items & 272* removed from the while clause. 273* changed char_argl.nargs to select_info.n_user_items in the 274* to clause. */ 275 276 call check_linvars; /* check for previously defined linus variables */ 277 278 if select_info.user_item.item_type (i) = EXPR | select_info.set_fn 279 then do; 280 if ^select_info.set_fn then 281 call 282 linus_eval_expr (lcb_ptr, 283 select_info.user_item.item_ptr (i), destination_ptr, 284 caller, i, icode); 285 if icode = 0 then 286 call assign_expr_lit; 287 end; 288 else do; 289 user_item_ptr = select_info.user_item.item_ptr (i); 290 291 if allocated & variables.var_info (j).desc ^= user_item.desc 292 then do; 293 free variables.var_info (j).var_ptr -> bit_array; 294 allocated = "0"b; 295 end; 296 297 if ^allocated then do; 298 variables.var_info.desc (j) = user_item.desc; 299 call allocate_lit; 300 end; 301 if mdbm_util_$varying_data_class (addr (user_item.desc)) then 302 unspec (variables.var_info (j).var_ptr -> bit_array) = 303 unspec (addrel (user_item.arg_ptr, 1) -> bit_array); 304 else unspec (variables.var_info (j).var_ptr -> bit_array) = 305 unspec (user_item.arg_ptr -> bit_array); 306 end; 307 308 if icode = 0 then 309 if select_info.set_fn then do; 310 k = char_argl.nargs + 1; /* set up termination of the loop */ 311 i = select_info.n_user_items + 1; 312 icode = mrds_error_$tuple_not_found; 313 end; 314 else k = k + 1; 315 end; 316 317 if icode = 0 then 318 call 319 linus_retrieve (lcb_ptr, ca_ptr, char_ptr, al_ptr, e_ptr, 320 icode); /* get next set of values */ 321 end; 322 if icode ^= 0 & icode ^= mrds_error_$tuple_not_found 323 then call error (icode, ""); 324 else if active_request_flag 325 then return_value = "true"; 326 FINISH: 327 return; 328 329 error: 330 proc (err_code, string); 331 332 dcl err_code fixed bin (35); 333 dcl string char (*); 334 335 if ca_ptr ^= null 336 then free char_argl; 337 if active_request_flag & ^first_tuple_retrieved & err_code = mrds_error_$tuple_not_found 338 then goto FINISH; 339 call linus_convert_code (err_code, out_code, linus_data_$av_id); 340 /* Convert system error code */ 341 call ssu_$abort_line (sci_ptr, out_code); 342 343 end error; 344 345 check_linvars: 346 proc; 347 348 allocated = "0"b; 349 if variables.nvars > 0 then do; /* check for previously defined LINUS VARIABLES */ 350 do j = 1 to variables.nvars 351 while (variables.var_info.name (j) ^= temp_char); 352 end; 353 if j > variables.nvars_alloc then 354 call error (linus_error_$var_stck_ovrflw, "linus_assign_values"); 355 else if j > variables.nvars then do; /* find linus var or bump count */ 356 variables.nvars = variables.nvars + 1; 357 j = variables.nvars; 358 variables.var_info.name (j) = temp_char; 359 end; 360 else allocated = "1"b; 361 end; 362 else do; 363 j, variables.nvars = 1; 364 variables.var_info.name (j) = temp_char; 365 end; 366 367 end check_linvars; 368 369 370 371 apply_set_function: 372 proc; 373 374 call 375 linus_eval_set_func (lcb_ptr, select_info.user_item.item_ptr (1), 376 icode); 377 if icode ^= 0 then 378 call error (icode, ""); 379 i, /* result is in first select info user item */ 380 k = 1; /* only the first variable will be assigned */ 381 call check_linvars; 382 call assign_expr_lit; 383 384 end apply_set_function; 385 386 assign_expr_lit: 387 proc; 388 389 if allocated 390 & variables.var_info (j).desc ^= select_info.user_item (i).rslt_desc 391 then do; 392 free variables.var_info (j).var_ptr -> bit_array; 393 allocated = "0"b; 394 395 end; 396 397 if ^allocated then do; 398 variables.var_info.desc (j) = select_info.user_item.rslt_desc (i); 399 call allocate_lit; 400 end; 401 if mdbm_util_$varying_data_class ( 402 addr (select_info.user_item (i).rslt_desc)) then 403 unspec (variables.var_info (j).var_ptr -> bit_array) = 404 unspec (addrel (select_info.user_item (i).rslt_assn_ptr, 1) 405 -> bit_array); 406 else unspec (variables.var_info (j).var_ptr -> bit_array) = 407 unspec (select_info.user_item (i).rslt_assn_ptr -> bit_array); 408 409 end assign_expr_lit; 410 411 allocate_lit: 412 proc; 413 414 if mdbm_util_$varying_data_class (addr (variables.var_info (j).desc)) 415 then do; 416 if select_info.user_item.item_type (i) = EXPR | select_info.set_fn then 417 variables.var_info (j).bit_len = 418 select_info.user_item (i).rslt_assn_ptr -> varying_length; 419 else variables.var_info (j).bit_len = 420 user_item.arg_ptr -> varying_length; 421 temp_len = variables.var_info (j).bit_len; 422 unspec (addr (variables.var_info (j).desc) -> char_descriptor.length) = 423 unspec (temp_len); 424 425 if mdbm_util_$bit_data_class (addr (variables.var_info (j).desc)) then 426 addr (variables.var_info (j).desc) -> descriptor.type = 19; 427 else do; 428 addr (variables.var_info (j).desc) -> descriptor.type = 21; 429 variables.var_info (j).bit_len = variables.var_info (j).bit_len * 9; 430 end; 431 variables.var_info (j).assn_len = temp_len; 432 end; 433 else do; 434 variables.var_info (j).bit_len = 435 mdbm_util_$get_data_bit_length ((variables.var_info (j).desc)); 436 if select_info.user_item.item_type (i) = EXPR | select_info.set_fn then 437 variables.var_info (j).assn_len = 438 select_info.user_item (i).rslt_assn_len; 439 else variables.var_info (j).assn_len = user_item.assn_len; 440 end; 441 442 variables.var_info (j).assn_type = 443 fixed (addr (variables.var_info (j).desc) -> descriptor.packed) 444 + (2 * fixed (addr (variables.var_info (j).desc) -> descriptor.type)); 445 allocate bit_array in (lcb.static_area) 446 set (variables.var_info (j).var_ptr); 447 448 end allocate_lit; 449 450 end linus_assign_values; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/29/86 0936.7 linus_assign_values.pl1 >special_ldd>install>MR12.0-1106>linus_assign_values.pl1 96 1 07/29/86 0937.8 linus_lcb.incl.pl1 >special_ldd>install>MR12.0-1106>linus_lcb.incl.pl1 98 2 03/27/82 0434.5 linus_arg_list.incl.pl1 >ldd>include>linus_arg_list.incl.pl1 100 3 11/23/82 1327.3 linus_char_argl.incl.pl1 >ldd>include>linus_char_argl.incl.pl1 102 4 09/16/83 1338.0 linus_select_info.incl.pl1 >ldd>include>linus_select_info.incl.pl1 104 5 03/27/82 0434.5 linus_variables.incl.pl1 >ldd>include>linus_variables.incl.pl1 106 6 10/14/83 1609.0 mdbm_arg_list.incl.pl1 >ldd>include>mdbm_arg_list.incl.pl1 108 7 10/14/83 1608.6 mdbm_descriptor.incl.pl1 >ldd>include>mdbm_descriptor.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. EXPR constant fixed bin(2,0) initial dcl 126 ref 278 416 436 active_request_flag 000127 automatic bit(1) dcl 135 set ref 201* 203 324 337 addr builtin function dcl 149 ref 221 301 301 401 401 414 414 422 425 425 425 428 442 442 addrel builtin function dcl 149 ref 301 401 al_ptr 000114 automatic pointer dcl 6-13 set ref 191* 253* 258 258 317* allocated 000126 automatic bit(1) unaligned dcl 134 set ref 291 294* 297 348* 360* 389 393* 397 arg 2 based structure array level 2 dcl 3-9 arg_count based fixed bin(17,0) level 2 packed unaligned dcl 6-6 ref 258 arg_len 4 based fixed bin(21,0) array level 3 dcl 3-9 set ref 213* 217 217 217 219 219 223* 223 224 224 224 350 358 364 arg_list based structure level 1 unaligned dcl 6-6 arg_ptr 2 based pointer array level 3 in structure "char_argl" dcl 3-9 in procedure "linus_assign_values" set ref 213* 217 217 219 219 221* 221 224 350 358 364 arg_ptr based pointer level 2 in structure "user_item" dcl 119 in procedure "linus_assign_values" ref 301 304 419 assn_len 16 based fixed bin(35,0) array level 3 in structure "variables" dcl 5-3 in procedure "linus_assign_values" set ref 431* 436* 439* assn_len 5 based fixed bin(35,0) level 2 in structure "user_item" dcl 119 in procedure "linus_assign_values" ref 439 assn_type 15 based fixed bin(17,0) array level 3 dcl 5-3 set ref 442* bit_array based bit unaligned dcl 141 set ref 293 301* 301 304* 304 392 401* 401 406* 406 445 bit_len 14 based fixed bin(35,0) array level 3 dcl 5-3 set ref 293 293 301 301 304 304 392 392 401 401 406 406 416* 419* 421 429* 429 434* 445 445 ca_ptr 000102 automatic pointer dcl 3-15 set ref 191* 207* 209 209 213 213 216 217 217 217 217 217 219 219 219 219 221 221 223 223 224 224 224 224 253* 265 269 310 317* 335 335 350 350 358 358 364 364 caller 000134 automatic fixed bin(17,0) dcl 143 set ref 193* 280* char_argl based structure level 1 dcl 3-9 set ref 207 209 335 char_descriptor based structure level 1 packed unaligned dcl 112 char_ptr 000100 automatic pointer dcl 2-10 set ref 191* 253* 317* cleanup 000120 stack reference condition dcl 128 ref 208 code 000141 automatic fixed bin(35,0) dcl 147 set ref 195* db_index based fixed bin(35,0) level 2 dcl 1-53 ref 199 desc 3 based bit(36) level 2 in structure "user_item" dcl 119 in procedure "linus_assign_values" set ref 291 298 301 301 desc 17 based bit(36) array level 3 in structure "variables" dcl 5-3 in procedure "linus_assign_values" set ref 291 298* 389 398* 414 414 422 425 425 425 428 434 442 442 descriptor based structure level 1 unaligned dcl 7-6 destination_ptr 000146 automatic pointer initial dcl 155 set ref 155* 194* 280* e_ptr 000144 automatic pointer initial dcl 155 set ref 155* 253* 317* err_code parameter fixed bin(35,0) dcl 332 set ref 329 337 339* first_char based char(1) unaligned dcl 130 ref 219 first_tuple_retrieved 000130 automatic bit(1) dcl 136 set ref 197* 263* 337 fixed builtin function dcl 149 ref 442 442 i 000135 automatic fixed bin(17,0) dcl 143 set ref 212* 213* 213 213* 269* 278 280 280* 289 311* 379* 389 398 401 401 401 406 416 416 436 436 icode 000142 automatic fixed bin(35,0) dcl 147 set ref 195* 243* 245 245* 250* 251 251* 253* 260 260* 265 269 280* 285 308 312* 317 317* 322 322 322* 374* 377 377* index builtin function dcl 149 ref 217 item_ptr based pointer array level 3 dcl 4-5 set ref 280* 289 374* item_type based fixed bin(17,0) array level 3 dcl 4-5 ref 278 416 436 j 000136 automatic fixed bin(17,0) dcl 143 set ref 291 293 293 293 298 301 301 301 304 304 304 350* 350* 353 355 357* 358 363* 364 389 392 392 392 398 401 401 401 406 406 406 414 414 416 419 421 422 425 425 425 428 429 429 431 434 434 436 439 442 442 442 445 445 445 k 000137 automatic fixed bin(17,0) dcl 143 set ref 216* 217 217 217 217 217 219 219 219 219 221 221 223 223 224 224 224 224* 264* 265 269 310* 314* 314 350 350 358 358 364 364 379* lcb based structure level 1 dcl 1-53 lcb_ptr parameter pointer dcl 1-121 set ref 21 194 196 199 207 228 228* 229 231 239 240 243* 250* 253* 280* 317* 374* 445 length 0(12) based bit(24) level 2 packed unaligned dcl 112 set ref 422* linus_convert_code 000036 constant entry external dcl 176 ref 339 linus_data_$av_id 000010 external static fixed bin(35,0) dcl 161 set ref 339* linus_data_$max_lvars 000012 external static fixed bin(35,0) dcl 161 ref 237 linus_error_$inv_lin_var 000014 external static fixed bin(35,0) dcl 161 set ref 217* linus_error_$inv_linus_var 000016 external static fixed bin(35,0) dcl 161 set ref 219* linus_error_$long_lv_name 000020 external static fixed bin(35,0) dcl 161 set ref 224* linus_error_$no_db 000022 external static fixed bin(35,0) dcl 161 set ref 199* linus_error_$no_var_list 000024 external static fixed bin(35,0) dcl 161 set ref 205* linus_error_$ret_not_valid 000026 external static fixed bin(35,0) dcl 161 set ref 232* linus_error_$var_stck_ovrflw 000030 external static fixed bin(35,0) dcl 161 set ref 353* linus_eval_expr 000040 constant entry external dcl 177 ref 280 linus_eval_set_func 000042 constant entry external dcl 179 ref 243 374 linus_retrieve 000044 constant entry external dcl 180 ref 253 317 linus_table$async_retrieval 000046 constant entry external dcl 181 ref 250 linus_translate_query$auto 000050 constant entry external dcl 183 ref 228 lv_ptr 32 based pointer level 2 in structure "lcb" dcl 1-53 in procedure "linus_assign_values" set ref 196 240* lv_ptr 000110 automatic pointer dcl 5-14 in procedure "linus_assign_values" set ref 196* 235 239* 240 241 291 293 293 293 298 301 301 301 304 304 304 349 350 350 353 355 356 356 357 358 363 364 389 392 392 392 398 401 401 401 406 406 406 414 414 416 419 421 422 425 425 425 428 429 429 431 434 434 436 439 442 442 442 445 445 445 mdbm_util_$bit_data_class 000052 constant entry external dcl 184 ref 425 mdbm_util_$get_data_bit_length 000054 constant entry external dcl 185 ref 434 mdbm_util_$varying_data_class 000056 constant entry external dcl 186 ref 301 401 414 mrds_data_$max_id_len 000032 external static fixed bin(35,0) dcl 161 ref 224 mrds_error_$tuple_not_found 000034 external static fixed bin(35,0) dcl 161 ref 312 322 337 n_user_items 17 based fixed bin(17,0) level 2 dcl 4-5 ref 269 311 name 2 based char(32) array level 3 dcl 5-3 set ref 350 358* 364* nargs based fixed bin(17,0) level 2 dcl 3-9 set ref 207* 209 216 265 269 310 335 nargs_init 000104 automatic fixed bin(17,0) dcl 3-16 set ref 201* 205 207 207 212 nmi_alloc 13 based fixed bin(17,0) level 2 dcl 4-5 ref 278 280 289 374 389 398 401 401 401 406 416 416 436 436 nsv_alloc 12 based fixed bin(17,0) level 2 dcl 4-5 ref 278 280 289 374 389 398 401 401 401 406 416 416 436 436 null builtin function dcl 149 ref 155 155 155 191 209 228 229 235 243 258 335 num_dims 000117 automatic fixed bin(17,0) initial dcl 7-20 set ref 7-20* num_ptrs 000116 automatic fixed bin(17,0) dcl 6-14 set ref 258* nvars 1 based fixed bin(17,0) level 2 dcl 5-3 set ref 241* 349 350 355 356* 356 357 363* nvars_alloc based fixed bin(17,0) level 2 dcl 5-3 set ref 239* 353 nvars_init 000112 automatic fixed bin(17,0) dcl 5-15 set ref 237* 239 239 offset based bit(1) array unaligned dcl 153 set ref 221 out_code 000143 automatic fixed bin(35,0) dcl 147 set ref 339* 341* packed 0(07) based bit(1) level 2 packed unaligned dcl 7-6 ref 442 prior_sf_ptr 2 based pointer level 2 dcl 4-5 set ref 243 243* return_value based varying char dcl 137 set ref 203* 324* return_value_length 000131 automatic fixed bin(21,0) dcl 138 set ref 201* 203 324 return_value_ptr 000132 automatic pointer dcl 139 set ref 201* 203 324 rslt_assn_len based fixed bin(35,0) array level 3 dcl 4-5 ref 436 rslt_assn_ptr based pointer array level 3 dcl 4-5 ref 401 406 416 rslt_desc based bit(36) array level 3 dcl 4-5 set ref 389 398 401 401 sci_ptr parameter pointer dcl 110 set ref 21 201* 213* 228* 341* se_flags 0(01) based structure level 2 packed unaligned dcl 4-5 select_info based structure level 1 dcl 4-5 set_fn based bit(1) level 2 packed unaligned dcl 4-5 ref 247 278 280 308 416 436 si_ptr 000106 automatic pointer dcl 4-49 in procedure "linus_assign_values" set ref 231* 232 243 243 247 269 278 278 280 280 289 308 311 374 389 398 401 401 401 406 416 416 416 436 436 436 si_ptr 34 based pointer level 2 in structure "lcb" dcl 1-53 in procedure "linus_assign_values" ref 194 228 229 231 ssu_$abort_line 000060 constant entry external dcl 187 ref 341 ssu_$arg_ptr 000062 constant entry external dcl 188 ref 213 ssu_$return_arg 000064 constant entry external dcl 189 ref 201 static_area 144 based area level 2 dcl 1-53 ref 207 239 445 string parameter char unaligned dcl 333 ref 329 substr builtin function dcl 149 ref 217 temp_char based char unaligned dcl 131 set ref 217 217* 219* 224* 350 358 364 temp_len 000140 automatic fixed bin(23,0) unaligned dcl 145 set ref 421* 422 431 type 0(01) based fixed bin(6,0) level 2 packed unsigned unaligned dcl 7-6 set ref 425* 428* 442 unspec builtin function dcl 149 set ref 301* 301 304* 304 401* 401 406* 406 422* 422 user_item based structure level 1 dcl 119 in procedure "linus_assign_values" user_item based structure array level 2 in structure "select_info" dcl 4-5 in procedure "linus_assign_values" user_item_ptr 000150 automatic pointer initial dcl 155 set ref 155* 289* 291 298 301 301 301 304 419 439 val_ret 0(01) based bit(1) level 3 packed unaligned dcl 4-5 ref 232 var_info 2 based structure array level 2 dcl 5-3 var_ptr 12 based pointer array level 3 dcl 5-3 set ref 293 301 304 392 401 406 445* variables based structure level 1 dcl 5-3 set ref 239 varying_length based fixed bin(35,0) dcl 151 ref 416 419 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. char_desc based structure level 1 dcl 2-3 desc_ptr automatic pointer dcl 7-19 n_chars_init automatic fixed bin(17,0) dcl 2-11 nmi_init automatic fixed bin(17,0) dcl 4-48 nsv_init automatic fixed bin(17,0) dcl 4-48 nui_init automatic fixed bin(17,0) dcl 4-48 rel builtin function dcl 149 sys_info$max_seg_size external static fixed bin(35,0) dcl 161 NAMES DECLARED BY EXPLICIT CONTEXT. FINISH 001131 constant label dcl 326 ref 337 allocate_lit 001606 constant entry internal dcl 411 ref 299 399 apply_set_function 001347 constant entry internal dcl 371 ref 247 assign_expr_lit 001411 constant entry internal dcl 386 ref 285 382 check_linvars 001221 constant entry internal dcl 345 ref 276 381 error 001132 constant entry internal dcl 329 ref 199 205 217 219 224 232 245 251 260 322 353 377 linus_assign_values 000027 constant entry external dcl 21 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2466 2554 2147 2476 Length 3142 2147 66 352 316 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_assign_values 248 external procedure is an external procedure. on unit on line 208 64 on unit error internal procedure shares stack frame of external procedure linus_assign_values. check_linvars internal procedure shares stack frame of external procedure linus_assign_values. apply_set_function internal procedure shares stack frame of external procedure linus_assign_values. assign_expr_lit internal procedure shares stack frame of external procedure linus_assign_values. allocate_lit internal procedure shares stack frame of external procedure linus_assign_values. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME linus_assign_values 000100 char_ptr linus_assign_values 000102 ca_ptr linus_assign_values 000104 nargs_init linus_assign_values 000106 si_ptr linus_assign_values 000110 lv_ptr linus_assign_values 000112 nvars_init linus_assign_values 000114 al_ptr linus_assign_values 000116 num_ptrs linus_assign_values 000117 num_dims linus_assign_values 000126 allocated linus_assign_values 000127 active_request_flag linus_assign_values 000130 first_tuple_retrieved linus_assign_values 000131 return_value_length linus_assign_values 000132 return_value_ptr linus_assign_values 000134 caller linus_assign_values 000135 i linus_assign_values 000136 j linus_assign_values 000137 k linus_assign_values 000140 temp_len linus_assign_values 000141 code linus_assign_values 000142 icode linus_assign_values 000143 out_code linus_assign_values 000144 e_ptr linus_assign_values 000146 destination_ptr linus_assign_values 000150 user_item_ptr linus_assign_values THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return enable ext_entry int_entry alloc_based free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. linus_convert_code linus_eval_expr linus_eval_set_func linus_retrieve linus_table$async_retrieval linus_translate_query$auto mdbm_util_$bit_data_class mdbm_util_$get_data_bit_length mdbm_util_$varying_data_class ssu_$abort_line ssu_$arg_ptr ssu_$return_arg THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. linus_data_$av_id linus_data_$max_lvars linus_error_$inv_lin_var linus_error_$inv_linus_var linus_error_$long_lv_name linus_error_$no_db linus_error_$no_var_list linus_error_$ret_not_valid linus_error_$var_stck_ovrflw mrds_data_$max_id_len mrds_error_$tuple_not_found LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 21 000023 7 20 000034 155 000035 191 000041 193 000045 194 000047 195 000054 196 000056 197 000060 199 000061 201 000077 203 000117 205 000133 207 000152 208 000166 209 000202 211 000214 212 000215 213 000225 214 000245 216 000247 217 000257 219 000316 221 000347 223 000357 224 000362 226 000405 228 000407 229 000427 231 000436 232 000440 235 000460 237 000464 239 000467 240 000503 241 000507 243 000510 245 000531 247 000536 250 000543 251 000555 253 000562 258 000604 260 000613 263 000620 264 000622 265 000624 269 000631 276 000646 278 000647 280 000677 285 000726 287 000731 289 000732 291 000737 293 000750 294 000756 297 000757 298 000761 299 000766 301 000767 304 001022 308 001034 310 001041 311 001044 312 001050 313 001053 314 001054 315 001055 317 001057 321 001103 322 001104 324 001115 326 001131 329 001132 335 001143 337 001154 339 001166 341 001202 343 001220 345 001221 348 001222 349 001223 350 001226 352 001252 353 001254 355 001303 356 001306 357 001307 358 001311 359 001324 360 001325 361 001327 363 001330 364 001333 367 001346 371 001347 374 001350 377 001376 379 001403 381 001406 382 001407 384 001410 386 001411 389 001412 392 001444 393 001452 397 001453 398 001455 399 001463 401 001464 406 001554 409 001605 411 001606 414 001607 416 001630 419 001670 421 001677 422 001706 425 001712 428 001742 429 001752 430 001757 431 001760 432 001766 434 001767 436 002006 439 002043 442 002047 445 002067 448 002107 ----------------------------------------------------------- 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