COMPILATION LISTING OF SEGMENT linus_report Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 07/29/86 1007.1 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 /* ****************************************************** 10* * * 11* * * 12* * Copyright (c) 1972 by Massachusetts Institute of * 13* * Technology and Honeywell Information Systems, Inc. * 14* * * 15* * * 16* ****************************************************** */ 17 18 linus_report: 19 proc (sci_ptr, lcb_ptr); 20 21 /* DESCRIPTION: 22* 23* A REPORT is generated using data retrieved from the data base via the MRPG 24* (Multics Report Program Generator). 25* 26* 27* 28* HISTORY: 29* 30* 77-08-01 J. C. C. Jagernauth: Initially written. 31* 32* 78-08-01 J. C. C. Jagernauth: Modified to handle output buffers of 33* unlimited length. 34* 35* 80-01-15 Rickie E. Brinegar: to use mdbm_util_$string_data_class. 36* 37* 80-03-14 Rickie E. Brinegar: to use a work area defined on lcb.i_o_area_ptr 38* instead of getting system free area. 39* 40* 80-07-01 Rickie E. Brinegar: to initiate segments and pass report_ only the 41* entry point names of the MRPG object segments. This permits the user to 42* give absolute path names. 43* 44* 80-10-21 Rickie E. Brinegar: The changes suggested in TR7999 were made to 45* this source except the change to use the string builtin, which was 46* accomplished by using a based character string to overlay the output buffer 47* and using the substr builtin as a pseudo variable. 48* 49* 81-09-21 Rickie E. Brinegar: Changed the assignment of num_ptrs to 50* num_ptrs to an assignment of arg_list.arg_count to num_ptrs to overcome the 51* subscript range condition that it was getting. 52* 53* 81-11-16 Rickie E. Brinegar: added timing of dsl_$retrieve and changed the 54* call to cu_$gen_call to a call to cu_$generate_call. 55* 56* 81-12-17 Paul W. Benjamin: fixed bug where an arg_string was passed to MRPG 57* whether or not one existed. 58* 59* 81-12-21 Paul W. Benjamin: fixed bug where only paths (not entrynames were 60* working for report programs. 61* 62* 82-02-05 Paul W. Benjamin: ssu_ conversion. 63* 64* 82-06-21 Al Dupuis: trap linkage error when the site has no MRPG. 65* 66* 82-10-13 Dave Schimke: Added call to linus_table$async_retrieval before the 67* first retrieve to keep linus_table from getting lost when loading in the 68* incremental mode. This call can be eliminated when all modules call 69* linus_table for their retrievals. 70* 71* 83-08-30 Bert Moberg: Added call to linus_translate_query$auto if no current 72* select expression is available 73**/ 74 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 */ 75 76 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 */ 77 78 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 */ 79 80 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 */ 81 82 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 83 84 85 dcl sci_ptr ptr; /* ssu_ uses this */ 86 87 dcl 1 ti (select_info.n_user_items) aligned based (ti_ptr), 88 2 ptr ptr, 89 2 len fixed bin (35); 90 91 dcl 1 arg_len_bits based, /* Pick up length for descriptor */ 92 2 pad bit (12) unal, 93 2 length bit (24) unal; 94 95 dcl ANOTHER char (8) options (constant) int static init ("-another"); 96 dcl STREAM_OUTPUT fixed bin options (constant) int static init (2); 97 /* Mode for iox open */ 98 99 dcl sw_name char (28); /* Unique switch name */ 100 101 dcl n fixed bin (21); 102 dcl rgl_module char (rgl_len) based (rgl_ptr); /* RGL object module name + control args */ 103 104 dcl ( 105 dec_3_ptr init (null), 106 destination_ptr init (null), /* Points to the scalar function, set function or 107*select_info structure */ 108 e_ptr init (null), 109 env_ptr init (null), 110 iocb_ptr init (null), 111 out_buf_ptr init (null), 112 ref_ptr init (null), 113 rgl_ptr init (null), 114 seg_ptr init (null), 115 ti_ptr init (null), 116 user_item_ptr init (null) 117 ) ptr; 118 119 dcl ( 120 another_len, 121 caller, /* 1 = from the request processor, 122* 2 = from a scalar function, 123* 3 = from a set function */ 124 i, 125 l, 126 ob_len, /* length of output buffer */ 127 rgl_len, 128 target_type 129 ) fixed bin; 130 131 dcl initial_mrds_vclock float bin (63); 132 133 dcl (addr, fixed, index, length, null, rel, search, substr, vclock) builtin; 134 135 dcl first_retrieve bit (1); 136 137 dcl (icode, code, out_code) fixed bin (35); 138 139 dcl (directory, entry) char (168); 140 141 dcl ( 142 error_table_$noentry, 143 error_table_$segknown, 144 linus_data_$report_id, 145 linus_error_$conv, 146 linus_error_$inv_arg, 147 linus_error_$no_data, 148 linus_error_$no_db, 149 linus_error_$ret_not_valid, 150 mrds_error_$tuple_not_found, 151 sys_info$max_seg_size 152 ) fixed bin (35) ext; 153 154 dcl (cleanup, conversion, linkage_error) condition; 155 156 dcl cu_$decode_entry_value entry (entry, ptr, ptr); 157 dcl cu_$generate_call entry (entry, ptr); 158 dcl dsl_$retrieve entry options (variable); 159 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 160 dcl hcs_$initiate 161 entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, 162 fixed bin (35)); 163 dcl iox_$attach_name entry (char (*), ptr, char (*), ptr, fixed bin (35)); 164 dcl iox_$close entry (ptr, fixed bin (35)); 165 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 166 dcl iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 167 dcl linus_convert_code entry (fixed bin (35), fixed bin (35), fixed bin (35)); 168 dcl linus_define_area entry (ptr, char (6), fixed bin (35)); 169 dcl linus_eval_set_func entry (ptr, ptr, fixed bin (35)); 170 dcl linus_output$report 171 entry (ptr, fixed bin (35), ptr, ptr, ptr, fixed bin, ptr, fixed bin, 172 fixed bin (35)); 173 dcl linus_retrieve entry (ptr, ptr, ptr, ptr, ptr, fixed bin (35)); 174 dcl linus_table$async_retrieval 175 entry (ptr, fixed bin (35)); 176 dcl linus_translate_query$auto entry (ptr, ptr); 177 dcl report_$report_attach entry (ptr, (*) char (*) var, bit (1), fixed bin (35)); 178 dcl ssu_$abort_line entry options (variable); 179 dcl ssu_$abort_subsystem entry options (variable); 180 dcl ssu_$arg_count entry (ptr, fixed bin); 181 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)); 182 dcl test_entry entry variable; 183 dcl unique_chars_ entry (bit (*)) returns (char (15)); 184 dcl work_area area (sys_info$max_seg_size) based (lcb.i_o_area_ptr); 185 186 icode, code = 0; 187 188 ca_ptr = null; 189 al_ptr, char_ptr = null; 190 191 on cleanup call clean_up; 192 on conversion call error (linus_error_$conv); 193 194 on linkage_error 195 call ssu_$abort_line (sci_ptr, error_table_$noentry, 196 "Your site hasn't purchased the Multics Report Program Generator (MRPG)."); 197 test_entry = report_$report_attach; 198 revert linkage_error; 199 200 n = 0; 201 first_retrieve = "1"b; 202 another_len = 8; 203 target_type = 44; /* char var * 2 */ 204 caller = 1; /* Init for linus_eval_expr */ 205 206 if lcb.db_index = 0 then 207 call error (linus_error_$no_db); 208 if lcb.si_ptr = null then call linus_translate_query$auto (sci_ptr, lcb_ptr); /* try translating it */ 209 if lcb.si_ptr = null then return; /* No good? Oh, well */ 210 else do; 211 destination_ptr = lcb.si_ptr; /* Init for linus_eval_expr */ 212 si_ptr = lcb.si_ptr; /* Activate select_info data */ 213 call ssu_$arg_count (sci_ptr, nargs_init); 214 if ^select_info.se_flags.val_ret then 215 call error (linus_error_$ret_not_valid); 216 else if nargs_init = 0 then 217 call error (linus_error_$inv_arg); /* There must be args */ 218 else do; 219 allocate char_argl in (lcb.static_area); 220 do i = 1 to char_argl.nargs; 221 call ssu_$arg_ptr (sci_ptr, i, char_argl.arg.arg_ptr (i), char_argl.arg.arg_len (i)); 222 end; 223 rgl_ptr = char_argl.arg.arg_ptr (1); /* get RGL arg list */ 224 rgl_len = 0; 225 do i = 1 to char_argl.nargs; 226 rgl_len = rgl_len + char_argl.arg.arg_len (i) + 1; 227 end; 228 rgl_len = rgl_len - 1; 229 230 call linus_define_area (lcb.i_o_area_ptr, "I_O_", code); 231 if code ^= 0 then 232 call error (code); 233 allocate ti in (work_area); 234 do l = 1 to select_info.n_user_items; 235 ti.ptr (l) = null; 236 end; 237 sw_name = unique_chars_ ("0"b) || ".linus_report"; 238 /* Unique switch_name */ 239 call cu_$decode_entry_value (linus_report, ref_ptr, env_ptr); 240 l = index (rgl_module, " "); 241 if l = 0 then 242 l = length (rgl_module); 243 244 /* Begin Change 12-21-81 PWB */ 245 246 if search (substr (rgl_module, 1, l), "><") ^= 0 247 then do; 248 call expand_pathname_ (substr (rgl_module, 1, l), directory, entry, icode); 249 if icode ^= 0 250 then call error (icode); 251 call hcs_$initiate (directory, entry, entry, 0, 1, seg_ptr, icode); 252 if icode ^= 0 & icode ^= error_table_$segknown 253 then call error (icode); 254 end; 255 else entry = substr (rgl_module, 1, l); 256 257 /* End Change 12-21-81 PWB */ 258 /* Begin Change 12-17-81 PWB */ 259 260 call 261 iox_$attach_name (sw_name, iocb_ptr, 262 "report_ " || entry || " " || substr (rgl_module, l + 1), ref_ptr, icode); 263 264 /* End Change 12-17-81 PWB */ 265 /* Init for RGL option */ 266 if icode ^= 0 then 267 call error (icode); 268 call iox_$open (iocb_ptr, STREAM_OUTPUT, "0"b, icode); 269 if icode ^= 0 then 270 call error (icode); 271 if select_info.prior_sf_ptr ^= null then 272 call 273 linus_eval_set_func (lcb_ptr, select_info.prior_sf_ptr, 274 icode); 275 if select_info.set_fn then do; 276 call 277 linus_eval_set_func (lcb_ptr, 278 select_info.user_item.item_ptr (1), icode); 279 if icode = 0 then do; 280 call 281 linus_output$report (lcb_ptr, linus_data_$report_id, 282 iocb_ptr, si_ptr, ti_ptr, target_type, out_buf_ptr, ob_len, 283 icode); 284 if icode ^= 0 then 285 call error (icode); 286 end; 287 end; 288 else do; 289 call linus_table$async_retrieval (lcb_ptr, icode); 290 if icode ^= 0 then 291 call error (icode); 292 call 293 linus_retrieve (lcb_ptr, ca_ptr, char_ptr, al_ptr, e_ptr, 294 icode); 295 if al_ptr ^= null then 296 num_ptrs = arg_list.arg_count; 297 char_desc.arr.var (1) = 298 addr (another_len) -> arg_len_bits.length; /* Get ready for "another" 299* retrieve */ 300 arg_list.arg_des_ptr (2) = addr (ANOTHER); 301 if icode = 0 then 302 first_retrieve = "0"b; 303 do while (icode = 0); /* Retrieve all */ 304 call 305 linus_output$report (lcb_ptr, linus_data_$report_id, 306 iocb_ptr, si_ptr, ti_ptr, target_type, out_buf_ptr, ob_len, 307 icode); 308 if icode ^= 0 then 309 call error (icode); 310 if lcb.timing_mode then 311 initial_mrds_vclock = vclock; 312 call cu_$generate_call (dsl_$retrieve, al_ptr); 313 /* Retrieve another */ 314 if lcb.timing_mode then 315 lcb.mrds_time = 316 lcb.mrds_time + (vclock - initial_mrds_vclock); 317 end; 318 if icode ^= mrds_error_$tuple_not_found then 319 call error (icode); 320 if first_retrieve then 321 call error (linus_error_$no_data); 322 end; 323 end; 324 end; 325 326 call clean_up; 327 return; 328 329 error: 330 proc (err_code); 331 dcl err_code fixed bin (35); 332 333 call linus_convert_code (err_code, out_code, linus_data_$report_id); 334 call clean_up; 335 if code ^= 0 336 then call ssu_$abort_subsystem (sci_ptr, code); 337 else call ssu_$abort_line (sci_ptr, out_code, ""); 338 339 end error; 340 341 clean_up: 342 proc; 343 344 if ca_ptr ^= null 345 then free char_argl; 346 if iocb_ptr ^= null then do; 347 call iox_$close (iocb_ptr, icode); 348 call iox_$detach_iocb (iocb_ptr, icode); 349 iocb_ptr = null; 350 end; 351 352 end clean_up; 353 354 end linus_report; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/29/86 0940.0 linus_report.pl1 >special_ldd>install>MR12.0-1106>linus_report.pl1 75 1 07/29/86 0937.8 linus_lcb.incl.pl1 >special_ldd>install>MR12.0-1106>linus_lcb.incl.pl1 77 2 03/27/82 0434.5 linus_arg_list.incl.pl1 >ldd>include>linus_arg_list.incl.pl1 79 3 11/23/82 1327.3 linus_char_argl.incl.pl1 >ldd>include>linus_char_argl.incl.pl1 81 4 09/16/83 1338.0 linus_select_info.incl.pl1 >ldd>include>linus_select_info.incl.pl1 83 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 unaligned dcl 95 set ref 300 STREAM_OUTPUT 000013 constant fixed bin(17,0) initial dcl 96 set ref 268* addr builtin function dcl 133 ref 297 300 al_ptr 000110 automatic pointer dcl 5-13 set ref 189* 292* 295 295 300 312* another_len 000152 automatic fixed bin(17,0) dcl 119 set ref 202* 297 arg 2 based structure array level 2 dcl 3-9 arg_count based fixed bin(17,0) level 2 packed unaligned dcl 5-6 ref 295 arg_des_ptr 2 based pointer array level 2 dcl 5-6 set ref 300* arg_len 4 based fixed bin(21,0) array level 3 dcl 3-9 set ref 221* 226 arg_len_bits based structure level 1 packed unaligned dcl 91 arg_list based structure level 1 unaligned dcl 5-6 arg_ptr 2 based pointer array level 3 dcl 3-9 set ref 221* 223 arr 2 based structure array level 2 dcl 2-3 ca_ptr 000102 automatic pointer dcl 3-15 set ref 188* 219* 220 221 221 223 225 226 292* 344 344 caller 000153 automatic fixed bin(17,0) dcl 119 set ref 204* char_argl based structure level 1 dcl 3-9 set ref 219 344 char_desc based structure level 1 dcl 2-3 char_ptr 000100 automatic pointer dcl 2-10 set ref 189* 292* 297 cleanup 000314 stack reference condition dcl 154 ref 191 code 000166 automatic fixed bin(35,0) dcl 137 set ref 186* 230* 231 231* 335 335* conversion 000322 stack reference condition dcl 154 ref 192 cu_$decode_entry_value 000032 constant entry external dcl 156 ref 239 cu_$generate_call 000034 constant entry external dcl 157 ref 312 db_index based fixed bin(35,0) level 2 dcl 1-53 ref 206 dec_3_ptr 000124 automatic pointer initial dcl 104 set ref 104* destination_ptr 000126 automatic pointer initial dcl 104 set ref 104* 211* directory 000170 automatic char(168) unaligned dcl 139 set ref 248* 251* dsl_$retrieve 000036 constant entry external dcl 158 ref 312 312 e_ptr 000130 automatic pointer initial dcl 104 set ref 104* 292* entry 000242 automatic char(168) unaligned dcl 139 set ref 248* 251* 251* 255* 260 env_ptr 000132 automatic pointer initial dcl 104 set ref 104* 239* err_code parameter fixed bin(35,0) dcl 331 set ref 329 333* error_table_$noentry 000010 external static fixed bin(35,0) dcl 141 set ref 194* error_table_$segknown 000012 external static fixed bin(35,0) dcl 141 ref 252 expand_pathname_ 000040 constant entry external dcl 159 ref 248 first_retrieve 000164 automatic bit(1) unaligned dcl 135 set ref 201* 301* 320 hcs_$initiate 000042 constant entry external dcl 160 ref 251 i 000154 automatic fixed bin(17,0) dcl 119 set ref 220* 221* 221 221* 225* 226* i_o_area_ptr 64 based pointer level 2 dcl 1-53 set ref 230* 233 icode 000165 automatic fixed bin(35,0) dcl 137 set ref 186* 248* 249 249* 251* 252 252 252* 260* 266 266* 268* 269 269* 271* 276* 279 280* 284 284* 289* 290 290* 292* 301 303 304* 308 308* 318 318* 347* 348* index builtin function dcl 133 ref 240 initial_mrds_vclock 000162 automatic float bin(63) dcl 131 set ref 310* 314 iocb_ptr 000134 automatic pointer initial dcl 104 set ref 104* 260* 268* 280* 304* 346 347* 348* 349* iox_$attach_name 000044 constant entry external dcl 163 ref 260 iox_$close 000046 constant entry external dcl 164 ref 347 iox_$detach_iocb 000050 constant entry external dcl 165 ref 348 iox_$open 000052 constant entry external dcl 166 ref 268 item_ptr based pointer array level 3 dcl 4-5 set ref 276* l 000155 automatic fixed bin(17,0) dcl 119 set ref 234* 235* 240* 241 241* 246 248 248 255 260 lcb based structure level 1 dcl 1-53 lcb_ptr parameter pointer dcl 1-121 set ref 18 206 208 208* 209 211 212 219 230 233 271* 276* 280* 289* 292* 304* 310 314 314 314 length 0(12) based bit(24) level 2 in structure "arg_len_bits" packed unaligned dcl 91 in procedure "linus_report" ref 297 length builtin function dcl 133 in procedure "linus_report" ref 241 linkage_error 000330 stack reference condition dcl 154 ref 194 198 linus_convert_code 000054 constant entry external dcl 167 ref 333 linus_data_$report_id 000014 external static fixed bin(35,0) dcl 141 set ref 280* 304* 333* linus_define_area 000056 constant entry external dcl 168 ref 230 linus_error_$conv 000016 external static fixed bin(35,0) dcl 141 set ref 192* linus_error_$inv_arg 000020 external static fixed bin(35,0) dcl 141 set ref 216* linus_error_$no_data 000022 external static fixed bin(35,0) dcl 141 set ref 320* linus_error_$no_db 000024 external static fixed bin(35,0) dcl 141 set ref 206* linus_error_$ret_not_valid 000026 external static fixed bin(35,0) dcl 141 set ref 214* linus_eval_set_func 000060 constant entry external dcl 169 ref 271 276 linus_output$report 000062 constant entry external dcl 170 ref 280 304 linus_retrieve 000064 constant entry external dcl 173 ref 292 linus_table$async_retrieval 000066 constant entry external dcl 174 ref 289 linus_translate_query$auto 000070 constant entry external dcl 176 ref 208 mrds_error_$tuple_not_found 000030 external static fixed bin(35,0) dcl 141 ref 318 mrds_time 74 based float bin(63) level 2 dcl 1-53 set ref 314* 314 n 000122 automatic fixed bin(21,0) dcl 101 set ref 200* n_user_items 17 based fixed bin(17,0) level 2 dcl 4-5 ref 233 234 nargs based fixed bin(17,0) level 2 dcl 3-9 set ref 219* 220 225 344 nargs_init 000104 automatic fixed bin(17,0) dcl 3-16 set ref 213* 216 219 219 nmi_alloc 13 based fixed bin(17,0) level 2 dcl 4-5 ref 276 nsv_alloc 12 based fixed bin(17,0) level 2 dcl 4-5 ref 276 null builtin function dcl 133 ref 104 104 104 104 104 104 104 104 104 104 104 188 189 208 209 235 271 295 344 346 349 num_ptrs 000112 automatic fixed bin(17,0) dcl 5-14 set ref 295* ob_len 000156 automatic fixed bin(17,0) dcl 119 set ref 280* 304* out_buf_ptr 000136 automatic pointer initial dcl 104 set ref 104* 280* 304* out_code 000167 automatic fixed bin(35,0) dcl 137 set ref 333* 337* prior_sf_ptr 2 based pointer level 2 dcl 4-5 set ref 271 271* ptr based pointer array level 2 dcl 87 set ref 235* ref_ptr 000140 automatic pointer initial dcl 104 set ref 104* 239* 260* report_$report_attach 000072 constant entry external dcl 177 ref 197 rgl_len 000157 automatic fixed bin(17,0) dcl 119 set ref 224* 226* 226 228* 228 240 241 246 248 248 255 260 rgl_module based char unaligned dcl 102 ref 240 241 246 248 248 255 260 rgl_ptr 000142 automatic pointer initial dcl 104 set ref 104* 223* 240 241 246 248 248 255 260 sci_ptr parameter pointer dcl 85 set ref 18 194* 208* 213* 221* 335* 337* se_flags 0(01) based structure level 2 packed unaligned dcl 4-5 search builtin function dcl 133 ref 246 seg_ptr 000144 automatic pointer initial dcl 104 set ref 104* 251* select_info based structure level 1 dcl 4-5 set_fn based bit(1) level 2 packed unaligned dcl 4-5 ref 275 si_ptr 000106 automatic pointer dcl 4-49 in procedure "linus_report" set ref 212* 214 233 234 271 271 275 276 280* 304* si_ptr 34 based pointer level 2 in structure "lcb" dcl 1-53 in procedure "linus_report" ref 208 209 211 212 ssu_$abort_line 000074 constant entry external dcl 178 ref 194 337 ssu_$abort_subsystem 000076 constant entry external dcl 179 ref 335 ssu_$arg_count 000100 constant entry external dcl 180 ref 213 ssu_$arg_ptr 000102 constant entry external dcl 181 ref 221 static_area 144 based area level 2 dcl 1-53 ref 219 substr builtin function dcl 133 ref 246 248 248 255 260 sw_name 000113 automatic char(28) unaligned dcl 99 set ref 237* 260* target_type 000160 automatic fixed bin(17,0) dcl 119 set ref 203* 280* 304* test_entry 000336 automatic entry variable dcl 182 set ref 197* ti based structure array level 1 dcl 87 set ref 233 ti_ptr 000146 automatic pointer initial dcl 104 set ref 104* 233* 235 280* 304* timing_mode 15(05) based bit(1) level 2 packed unaligned dcl 1-53 ref 310 314 unique_chars_ 000104 constant entry external dcl 183 ref 237 user_item based structure array level 2 dcl 4-5 user_item_ptr 000150 automatic pointer initial dcl 104 set ref 104* val_ret 0(01) based bit(1) level 3 packed unaligned dcl 4-5 ref 214 var 2(12) based bit(24) array level 3 packed unaligned dcl 2-3 set ref 297* vclock builtin function dcl 133 ref 310 314 work_area based area dcl 184 ref 233 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. fixed builtin function dcl 133 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 133 sys_info$max_seg_size external static fixed bin(35,0) dcl 141 NAMES DECLARED BY EXPLICIT CONTEXT. clean_up 001522 constant entry internal dcl 341 ref 191 326 334 error 001426 constant entry internal dcl 329 ref 192 206 214 216 231 249 252 266 269 284 290 308 318 320 linus_report 000067 constant entry external dcl 18 ref 239 239 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2436 2544 2001 2446 Length 3112 2001 106 332 434 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_report 298 external procedure is an external procedure. on unit on line 191 64 on unit on unit on line 192 70 on unit on unit on line 194 96 on unit error 98 internal procedure is called by several nonquick procedures. clean_up 70 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME linus_report 000100 char_ptr linus_report 000102 ca_ptr linus_report 000104 nargs_init linus_report 000106 si_ptr linus_report 000110 al_ptr linus_report 000112 num_ptrs linus_report 000113 sw_name linus_report 000122 n linus_report 000124 dec_3_ptr linus_report 000126 destination_ptr linus_report 000130 e_ptr linus_report 000132 env_ptr linus_report 000134 iocb_ptr linus_report 000136 out_buf_ptr linus_report 000140 ref_ptr linus_report 000142 rgl_ptr linus_report 000144 seg_ptr linus_report 000146 ti_ptr linus_report 000150 user_item_ptr linus_report 000152 another_len linus_report 000153 caller linus_report 000154 i linus_report 000155 l linus_report 000156 ob_len linus_report 000157 rgl_len linus_report 000160 target_type linus_report 000162 initial_mrds_vclock linus_report 000164 first_retrieve linus_report 000165 icode linus_report 000166 code linus_report 000167 out_code linus_report 000170 directory linus_report 000242 entry linus_report 000336 test_entry linus_report THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out call_int_this call_int_other return enable shorten_stack ext_entry int_entry alloc_based free_based vclock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$decode_entry_value cu_$generate_call dsl_$retrieve expand_pathname_ hcs_$initiate iox_$attach_name iox_$close iox_$detach_iocb iox_$open linus_convert_code linus_define_area linus_eval_set_func linus_output$report linus_retrieve linus_table$async_retrieval linus_translate_query$auto report_$report_attach ssu_$abort_line ssu_$abort_subsystem ssu_$arg_count ssu_$arg_ptr unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$noentry error_table_$segknown linus_data_$report_id linus_error_$conv linus_error_$inv_arg linus_error_$no_data linus_error_$no_db linus_error_$ret_not_valid mrds_error_$tuple_not_found LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000063 104 000074 186 000110 188 000112 189 000113 191 000116 192 000140 194 000164 197 000226 198 000233 200 000234 201 000235 202 000237 203 000241 204 000243 206 000245 208 000257 209 000277 211 000306 212 000310 213 000311 214 000322 216 000335 219 000347 220 000363 221 000371 222 000411 223 000413 224 000416 225 000417 226 000427 227 000435 228 000437 230 000441 231 000461 233 000471 234 000503 235 000513 236 000520 237 000522 239 000547 240 000566 241 000601 246 000604 248 000616 249 000651 251 000662 252 000723 254 000736 255 000737 260 000743 266 001026 268 001037 269 001056 271 001066 275 001107 276 001112 279 001140 280 001142 284 001172 287 001202 289 001203 290 001215 292 001225 295 001247 297 001256 300 001261 301 001264 303 001267 304 001272 308 001322 310 001332 312 001344 314 001361 317 001375 318 001376 320 001407 326 001420 327 001424 329 001425 333 001433 334 001447 335 001454 337 001476 339 001520 341 001521 344 001527 346 001541 347 001546 348 001557 349 001571 352 001574 ----------------------------------------------------------- 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