COMPILATION LISTING OF SEGMENT linus_query_mgr Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-05-04_1649.60_Thu_mdt Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 /* format: off */ 7 8 /* This is the subroutine called by requests to implement the managment 9* of the current query. Description and usage follows. 10* 11* Description: 12* 13* This subroutine has the following entrypoints. 14* 15* The get entry point takes the current query and places it in a segment. 16* A pointer to the segment and the length are returned in the first two 17* output parms, and the third output parm is the code to indicate success 18* or failure. In the case where there isn't a query, the ptr and length 19* (0) are still valid, and the code is set to reflect no query 20* (linus_error_$no_current_query). 21* 22* The initialize_query_file entrypoint deletes the current query if 23* there is one, and initializes the keyed lila statement file if 24* there isn't one. 25* 26* The put entrypoint takes the caller supplied query and makes it the 27* current query. When the caller passes a query with a length of zero, 28* the current query statements are deleted. 29* 30* The write_line entrypoint takes the caller supplied query line and 31* places it into the keyed lila file under the caller specified key. 32* 33* Known Bugs: 34* 35* Other Problems: 36* 37* History: 38* 39* Written - Al Dupuis - August 1983 40* 41**/ 42 43 linus_query_mgr: proc; 44 45 /* 46* These parameters are described at each entry where they are used. 47**/ 48 49 dcl code_parm fixed bin (35) parm; 50 dcl lcb_ptr_parm ptr parm; 51 dcl query_key_parm fixed bin parm; 52 dcl query_line_parm char (*) parm; 53 dcl query_segment_ptr_parm ptr parm; 54 dcl query_segment_length_parm fixed bin (21) parm; 55 56 return; 57 58 get: entry ( 59 60 lcb_ptr_parm, /* input: ptr to the linus control block */ 61 query_segment_ptr_parm, /* output: points to the returned query */ 62 query_segment_length_parm, /* output: length of returned query */ 63 code_parm /* output: success or failure */ 64 ); 65 66 lcb_ptr = lcb_ptr_parm; 67 query_segment_ptr_parm = null (); 68 query_segment_length_parm = 0; 69 code_parm = 0; 70 sci_ptr = lcb.subsystem_control_info_ptr; 71 lila_file_iocb_ptr = lcb.liocb_ptr; 72 73 call get_the_query (code_parm); 74 query_segment_ptr_parm = query_segment_ptr; 75 query_segment_length_parm = query_segment_length; 76 77 return; 78 79 initialize_query_file: entry ( 80 81 lcb_ptr_parm /* input: ptr to the linus control block */ 82 ); 83 84 lcb_ptr = lcb_ptr_parm; 85 call linus_lila$initialize_lila_file (lcb_ptr); 86 87 return; 88 89 put: entry ( 90 91 lcb_ptr_parm, /* input: ptr to the linus control block */ 92 query_segment_ptr_parm, /* input: points to the query */ 93 query_segment_length_parm, /* input: length of query */ 94 code_parm /* output: success or failure */ 95 ); 96 97 lcb_ptr = lcb_ptr_parm; 98 query_segment_ptr = query_segment_ptr_parm; 99 query_segment_length = query_segment_length_parm; 100 code_parm = 0; 101 102 if query_segment_ptr = null () 103 then do; 104 code_parm = error_table_$null_info_ptr; 105 return; 106 end; 107 108 sci_ptr = lcb.subsystem_control_info_ptr; 109 110 call put_the_query (code_parm); 111 112 return; 113 114 write_line: entry ( 115 116 lcb_ptr_parm, /* input: ptr to the linus control block */ 117 query_key_parm, /* input: key to place the line under */ 118 query_line_parm, /* input: the query line to write */ 119 code_parm /* output: success or failure */ 120 ); 121 122 lcb_ptr = lcb_ptr_parm; 123 sci_ptr = lcb.subsystem_control_info_ptr; 124 lila_file_iocb_ptr = lcb.liocb_ptr; 125 126 call write_the_query_line (query_key_parm, query_line_parm, code_parm); 127 128 return; 129 130 get_the_query: proc (gtq_code_parm); 131 132 dcl gtq_code fixed bin (35); 133 dcl gtq_code_parm fixed bin (35) parm; 134 dcl gtq_current_position fixed bin (21); 135 dcl gtq_record_length fixed bin (21); 136 dcl gtq_still_reading_lines bit (1) aligned; 137 138 query_segment_ptr = lcb.query_temp_segment_ptr; 139 query_segment_length = 0; 140 if lila_file_iocb_ptr = null () | lcb.lila_count < 1 141 then do; 142 gtq_code_parm = linus_error_$no_current_query; 143 return; 144 end; 145 146 call iox_$position (lila_file_iocb_ptr, -1, 0, gtq_code); 147 if gtq_code ^= 0 148 then call ssu_$abort_line (sci_ptr, gtq_code, 149 "^/While trying to position to beginning of LILA file."); 150 input_buffer_ptr = addr (input_buffer); 151 gtq_current_position = 1; 152 gtq_still_reading_lines = ON; 153 154 do while (gtq_still_reading_lines); 155 call iox_$read_record (lila_file_iocb_ptr, input_buffer_ptr, 156 INPUT_BUFFER_LENGTH, gtq_record_length, gtq_code); 157 if gtq_code ^= 0 158 then if gtq_code = error_table_$end_of_info 159 then gtq_still_reading_lines = OFF; 160 else call ssu_$abort_line (sci_ptr, gtq_code, 161 "^/While trying to read a line from the query file."); 162 else do; 163 substr (query_segment, gtq_current_position, gtq_record_length - 1) 164 = substr (input_buffer, 2, gtq_record_length - 1); 165 gtq_current_position = gtq_current_position + gtq_record_length - 1; 166 end; 167 end; 168 169 query_segment_length = gtq_current_position - 1; 170 171 return; 172 173 end get_the_query; 174 175 put_the_query: proc (ptq_code_parm); 176 177 dcl ptq_code_parm fixed bin (35) parm; 178 dcl ptq_current_position fixed bin (21); 179 dcl ptq_loop fixed bin; 180 dcl ptq_newline_index fixed bin (21); 181 dcl ptq_query_line char (ptq_newline_index) based (addr (ptq_query_segment (ptq_current_position))); 182 dcl ptq_query_segment (query_segment_length) char (1) based (query_segment_ptr); 183 dcl ptq_still_writing_lines bit (1) aligned; 184 185 ptq_code_parm = 0; 186 187 call linus_lila$initialize_lila_file (lcb_ptr); 188 if query_segment_length = 0 189 then return; 190 191 lila_file_iocb_ptr = lcb.liocb_ptr; 192 if substr (query_segment, query_segment_length, 1) ^= NEWLINE 193 then do; 194 query_segment_length = query_segment_length + 1; 195 substr (query_segment, query_segment_length, 1) = NEWLINE; 196 end; 197 ptq_current_position = 1; 198 ptq_still_writing_lines = ON; 199 200 do ptq_loop = 1 to 9999 while (ptq_still_writing_lines); 201 ptq_newline_index = index (substr (query_segment, 202 ptq_current_position), NEWLINE); 203 if ptq_newline_index = 0 204 then call ssu_$abort_line (sci_ptr, 0, 205 "Logic error while trying to replace the query"); 206 call write_the_query_line (ptq_loop, ptq_query_line, ptq_code_parm); 207 if ptq_code_parm ^= 0 208 then return; 209 ptq_current_position = ptq_current_position + ptq_newline_index; 210 if ptq_current_position > query_segment_length 211 then ptq_still_writing_lines = OFF; 212 end; 213 214 return; 215 216 end put_the_query; 217 218 write_the_query_line: proc ( 219 220 wtql_query_key_parm, /* input: key to place the line under */ 221 wtql_query_line_parm, /* input: the query line to write */ 222 wtql_code_parm /* output: success or failure */ 223 ); 224 225 dcl wtql_code_parm fixed bin (35) parm; 226 dcl wtql_newline_index fixed bin; 227 dcl wtql_pictured_record_key pic "9999"; 228 dcl wtql_query_key_parm fixed bin parm; 229 dcl wtql_query_line_parm char (*) parm; 230 dcl wtql_query_record char (4096); 231 dcl wtql_record_key char (256) varying; 232 dcl wtql_record_length fixed bin (21); 233 234 wtql_code_parm = 0; 235 wtql_pictured_record_key = wtql_query_key_parm; 236 wtql_record_key = wtql_pictured_record_key; 237 238 wtql_newline_index = index (wtql_query_line_parm, NEWLINE); 239 if wtql_newline_index = 0 240 then wtql_query_record = BLANK || rtrim (wtql_query_line_parm) || NEWLINE; 241 else wtql_query_record = BLANK || rtrim (wtql_query_line_parm); 242 243 call iox_$seek_key (lila_file_iocb_ptr, wtql_record_key, 244 wtql_record_length, wtql_code_parm); 245 if wtql_code_parm ^= error_table_$no_record 246 then return; 247 248 wtql_record_length = length (rtrim (wtql_query_record)); 249 call iox_$write_record (lila_file_iocb_ptr, addr (wtql_query_record), 250 wtql_record_length, wtql_code_parm); 251 if wtql_code_parm ^= 0 252 then return; 253 254 lcb.lila_chars = lcb.lila_chars + wtql_record_length; 255 lcb.lila_count = lcb.lila_count + 1; 256 257 return; 258 259 end write_the_query_line; 260 261 dcl BLANK char (1) static internal options (constant) init (" "); 262 263 dcl INPUT_BUFFER_LENGTH fixed bin (21) static internal options (constant) init (4096); 264 265 dcl NEWLINE char (1) static internal options (constant) init (" 266 "); 267 268 dcl OFF bit (1) aligned static internal options (constant) init ("0"b); 269 dcl ON bit (1) aligned static internal options (constant) init ("1"b); 270 271 dcl addr builtin; 272 273 dcl error_table_$end_of_info fixed bin(35) ext static; 274 dcl error_table_$no_record fixed bin(35) ext static; 275 dcl error_table_$null_info_ptr fixed bin(35) ext static; 276 277 dcl fixed builtin; 278 279 dcl index builtin; 280 dcl input_buffer char (INPUT_BUFFER_LENGTH); 281 dcl input_buffer_ptr ptr; 282 283 dcl length builtin; 284 dcl lila_file_iocb_ptr ptr; 285 dcl linus_error_$no_current_query fixed bin(35) ext static; 286 dcl linus_lila$initialize_lila_file entry (ptr); 287 288 dcl null builtin; 289 290 dcl query_segment char (sys_info$max_seg_size * 4) based (query_segment_ptr); 291 dcl query_segment_ptr ptr; 292 dcl query_segment_length fixed bin (21); 293 294 dcl rel builtin; 295 dcl rtrim builtin; 296 297 dcl sci_ptr ptr; 298 dcl ssu_$abort_line entry() options(variable); 299 dcl substr builtin; 300 dcl sys_info$max_seg_size fixed bin(35) ext static; 301 1 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 1 2 1 3 /* Written 05/04/78 by C. D. Tavares */ 1 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 1 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 1 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 1 7 1 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 1 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 1 10 iox_$close entry (pointer, fixed bin (35)), 1 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 1 12 iox_$delete_record entry (pointer, fixed bin (35)), 1 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 1 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 1 15 iox_$err_not_attached entry options (variable), 1 16 iox_$err_not_closed entry options (variable), 1 17 iox_$err_no_operation entry options (variable), 1 18 iox_$err_not_open entry options (variable), 1 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 1 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 1 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 1 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 1 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 1 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 1 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 1 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 1 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 1 28 iox_$propagate entry (pointer), 1 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 1 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 1 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 1 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 1 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 1 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 1 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 1 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 1 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 1 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 1 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 1 40 1 41 dcl (iox_$user_output, 1 42 iox_$user_input, 1 43 iox_$user_io, 1 44 iox_$error_output) external static pointer; 1 45 1 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 302 303 2 1 /* BEGIN INCLUDE FILE linus_lcb.incl.pl1 -- jaw 8/30/77 */ 2 2 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(86-04-23,Dupuis), approve(86-05-23,MCR7188), audit(86-07-23,GWMay), 2 7* install(86-07-29,MR12.0-1106): 2 8* Added general_work_area_ptr and renamed sfr_ptr to 2 9* force_retrieve_scope_ptr. 2 10* END HISTORY COMMENTS */ 2 11 2 12 2 13 /* HISTORY: 2 14* 2 15* 78-09-29 J. C. C. Jagernauth: Modified for MR7.0. 2 16* 2 17* 81-05-11 Rickie E. Brinegar: added security bit and andministrator bit as 2 18* a part of the attribute level control work. 2 19* 2 20* 81-06-17 Rickie E. Brinegar: deleted the sd_ptr as a part of removing the 2 21* scope_data structure from LINUS. LINUS now depends totally on MRDS for 2 22* scope information. 2 23* 2 24* 81-11-11 Rickie E. Brinegar: added the timing bit and three fields for 2 25* retaining various vcpu times to be collected when in timing mode. The 2 26* times to be collected are: LINUS parsing time, LINUS processing time, and 2 27* MRDS processing time. 2 28* 2 29* 82-01-15 DJ Schimke: Added the build_increment and build_start fields as 2 30* part of the line numbering implementation. This allows for possible later 2 31* LINUS control of the build defaults. 2 32* 2 33* 82-03-01 Paul W. Benjamin: Removed linus_prompt_chars_ptr, as that 2 34* information is now retained by ssu_. Removed parse_timer as no longer 2 35* meaningful. Added linus_version. Added iteration bit. Added 6 entry 2 36* variables for ssu_ replaceable procedures. Added actual_input_iocbp. 2 37* 2 38* 82-06-23 Al Dupuis: Added subsystem_control_info_ptr, 2 39* subsystem_invocation_level, and selection_expression_identifier. 2 40* 2 41* 82-08-26 DJ Schimke: Added report_control_info_ptr, and 2 42* table_control_info_ptr. 2 43* 2 44* 82-10-19 DJ Schimke: Added ssu_abort_line. 2 45* 2 46* 83-06-06 Bert Moberg: Added print_search_order (pso) and no_optimize (no_ot) 2 47* 2 48* 83-04-07 DJ Schimke: Added temp_seg_info_ptr. 2 49* 2 50* 83-08-26 Al Dupuis: Added query_temp_segment_ptr. 2 51**/ 2 52 2 53 dcl 1 lcb aligned based (lcb_ptr), /* LINUS control block */ 2 54 2 db_index fixed bin (35), /* index of open data base, or 0 */ 2 55 2 rb_len fixed bin (21), /* length of request buffer */ 2 56 2 lila_count fixed bin (35), /* number of LILA text lines */ 2 57 2 lila_chars fixed bin (35), /* number of LILA source test chars */ 2 58 2 trans_id fixed bin (35), /* used by checkpoint and rollback facilities (MR7.0) */ 2 59 2 lila_fn char (32) unal, /* entry name of lila data file */ 2 60 2 prompt_flag bit (1) unal, /* on if in prompt mode */ 2 61 2 test_flag bit (1) unal, /* on if in test mode */ 2 62 2 new_version bit (1) unal init (1), /* on for new version data base (MR7.0) */ 2 63 2 secured_db bit (1) unal, /* on if the db is in a secure state */ 2 64 2 administrator bit (1) unal, /* on if the user is a db administrator */ 2 65 2 timing_mode bit (1) unal, /* on if timing is to be done */ 2 66 2 iteration bit (1) unal, /* interpret parens as iteration sets */ 2 67 2 pso_flag bit (1) unal, /* add print_search_order to select */ 2 68 2 no_ot_flag bit (1) unal, /* add no_optimize to select */ 2 69 2 reserved bit (27) unal, 2 70 2 liocb_ptr ptr, /* iocb ptr for lila file */ 2 71 2 rb_ptr ptr, /* ptr to request buffer */ 2 72 2 is_ptr ptr, /* iocb ptr for currentinput stream switch */ 2 73 2 cal_ptr ptr, /* ptr to current arg list for invoke (or null) */ 2 74 2 ttn_ptr ptr, /* pointer to table info structure */ 2 75 2 force_retrieve_scope_info_ptr ptr, /* structure pointer to force retrieve scope operation */ 2 76 2 lv_ptr ptr, /* pointer linus variables */ 2 77 2 si_ptr ptr, /* pointer to select_info structure */ 2 78 2 setfi_ptr ptr, /* pointer to set function information */ 2 79 2 sclfi_ptr ptr, /* pointer to user declared scalar fun. names */ 2 80 2 ivs_ptr ptr, /* pointer to stack of invoke iocb pointers */ 2 81 2 lit_ptr ptr, /* pointer to literal pool */ 2 82 2 lvv_ptr ptr, /* pointer to linus variable alloc. pool */ 2 83 2 rd_ptr ptr, /* point to readied files mode information (MR7.0) */ 2 84 2 rt_ptr ptr, /* point to table of relation names and their readied modes 2 85* (MR7.0) */ 2 86 2 actual_input_iocbp ptr, /* ptr to input while in macros */ 2 87 2 lila_promp_chars_ptr ptr, /* pointer to the prompt characters for lila */ 2 88 2 linus_area_ptr ptr, /* LINUS temporary segment pointer */ 2 89 2 lila_area_ptr ptr, /* LILA temporary segment pointer */ 2 90 2 i_o_area_ptr ptr, /* temporary segment pointer used by write, print, create_list */ 2 91 2 rel_array_ptr ptr, /* ptr to array of names rslt info structure 2 92* for current lila expression */ 2 93 2 unused_timer float bin (63), /* future expansion */ 2 94 2 request_time float bin (63), /* How much request time was spent 2 95* in LINUS. (-1 = user has just enabled 2 96* timing, do not report) */ 2 97 2 mrds_time float bin (63), /* How much time was spent in MRDS */ 2 98 2 build_increment fixed bin, /* default increment for build mode */ 2 99 2 build_start fixed bin, /* default start count for build mode */ 2 100 2 linus_version char (4), /* current version of LINUS */ 2 101 2 subsystem_control_info_ptr ptr, /* the same ptr passed by ssu_ to each request procedure */ 2 102 2 subsystem_invocation_level fixed bin, /* identifies this invocation of LINUS */ 2 103 2 selection_expression_identifier fixed bin, /* identifies the current processed selection expression */ 2 104 2 report_control_info_ptr ptr, /* pointer to linus_report_control_info structure */ 2 105 2 table_control_info_ptr ptr, /* pointer to linus_table control structure */ 2 106 2 temp_seg_info_ptr ptr, /* pointer to linus_temp_seg_mgr control structure */ 2 107 2 query_temp_segment_ptr ptr, /* points to temp seg used for manipulating query */ 2 108 2 general_work_area_ptr ptr, /* a freeing area for general use */ 2 109 2 word_pad (6) bit (36) unal, 2 110 /* procedures that will be optionally */ 2 111 /* replaced by the user. Saved so they */ 2 112 /* can be reinstated if desired. */ 2 113 2 ssu_abort_line entry options (variable), 2 114 2 ssu_post_request_line variable entry (ptr), 2 115 2 ssu_pre_request_line variable entry (ptr), 2 116 2 117 2 curr_lit_offset fixed bin (35), /* index of first free bit in lit. pool */ 2 118 2 curr_lv_val_offset fixed bin (35), /* index of first free bit lv. val. pool */ 2 119 2 static_area area (sys_info$max_seg_size - fixed (rel (addr (lcb.static_area))) + 1); 2 120 2 121 dcl lcb_ptr ptr; 2 122 2 123 /* END INCLUDE FILE linus_lcb.incl.pl1 */ 304 305 306 end linus_query_mgr; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/04/00 1649.6 linus_query_mgr.pl1 >udd>sm>ds>w>ml>linus_query_mgr.pl1 302 1 05/23/83 1016.6 iox_dcls.incl.pl1 >ldd>incl>iox_dcls.incl.pl1 304 2 07/29/86 1248.4 linus_lcb.incl.pl1 >ldd>incl>linus_lcb.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. BLANK 001110 constant char(1) initial packed unaligned dcl 261 ref 239 241 INPUT_BUFFER_LENGTH 000000 constant fixed bin(21,0) initial dcl 263 set ref 155* 280 NEWLINE 001107 constant char(1) initial packed unaligned dcl 265 ref 192 195 201 238 239 OFF constant bit(1) initial dcl 268 ref 157 210 ON constant bit(1) initial dcl 269 ref 152 198 addr builtin function dcl 271 ref 150 206 249 249 code_parm parameter fixed bin(35,0) dcl 49 set ref 58 69* 73* 89 100* 104* 110* 114 126* error_table_$end_of_info 000010 external static fixed bin(35,0) dcl 273 ref 157 error_table_$no_record 000012 external static fixed bin(35,0) dcl 274 ref 245 error_table_$null_info_ptr 000014 external static fixed bin(35,0) dcl 275 ref 104 gtq_code 002122 automatic fixed bin(35,0) dcl 132 set ref 146* 147 147* 155* 157 157 160* gtq_code_parm parameter fixed bin(35,0) dcl 133 set ref 130 142* gtq_current_position 002123 automatic fixed bin(21,0) dcl 134 set ref 151* 163 165* 165 169 gtq_record_length 002124 automatic fixed bin(21,0) dcl 135 set ref 155* 163 163 165 gtq_still_reading_lines 002125 automatic bit(1) dcl 136 set ref 152* 154 157* index builtin function dcl 279 ref 201 238 input_buffer 000100 automatic char(4096) packed unaligned dcl 280 set ref 150 163 input_buffer_ptr 002100 automatic pointer dcl 281 set ref 150* 155* iox_$position 000026 constant entry external dcl 1-8 ref 146 iox_$read_record 000030 constant entry external dcl 1-8 ref 155 iox_$seek_key 000032 constant entry external dcl 1-8 ref 243 iox_$write_record 000034 constant entry external dcl 1-8 ref 249 lcb based structure level 1 dcl 2-53 lcb_ptr 002112 automatic pointer dcl 2-121 set ref 66* 70 71 84* 85* 97* 108 122* 123 124 138 140 187* 191 254 254 255 255 lcb_ptr_parm parameter pointer dcl 50 ref 58 66 79 84 89 97 114 122 length builtin function dcl 283 ref 248 lila_chars 3 based fixed bin(35,0) level 2 dcl 2-53 set ref 254* 254 lila_count 2 based fixed bin(35,0) level 2 dcl 2-53 set ref 140 255* 255 lila_file_iocb_ptr 002102 automatic pointer dcl 284 set ref 71* 124* 140 146* 155* 191* 243* 249* linus_error_$no_current_query 000016 external static fixed bin(35,0) dcl 285 ref 142 linus_lila$initialize_lila_file 000020 constant entry external dcl 286 ref 85 187 liocb_ptr 16 based pointer level 2 dcl 2-53 ref 71 124 191 null builtin function dcl 288 ref 67 102 140 ptq_code_parm parameter fixed bin(35,0) dcl 177 set ref 175 185* 206* 207 ptq_current_position 002134 automatic fixed bin(21,0) dcl 178 set ref 197* 201 206 209* 209 210 ptq_loop 002135 automatic fixed bin(17,0) dcl 179 set ref 200* 206* ptq_newline_index 002136 automatic fixed bin(21,0) dcl 180 set ref 201* 203 206 206 209 ptq_query_line based char packed unaligned dcl 181 set ref 206* ptq_query_segment based char(1) array packed unaligned dcl 182 set ref 206 ptq_still_writing_lines 002137 automatic bit(1) dcl 183 set ref 198* 200 210* query_key_parm parameter fixed bin(17,0) dcl 51 set ref 114 126* query_line_parm parameter char packed unaligned dcl 52 set ref 114 126* query_segment based char packed unaligned dcl 290 set ref 163* 192 195* 201 query_segment_length 002106 automatic fixed bin(21,0) dcl 292 set ref 75 99* 139* 169* 188 192 194* 194 195 210 query_segment_length_parm parameter fixed bin(21,0) dcl 54 set ref 58 68* 75* 89 99 query_segment_ptr 002104 automatic pointer dcl 291 set ref 74 98* 102 138* 163 192 195 201 206 query_segment_ptr_parm parameter pointer dcl 53 set ref 58 67* 74* 89 98 query_temp_segment_ptr 114 based pointer level 2 dcl 2-53 ref 138 rtrim builtin function dcl 295 ref 239 241 248 sci_ptr 002110 automatic pointer dcl 297 set ref 70* 108* 123* 147* 160* 203* ssu_$abort_line 000022 constant entry external dcl 298 ref 147 160 203 substr builtin function dcl 299 set ref 163* 163 192 195* 201 subsystem_control_info_ptr 102 based pointer level 2 dcl 2-53 ref 70 108 123 sys_info$max_seg_size 000024 external static fixed bin(35,0) dcl 300 ref 163 192 195 201 wtql_code_parm parameter fixed bin(35,0) dcl 225 set ref 218 234* 243* 245 249* 251 wtql_newline_index 002146 automatic fixed bin(17,0) dcl 226 set ref 238* 239 wtql_pictured_record_key 002147 automatic picture(4) packed unaligned dcl 227 set ref 235* 236 wtql_query_key_parm parameter fixed bin(17,0) dcl 228 ref 218 235 wtql_query_line_parm parameter char packed unaligned dcl 229 ref 218 238 239 241 wtql_query_record 002150 automatic char(4096) packed unaligned dcl 230 set ref 239* 241* 248 249 249 wtql_record_key 004150 automatic varying char(256) dcl 231 set ref 236* 243* wtql_record_length 004251 automatic fixed bin(21,0) dcl 232 set ref 243* 248* 249* 254 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. fixed builtin function dcl 277 iox_$attach_loud 000000 constant entry external dcl 1-8 iox_$attach_name 000000 constant entry external dcl 1-8 iox_$attach_ptr 000000 constant entry external dcl 1-8 iox_$close 000000 constant entry external dcl 1-8 iox_$close_file 000000 constant entry external dcl 1-8 iox_$control 000000 constant entry external dcl 1-8 iox_$delete_record 000000 constant entry external dcl 1-8 iox_$destroy_iocb 000000 constant entry external dcl 1-8 iox_$detach 000000 constant entry external dcl 1-8 iox_$detach_iocb 000000 constant entry external dcl 1-8 iox_$err_no_operation 000000 constant entry external dcl 1-8 iox_$err_not_attached 000000 constant entry external dcl 1-8 iox_$err_not_closed 000000 constant entry external dcl 1-8 iox_$err_not_open 000000 constant entry external dcl 1-8 iox_$error_output external static pointer dcl 1-41 iox_$find_iocb 000000 constant entry external dcl 1-8 iox_$find_iocb_n 000000 constant entry external dcl 1-8 iox_$get_chars 000000 constant entry external dcl 1-8 iox_$get_line 000000 constant entry external dcl 1-8 iox_$look_iocb 000000 constant entry external dcl 1-8 iox_$modes 000000 constant entry external dcl 1-8 iox_$move_attach 000000 constant entry external dcl 1-8 iox_$open 000000 constant entry external dcl 1-8 iox_$open_file 000000 constant entry external dcl 1-8 iox_$propagate 000000 constant entry external dcl 1-8 iox_$put_chars 000000 constant entry external dcl 1-8 iox_$read_key 000000 constant entry external dcl 1-8 iox_$read_length 000000 constant entry external dcl 1-8 iox_$rewrite_record 000000 constant entry external dcl 1-8 iox_$user_input external static pointer dcl 1-41 iox_$user_io external static pointer dcl 1-41 iox_$user_output external static pointer dcl 1-41 rel builtin function dcl 294 NAMES DECLARED BY EXPLICIT CONTEXT. get 000101 constant entry external dcl 58 get_the_query 000276 constant entry internal dcl 130 ref 73 initialize_query_file 000141 constant entry external dcl 79 linus_query_mgr 000066 constant entry external dcl 43 put 000164 constant entry external dcl 89 put_the_query 000475 constant entry internal dcl 175 ref 110 write_line 000231 constant entry external dcl 114 write_the_query_line 000657 constant entry internal dcl 218 ref 126 206 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1322 1360 1111 1332 Length 1602 1111 36 205 210 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_query_mgr 2346 external procedure is an external procedure. get_the_query internal procedure shares stack frame of external procedure linus_query_mgr. put_the_query internal procedure shares stack frame of external procedure linus_query_mgr. write_the_query_line internal procedure shares stack frame of external procedure linus_query_mgr. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME linus_query_mgr 000100 input_buffer linus_query_mgr 002100 input_buffer_ptr linus_query_mgr 002102 lila_file_iocb_ptr linus_query_mgr 002104 query_segment_ptr linus_query_mgr 002106 query_segment_length linus_query_mgr 002110 sci_ptr linus_query_mgr 002112 lcb_ptr linus_query_mgr 002122 gtq_code get_the_query 002123 gtq_current_position get_the_query 002124 gtq_record_length get_the_query 002125 gtq_still_reading_lines get_the_query 002134 ptq_current_position put_the_query 002135 ptq_loop put_the_query 002136 ptq_newline_index put_the_query 002137 ptq_still_writing_lines put_the_query 002146 wtql_newline_index write_the_query_line 002147 wtql_pictured_record_key write_the_query_line 002150 wtql_query_record write_the_query_line 004150 wtql_record_key write_the_query_line 004251 wtql_record_length write_the_query_line THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. iox_$position iox_$read_record iox_$seek_key iox_$write_record linus_lila$initialize_lila_file ssu_$abort_line THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$end_of_info error_table_$no_record error_table_$null_info_ptr linus_error_$no_current_query sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 43 000065 56 000073 58 000074 66 000106 67 000112 68 000114 69 000115 70 000116 71 000120 73 000122 74 000130 75 000133 77 000135 79 000136 84 000146 85 000152 87 000161 89 000162 97 000171 98 000175 99 000200 100 000202 102 000203 104 000207 105 000212 108 000213 110 000215 112 000223 114 000224 122 000244 123 000250 124 000252 126 000254 128 000275 130 000276 138 000300 139 000303 140 000304 142 000314 143 000317 146 000320 147 000340 150 000366 151 000370 152 000372 154 000374 155 000376 157 000415 160 000424 163 000450 165 000464 167 000470 169 000471 171 000474 175 000475 185 000477 187 000500 188 000507 191 000512 192 000515 194 000522 195 000523 197 000527 198 000531 200 000533 201 000543 203 000565 206 000612 207 000642 209 000646 210 000650 212 000654 214 000656 218 000657 234 000670 235 000672 236 000702 238 000706 239 000721 241 000763 243 001013 245 001031 248 001037 249 001052 251 001070 254 001074 255 001101 257 001105 ----------------------------------------------------------- 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