COMPILATION LISTING OF SEGMENT linus_create_list Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 09/26/88 1248.6 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 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(86-12-08,Hergert), approve(88-09-20,MCR7995), 16* audit(88-09-21,Blair), install(88-09-26,MR12.2-1119): 17* Fixed bug that caused FPE when no data was found by MRDS. This happened 18* because error was called when the error was detected (correctly), but 19* error called ssu_abort_line which signalled cleanup which called cleanup 20* which had already been called by error. We just null the file_info_ptr 21* and ca_ptr now after cleanup. 22* END HISTORY COMMENTS */ 23 24 25 linus_create_list: 26 proc (sci_ptr, lcb_ptr); 27 28 /* DESCRIPTION: 29* 30* Data retrieved from the data base are written to a multics file to be 31* manipulated subsequently by LISTER. 32* 33* 34* 35* HISTORY: 36* 37* 77-09-01 J. C. C. Jagernauth: Originaly written. 38* 39* 78-08-01 J. C. C. Jagernauth: Modified to handle unlimited length output 40* buffers. 41* 42* 79-12-19 Rickie E. Brinegar: Modified to trim all leading and trailing 43* blanks using a one line modification suggestted by Chris Tavares. 44* 45* 80-01-15 Rickie E. Brinegar: Modified to use mdbm_util_$string_data_class. 46* 47* 80-03-14 Rickie E. Brinegar: Modified to use a work area defined on 48* lcb.i_o_area_ptr instead of getting system free area. 49* 50* 80-06-01 Jim Gray: Modified to correctly detect no db open, or no args 51* given. 52* 53* 80-10-17 Rickie E. Brinegar: Corrected the calculation of the directory 54* length in the input argument. 55* 56* 80-10-22 Rickie E. Brinegar: Modified to reuse the output_buffer and the 57* target items pointed at by ti.ptr (l). Also removed the free_target_items 58* procedure, as it was no longer needed. 59* 60* 80-10-27 Rickie E. Brinegar: Replaced the if statement to figure out the 61* directory length and segment length and starting places of each with a call 62* expand_pathname_. At the same time dir_name and seg_name were changed from 63* based to automatic variables and from calculated lengths to char (168). 64* 65* 80-11-21 Rickie E. Brinegar: The acceptable control argument for field 66* names was changed from -fieldnames to -field_names to agree with the 67* documentation. This answers TR8415. 68* 69* 80-11-25 Rickie E. Brinegar: The call to lister_$get_fieldnames was 70* modified to use lcb.i_o_area_ptr instead of the uninitialized area_ptr. As 71* area_ptr was no longer referenced, it was deleted from the source. Also, if 72* the extend control argument was used and the file did not exsist, it was not 73* created. That has now been changed so that the file will be created if it 74* does not exist. 75* 76* 81-09-21 Rickie E. Brinegar: Changed the assignment of num_ptrs to 77* num_ptrs to be an assignment of arg_list.arg_count to num_ptrs. This 78* avoids the subscript range condition. 79* 80* 81-10-09 Rickie E. Brinegar: Changed expand_pathname_ to 81* expand_pathname_$add_suffix to allow for segements of the form 82* a.b.lister. 83* 84* 81-11-06 Rickie E. Brinegar: Removed declaration of the unused after 85* builtin. 86* 87* 81-11-16 Rickie E. Brinegar: Added timing of dsl calls. 88* 89* 82-02-09 Paul W. Benjamin: ssu_ conversion 90* 91* 82-02-19 Paul W. Benjamin: trapping linkage error when the site has no 92* Lister. 93* 94* 82-06-21 Al Dupuis: Changed error msg from linkage_error trap noted above. 95* Removed useless label, goto, and ssu_$abort_subsystem call. 96* 97* 82-10-13 Dave Schimke: Added call to linus_table$async_retrieval before the 98* first retrieve to keep linus_table from getting lost when loading in the 99* incremental mode. This call can be eliminated when all modules call 100* linus_table for their retrievals. 101* 102* 82-11-15 Dave Schimke: Removed unreferenced declaration of 103* ssu_$abort_subsystem. 104* 105* 83-05-19 Dave Schimke: Modified to use mdbm_util_$define_area rather than 106* linus_define_area so the work_area can be a freeing area. This is because 107* lister allocates and frees in the area and therefore expects a freeing 108* area. The structures allocated in work_area are not freed because the area 109* is redefined by every module that uses this particular temp_segment. 110* This is in response to TR14246. 111* 112* 83-05-19 Dave Schimke: Modified to use linus_data_$max_user_items as the 113* bounds for field_names. It was incorrectly using linus_data_$max_lvars. 114* This is in response to TR14054. Also changed the code to check for the 115* correct number of field names given with the -field_names control_arg and 116* insist on the -field_names when the select clause contains an expression. 117* This makes the create_list request match its documentation. 118* 119* 83-08-30 Bert Moberg: Added call to linus_translate_query if no current 120* select expression is available 121* 122* 83-09-12 Al Dupuis: Changed 83-05-19 fix above back to a non-freeing area, 123* as the rest of linus that shares this area was not ready to deal with a 124* freeing area. Lister now allocates and frees in it's own area. 125* 126* 83-10-11 Al Dupuis: Added else to if statement before collecting field 127* names in the arg processing loop. Before this fix it found "-extend" and 128* because there was no else it started executing the -field_names code. 129* 130**/ 131 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 */ 132 133 2 1 /* BEGIN INCLUDE FILE linus_char_argl.incl.pl1 -- jaw 2/11/77 */ 2 2 2 3 /* HISTORY: 2 4* 2 5* 82-02-05 Paul W. Benjamin: Changed arg_len to fixed bin (21). 2 6* 2 7**/ 2 8 2 9 dcl 1 char_argl aligned based (ca_ptr), /* structure for general char. arg. list */ 2 10 2 nargs fixed bin, /* number of args */ 2 11 2 arg (nargs_init refer (char_argl.nargs)), 2 12 3 arg_ptr ptr, /* ptr to first char. of arg */ 2 13 3 arg_len fixed bin (21); /* no. of chars. in arg */ 2 14 2 15 dcl ca_ptr ptr; 2 16 dcl nargs_init fixed bin; 2 17 2 18 /* END INCLUDE FILE linus_char_argl.incl.pl1 */ 134 135 3 1 /* BEGIN INCLUDE FILE linus_select_info.incl.pl1 */ 3 2 /* History: 77-07-29 J. A. Weeldreyer: Originally written. 3 3* Modified: 82-18-82 Dave Schimke: Added user_item.table_name 3 4**/ 3 5 dcl 1 select_info aligned based (si_ptr), /* info from LILA select clause */ 3 6 2 set_fn bit (1) unal, /* on if set fn to be applied */ 3 7 2 se_flags unal, /* flags pertaining to selection expr. */ 3 8 3 val_ret bit (1) unal, /* valid for retrieval */ 3 9 3 val_dtt bit (1) unal, /* valid for define_temp_table */ 3 10 3 val_del bit (1) unal, /* valid for delete */ 3 11 3 val_mod bit (1) unal, /* valid for modify */ 3 12 2 dup_flag bit (1) unal, /* on if dup explic. spec. somewhere */ 3 13 2 unique_flag bit (1) unal, /* on if unique explic. spec. somewhere */ 3 14 2 pad bit (29) unal, /* reserved */ 3 15 2 prior_sf_ptr ptr, /* pointer to set fns for prior eval. */ 3 16 2 se_ptr ptr, /* pointer to mrds selection expression */ 3 17 2 sel_items_ptr ptr, /* pointer to list of selected items */ 3 18 2 sel_items_len fixed bin, /* length in characters of list of selected items */ 3 19 2 se_len fixed bin (35), /* length of mrds sel. expr. */ 3 20 2 nsv_alloc fixed bin, /* no. of se. vals aloc. */ 3 21 2 nmi_alloc fixed bin, /* no. of mrds items alloc. */ 3 22 2 nui_alloc fixed bin, /* no. of user items alloc. */ 3 23 2 nsevals fixed bin, /* number of selection expr. vaules */ 3 24 2 n_mrds_items fixed bin, /* no. of items in mrds select list */ 3 25 2 n_user_items fixed bin, /* no. of items user will see */ 3 26 2 se_vals (nsv_init refer (select_info.nsv_alloc)), 3 27 3 arg_ptr ptr, 3 28 3 desc_ptr ptr, 3 29 2 mrds_item (nmi_init refer (select_info.nmi_alloc)), /* mrds select items */ 3 30 3 arg_ptr ptr, /* pointer to receiving field */ 3 31 3 bit_len fixed bin (35), /* bit length of receiving field */ 3 32 3 desc bit (36), /* descriptor for receiving field */ 3 33 3 assn_type fixed bin, /* type code for assign_ */ 3 34 3 assn_len fixed bin (35), /* length for assign_ */ 3 35 2 user_item (nui_init refer (select_info.nui_alloc)), /* user select item */ 3 36 3 name char (32) var, /* name for col. header */ 3 37 3 table_name char (32) var, /* name of containing linus table */ 3 38 3 item_type fixed bin, /* indicates type of item: 3 39* 1 => raw mrds, 3 40* 2 => expr. */ 3 41 3 rslt_desc bit (36), /* descriptor for expr. result */ 3 42 3 rslt_bit_len fixed bin (35), /* bit length of expr. result */ 3 43 3 rslt_assn_ptr ptr, /* pointer to expr. result storage loc. */ 3 44 3 rslt_assn_type fixed bin, /* assign_ type code of expr. result */ 3 45 3 rslt_assn_len fixed bin (35), /* assign_ length for expr. result */ 3 46 3 item_ptr ptr; /* pointer to item or expr. or applied set_func. structure */ 3 47 3 48 dcl (nsv_init, nmi_init, nui_init) fixed bin; 3 49 dcl si_ptr ptr; 3 50 3 51 /* END INCLUDE FILE linus_select_info.incl.pl1 */ 136 137 4 1 /* BEGIN INCLUDE FILE linus_arg_list.incl.pl1 -- jccj 4/15/77 */ 4 2 4 3 dcl 1 char_desc aligned based (char_ptr), /* Structure for character descriptors */ 4 4 2 fb_desc bit (36) aligned init ("100000100000000000000000000000100011"b), /* Fixed bin descriptor */ 4 5 2 n_chars fixed bin, 4 6 2 arr (n_chars_init refer (char_desc.n_chars)), 4 7 3 const bit (12) unal init ("101010100000"b), /* Constant part */ 4 8 3 var bit (24) unal; /* Variable part */ 4 9 4 10 dcl char_ptr ptr; 4 11 dcl n_chars_init fixed bin; 4 12 4 13 /* END INCLUDE FILE linus_arg_list.incl.pl1 */ 138 139 5 1 /* BEGIN mdbm_arg_list.incl.pl1 -- jaw 5/31/78 */ 5 2 /* the duplicate mrds_arg_list.incl.pl1 was eliminated by Jim Gray, Nov. 1979 */ 5 3 5 4 /* layout of argument list for IDS and DBM entries with options (variable) */ 5 5 5 6 dcl 1 arg_list based (al_ptr), 5 7 2 arg_count fixed bin (17) unal, /* 2 * no. of args. */ 5 8 2 code fixed bin (17) unal, /* 4 => normal, 8 => special */ 5 9 2 desc_count fixed bin (17) unal, /* 2 * no. of descriptors */ 5 10 2 pad fixed bin (17) unal, /* must be 0 */ 5 11 2 arg_des_ptr (num_ptrs) ptr; /* argument/descriptor pointer */ 5 12 5 13 dcl al_ptr ptr; 5 14 dcl num_ptrs fixed bin; 5 15 5 16 /* END mdbm_arg_list.incl.pl1 */ 5 17 140 141 142 dcl sci_ptr ptr; /* ssu_ needs this */ 143 144 dcl 1 arg_len_bits based, /* Pick up length for descriptor */ 145 2 pad bit (12) unal, 146 2 length bit (24) unal; 147 148 dcl 1 fieldname_info aligned based (fn_info_ptr), 149 2 version fixed bin, /* (INPUT) =1 */ 150 2 n_fieldnames fixed bin, /* (INPUT) number of fields in every record */ 151 2 name (n refer (fieldname_info.n_fieldnames)) char (32); 152 /* (INPUT) actual field names. */ 153 154 dcl 1 fn_info aligned based (fieldname_info_ptr), /* like fieldname_info */ 155 2 version fixed bin, 156 2 n_fieldnames fixed bin, 157 2 name (n refer (fn_info.n_fieldnames)) char (32); 158 159 dcl 1 open_info aligned, 160 2 version fixed bin, /* =1 */ 161 2 flags aligned, 162 3 create bit (1) unal, /* ON ==> create file if not found */ 163 3 discard_records bit (1) unal, /* ON ==> throw away all records in file */ 164 3 assign_fieldnames bit (1) unal, /* ON ==> initialize fieldnames in file */ 165 3 mbz bit (33) unal, /* must be zero */ 166 2 fieldname_info_ptr ptr; /* ptr to fieldname_info structure */ 167 168 /* NOTE: 169* 170* The flags are interrelated in the following way: 171* 172* If the file is successfully created (create=ON), then assign_fieldnames 173* must be ON, and filename_info_ptr must point to a filename_info 174* structure. 175* 176* The discard_records flag causes all existing records (if any) in the 177* file to be thrown away. This flag does not depend on either of the 178* other flags. 179* 180* The assign_fieldnames flag must be ON for newly created files, and may 181* be ON for old files only if the discard_records flag is also ON. This 182* flag causes new fieldnames to be stored in the file. The 183* fieldname_info_ptr must point to a fieldname_info structure. 184* 185**/ 186 187 dcl 1 record_info aligned based (rec_info_ptr), 188 2 version fixed bin, /* (INPUT) =1 */ 189 2 n_fields fixed bin, /* (INPUT) number of fields in this record */ 190 2 field (n refer (record_info.n_fields)) aligned, 191 3 field_ptr ptr, /* (INPUT) ptr to first char of Nth record */ 192 3 field_len fixed bin (21); /* (INPUT) len in chars of Nth record */ 193 194 /* NOTE: 195* 196* This entry adds a new record to a lister file. The order of the fields is 197* the same as the order in the fieldname_info structure (see 198* lister_$open_file, or lister_$get_fieldnames). The number of fields in each 199* record must match the number of fields in every other record in the file. 200* If the file is full a non-zero code will be returned. If the number of 201* fields is incorrect a non-zero code will be returned. Zero-length fields 202* are OK. 203* 204**/ 205 206 dcl 1 ti (select_info.n_user_items) aligned based (ti_ptr), 207 2 ptr ptr, 208 2 len fixed bin (35); 209 210 dcl ANOTHER char (8) options (constant) int static init ("-another"); 211 dcl path_name char (char_argl.arg.arg_len (1)) 212 based (char_argl.arg.arg_ptr (1)); /* Pathname of output file */ 213 dcl tmp_char char (char_argl.arg.arg_len (i)) 214 based (char_argl.arg.arg_ptr (i)); /* Temp location */ 215 216 dcl dir_name char (168); 217 dcl seg_name char (168); 218 219 dcl (clcb_extend, field_names, first_retrieve) 220 bit (1) aligned; 221 222 dcl ( 223 destination_ptr init (null), /* Points to the scalar function, set function or 224* select_info structure */ 225 e_ptr init (null), 226 env_ptr init (null), 227 fieldname_info_ptr init (null), 228 file_info_ptr init (null), 229 fn_info_ptr init (null), 230 out_buf_ptr init (null), 231 rec_info_ptr init (null), 232 ref_ptr init (null), 233 ti_ptr init (null), 234 user_item_ptr init (null) 235 ) ptr; 236 237 dcl ( 238 another_len, 239 caller, /* 1 = from the request processor, 240* 2 = from a scalar function, 241* 3 = from a set function */ 242 i, 243 l, 244 n, 245 n_bytes, 246 ob_len, /* length of output buffer */ 247 target_type 248 ) fixed bin; 249 250 dcl initial_mrds_vclock float bin (63); 251 252 dcl test_entry entry variable; 253 254 dcl (addr, fixed, null, rel, substr, vclock) builtin; 255 256 dcl (code, icode, out_code) fixed bin (35); 257 258 dcl 1 user_names aligned, 259 2 n_names fixed bin (35), 260 2 name (linus_data_$max_user_items) char (32) var; 261 262 dcl ( 263 error_table_$noentry, 264 linus_data_$create_list_id, 265 linus_data_$max_user_items, 266 linus_error_$conv, 267 linus_error_$inv_arg, 268 linus_error_$inval_ctl_arg, 269 linus_error_$lister_col_nums, 270 linus_error_$lister_col_names, 271 linus_error_$no_data, 272 linus_error_$no_db, 273 linus_error_$no_input_arg, 274 linus_error_$ret_not_valid, 275 mrds_error_$tuple_not_found, 276 sys_info$max_seg_size 277 ) fixed bin (35) ext; 278 279 dcl (cleanup, conversion, linkage_error) condition; 280 281 dcl cu_$decode_entry_value entry (entry, ptr, ptr); 282 dcl cu_$generate_call entry (entry, ptr); 283 dcl dsl_$retrieve entry options (variable); 284 dcl expand_pathname_$add_suffix 285 entry (char (*), char (*), char (*), char (*), fixed bin (35)); 286 dcl linus_convert_code entry (fixed bin (35), fixed bin (35), fixed bin (35)); 287 dcl linus_define_area entry (ptr, char(6), fixed bin(35)); 288 dcl linus_eval_set_func entry (ptr, ptr, fixed bin (35)); 289 dcl linus_output$create_list 290 entry (ptr, fixed bin (35), ptr, ptr, ptr, ptr, fixed bin, ptr, 291 fixed bin, fixed bin (35)); 292 dcl linus_translate_query$auto entry (ptr, ptr); 293 dcl linus_retrieve entry (ptr, ptr, ptr, ptr, ptr, fixed bin (35)); 294 dcl linus_table$async_retrieval 295 entry (ptr, fixed bin (35)); 296 dcl lister_$close_file entry (ptr, fixed bin (35)); 297 dcl lister_$get_fieldnames entry (ptr, ptr, ptr, fixed bin (35)); 298 dcl lister_$open_file entry (char (*), char (*), ptr, ptr, fixed bin (35)); 299 dcl ssu_$abort_line entry options (variable); 300 dcl ssu_$arg_count entry (ptr, fixed bin); 301 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)); 302 dcl work_area area (sys_info$max_seg_size) based (lcb.i_o_area_ptr); 303 304 on linkage_error call ssu_$abort_line (sci_ptr, error_table_$noentry, 305 "Your site hasn't purchased the Lister Facility."); 306 307 test_entry = lister_$open_file; /* Test to see if these guys bought Lister */ 308 revert linkage_error; 309 310 icode, user_names.n_names, code = 0; 311 field_names = "0"b; 312 313 al_ptr, ca_ptr, char_ptr = null; 314 315 on cleanup call clean_up; 316 on conversion call error (linus_error_$conv, ""); 317 318 if lcb.db_index = 0 then 319 call error (linus_error_$no_db, ""); 320 call ssu_$arg_count (sci_ptr, nargs_init); 321 if nargs_init = 0 then 322 call error (linus_error_$no_input_arg, ""); 323 324 call linus_define_area (lcb.i_o_area_ptr, "I_O_", code); 325 if code ^= 0 then 326 call error (code, ""); 327 open_info.flags.create, open_info.flags.discard_records, 328 open_info.flags.assign_fieldnames = "1"b; 329 clcb_extend = "0"b; 330 n_bytes = 0; 331 first_retrieve = "1"b; 332 another_len = 8; 333 target_type = 44; /* char var * 2 */ 334 caller = 1; /* Init for linus_eval_expr */ 335 if lcb.si_ptr = null then call linus_translate_query$auto (sci_ptr, lcb_ptr); /* try translating it */ 336 if lcb.si_ptr = null then return; /* No good? Oh, well */ 337 destination_ptr = lcb.si_ptr; /* Init for linus_eval_expr */ 338 si_ptr = lcb.si_ptr; /* Activate select_info data */ 339 340 allocate char_argl in (lcb.static_area); 341 do i = 1 to nargs_init; 342 call ssu_$arg_ptr (sci_ptr, i, char_argl.arg.arg_ptr (i), char_argl.arg.arg_len (i)); 343 end; 344 345 i = 1; 346 347 call 348 expand_pathname_$add_suffix (path_name, "lister", dir_name, seg_name, 349 icode); 350 if icode ^= 0 then 351 call error (icode, ""); 352 353 if char_argl.nargs > 1 then 354 do i = 2 to char_argl.nargs; 355 if substr (tmp_char, 1, 1) = "-" then do; 356 if tmp_char = "-extend" then do; 357 open_info.flags.create, open_info.flags.assign_fieldnames, 358 open_info.flags.discard_records = "0"b; 359 clcb_extend = "1"b; 360 end; 361 else if tmp_char = "-fn" | tmp_char = "-field_names" then do; 362 field_names = "1"b; 363 do i = i + 1 to char_argl.nargs 364 while (substr (tmp_char, 1, 1) ^= "-"); 365 user_names.n_names = user_names.n_names + 1; 366 if user_names.n_names > select_info.n_user_items 367 then call error (0, "Too many field names were specified for the current selection expression."); 368 369 user_names.name (user_names.n_names) = tmp_char; 370 end; 371 i = i - 1; /* pick up next item */ 372 end; 373 else call error (linus_error_$inval_ctl_arg, (tmp_char)); 374 end; 375 else call error (linus_error_$inv_arg, (tmp_char)); 376 end; 377 378 if ^select_info.se_flags.val_ret then 379 call error (linus_error_$ret_not_valid, ""); 380 allocate ti in (work_area); 381 do l = 1 to select_info.n_user_items; 382 ti.ptr (l) = null; 383 end; 384 call cu_$decode_entry_value (linus_create_list, ref_ptr, env_ptr); 385 386 if ^field_names then do; 387 n = select_info.n_user_items; 388 do l = 1 to n; 389 if select_info.user_item(l).item_type = 2 /* if expression */ 390 then call error (0, "Field names must be supplied when the select clause ^/contains expressions. Use the -field_names control_arg."); 391 end; 392 end; 393 else n = user_names.n_names; 394 if n < select_info.n_user_items 395 then call error (0, "Not enough field names were specified for the current selection expression."); 396 allocate fieldname_info in (work_area); 397 open_info.fieldname_info_ptr = fn_info_ptr; 398 fieldname_info.version = 1; 399 if ^field_names then 400 do i = 1 to select_info.n_user_items; 401 fieldname_info.name (i) = select_info.user_item.name (i); 402 end; 403 else 404 do i = 1 to user_names.n_names; 405 fieldname_info.name (i) = user_names.name (i); 406 end; 407 408 allocate record_info in (work_area); 409 open_info.version, record_info.version = 1; 410 open_info.flags.mbz = "0"b; 411 call 412 lister_$open_file (dir_name, seg_name, addr (open_info), file_info_ptr, 413 icode); 414 if icode = error_table_$noentry & clcb_extend then do; 415 open_info.flags.create, open_info.flags.assign_fieldnames = "1"b; 416 icode = 0; 417 call 418 lister_$open_file (dir_name, seg_name, addr (open_info), 419 file_info_ptr, icode); 420 end; 421 422 if icode ^= 0 then 423 call error (icode, ""); 424 425 if clcb_extend then do; 426 call 427 lister_$get_fieldnames (file_info_ptr, lcb.i_o_area_ptr, 428 fieldname_info_ptr, icode); 429 if icode ^= 0 then 430 call error (icode, ""); 431 if fn_info.n_fieldnames ^= fieldname_info.n_fieldnames then 432 call error (linus_error_$lister_col_nums, ""); 433 do i = 1 to fn_info.n_fieldnames 434 while (fn_info.name (i) = fieldname_info.name (i)); 435 end; 436 if i <= fn_info.n_fieldnames then 437 call error (linus_error_$lister_col_names, ""); 438 end; 439 440 if select_info.prior_sf_ptr ^= null then 441 call linus_eval_set_func (lcb_ptr, select_info.prior_sf_ptr, icode); 442 if select_info.set_fn then do; 443 call 444 linus_eval_set_func (lcb_ptr, select_info.user_item.item_ptr (1), 445 icode); 446 if icode = 0 then do; 447 call 448 linus_output$create_list (lcb_ptr, linus_data_$create_list_id, 449 file_info_ptr, rec_info_ptr, si_ptr, ti_ptr, target_type, 450 out_buf_ptr, ob_len, icode); 451 if icode ^= 0 then 452 call error (icode, ""); 453 end; 454 end; 455 else do; 456 call linus_table$async_retrieval (lcb_ptr, icode); 457 if icode ^= 0 then 458 call error (icode, ""); 459 460 call linus_retrieve (lcb_ptr, ca_ptr, char_ptr, al_ptr, e_ptr, icode); 461 462 if al_ptr ^= null then 463 num_ptrs = arg_list.arg_count; 464 char_desc.arr.var (1) = addr (another_len) -> arg_len_bits.length; 465 /* Get ready for "another" 466* retrieve */ 467 arg_list.arg_des_ptr (2) = addr (ANOTHER); 468 if icode = 0 then 469 first_retrieve = "0"b; 470 do while (icode = 0); /* Retrieve all */ 471 call 472 linus_output$create_list (lcb_ptr, linus_data_$create_list_id, 473 file_info_ptr, rec_info_ptr, si_ptr, ti_ptr, target_type, 474 out_buf_ptr, ob_len, icode); 475 if icode ^= 0 then 476 call error (icode, ""); 477 if lcb.timing_mode then 478 initial_mrds_vclock = vclock; 479 call cu_$generate_call (dsl_$retrieve, al_ptr); /* Retrieve another */ 480 if lcb.timing_mode then 481 lcb.mrds_time = lcb.mrds_time + (vclock - initial_mrds_vclock); 482 end; 483 if icode ^= mrds_error_$tuple_not_found then 484 call error (icode, ""); 485 if first_retrieve then 486 call error (linus_error_$no_data, ""); 487 end; 488 489 call clean_up; 490 return; 491 492 error: 493 proc (err_code, msg); 494 495 dcl err_code fixed bin (35); 496 dcl msg char(*) var; 497 498 call clean_up; 499 call linus_convert_code (err_code, out_code, linus_data_$create_list_id); 500 call ssu_$abort_line (sci_ptr, out_code, msg); 501 502 503 end error; 504 505 clean_up: 506 proc; 507 508 if ca_ptr ^= null 509 then do; 510 free char_argl; 511 ca_ptr = null; 512 end; 513 if file_info_ptr ^= null then do; 514 call lister_$close_file (file_info_ptr, icode); 515 file_info_ptr = null; 516 end; 517 518 end clean_up; 519 520 521 end linus_create_list; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/26/88 1248.6 linus_create_list.pl1 >spec>install>1119>linus_create_list.pl1 132 1 07/29/86 1148.4 linus_lcb.incl.pl1 >ldd>include>linus_lcb.incl.pl1 134 2 11/23/82 1327.3 linus_char_argl.incl.pl1 >ldd>include>linus_char_argl.incl.pl1 136 3 09/16/83 1338.0 linus_select_info.incl.pl1 >ldd>include>linus_select_info.incl.pl1 138 4 03/27/82 0434.5 linus_arg_list.incl.pl1 >ldd>include>linus_arg_list.incl.pl1 140 5 10/14/83 1609.0 mdbm_arg_list.incl.pl1 >ldd>include>mdbm_arg_list.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ANOTHER 000000 constant char(8) initial packed unaligned dcl 210 set ref 467 addr builtin function dcl 254 ref 411 411 417 417 464 467 al_ptr 000110 automatic pointer dcl 5-13 set ref 313* 460* 462 462 467 479* another_len 000276 automatic fixed bin(17,0) dcl 237 set ref 332* 464 arg 2 based structure array level 2 dcl 2-9 arg_count based fixed bin(17,0) level 2 packed packed unaligned dcl 5-6 ref 462 arg_des_ptr 2 based pointer array level 2 dcl 5-6 set ref 467* arg_len 4 based fixed bin(21,0) array level 3 dcl 2-9 set ref 342* 347 347 355 356 361 361 363 369 373 375 arg_len_bits based structure level 1 packed packed unaligned dcl 144 arg_list based structure level 1 unaligned dcl 5-6 arg_ptr 2 based pointer array level 3 dcl 2-9 set ref 342* 347 355 356 361 361 363 369 373 375 arr 2 based structure array level 2 dcl 4-3 assign_fieldnames 1(02) 000114 automatic bit(1) level 3 packed packed unaligned dcl 159 set ref 327* 357* 415* ca_ptr 000100 automatic pointer dcl 2-15 set ref 313* 340* 342 342 347 347 347 353 353 355 355 356 356 361 361 361 361 363 363 363 369 369 373 373 375 375 460* 508 510 511* caller 000277 automatic fixed bin(17,0) dcl 237 set ref 334* char_argl based structure level 1 dcl 2-9 set ref 340 510 char_desc based structure level 1 dcl 4-3 char_ptr 000106 automatic pointer dcl 4-10 set ref 313* 460* 464 clcb_extend 000244 automatic bit(1) dcl 219 set ref 329* 359* 414 425 cleanup 000320 stack reference condition dcl 279 ref 315 code 000314 automatic fixed bin(35,0) dcl 256 set ref 310* 324* 325 325* conversion 000326 stack reference condition dcl 279 ref 316 create 1 000114 automatic bit(1) level 3 packed packed unaligned dcl 159 set ref 327* 357* 415* cu_$decode_entry_value 000042 constant entry external dcl 281 ref 384 cu_$generate_call 000044 constant entry external dcl 282 ref 479 db_index based fixed bin(35,0) level 2 dcl 1-53 ref 318 destination_ptr 000250 automatic pointer initial dcl 222 set ref 222* 337* dir_name 000120 automatic char(168) packed unaligned dcl 216 set ref 347* 411* 417* discard_records 1(01) 000114 automatic bit(1) level 3 packed packed unaligned dcl 159 set ref 327* 357* dsl_$retrieve 000046 constant entry external dcl 283 ref 479 479 e_ptr 000252 automatic pointer initial dcl 222 set ref 222* 460* env_ptr 000254 automatic pointer initial dcl 222 set ref 222* 384* err_code parameter fixed bin(35,0) dcl 495 set ref 492 499* error_table_$noentry 000010 external static fixed bin(35,0) dcl 262 set ref 304* 414 expand_pathname_$add_suffix 000050 constant entry external dcl 284 ref 347 field_names 000245 automatic bit(1) dcl 219 set ref 311* 362* 386 399 fieldname_info based structure level 1 dcl 148 set ref 396 fieldname_info_ptr 2 000114 automatic pointer level 2 in structure "open_info" dcl 159 in procedure "linus_create_list" set ref 397* fieldname_info_ptr 000256 automatic pointer initial dcl 222 in procedure "linus_create_list" set ref 222* 426* 431 433 433 436 file_info_ptr 000260 automatic pointer initial dcl 222 set ref 222* 411* 417* 426* 447* 471* 513 514* 515* first_retrieve 000246 automatic bit(1) dcl 219 set ref 331* 468* 485 flags 1 000114 automatic structure level 2 dcl 159 fn_info based structure level 1 dcl 154 fn_info_ptr 000262 automatic pointer initial dcl 222 set ref 222* 396* 397 398 401 405 431 433 i 000300 automatic fixed bin(17,0) dcl 237 set ref 341* 342* 342 342* 345* 353* 355 355 356 356 361 361 361 361 363* 363 363 363* 369 369* 371* 371 373 373 375 375* 399* 401 401* 403* 405 405* 433* 433 433* 436 i_o_area_ptr 64 based pointer level 2 dcl 1-53 set ref 324* 380 396 408 426* icode 000315 automatic fixed bin(35,0) dcl 256 set ref 310* 347* 350 350* 411* 414 416* 417* 422 422* 426* 429 429* 440* 443* 446 447* 451 451* 456* 457 457* 460* 468 470 471* 475 475* 483 483* 514* initial_mrds_vclock 000306 automatic float bin(63) dcl 250 set ref 477* 480 item_ptr based pointer array level 3 dcl 3-5 set ref 443* item_type based fixed bin(17,0) array level 3 dcl 3-5 ref 389 l 000301 automatic fixed bin(17,0) dcl 237 set ref 381* 382* 388* 389* lcb based structure level 1 dcl 1-53 lcb_ptr parameter pointer dcl 1-121 set ref 25 318 324 335 335* 336 337 338 340 380 396 408 426 440* 443* 447* 456* 460* 471* 477 480 480 480 length 0(12) based bit(24) level 2 packed packed unaligned dcl 144 ref 464 linkage_error 000334 stack reference condition dcl 279 ref 304 308 linus_convert_code 000052 constant entry external dcl 286 ref 499 linus_data_$create_list_id 000012 external static fixed bin(35,0) dcl 262 set ref 447* 471* 499* linus_data_$max_user_items 000014 external static fixed bin(35,0) dcl 262 ref 258 linus_define_area 000054 constant entry external dcl 287 ref 324 linus_error_$conv 000016 external static fixed bin(35,0) dcl 262 set ref 316* linus_error_$inv_arg 000020 external static fixed bin(35,0) dcl 262 set ref 375* linus_error_$inval_ctl_arg 000022 external static fixed bin(35,0) dcl 262 set ref 373* linus_error_$lister_col_names 000026 external static fixed bin(35,0) dcl 262 set ref 436* linus_error_$lister_col_nums 000024 external static fixed bin(35,0) dcl 262 set ref 431* linus_error_$no_data 000030 external static fixed bin(35,0) dcl 262 set ref 485* linus_error_$no_db 000032 external static fixed bin(35,0) dcl 262 set ref 318* linus_error_$no_input_arg 000034 external static fixed bin(35,0) dcl 262 set ref 321* linus_error_$ret_not_valid 000036 external static fixed bin(35,0) dcl 262 set ref 378* linus_eval_set_func 000056 constant entry external dcl 288 ref 440 443 linus_output$create_list 000060 constant entry external dcl 289 ref 447 471 linus_retrieve 000064 constant entry external dcl 293 ref 460 linus_table$async_retrieval 000066 constant entry external dcl 294 ref 456 linus_translate_query$auto 000062 constant entry external dcl 292 ref 335 lister_$close_file 000070 constant entry external dcl 296 ref 514 lister_$get_fieldnames 000072 constant entry external dcl 297 ref 426 lister_$open_file 000074 constant entry external dcl 298 ref 307 411 417 mbz 1(03) 000114 automatic bit(33) level 3 packed packed unaligned dcl 159 set ref 410* mrds_error_$tuple_not_found 000040 external static fixed bin(35,0) dcl 262 ref 483 mrds_time 74 based float bin(63) level 2 dcl 1-53 set ref 480* 480 msg parameter varying char dcl 496 set ref 492 500* n 000302 automatic fixed bin(17,0) dcl 237 set ref 387* 388 393* 394 396 396 408 408 n_bytes 000303 automatic fixed bin(17,0) dcl 237 set ref 330* n_fieldnames 1 based fixed bin(17,0) level 2 in structure "fieldname_info" dcl 148 in procedure "linus_create_list" set ref 396* 431 n_fieldnames 1 based fixed bin(17,0) level 2 in structure "fn_info" dcl 154 in procedure "linus_create_list" ref 431 433 436 n_fields 1 based fixed bin(17,0) level 2 dcl 187 set ref 408* n_names 000317 automatic fixed bin(35,0) level 2 dcl 258 set ref 310* 365* 365 366 369 393 403 n_user_items 17 based fixed bin(17,0) level 2 dcl 3-5 ref 366 380 381 387 394 399 name 2 based char(32) array level 2 in structure "fn_info" dcl 154 in procedure "linus_create_list" ref 433 name 1 000317 automatic varying char(32) array level 2 in structure "user_names" dcl 258 in procedure "linus_create_list" set ref 369* 405 name based varying char(32) array level 3 in structure "select_info" dcl 3-5 in procedure "linus_create_list" ref 401 name 2 based char(32) array level 2 in structure "fieldname_info" dcl 148 in procedure "linus_create_list" set ref 401* 405* 433 nargs based fixed bin(17,0) level 2 dcl 2-9 set ref 340* 353 353 363 510 nargs_init 000102 automatic fixed bin(17,0) dcl 2-16 set ref 320* 321 340 340 341 nmi_alloc 13 based fixed bin(17,0) level 2 dcl 3-5 ref 389 401 443 nsv_alloc 12 based fixed bin(17,0) level 2 dcl 3-5 ref 389 401 443 null builtin function dcl 254 ref 222 222 222 222 222 222 222 222 222 222 222 313 335 336 382 440 462 508 511 513 515 num_ptrs 000112 automatic fixed bin(17,0) dcl 5-14 set ref 462* ob_len 000304 automatic fixed bin(17,0) dcl 237 set ref 447* 471* open_info 000114 automatic structure level 1 dcl 159 set ref 411 411 417 417 out_buf_ptr 000264 automatic pointer initial dcl 222 set ref 222* 447* 471* out_code 000316 automatic fixed bin(35,0) dcl 256 set ref 499* 500* path_name based char packed unaligned dcl 211 set ref 347* prior_sf_ptr 2 based pointer level 2 dcl 3-5 set ref 440 440* ptr based pointer array level 2 dcl 206 set ref 382* rec_info_ptr 000266 automatic pointer initial dcl 222 set ref 222* 408* 409 447* 471* record_info based structure level 1 dcl 187 set ref 408 ref_ptr 000270 automatic pointer initial dcl 222 set ref 222* 384* sci_ptr parameter pointer dcl 142 set ref 25 304* 320* 335* 342* 500* se_flags 0(01) based structure level 2 packed packed unaligned dcl 3-5 seg_name 000172 automatic char(168) packed unaligned dcl 217 set ref 347* 411* 417* select_info based structure level 1 dcl 3-5 set_fn based bit(1) level 2 packed packed unaligned dcl 3-5 ref 442 si_ptr 34 based pointer level 2 in structure "lcb" dcl 1-53 in procedure "linus_create_list" ref 335 336 337 338 si_ptr 000104 automatic pointer dcl 3-49 in procedure "linus_create_list" set ref 338* 366 378 380 381 387 389 394 399 401 440 440 442 443 447* 471* ssu_$abort_line 000076 constant entry external dcl 299 ref 304 500 ssu_$arg_count 000100 constant entry external dcl 300 ref 320 ssu_$arg_ptr 000102 constant entry external dcl 301 ref 342 static_area 144 based area level 2 dcl 1-53 ref 340 substr builtin function dcl 254 ref 355 363 target_type 000305 automatic fixed bin(17,0) dcl 237 set ref 333* 447* 471* test_entry 000310 automatic entry variable dcl 252 set ref 307* ti based structure array level 1 dcl 206 set ref 380 ti_ptr 000272 automatic pointer initial dcl 222 set ref 222* 380* 382 447* 471* timing_mode 15(05) based bit(1) level 2 packed packed unaligned dcl 1-53 ref 477 480 tmp_char based char packed unaligned dcl 213 ref 355 356 361 361 363 369 373 375 user_item based structure array level 2 dcl 3-5 user_item_ptr 000274 automatic pointer initial dcl 222 set ref 222* user_names 000317 automatic structure level 1 dcl 258 val_ret 0(01) based bit(1) level 3 packed packed unaligned dcl 3-5 ref 378 var 2(12) based bit(24) array level 3 packed packed unaligned dcl 4-3 set ref 464* vclock builtin function dcl 254 ref 477 480 version based fixed bin(17,0) level 2 in structure "record_info" dcl 187 in procedure "linus_create_list" set ref 409* version 000114 automatic fixed bin(17,0) level 2 in structure "open_info" dcl 159 in procedure "linus_create_list" set ref 409* version based fixed bin(17,0) level 2 in structure "fieldname_info" dcl 148 in procedure "linus_create_list" set ref 398* work_area based area dcl 302 ref 380 396 408 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. fixed builtin function dcl 254 n_chars_init automatic fixed bin(17,0) dcl 4-11 nmi_init automatic fixed bin(17,0) dcl 3-48 nsv_init automatic fixed bin(17,0) dcl 3-48 nui_init automatic fixed bin(17,0) dcl 3-48 rel builtin function dcl 254 sys_info$max_seg_size external static fixed bin(35,0) dcl 262 NAMES DECLARED BY EXPLICIT CONTEXT. clean_up 002403 constant entry internal dcl 505 ref 315 489 498 error 002317 constant entry internal dcl 492 ref 316 318 321 325 350 366 373 375 378 389 394 422 429 431 436 451 457 475 483 485 linus_create_list 000164 constant entry external dcl 25 ref 384 384 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3114 3220 2455 3124 Length 3560 2455 104 324 436 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_create_list 305 external procedure is an external procedure. on unit on line 304 90 on unit on unit on line 315 64 on unit on unit on line 316 78 on unit error 88 internal procedure is called during a stack extension. clean_up 70 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME linus_create_list 000100 ca_ptr linus_create_list 000102 nargs_init linus_create_list 000104 si_ptr linus_create_list 000106 char_ptr linus_create_list 000110 al_ptr linus_create_list 000112 num_ptrs linus_create_list 000114 open_info linus_create_list 000120 dir_name linus_create_list 000172 seg_name linus_create_list 000244 clcb_extend linus_create_list 000245 field_names linus_create_list 000246 first_retrieve linus_create_list 000250 destination_ptr linus_create_list 000252 e_ptr linus_create_list 000254 env_ptr linus_create_list 000256 fieldname_info_ptr linus_create_list 000260 file_info_ptr linus_create_list 000262 fn_info_ptr linus_create_list 000264 out_buf_ptr linus_create_list 000266 rec_info_ptr linus_create_list 000270 ref_ptr linus_create_list 000272 ti_ptr linus_create_list 000274 user_item_ptr linus_create_list 000276 another_len linus_create_list 000277 caller linus_create_list 000300 i linus_create_list 000301 l linus_create_list 000302 n linus_create_list 000303 n_bytes linus_create_list 000304 ob_len linus_create_list 000305 target_type linus_create_list 000306 initial_mrds_vclock linus_create_list 000310 test_entry linus_create_list 000314 code linus_create_list 000315 icode linus_create_list 000316 out_code linus_create_list 000317 user_names linus_create_list THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac alloc_auto_adj enable_op shorten_stack ext_entry int_entry int_entry_desc op_alloc_ op_freen_ vclock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$decode_entry_value cu_$generate_call dsl_$retrieve expand_pathname_$add_suffix linus_convert_code linus_define_area linus_eval_set_func linus_output$create_list linus_retrieve linus_table$async_retrieval linus_translate_query$auto lister_$close_file lister_$get_fieldnames lister_$open_file ssu_$abort_line ssu_$arg_count ssu_$arg_ptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$noentry linus_data_$create_list_id linus_data_$max_user_items linus_error_$conv linus_error_$inv_arg linus_error_$inval_ctl_arg linus_error_$lister_col_names linus_error_$lister_col_nums linus_error_$no_data linus_error_$no_db linus_error_$no_input_arg linus_error_$ret_not_valid mrds_error_$tuple_not_found LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 25 000160 222 000171 258 000205 304 000212 307 000254 308 000261 310 000262 311 000265 313 000266 315 000272 316 000314 318 000347 320 000371 321 000403 324 000423 325 000443 327 000462 329 000470 330 000471 331 000472 332 000474 333 000476 334 000500 335 000502 336 000522 337 000531 338 000533 340 000534 341 000550 342 000557 343 000577 345 000601 347 000603 350 000641 353 000660 355 000671 356 000701 357 000706 359 000714 360 000716 361 000717 362 000727 363 000731 365 000746 366 000752 369 000777 370 001021 371 001023 372 001025 373 001026 374 001053 375 001055 376 001102 378 001105 380 001126 381 001140 382 001151 383 001156 384 001160 386 001177 387 001201 388 001204 389 001213 391 001256 392 001260 393 001261 394 001263 396 001311 397 001325 398 001326 399 001330 401 001343 402 001372 403 001375 405 001405 406 001421 408 001423 409 001437 410 001442 411 001444 414 001475 415 001503 416 001507 417 001510 422 001540 425 001557 426 001561 429 001601 431 001620 433 001643 435 001664 436 001666 440 001710 442 001731 443 001734 446 001762 447 001764 451 002016 454 002035 456 002036 457 002050 460 002067 462 002111 464 002120 467 002123 468 002126 470 002131 471 002134 475 002166 477 002205 479 002217 480 002234 482 002250 483 002251 485 002271 489 002311 490 002315 492 002316 498 002332 499 002337 500 002354 503 002401 505 002402 508 002410 510 002415 511 002422 513 002425 514 002431 515 002442 518 002445 ----------------------------------------------------------- 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