COMPILATION LISTING OF SEGMENT lister_print_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/05/84 1154.6 mst Mon 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 /* This program prints a Lister file using a format table */ 19 20 /* Modified 740605 by PG to be able to print found_list. 21* Modified 741110 by PG for center format item. 22* Modified 761105 by PG to rename from assist_print_ to lister_print_. 23* Modified 770923 by PG to always truncate field values on right. 24* Modified 781010 by PG to get :argN to work. 25* Modified 790329 by PG to get <:record_count,N> to work (bug 24). 26* Modified 791128 by PG to fix 039 (pls counted chars, not print positions). 27* Modified 800411 by PB to make <:arg> honor justification request. 28* Modified 800813 by PB to print <:uid>. 29* Modified 800923 by PB to fix bug where no args given in command line but 30* asked for in listform. 31* Modified 801008 by PB to requote strings for display_list. 32* Modified 810128 by PB to fix bug when requoting null field. 33* Modified 810226 by PB to report pathname with missing arg. 34**/ 35 36 /* format: style3 */ 37 lister_print_: 38 procedure (bv_in_file_ptr, bv_format_table_ptr, bv_output_ptr, bv_outx, bv_select_all, bv_selected_records_ptr, 39 bv_arg_list_ptr, bv_arg_position, bv_brief_errors, bv_display, bv_listform_path) options (packed_decimal); 40 41 /* parameters */ 42 43 declare ( 44 bv_arg_list_ptr ptr, 45 bv_arg_position fixed bin, 46 bv_brief_errors bit (1) aligned, 47 bv_display bit (1) aligned, 48 bv_format_table_ptr ptr, 49 bv_in_file_ptr ptr, 50 bv_listform_path char (*), 51 bv_output_ptr ptr, 52 bv_outx fixed bin (21), 53 bv_select_all bit (1) aligned, 54 bv_selected_records_ptr 55 ptr 56 ) parameter; 57 58 /* automatic */ 59 60 declare (i, left_padding, outx, right_padding) 61 fixed bin (21); 62 declare (n_records, start) fixed bin; 63 declare (output_ptr, selected_records_ptr) 64 ptr; 65 declare uid_chars char (6) varying; 66 67 /* entries */ 68 69 declare com_err_ entry options (variable); 70 declare convert_binary_integer_$decimal_string 71 entry (fixed) returns (char (13) varying); 72 declare cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr); 73 declare date_time_ entry (fixed bin (71), char (*) aligned); 74 declare requote_string_ entry (char (*)) returns (char (*)); 75 76 /* based */ 77 78 dcl outstring char (1044480) based (output_ptr); 79 dcl q_outstring char (outx - 1) based (output_ptr); 80 81 /* builtins */ 82 83 dcl (bin, char, clock, copy, divide, hbound, index, lbound, length, ltrim, max, min, null, substr, rel) 84 builtin; 85 86 /* include files */ 87 1 1 /* ====== BEGIN INCLUDE FILE lister_structures.incl.pl1 ================================ */ 1 2 1 3 /* 1 4* Modified 800813 by PB to add PUT_UID to listform declarations. 1 5* Modified 800825 by PB for version 2 lister file. 1 6* Modified 840523 by PB to add SELECT_BEG and SELECT_END. 1 7**/ 1 8 /* MASTER DECLARATIONS */ 1 9 1 10 /* format: style3 */ 1 11 dcl lister_file_version_2 1 12 fixed bin initial (2) internal static options (constant); 1 13 1 14 dcl 1 input_file based (in_file_ptr) aligned, 1 15 2 ( 1 16 field_table_offset, 1 17 record_head, 1 18 record_tail, 1 19 unused (2) 1 20 ) offset (input_file.area), 1 21 2 next_uid fixed bin (24) unsigned, 1 22 2 version fixed bin, 1 23 2 n_records fixed bin (17), 1 24 2 area area (261112); 1 25 1 26 dcl 1 update_file based (up_file_ptr) aligned, 1 27 2 ( 1 28 field_table_offset, 1 29 record_head, 1 30 record_tail, 1 31 unused (2) 1 32 ) offset (update_file.area), 1 33 2 next_uid fixed bin (24) unsigned, 1 34 2 version fixed bin, 1 35 2 n_records fixed bin (17), 1 36 2 area area (261112); 1 37 1 38 dcl 1 output_file based (out_file_ptr) aligned, 1 39 2 ( 1 40 field_table_offset, 1 41 record_head, 1 42 record_tail, 1 43 unused (2) 1 44 ) offset (output_file.area), 1 45 2 next_uid fixed bin (24) unsigned, 1 46 2 version fixed bin, 1 47 2 n_records fixed bin (17), 1 48 2 area area (261112); 1 49 1 50 dcl 1 input_record based (recordp) aligned, 1 51 2 next offset (input_file.area), 1 52 2 uid fixed bin (24) unsigned unaligned, 1 53 2 max_field_index fixed bin (12) unsigned unaligned, 1 54 2 field dim (0:field_table.max_field_index refer (input_record.max_field_index)) 1 55 offset (input_file.area); 1 56 1 57 dcl 1 update_record based aligned, 1 58 2 next offset (update_file.area), 1 59 2 uid fixed bin (24) unsigned unaligned, 1 60 2 max_field_index fixed bin (12) unsigned unaligned, 1 61 2 field dim (0:field_table.max_field_index refer (update_record.max_field_index)) 1 62 offset (update_file.area); 1 63 1 64 dcl 1 output_record based aligned, 1 65 2 next offset (output_file.area), 1 66 2 uid fixed bin (24) unsigned unaligned, 1 67 2 max_field_index fixed bin (12) unsigned unaligned, 1 68 2 field dim (0:field_table.max_field_index refer (output_record.max_field_index)) 1 69 offset (output_file.area); 1 70 1 71 dcl atom char (atom_length) based (atomp) varying aligned, 1 72 atom_length fixed bin initial (0), /* for table option */ 1 73 atomp ptr; 1 74 1 75 dcl (fidp, field_table_ptr, format_table_ptr, in_file_ptr, ltp, recordp, select_ptr, out_file_ptr, up_file_ptr) 1 76 ptr, 1 77 n fixed bin; 1 78 1 79 dcl 1 field_table based (field_table_ptr) aligned, 1 80 2 record_delimiter 1 81 unal char (1), 1 82 2 field_delimiter unal char (1), 1 83 2 max_field_index unal fixed bin (17), 1 84 2 hash_field_id_to_index 1 85 dimension (0:18) offset, 1 86 2 index_to_field_id 1 87 dimension (0:n refer (field_table.max_field_index)) offset; 1 88 1 89 dcl 1 field_identifier based (fidp) aligned, 1 90 2 next offset, 1 91 2 field_index unal fixed bin (17), 1 92 2 size unal fixed bin (17), 1 93 2 string unal char (n refer (field_identifier.size)); 1 94 1 95 dcl system_area area (261120) based (area_ptr); 1 96 dcl area_ptr ptr; 1 97 1 98 /* LISTFORM DECLARATIONS */ 1 99 1 100 declare ( 1 101 PUT_LITERAL initial (-1), 1 102 PUT_SPACES initial (-2), 1 103 PUT_END initial (-3), 1 104 PUT_DATE initial (-4), 1 105 PUT_TIME initial (-5), 1 106 PUT_RECORD_COUNT initial (-6), 1 107 PUT_ARGUMENT initial (-7), 1 108 PUT_UID initial (-8) 1 109 ) fixed bin internal static; 1 110 1 111 dcl 1 format_table aligned based (format_table_ptr), 1 112 2 size fixed bin (17) unal, 1 113 2 before fixed bin (17) unal, 1 114 2 after fixed bin (17) unal, 1 115 2 record fixed bin (17) unal, 1 116 2 literal_table ptr, 1 117 2 item dim (n refer (format_table.size)), 1 118 3 action fixed bin (17) unal, 1 119 3 justification bit (2) unal, 1 120 3 argument_number 1 121 fixed bin (15) unal, 1 122 3 width fixed bin (21); 1 123 1 124 dcl 1 literal_table aligned based (ltp), 1 125 2 size fixed bin, /* number of slots allocated */ 1 126 2 n_literals fixed bin, /* number of slots in use */ 1 127 2 literal dim (n refer (literal_table.size)) ptr unal; 1 128 1 129 dcl ( 1 130 flush_left initial ("00"b), 1 131 center initial ("01"b), 1 132 flush_right initial ("10"b) 1 133 ) bit (2) aligned internal static options (constant); 1 134 1 135 dcl MIN_FIELD_INDEX fixed bin initial (0) internal static options (constant); 1 136 1 137 dcl 1 list_node aligned based, 1 138 2 size fixed bin, 1 139 2 list dimension (n refer (list_node.size)) ptr; 1 140 1 141 /* SELECT DECLARATIONS */ 1 142 1 143 dcl 1 select_expression based (select_ptr) aligned, 1 144 2 literal_table_ptr 1 145 ptr, 1 146 2 size fixed bin, 1 147 2 last_element fixed bin, 1 148 2 element dim (n refer (select_expression.size)), 1 149 3 opcode unal bit (9), 1 150 3 not unal bit (1), 1 151 3 top unal bit (1), 1 152 3 unused unal bit (7), 1 153 3 field_index unal fixed bin (8), 1 154 3 literal_index unal fixed bin (8), 1 155 1 element aligned, 1 156 2 opcode fixed bin, 1 157 2 not bit (1) aligned, 1 158 2 top bit (1) aligned, 1 159 2 field_index fixed bin, 1 160 2 literal_index fixed bin, 1 161 operand1 fixed bin defined (element.field_index), 1 162 operand2 fixed bin defined (element.literal_index); 1 163 1 164 dcl ( 1 165 SELECT_AND init ("000000001"b), 1 166 SELECT_OR init ("000000010"b), 1 167 SELECT_NOT init ("000000011"b), 1 168 SELECT_FIND init ("000000100"b), 1 169 SELECT_EQ init ("000000101"b), 1 170 SELECT_LT init ("000000110"b), 1 171 SELECT_GT init ("000000111"b), 1 172 SELECT_LE init ("000001000"b), 1 173 SELECT_GE init ("000001001"b), 1 174 SELECT_NEQ init ("000001010"b), 1 175 SELECT_NLT init ("000001011"b), 1 176 SELECT_NGT init ("000001100"b), 1 177 SELECT_NLE init ("000001101"b), 1 178 SELECT_NGE init ("000001110"b), 1 179 SELECT_BEG init ("000001111"b), 1 180 SELECT_END init ("000010000"b) 1 181 ) bit (9) aligned internal static; 1 182 1 183 dcl ( 1 184 ANY_FIELD init (-1), 1 185 NULL_FIELD init (-2), 1 186 NUMERIC_FIELD init (-3), 1 187 UID init (-4) 1 188 ) aligned fixed bin (8) static; 1 189 1 190 dcl 1 numeric_atom aligned based (atomp), 1 191 2 flag fixed bin (35), /* must be -1 */ 1 192 2 value float dec (29) unal; 1 193 1 194 dcl numeric_flag fixed bin (35) internal static initial (-1) options (constant); 1 195 1 196 /* SORT DECLARATIONS */ 1 197 1 198 declare n_items_to_sort fixed bin, 1 199 sort_list_ptr ptr; 1 200 1 201 declare 1 sort_list aligned based (sort_list_ptr), 1 202 2 n_keys fixed bin, 1 203 2 key (n_items_to_sort refer (sort_list.n_keys)), 1 204 3 field_index fixed bin, 1 205 3 ascending bit (1) aligned, 1 206 3 numeric bit (1) aligned; 1 207 1 208 /* MERGE DECLARATIONS */ 1 209 1 210 dcl ( 1 211 MERGE_ADD init (0), 1 212 MERGE_AND init (1), 1 213 MERGE_OR init (2), 1 214 MERGE_SUBTRACT init (3) 1 215 ) fixed bin internal static options (constant); 1 216 1 217 /* ------ END INCLUDE FILE lister_structures.incl.pl1 -------------------------------- */ 88 89 90 /* program */ 91 92 in_file_ptr = bv_in_file_ptr; 93 format_table_ptr = bv_format_table_ptr; 94 output_ptr = bv_output_ptr; 95 outx = bv_outx; 96 selected_records_ptr = bv_selected_records_ptr; 97 98 ltp = format_table.literal_table; 99 n_records = 0; 100 101 start = format_table.before; 102 call interpret_format; 103 104 start = format_table.record; 105 106 if bv_select_all /* Select all records */ 107 then do; 108 do recordp = input_file.record_head repeat input_record.next while (recordp ^= null); 109 n_records = n_records + 1; 110 call interpret_format; 111 end; 112 end; 113 else if selected_records_ptr ^= null /* Otherwise, if there are any records to print */ 114 then do; 115 do i = lbound (selected_records_ptr -> list_node.list (*), 1) 116 to hbound (selected_records_ptr -> list_node.list (*), 1); 117 recordp = selected_records_ptr -> list_node.list (i); 118 n_records = n_records + 1; 119 call interpret_format; 120 end; 121 end; 122 else ; /* Else, nothing to print */ 123 124 start = format_table.after; 125 call interpret_format; 126 bv_outx = outx; 127 return; 128 129 interpret_format: 130 procedure (); 131 132 /* automatic */ 133 134 dcl (columns, delta, first, i, j, jump_index, l, w) 135 fixed bin (21); 136 dcl code fixed bin (35); 137 dcl justify bit (2) aligned; 138 dcl temp char (13) varying aligned; 139 dcl date_time char (24) aligned; 140 dcl arg_number fixed bin, 141 arg_len fixed bin (21), 142 arg_ptr ptr, 143 contains_BS bit (1) aligned; 144 145 /* based */ 146 147 dcl arg_string char (arg_len) based (arg_ptr); 148 149 /* internal static */ 150 151 declare BS char (1) internal static init (""); 152 153 /* program */ 154 155 if start = 0 156 then return; 157 158 do i = start by 1; 159 160 j = item (i).action; 161 w = item (i).width; 162 justify = item (i).justification; 163 164 if j < 0 165 then jump_index = -j; 166 else jump_index = 0; 167 168 go to jump (jump_index); 169 170 jump (0): /* print field */ 171 atomp = input_record.field (j); 172 173 contains_BS = "0"b; 174 175 if atomp = null /* if no field */ 176 then l = 0; /* set atom length to zero */ 177 else if index (atom, BS) ^= 0 178 then do; 179 l = print_positions (atom); 180 contains_BS = "1"b; 181 end; 182 else l = length (atom); 183 184 if bv_display /* called by display_list af. */ 185 then do; 186 if atomp = null 187 then call add_requoted (requote_string_ ("")); 188 else call add_requoted (requote_string_ ((atom))); 189 goto next; 190 end; 191 192 if w = 0 /* if no field width specified */ 193 then w = l; /* use default length */ 194 195 delta = w - l; /* >0 --> #spaces, <0 --> #truncate */ 196 197 if delta > 0 /* if field fits in window */ 198 then do; 199 columns = l; /* print whole field */ 200 right_padding = delta; /* and fill rest of window */ 201 end; 202 else do; 203 columns = w; /* print as much of field as will fit in window */ 204 right_padding = 0; /* no fill */ 205 end; 206 207 left_padding = 0; /* default value for flush_left */ 208 209 if justify = flush_right 210 then do; 211 if delta > 0 /* need fill */ 212 then left_padding = delta; 213 214 right_padding = 0; /* don't need any right padding */ 215 end; 216 else if justify = center 217 then do; 218 if delta > 0 /* if field fits in window */ 219 then do; 220 left_padding = divide (delta, 2, 21, 0); 221 right_padding = w - columns - left_padding; 222 end; 223 else ; /* field doesn't fit; padding values are ok */ 224 end; 225 226 /* At this point everything has been arranged to that the following equality holds: 227* w = left_padding + columns + right_padding 228**/ 229 230 if left_padding > 0 /* need padding? */ 231 then do; 232 substr (outstring, outx, left_padding) = ""; 233 outx = outx + left_padding; 234 end; 235 236 if columns > 0 /* if atom exists */ 237 then do; 238 if contains_BS 239 then columns = measure (atom, columns); 240 241 substr (outstring, outx, columns) = substr (atom, 1, columns); 242 outx = outx + columns; 243 end; 244 245 if right_padding > 0 /* finish up flush_left or center item. */ 246 then do; 247 substr (outstring, outx, right_padding) = ""; 248 outx = outx + right_padding; 249 end; 250 251 go to next; 252 253 jump (1): /* print literal */ 254 atomp = literal (w); 255 atom_length = length (atom); 256 substr (outstring, outx, atom_length) = atom; 257 outx = outx + atom_length; 258 go to next; 259 260 jump (2): /* print spaces */ 261 substr (outstring, outx, w) = ""; 262 outx = outx + w; 263 go to next; 264 265 jump (4): /* print date */ 266 if w = 0 267 then w = 8; 268 else w = max (min (w, 24), 0); 269 call date_time_ (clock (), date_time); 270 substr (outstring, outx, w) = date_time; 271 outx = outx + w; 272 go to next; 273 274 jump (5): /* print time */ 275 if w = 0 276 then w = 6; 277 else w = max (min (w, 14), 0); 278 call date_time_ (clock (), date_time); 279 substr (outstring, outx, w) = substr (date_time, 11, w); 280 outx = outx + w; 281 go to next; 282 283 jump (6): /* print number of records printed (output_count) */ 284 temp = convert_binary_integer_$decimal_string (n_records); 285 286 if w = 0 287 then w = length (temp); /* if user didn't specify, use default */ 288 289 if justify = flush_right & length (temp) < w 290 then substr (outstring, outx, w) = copy (" ", w - length (temp))||temp; 291 else if justify = center & length (temp) < w 292 then do; 293 left_padding = divide (w - length (temp), 2, 17, 0); 294 right_padding = w - left_padding; 295 substr (outstring, outx, w) = copy (" ", left_padding)||temp||copy (" ", right_padding); 296 end; 297 else substr (outstring, outx, w) = temp; 298 outx = outx + w; 299 go to next; 300 301 jump (7): /* print argument N */ 302 if bv_arg_position = 0 303 then do; 304 if ^bv_brief_errors 305 then call com_err_ (0, "process_list", 306 "Argument ^d specified in listform segment but not present in command line. ^a", 307 item (i).argument_number, bv_listform_path); 308 goto jump (2); /* use null string. */ 309 end; 310 311 arg_number = item (i).argument_number; 312 call cu_$arg_ptr_rel (bv_arg_position + arg_number, arg_ptr, arg_len, code, bv_arg_list_ptr); 313 if code ^= 0 314 then do; 315 if ^bv_brief_errors 316 then call com_err_ (0, "process_list", 317 "Argument ^d specified in listform segment but not present after -ag. ^a", 318 arg_number, bv_listform_path); 319 320 go to jump (2); /* use null string */ 321 end; 322 323 if w = 0 324 then w = arg_len; /* set default length */ 325 326 if justify = flush_right & arg_len < w 327 then substr (outstring, outx, w) = copy (" ", w - arg_len)||arg_string; 328 else if justify = center & arg_len < w 329 then do; 330 left_padding = divide (w - arg_len, 2, 17, 0); 331 right_padding = w - left_padding; 332 substr (outstring, outx, w) = copy (" ", left_padding)||arg_string||copy (" ", right_padding); 333 end; 334 else substr (outstring, outx, w) = arg_string; 335 outx = outx + w; 336 go to next; 337 338 jump (8): 339 uid_chars = ltrim (char (input_record.uid)); /* print uid */ 340 341 if bv_display /* called by display_list af. */ 342 then do; 343 substr (outstring, outx, length (uid_chars) + 2) = """" || uid_chars || """"; 344 outx = outx + length (uid_chars) + 2; 345 goto next; 346 end; 347 348 if w = 0 349 then w = length (uid_chars); /* set default length */ 350 351 if justify = flush_right & length (uid_chars) < w 352 then substr (outstring, outx, w) = copy (" ", w - length (uid_chars))||uid_chars; 353 else if justify = center & length (uid_chars) < w 354 then do; 355 left_padding = divide (w - length (uid_chars), 2, 17, 0); 356 right_padding = w - left_padding; 357 substr (outstring, outx, w) = copy (" ", left_padding)||uid_chars||copy (" ", right_padding); 358 end; 359 else substr (outstring, outx, w) = uid_chars; 360 outx = outx + w; 361 go to next; 362 363 next: 364 end; 365 366 jump (3): /* end of format list */ 367 return; 368 369 add_requoted: procedure (q_string); 370 371 dcl q_string char (*) parameter; 372 373 outx = outx + length (q_string); 374 substr (q_outstring, outx - length (q_string)) = q_string; 375 end add_requoted; 376 377 print_positions: 378 procedure (P_atom) returns (fixed bin (21)); 379 380 /* parameters */ 381 382 declare P_atom char (*) varying aligned; 383 384 /* automatic */ 385 386 declare ascii_value fixed bin (9), 387 n_chars fixed bin (21), 388 n_cols fixed bin (21), 389 strx fixed bin (21); 390 391 /* builtins */ 392 393 declare (length, rank, substr) 394 builtin; 395 396 /* internal static */ 397 398 declare BS fixed bin (9) internal static init (8); 399 400 /* program */ 401 402 n_cols = 0; 403 404 do strx = 1 to length (P_atom); 405 ascii_value = rank (substr (P_atom, strx, 1)); 406 407 if ascii_value = BS 408 then n_cols = n_cols - 1; 409 else n_cols = n_cols + 1; 410 end; 411 412 return (n_cols); 413 414 measure: 415 entry (P_atom, P_width) returns (fixed bin (21)); 416 417 /* parameters */ 418 419 declare P_width fixed bin (21) parameter; 420 421 /* program */ 422 423 n_cols = 0; 424 n_chars = 0; 425 426 do strx = 1 to length (P_atom); 427 ascii_value = rank (substr (P_atom, strx, 1)); 428 429 if ascii_value = BS 430 then do; 431 n_chars = n_chars + 1; 432 n_cols = n_cols - 1; 433 end; 434 else do; 435 if n_cols = P_width 436 then return (n_chars); /* no room to add one more char */ 437 438 n_chars = n_chars + 1; 439 n_cols = n_cols + 1; 440 end; 441 end; 442 443 return (n_chars); /* they all fit */ 444 445 end print_positions; 446 447 end interpret_format; 448 449 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/05/84 1151.5 lister_print_.pl1 >special_ldd>online>6883-11/02/84>lister_print_.pl1 88 1 11/02/84 1208.5 lister_structures.incl.pl1 >special_ldd>online>6883-11/02/84>lister_structures.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. BS constant fixed bin(9,0) initial dcl 398 in procedure "print_positions" ref 407 429 BS constant char(1) initial unaligned dcl 151 in procedure "interpret_format" ref 177 P_atom parameter varying char dcl 382 ref 377 404 405 414 426 427 P_width parameter fixed bin(21,0) dcl 419 ref 414 435 action 4 based fixed bin(17,0) array level 3 packed unaligned dcl 1-111 ref 160 after 1 based fixed bin(17,0) level 2 packed unaligned dcl 1-111 ref 124 area 10 based area(261112) level 2 dcl 1-14 ref 108 111 170 arg_len 000165 automatic fixed bin(21,0) dcl 140 set ref 312* 323 326 326 326 328 330 332 334 arg_number 000164 automatic fixed bin(17,0) dcl 140 set ref 311* 312 315* arg_ptr 000166 automatic pointer dcl 140 set ref 312* 326 332 334 arg_string based char unaligned dcl 147 ref 326 332 334 argument_number 4(20) based fixed bin(15,0) array level 3 packed unaligned dcl 1-111 set ref 304* 311 ascii_value 000200 automatic fixed bin(9,0) dcl 386 set ref 405* 407 427* 429 atom based varying char dcl 1-71 set ref 177 179* 182 188 238* 241 255 256 atom_length 000115 automatic fixed bin(17,0) initial dcl 1-71 set ref 1-71* 179 238 255* 256 257 atomp 000116 automatic pointer dcl 1-71 set ref 170* 175 177 179 182 186 188 238 241 253* 255 256 before 0(18) based fixed bin(17,0) level 2 packed unaligned dcl 1-111 ref 101 bv_arg_list_ptr parameter pointer dcl 43 set ref 37 312* bv_arg_position parameter fixed bin(17,0) dcl 43 ref 37 301 312 bv_brief_errors parameter bit(1) dcl 43 ref 37 304 315 bv_display parameter bit(1) dcl 43 ref 37 184 341 bv_format_table_ptr parameter pointer dcl 43 ref 37 93 bv_in_file_ptr parameter pointer dcl 43 ref 37 92 bv_listform_path parameter char unaligned dcl 43 set ref 37 304* 315* bv_output_ptr parameter pointer dcl 43 ref 37 94 bv_outx parameter fixed bin(21,0) dcl 43 set ref 37 95 126* bv_select_all parameter bit(1) dcl 43 ref 37 106 bv_selected_records_ptr parameter pointer dcl 43 ref 37 96 center constant bit(2) initial dcl 1-129 ref 216 291 328 353 char builtin function dcl 83 ref 338 clock builtin function dcl 83 ref 269 269 278 278 code 000147 automatic fixed bin(35,0) dcl 136 set ref 312* 313 columns 000140 automatic fixed bin(21,0) dcl 134 set ref 199* 203* 221 236 238* 238* 241 241 242 com_err_ 000010 constant entry external dcl 69 ref 304 315 contains_BS 000170 automatic bit(1) dcl 140 set ref 173* 180* 238 convert_binary_integer_$decimal_string 000012 constant entry external dcl 70 ref 283 copy builtin function dcl 83 ref 289 295 295 326 332 332 351 357 357 cu_$arg_ptr_rel 000014 constant entry external dcl 72 ref 312 date_time 000156 automatic char(24) dcl 139 set ref 269* 270 278* 279 date_time_ 000016 constant entry external dcl 73 ref 269 278 delta 000141 automatic fixed bin(21,0) dcl 134 set ref 195* 197 200 211 211 218 220 divide builtin function dcl 83 ref 220 293 330 355 field 2 based offset array level 2 dcl 1-50 ref 170 flush_right constant bit(2) initial dcl 1-129 ref 209 289 326 351 format_table based structure level 1 dcl 1-111 format_table_ptr 000120 automatic pointer dcl 1-75 set ref 93* 98 101 104 124 160 161 162 304 311 hbound builtin function dcl 83 ref 115 i 000100 automatic fixed bin(21,0) dcl 60 in procedure "lister_print_" set ref 115* 117* i 000142 automatic fixed bin(21,0) dcl 134 in procedure "interpret_format" set ref 158* 160 161 162 304 311* in_file_ptr 000122 automatic pointer dcl 1-75 set ref 92* 108 108 111 170 index builtin function dcl 83 ref 177 input_file based structure level 1 dcl 1-14 input_record based structure level 1 dcl 1-50 item 4 based structure array level 2 dcl 1-111 j 000143 automatic fixed bin(21,0) dcl 134 set ref 160* 164 164 170 jump_index 000144 automatic fixed bin(21,0) dcl 134 set ref 164* 166* 168 justification 4(18) based bit(2) array level 3 packed unaligned dcl 1-111 ref 162 justify 000150 automatic bit(2) dcl 137 set ref 162* 209 216 289 291 326 328 351 353 l 000145 automatic fixed bin(21,0) dcl 134 set ref 175* 179* 182* 192 195 199 lbound builtin function dcl 83 ref 115 left_padding 000101 automatic fixed bin(21,0) dcl 60 set ref 207* 211* 220* 221 230 232 233 293* 294 295 330* 331 332 355* 356 357 length builtin function dcl 393 in procedure "print_positions" ref 404 426 length builtin function dcl 83 in procedure "lister_print_" ref 182 255 286 289 289 291 293 343 344 348 351 351 353 355 373 374 list 2 based pointer array level 2 dcl 1-137 ref 115 115 117 list_node based structure level 1 dcl 1-137 literal 2 based pointer array level 2 packed unaligned dcl 1-124 ref 253 literal_table based structure level 1 dcl 1-124 in procedure "lister_print_" literal_table 2 based pointer level 2 in structure "format_table" dcl 1-111 in procedure "lister_print_" ref 98 ltp 000124 automatic pointer dcl 1-75 set ref 98* 253 ltrim builtin function dcl 83 ref 338 max builtin function dcl 83 ref 268 277 min builtin function dcl 83 ref 268 277 n_chars 000201 automatic fixed bin(21,0) dcl 386 set ref 424* 431* 431 435 438* 438 443 n_cols 000202 automatic fixed bin(21,0) dcl 386 set ref 402* 407* 407 409* 409 412 423* 432* 432 435 439* 439 n_records 000104 automatic fixed bin(17,0) dcl 62 set ref 99* 109* 109 118* 118 283* next based offset level 2 dcl 1-50 ref 111 null builtin function dcl 83 ref 108 113 175 186 output_ptr 000106 automatic pointer dcl 63 set ref 94* 232 241 247 256 260 270 279 289 295 297 326 332 334 343 351 357 359 374 outstring based char(1044480) unaligned dcl 78 set ref 232* 241* 247* 256* 260* 270* 279* 289* 295* 297* 326* 332* 334* 343* 351* 357* 359* outx 000102 automatic fixed bin(21,0) dcl 60 set ref 95* 126 232 233* 233 241 242* 242 247 248* 248 256 257* 257 260 262* 262 270 271* 271 279 280* 280 289 295 297 298* 298 326 332 334 335* 335 343 344* 344 351 357 359 360* 360 373* 373 374 374 q_outstring based char unaligned dcl 79 set ref 374* q_string parameter char unaligned dcl 371 ref 369 373 374 374 rank builtin function dcl 393 ref 405 427 record 1(18) based fixed bin(17,0) level 2 packed unaligned dcl 1-111 ref 104 record_head 1 based offset level 2 dcl 1-14 ref 108 recordp 000126 automatic pointer dcl 1-75 set ref 108* 108* 111 117* 170 338 requote_string_ 000020 constant entry external dcl 74 ref 186 188 right_padding 000103 automatic fixed bin(21,0) dcl 60 set ref 200* 204* 214* 221* 245 247 248 294* 295 331* 332 356* 357 selected_records_ptr 000110 automatic pointer dcl 63 set ref 96* 113 115 115 117 size based fixed bin(17,0) level 2 dcl 1-137 ref 115 start 000105 automatic fixed bin(17,0) dcl 62 set ref 101* 104* 124* 155 158 strx 000203 automatic fixed bin(21,0) dcl 386 set ref 404* 405* 426* 427* substr builtin function dcl 83 in procedure "lister_print_" set ref 232* 241* 241 247* 256* 260* 270* 279* 279 289* 295* 297* 326* 332* 334* 343* 351* 357* 359* 374* substr builtin function dcl 393 in procedure "print_positions" ref 405 427 temp 000151 automatic varying char(13) dcl 138 set ref 283* 286 289 289 289 291 293 295 297 uid 1 based fixed bin(24,0) level 2 packed unsigned unaligned dcl 1-50 ref 338 uid_chars 000112 automatic varying char(6) dcl 65 set ref 338* 343 343 344 348 351 351 351 353 355 357 359 w 000146 automatic fixed bin(21,0) dcl 134 set ref 161* 192 192* 195 203 221 253 260 262 265 265* 268* 268 270 271 274 274* 277* 277 279 279 280 286 286* 289 289 289 291 293 294 295 297 298 323 323* 326 326 326 328 330 331 332 334 335 348 348* 351 351 351 353 355 356 357 359 360 width 5 based fixed bin(21,0) array level 3 dcl 1-111 ref 161 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ANY_FIELD internal static fixed bin(8,0) initial dcl 1-183 MERGE_ADD internal static fixed bin(17,0) initial dcl 1-210 MERGE_AND internal static fixed bin(17,0) initial dcl 1-210 MERGE_OR internal static fixed bin(17,0) initial dcl 1-210 MERGE_SUBTRACT internal static fixed bin(17,0) initial dcl 1-210 MIN_FIELD_INDEX internal static fixed bin(17,0) initial dcl 1-135 NULL_FIELD internal static fixed bin(8,0) initial dcl 1-183 NUMERIC_FIELD internal static fixed bin(8,0) initial dcl 1-183 PUT_ARGUMENT internal static fixed bin(17,0) initial dcl 1-100 PUT_DATE internal static fixed bin(17,0) initial dcl 1-100 PUT_END internal static fixed bin(17,0) initial dcl 1-100 PUT_LITERAL internal static fixed bin(17,0) initial dcl 1-100 PUT_RECORD_COUNT internal static fixed bin(17,0) initial dcl 1-100 PUT_SPACES internal static fixed bin(17,0) initial dcl 1-100 PUT_TIME internal static fixed bin(17,0) initial dcl 1-100 PUT_UID internal static fixed bin(17,0) initial dcl 1-100 SELECT_AND internal static bit(9) initial dcl 1-164 SELECT_BEG internal static bit(9) initial dcl 1-164 SELECT_END internal static bit(9) initial dcl 1-164 SELECT_EQ internal static bit(9) initial dcl 1-164 SELECT_FIND internal static bit(9) initial dcl 1-164 SELECT_GE internal static bit(9) initial dcl 1-164 SELECT_GT internal static bit(9) initial dcl 1-164 SELECT_LE internal static bit(9) initial dcl 1-164 SELECT_LT internal static bit(9) initial dcl 1-164 SELECT_NEQ internal static bit(9) initial dcl 1-164 SELECT_NGE internal static bit(9) initial dcl 1-164 SELECT_NGT internal static bit(9) initial dcl 1-164 SELECT_NLE internal static bit(9) initial dcl 1-164 SELECT_NLT internal static bit(9) initial dcl 1-164 SELECT_NOT internal static bit(9) initial dcl 1-164 SELECT_OR internal static bit(9) initial dcl 1-164 UID internal static fixed bin(8,0) initial dcl 1-183 area_ptr automatic pointer dcl 1-96 bin builtin function dcl 83 element automatic structure level 1 dcl 1-143 fidp automatic pointer dcl 1-75 field_identifier based structure level 1 dcl 1-89 field_table based structure level 1 dcl 1-79 field_table_ptr automatic pointer dcl 1-75 first automatic fixed bin(21,0) dcl 134 flush_left internal static bit(2) initial dcl 1-129 lister_file_version_2 internal static fixed bin(17,0) initial dcl 1-11 n automatic fixed bin(17,0) dcl 1-75 n_items_to_sort automatic fixed bin(17,0) dcl 1-198 numeric_atom based structure level 1 dcl 1-190 numeric_flag internal static fixed bin(35,0) initial dcl 1-194 operand1 defined fixed bin(17,0) dcl 1-143 operand2 defined fixed bin(17,0) dcl 1-143 out_file_ptr automatic pointer dcl 1-75 output_file based structure level 1 dcl 1-38 output_record based structure level 1 dcl 1-64 rel builtin function dcl 83 select_expression based structure level 1 dcl 1-143 select_ptr automatic pointer dcl 1-75 sort_list based structure level 1 dcl 1-201 sort_list_ptr automatic pointer dcl 1-198 system_area based area(261120) dcl 1-95 up_file_ptr automatic pointer dcl 1-75 update_file based structure level 1 dcl 1-26 update_record based structure level 1 dcl 1-57 NAMES DECLARED BY EXPLICIT CONTEXT. add_requoted 001703 constant entry internal dcl 369 ref 186 188 interpret_format 000250 constant entry internal dcl 129 ref 102 110 119 125 jump 000000 constant label array(0:8) dcl 170 ref 168 308 320 lister_print_ 000115 constant entry external dcl 37 measure 002012 constant entry internal dcl 414 ref 238 next 001677 constant label dcl 363 ref 189 251 258 263 272 281 299 336 345 361 print_positions 001744 constant entry internal dcl 377 ref 179 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2200 2222 2075 2210 Length 2430 2075 22 171 103 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME lister_print_ 219 external procedure is an external procedure. interpret_format internal procedure shares stack frame of external procedure lister_print_. add_requoted 67 internal procedure is called during a stack extension. print_positions internal procedure shares stack frame of external procedure lister_print_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME lister_print_ 000100 i lister_print_ 000101 left_padding lister_print_ 000102 outx lister_print_ 000103 right_padding lister_print_ 000104 n_records lister_print_ 000105 start lister_print_ 000106 output_ptr lister_print_ 000110 selected_records_ptr lister_print_ 000112 uid_chars lister_print_ 000115 atom_length lister_print_ 000116 atomp lister_print_ 000120 format_table_ptr lister_print_ 000122 in_file_ptr lister_print_ 000124 ltp lister_print_ 000126 recordp lister_print_ 000140 columns interpret_format 000141 delta interpret_format 000142 i interpret_format 000143 j interpret_format 000144 jump_index interpret_format 000145 l interpret_format 000146 w interpret_format 000147 code interpret_format 000150 justify interpret_format 000151 temp interpret_format 000156 date_time interpret_format 000164 arg_number interpret_format 000165 arg_len interpret_format 000166 arg_ptr interpret_format 000170 contains_BS interpret_format 000200 ascii_value print_positions 000201 n_chars print_positions 000202 n_cols print_positions 000203 strx print_positions THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out call_int_this_desc return shorten_stack ext_entry_desc int_entry_desc pointer_hard clock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ convert_binary_integer_$decimal_string cu_$arg_ptr_rel date_time_ requote_string_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 37 000105 1 71 000130 92 000131 93 000135 94 000140 95 000143 96 000145 98 000150 99 000152 101 000153 102 000157 104 000160 106 000165 108 000171 109 000202 110 000203 111 000204 112 000212 113 000213 115 000217 117 000227 118 000233 119 000234 120 000235 124 000237 125 000243 126 000244 127 000247 129 000250 155 000251 158 000254 160 000256 161 000265 162 000267 164 000273 166 000301 168 000302 170 000304 173 000313 175 000314 177 000321 179 000333 180 000352 181 000354 182 000355 184 000357 186 000363 188 000415 189 000454 192 000456 195 000462 197 000464 199 000465 200 000467 201 000471 203 000472 204 000474 207 000475 209 000476 211 000501 214 000504 215 000505 216 000506 218 000510 220 000512 221 000514 230 000520 232 000522 233 000527 236 000530 238 000532 241 000556 242 000565 245 000566 247 000570 248 000575 251 000576 253 000577 255 000603 256 000605 257 000616 258 000617 260 000620 262 000626 263 000627 265 000630 268 000635 269 000644 270 000663 271 000671 272 000672 274 000673 277 000700 278 000707 279 000726 280 000734 281 000735 283 000736 286 000747 289 000753 291 001013 293 001021 294 001024 295 001027 296 001075 297 001077 298 001105 299 001107 301 001110 304 001113 308 001164 311 001165 312 001171 313 001212 315 001214 320 001262 323 001263 326 001267 328 001330 330 001336 331 001341 332 001344 333 001413 334 001415 335 001427 336 001430 338 001431 341 001465 343 001471 344 001530 345 001535 348 001536 351 001542 353 001602 355 001610 356 001613 357 001616 358 001664 359 001666 360 001674 361 001676 363 001677 366 001701 369 001702 373 001716 374 001720 375 001743 377 001744 402 001760 404 001761 405 001771 407 001776 409 002004 410 002005 412 002007 414 002012 423 002026 424 002027 426 002030 427 002041 429 002046 431 002051 432 002052 433 002054 435 002055 438 002063 439 002064 441 002065 443 002067 ----------------------------------------------------------- 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