COMPILATION LISTING OF SEGMENT linus_output Compiled by: Multics PL/I Compiler, Release 33a, of May 30, 1990 Compiled at: ACTC Technologies Inc. Compiled on: 10/14/90 0918.6 mdt Sun Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1990 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 6* * * 7* *********************************************************** */ 8 9 10 11 /****^ HISTORY COMMENTS: 12* 1) change(90-04-30,Leskiw), approve(90-10-05,MCR8202), 13* audit(90-10-11,Bubric), install(90-10-14,MR12.4-1039): 14* Changed calls to assign_round_ from assign_ so that data is rounded. 15* END HISTORY COMMENTS */ 16 17 18 linus_output: 19 proc; 20 return; /* This entry point should never be called */ 21 22 /* DESCRIPTION: 23* 24* The porpose of this module is to permit the common code used by 25* linus_create_list, linus_report, and linus_write to be maintained in a 26* central location. Thus corrections that have to be made need only be made 27* in one location, not in three. 28* 29* 30* HISTORY: 31* 32* 81-04-29 Rickie E. Brinegar: This module was created after hackin on 33* linus_create_list, linus_report, and linus_write. Presumably, it will ease 34* maintenance of the three routines. 35* 36**/ 37 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 */ 38 39 2 1 /* BEGIN INCLUDE FILE linus_select_info.incl.pl1 */ 2 2 /* History: 77-07-29 J. A. Weeldreyer: Originally written. 2 3* Modified: 82-18-82 Dave Schimke: Added user_item.table_name 2 4**/ 2 5 dcl 1 select_info aligned based (si_ptr), /* info from LILA select clause */ 2 6 2 set_fn bit (1) unal, /* on if set fn to be applied */ 2 7 2 se_flags unal, /* flags pertaining to selection expr. */ 2 8 3 val_ret bit (1) unal, /* valid for retrieval */ 2 9 3 val_dtt bit (1) unal, /* valid for define_temp_table */ 2 10 3 val_del bit (1) unal, /* valid for delete */ 2 11 3 val_mod bit (1) unal, /* valid for modify */ 2 12 2 dup_flag bit (1) unal, /* on if dup explic. spec. somewhere */ 2 13 2 unique_flag bit (1) unal, /* on if unique explic. spec. somewhere */ 2 14 2 pad bit (29) unal, /* reserved */ 2 15 2 prior_sf_ptr ptr, /* pointer to set fns for prior eval. */ 2 16 2 se_ptr ptr, /* pointer to mrds selection expression */ 2 17 2 sel_items_ptr ptr, /* pointer to list of selected items */ 2 18 2 sel_items_len fixed bin, /* length in characters of list of selected items */ 2 19 2 se_len fixed bin (35), /* length of mrds sel. expr. */ 2 20 2 nsv_alloc fixed bin, /* no. of se. vals aloc. */ 2 21 2 nmi_alloc fixed bin, /* no. of mrds items alloc. */ 2 22 2 nui_alloc fixed bin, /* no. of user items alloc. */ 2 23 2 nsevals fixed bin, /* number of selection expr. vaules */ 2 24 2 n_mrds_items fixed bin, /* no. of items in mrds select list */ 2 25 2 n_user_items fixed bin, /* no. of items user will see */ 2 26 2 se_vals (nsv_init refer (select_info.nsv_alloc)), 2 27 3 arg_ptr ptr, 2 28 3 desc_ptr ptr, 2 29 2 mrds_item (nmi_init refer (select_info.nmi_alloc)), /* mrds select items */ 2 30 3 arg_ptr ptr, /* pointer to receiving field */ 2 31 3 bit_len fixed bin (35), /* bit length of receiving field */ 2 32 3 desc bit (36), /* descriptor for receiving field */ 2 33 3 assn_type fixed bin, /* type code for assign_ */ 2 34 3 assn_len fixed bin (35), /* length for assign_ */ 2 35 2 user_item (nui_init refer (select_info.nui_alloc)), /* user select item */ 2 36 3 name char (32) var, /* name for col. header */ 2 37 3 table_name char (32) var, /* name of containing linus table */ 2 38 3 item_type fixed bin, /* indicates type of item: 2 39* 1 => raw mrds, 2 40* 2 => expr. */ 2 41 3 rslt_desc bit (36), /* descriptor for expr. result */ 2 42 3 rslt_bit_len fixed bin (35), /* bit length of expr. result */ 2 43 3 rslt_assn_ptr ptr, /* pointer to expr. result storage loc. */ 2 44 3 rslt_assn_type fixed bin, /* assign_ type code of expr. result */ 2 45 3 rslt_assn_len fixed bin (35), /* assign_ length for expr. result */ 2 46 3 item_ptr ptr; /* pointer to item or expr. or applied set_func. structure */ 2 47 2 48 dcl (nsv_init, nmi_init, nui_init) fixed bin; 2 49 dcl si_ptr ptr; 2 50 2 51 /* END INCLUDE FILE linus_select_info.incl.pl1 */ 40 41 3 1 /* BEGIN mdbm_descriptor.incl.pl1 -- jaw 5/31/78 */ 3 2 /* modified by Jim Gray - - Nov. 1979, to change type from fixed bin(5) to 3 3* unsigned fixed bin(6), so new packed decimal data types could be handled. 3 4* also the duplicate mrds_descriptor.incl.pl1 was eliminated. */ 3 5 3 6 dcl 1 descriptor based (desc_ptr), /* map of Multics descriptor */ 3 7 2 version bit (1) unal, /* DBM handles vers. 1 only */ 3 8 2 type unsigned fixed bin (6) unal, /* data type */ 3 9 2 packed bit (1) unal, /* on if data item is packed */ 3 10 2 number_dims bit (4) unal, /* dimensions */ 3 11 2 size, /* size for string data */ 3 12 3 scale bit (12) unal, /* scale for num. data */ 3 13 3 precision bit (12) unal, /* prec. for num. data */ 3 14 2 array_info (num_dims), 3 15 3 lower_bound fixed bin (35), /* lower bound of dimension */ 3 16 3 upper_bound fixed bin (35), /* upper bound of dimension */ 3 17 3 multiplier fixed bin (35); /* element separation */ 3 18 3 19 dcl desc_ptr ptr; 3 20 dcl num_dims fixed bin init (0) ; /* more useful form of number_dims */ 3 21 3 22 /* END mdbm_descriptor.incl.pl1 */ 3 23 3 24 42 43 44 dcl ( 45 caller, 46 l, 47 len, 48 ob_len, /* OUTPUT: output buffer length */ 49 target_type 50 ) fixed bin; 51 52 dcl n_bytes fixed bin (21); 53 54 dcl ( 55 called_by, /* INPUT: The linus_data_ id of my caller */ 56 code, /* INPUT: standard code */ 57 icode init (0) 58 ) fixed bin (35); 59 60 dcl EXPR fixed bin (2) int static options (constant) init (2); 61 dcl NEWLINE char (1) options (constant) int static init (" 62 "); /* New line character */ 63 dcl wcb_dm char (1); /* INPUT: delimiter character for write request */ 64 65 dcl ( 66 dec_3_ptr init (null), 67 destination_ptr init (null), 68 file_info_ptr, /* INPUT: pointer to the file information for the create_list request */ 69 iocb_ptr, /* INPUT: iocb_ptr for the report and write requests */ 70 out_buf_ptr, /* INPUT/OUTPUT: if null then allocate and return the value */ 71 rec_info_ptr, /* INPUT: pointer to the record information for the create_list request */ 72 ti_ptr, /* INPUT: target item pointer */ 73 user_item_ptr init (null) 74 ) ptr; 75 76 dcl (addr, fixed, length, ltrim, null, rel, rtrim, substr) builtin; 77 78 dcl 1 user_item aligned based (user_item_ptr), /* Valid when mrds_item = user_item */ 79 2 arg_ptr ptr, 80 2 bit_len fixed bin (35), 81 2 desc bit (36), 82 2 assn_type fixed bin, 83 2 assn_len fixed bin (35); 84 85 dcl 1 ti (select_info.n_user_items) aligned based (ti_ptr), 86 2 ptr ptr, 87 2 len fixed bin (35); 88 89 90 dcl 1 record_info aligned based (rec_info_ptr), 91 2 version fixed bin, /* (INPUT) =1 */ 92 2 n_fields fixed bin, /* (INPUT) number of fields in this record */ 93 2 field (n refer (record_info.n_fields)) aligned, 94 3 field_ptr ptr, /* (INPUT) ptr to first char of Nth record */ 95 3 field_len fixed bin (21); /* (INPUT) len in chars of Nth record */ 96 97 /* NOTE: 98* 99* This entry adds a new record to a lister file. The order of the fields is 100* the same as the order in the fieldname_info structure (see 101* lister_$open_file, or lister_$get_fieldnames). The number of fields in each 102* record must match the number of fields in every other record in the file. 103* If the file is full a non-zero code will be returned. If the number of 104* fields is incorrect a non-zero code will be returned. Zero-length fields 105* are OK. 106* 107**/ 108 109 dcl ( 110 linus_data_$buff_len, 111 linus_data_$create_list_id, 112 linus_data_$report_id, 113 linus_data_$w_id, 114 sys_info$max_seg_size 115 ) ext fixed bin (35); 116 117 dcl dec_3 pic "+999" based (dec_3_ptr); 118 dcl output_buffer (ob_len) char (1) unal based (out_buf_ptr); 119 dcl out_buffer char (ob_len) unal based (out_buf_ptr); 120 dcl target_item char (ti.len (l)) var aligned based; 121 dcl work_area area (sys_info$max_seg_size) based (lcb.i_o_area_ptr); 122 123 dcl assign_round_ 124 entry (ptr, fixed bin, fixed bin (35), ptr, fixed bin, fixed bin (35)); 125 dcl linus_eval_expr 126 entry (ptr, ptr, ptr, fixed bin, fixed bin, fixed bin (35)); 127 dcl lister_$add_record entry (ptr, ptr, fixed bin (35)); 128 dcl mdbm_util_$string_data_class entry (ptr) returns (bit (1)); 129 dcl iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)); 130 131 create_list: 132 entry (lcb_ptr, called_by, file_info_ptr, rec_info_ptr, si_ptr, ti_ptr, 133 target_type, out_buf_ptr, ob_len, code); 134 call main_routine; 135 return; 136 137 report: 138 entry (lcb_ptr, called_by, iocb_ptr, si_ptr, ti_ptr, target_type, 139 out_buf_ptr, ob_len, code); 140 allocate dec_3 in (work_area); 141 call main_routine; 142 return; 143 144 write: 145 entry (lcb_ptr, called_by, iocb_ptr, si_ptr, wcb_dm, ti_ptr, target_type, 146 out_buf_ptr, ob_len, code); 147 call main_routine; 148 return; 149 150 main_routine: 151 proc; 152 n_bytes = 0; 153 code = 0; 154 caller = 1; 155 destination_ptr = lcb.si_ptr; 156 do l = 1 to select_info.n_user_items; 157 158 if ti.ptr (l) = null then do; 159 if select_info.user_item.item_type (l) = EXPR | select_info.set_fn 160 then desc_ptr = addr (select_info.user_item.rslt_desc (l)); 161 else do; 162 user_item_ptr = select_info.user_item.item_ptr (l); 163 desc_ptr = addr (user_item.desc); 164 end; 165 166 if ^mdbm_util_$string_data_class (desc_ptr) then 167 ti.len (l) = linus_data_$buff_len; 168 else ti.len (l) = 169 fixed (descriptor.size.scale || descriptor.size.precision); 170 allocate target_item in (work_area) set (ti.ptr (l)); 171 ti.ptr (l) -> target_item = ""; 172 end; 173 174 if select_info.user_item.item_type (l) = EXPR | select_info.set_fn 175 then do; /* Evaluate expression */ 176 if ^select_info.set_fn then 177 call 178 linus_eval_expr (lcb_ptr, 179 select_info.user_item.item_ptr (l), destination_ptr, caller, 180 l, icode); 181 if icode ^= 0 then do; 182 code = icode; 183 return; 184 end; 185 call 186 assign_round_ (ti.ptr (l), target_type, ti.len (l), 187 select_info.user_item.rslt_assn_ptr (l), 188 select_info.user_item.rslt_assn_type (l), 189 select_info.user_item.rslt_assn_len (l)); 190 end; 191 else do; 192 user_item_ptr = select_info.user_item.item_ptr (l); 193 /* Init user_item structure */ 194 call 195 assign_round_ (ti.ptr (l), target_type, ti.len (l), user_item.arg_ptr, 196 user_item.assn_type, user_item.assn_len); 197 end; 198 end; 199 200 /* get length of output buffer. allocate and fill it with target items */ 201 202 if out_buf_ptr = null then do; 203 ob_len = 0; 204 do l = 1 to select_info.n_user_items; 205 ob_len = ob_len + ti.len (l) + 2; 206 end; 207 208 allocate output_buffer in (work_area); 209 end; 210 211 do l = 1 to select_info.n_user_items; 212 if called_by = linus_data_$create_list_id then 213 ti.ptr (l) -> target_item = 214 ltrim (rtrim (ti.ptr (l) -> target_item)); 215 len = length (ti.ptr (l) -> target_item); 216 if called_by = linus_data_$create_list_id then do; 217 record_info.field.field_len (l) = len; 218 record_info.field.field_ptr (l) = 219 addr (output_buffer (n_bytes + 1)); 220 end; 221 else if called_by = linus_data_$report_id then do; 222 dec_3_ptr = addr (output_buffer (n_bytes + 1)); 223 dec_3 = len; 224 n_bytes = n_bytes + 4; 225 end; 226 n_bytes = n_bytes + 1; 227 substr (out_buffer, n_bytes, len) = ti.ptr (l) -> target_item; 228 n_bytes = n_bytes + len - 1; 229 if called_by = linus_data_$w_id then do; 230 n_bytes = n_bytes + 1; 231 output_buffer (n_bytes) = wcb_dm; 232 end; 233 end; 234 235 if called_by = linus_data_$create_list_id then 236 call lister_$add_record (file_info_ptr, rec_info_ptr, code); 237 else do; 238 if called_by = linus_data_$w_id then do; 239 n_bytes = n_bytes + 1; 240 output_buffer (n_bytes) = NEWLINE; 241 end; 242 call iox_$put_chars (iocb_ptr, out_buf_ptr, n_bytes, code); 243 end; 244 end main_routine; 245 246 end linus_output; 247 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/14/90 0915.0 linus_output.pl1 >spec>install>1039>linus_output.pl1 38 1 07/29/86 1248.4 linus_lcb.incl.pl1 >ldd>include>linus_lcb.incl.pl1 40 2 09/16/83 1438.0 linus_select_info.incl.pl1 >ldd>include>linus_select_info.incl.pl1 42 3 10/14/83 1708.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 60 ref 159 174 NEWLINE constant char(1) initial packed unaligned dcl 61 ref 240 addr builtin function dcl 76 ref 159 163 218 222 arg_ptr based pointer level 2 dcl 78 set ref 194* assign_round_ 000020 constant entry external dcl 123 ref 185 194 assn_len 5 based fixed bin(35,0) level 2 dcl 78 set ref 194* assn_type 4 based fixed bin(17,0) level 2 dcl 78 set ref 194* called_by parameter fixed bin(35,0) dcl 54 ref 131 137 144 212 216 221 229 235 238 caller 000103 automatic fixed bin(17,0) dcl 44 set ref 154* 176* code parameter fixed bin(35,0) dcl 54 set ref 131 137 144 153* 182* 235* 242* dec_3 based picture(4) packed unaligned dcl 117 set ref 140 223* dec_3_ptr 000110 automatic pointer initial dcl 65 set ref 65* 140* 222* 223 desc 3 based bit(36) level 2 dcl 78 set ref 163 desc_ptr 000100 automatic pointer dcl 3-19 set ref 159* 163* 166* 168 168 descriptor based structure level 1 unaligned dcl 3-6 destination_ptr 000112 automatic pointer initial dcl 65 set ref 65* 155* 176* field 2 based structure array level 2 dcl 90 field_len 4 based fixed bin(21,0) array level 3 dcl 90 set ref 217* field_ptr 2 based pointer array level 3 dcl 90 set ref 218* file_info_ptr parameter pointer dcl 65 set ref 131 235* fixed builtin function dcl 76 ref 168 i_o_area_ptr 64 based pointer level 2 dcl 1-53 ref 140 170 208 icode 000107 automatic fixed bin(35,0) initial dcl 54 set ref 54* 176* 181 182 iocb_ptr parameter pointer dcl 65 set ref 137 144 242* iox_$put_chars 000030 constant entry external dcl 129 ref 242 item_ptr based pointer array level 3 dcl 2-5 set ref 162 176* 192 item_type based fixed bin(17,0) array level 3 dcl 2-5 ref 159 174 l 000104 automatic fixed bin(17,0) dcl 44 set ref 156* 158 159 159 162 166 168 170 170 171 171 174 176 176* 185 185 185 185 185 192 194 194* 204* 205* 211* 212 212 212 215 217 218 227* lcb based structure level 1 dcl 1-53 lcb_ptr parameter pointer dcl 1-121 set ref 131 137 140 144 155 170 176* 208 len 000105 automatic fixed bin(17,0) dcl 44 in procedure "linus_output" set ref 215* 217 223 227 228 len 2 based fixed bin(35,0) array level 2 in structure "ti" dcl 85 in procedure "linus_output" set ref 166* 168* 170 171 185* 194* 205 212 length builtin function dcl 76 ref 215 linus_data_$buff_len 000010 external static fixed bin(35,0) dcl 109 ref 166 linus_data_$create_list_id 000012 external static fixed bin(35,0) dcl 109 ref 212 216 235 linus_data_$report_id 000014 external static fixed bin(35,0) dcl 109 ref 221 linus_data_$w_id 000016 external static fixed bin(35,0) dcl 109 ref 229 238 linus_eval_expr 000022 constant entry external dcl 125 ref 176 lister_$add_record 000024 constant entry external dcl 127 ref 235 ltrim builtin function dcl 76 ref 212 mdbm_util_$string_data_class 000026 constant entry external dcl 128 ref 166 n_bytes 000106 automatic fixed bin(21,0) dcl 52 set ref 152* 218 222 224* 224 226* 226 227 228* 228 230* 230 231 239* 239 240 242* n_user_items 17 based fixed bin(17,0) level 2 dcl 2-5 ref 156 204 211 nmi_alloc 13 based fixed bin(17,0) level 2 dcl 2-5 ref 159 159 162 174 176 185 185 185 192 nsv_alloc 12 based fixed bin(17,0) level 2 dcl 2-5 ref 159 159 162 174 176 185 185 185 192 null builtin function dcl 76 ref 65 65 65 158 202 num_dims 000102 automatic fixed bin(17,0) initial dcl 3-20 set ref 3-20* ob_len parameter fixed bin(17,0) dcl 44 set ref 131 137 144 203* 205* 205 208 227 out_buf_ptr parameter pointer dcl 65 set ref 131 137 144 202 208* 218 222 227 231 240 242* out_buffer based char packed unaligned dcl 119 set ref 227* output_buffer based char(1) array packed unaligned dcl 118 set ref 208 218 222 231* 240* precision 0(24) based bit(12) level 3 packed packed unaligned dcl 3-6 ref 168 ptr based pointer array level 2 dcl 85 set ref 158 170* 171 185* 194* 212 212 215 227 rec_info_ptr parameter pointer dcl 65 set ref 131 217 218 235* record_info based structure level 1 dcl 90 rslt_assn_len based fixed bin(35,0) array level 3 dcl 2-5 set ref 185* rslt_assn_ptr based pointer array level 3 dcl 2-5 set ref 185* rslt_assn_type based fixed bin(17,0) array level 3 dcl 2-5 set ref 185* rslt_desc based bit(36) array level 3 dcl 2-5 set ref 159 rtrim builtin function dcl 76 ref 212 scale 0(12) based bit(12) level 3 packed packed unaligned dcl 3-6 ref 168 select_info based structure level 1 dcl 2-5 set_fn based bit(1) level 2 packed packed unaligned dcl 2-5 ref 159 174 176 si_ptr 34 based pointer level 2 in structure "lcb" dcl 1-53 in procedure "linus_output" ref 155 si_ptr parameter pointer dcl 2-49 in procedure "linus_output" ref 131 137 144 156 159 159 159 162 174 174 176 176 185 185 185 192 204 211 size 0(12) based structure level 2 packed packed unaligned dcl 3-6 substr builtin function dcl 76 set ref 227* target_item based varying char dcl 120 set ref 170 171* 212* 212 215 227 target_type parameter fixed bin(17,0) dcl 44 set ref 131 137 144 185* 194* ti based structure array level 1 dcl 85 ti_ptr parameter pointer dcl 65 ref 131 137 144 158 166 168 170 170 171 171 185 185 194 194 205 212 212 212 215 227 user_item based structure array level 2 in structure "select_info" dcl 2-5 in procedure "linus_output" user_item based structure level 1 dcl 78 in procedure "linus_output" user_item_ptr 000114 automatic pointer initial dcl 65 set ref 65* 162* 163 192* 194 194 194 wcb_dm parameter char(1) packed unaligned dcl 63 ref 144 231 work_area based area dcl 121 ref 140 170 208 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. nmi_init automatic fixed bin(17,0) dcl 2-48 nsv_init automatic fixed bin(17,0) dcl 2-48 nui_init automatic fixed bin(17,0) dcl 2-48 rel builtin function dcl 76 sys_info$max_seg_size external static fixed bin(35,0) dcl 109 NAMES DECLARED BY EXPLICIT CONTEXT. create_list 000041 constant entry external dcl 131 linus_output 000022 constant entry external dcl 18 main_routine 000167 constant entry internal dcl 150 ref 134 141 147 report 000075 constant entry external dcl 137 write 000142 constant entry external dcl 144 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1234 1266 1062 1244 Length 1524 1062 32 222 151 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_output 127 external procedure is an external procedure. main_routine internal procedure shares stack frame of external procedure linus_output. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME linus_output 000100 desc_ptr linus_output 000102 num_dims linus_output 000103 caller linus_output 000104 l linus_output 000105 len linus_output 000106 n_bytes linus_output 000107 icode linus_output 000110 dec_3_ptr linus_output 000112 destination_ptr linus_output 000114 user_item_ptr linus_output THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac ext_entry op_alloc_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. assign_round_ iox_$put_chars linus_eval_expr lister_$add_record mdbm_util_$string_data_class THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. linus_data_$buff_len linus_data_$create_list_id linus_data_$report_id linus_data_$w_id LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 3 20 000011 54 000012 65 000013 18 000021 20 000030 131 000031 134 000064 135 000065 137 000066 140 000120 141 000130 142 000131 144 000132 147 000165 148 000166 150 000167 152 000170 153 000171 154 000172 155 000174 156 000201 158 000213 159 000222 162 000260 163 000265 166 000267 168 000314 170 000333 171 000360 174 000365 176 000417 181 000446 182 000450 183 000451 185 000452 190 000531 192 000532 194 000537 198 000564 202 000566 203 000572 204 000573 205 000605 206 000616 208 000620 211 000632 212 000643 215 000712 216 000721 217 000724 218 000730 220 000736 221 000737 222 000741 223 000746 224 000755 226 000757 227 000760 228 000774 229 001000 230 001003 231 001004 233 001011 235 001013 238 001033 239 001035 240 001036 242 001044 244 001060 ----------------------------------------------------------- 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