COMPILATION LISTING OF SEGMENT print Compiled by: Multics PL/I Compiler, Release 32a, of May 31, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 06/09/89 1256.1 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1985 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 /****^ HISTORY COMMENTS: 15* 1) change(68-04-28,Garman), approve(), audit(), install(): 16* Written by C. Garman. 17* 2) change(68-10-02,Garman), approve(), audit(), install(): 18* Modified to call write directly for entire segment or portion 19* thereof, give ending-line request. 20* 3) change(69-07-16,Weaver), approve(), audit(), install(): 21* Modified by M. Weaver to change smm$initiate and some write_out 22* calls. 23* 4) change(69-08-03,Voydock), approve(), audit(), install(): 24* Modified by V. Voydock. 25* 5) change(69-08-06,Weaver), approve(), audit(), install(): 26* Modified by M. Weaver (August 6 and August 8). 27* 6) change(69-08-11,Weaver), approve(), audit(), install(): 28* Modified by M. Weaver (add hcs_$status_minf) 29* 7) change(70-03-04,Karger), approve(), audit(), install(): 30* Modified by P. Karger (compiled under PL/I and prints date and time 31* in header) 32* 8) change(70-03-25,Karger), approve(), audit(), install(): 33* Modified by P. Karger to change calls to tio_ to ios_ 34* 9) change(70-06-19,Stone), approve(), audit(), install(): 35* Modified by E. Stone. 36* 10) change(76-10-27,VanVleck), approve(), audit(), install(): 37* Rewritten by THVV for new arguments, iox, etc. 38* 11) change(79-08-03,VanVleck), approve(), audit(), install(): 39* Modified by THVV for archive stuff. Much help by MND. 40* 12) change(82-09-13,GDixon), approve(), audit(), install(): 41* Modified by G. Dixon -- when indenting, properly indent lines preceded 42* by NP and VT chars. Accept -in as short name for -indent (-ind). Use 43* prt_conv_ when -indent I is specified, where mod(I,10) ^= 0. Fix bug 44* which prevents -line_length from being honored. 45* 13) change(82-11-22,Wallman), approve(), audit(), install(): 46* Modified by E. Wallman: Fixed bug that printed extra lines when -for 47* was used with -pn. Reformatted with format_pl1. 48* 14) change(82-11-24,Wallman), approve(), audit(), install(): 49* Modified by E. Wallman: Fixed bug that left the last page short when 50* -ppl and -no_vertsp were given. Renamed many variables for readability. 51* 15) change(82-11-26,Wallman), approve(), audit(), install(): 52* Modified by E. Wallman: Fixed remaining problems in error list thru #10. 53* 16) change(83-07-11,Texada), approve(), audit(), install(): 54* Modified by Greg Texada: added -output_switch, -osw control args. 55* 17) change(83-09-28,GDixon), approve(), audit(), install(): 56* Modified by Gary Dixon: simplify scheme for processing a line. 57* 18) change(83-12-01,Spitzer), approve(), audit(), install(): 58* Modified by C. Spitzer: fix error msg, use pathname_. 59* 19) change(84-03-08,Spitzer), approve(), audit(), install(): 60* Modified by C. Spitzer: use iox_$get_line to pause. 61* 20) change(84-07-10,Rochlis), approve(), audit(), install(): 62* Modified by Jon A. Rochlis: do a reset_more control order before 63* printing each file to make video users happy. 64* 21) change(84-08-21,Falksenj), approve(), audit(), install(): 65* Modified by J. A. Falksen: utilize date_time_$format ("date_time",... 66* 22) change(85-01-10,Lippard), approve(85-01-30,MCR7165), 67* audit(85-10-07,Blair), install(85-12-16,MR12.0-1001): 68* Modified by Jim Lippard: force vertsp mode when -vertsp is used, use 69* initiate_file_ and terminate_file_, fix bug where -left_col blows up 70* on first line of length greater than lc value. 71* 23) change(86-10-09,TLNguyen), approve(86-10-28,MCR7563), 72* audit(86-10-29,Gilcrease), install(86-11-20,MR12.0-1217): 73* Modified by Tai Nguyen: make the print command to display exactly 74* n lines for a specified segment when the "-for" control argument 75* was used. Fixed an array subscriptrange codition at the run time 76* when compiled with the following: 77* -table -prefix size, strz, strg, subrg 78* 24) change(86-11-17,TLNguyen), approve(86-10-28,MCR7563), 79* audit(86-11-17,Gilcrease), install(86-11-20,MR12.0-1217): 80* Fixed bug which occurs when the line starts with a New Page character 81* and the "-from" control argument is entered in the "print" command. 82* 25) change(86-11-26,TLNguyen), approve(86-11-26,MCR7563), 83* audit(86-12-01,Gilcrease), install(86-12-02,MR12.0-1230): 84* Fixed error which occurs when the two control arguments -for and -match 85* work together in the print command. 86* 26) change(87-01-02,TLNguyen), approve(87-01-02,MCR7597), 87* audit(87-01-09,Lippard), install(87-03-20,MR12.1-1006): 88* Make the print command display an appropriative error message and do a 89* reset_more control order between archive components for archive case. 90* 27) change(88-08-02,TLNguyen), approve(88-08-02,MCR7935), 91* audit(88-08-30,Parisek), install(88-09-02,MR12.2-1097): 92* make the print command with the -from_page P work as documented. 93* 28) change(89-04-28,Vu), approve(89-04-28,MCR8098), audit(89-05-08,Lee), 94* install(89-06-09,MR12.3-1057): 95* The print command will not enable the user's terminal mode to "vertsp". 96* Delete all references to iox_$modes and sws.reset_modes by vp 97* (phx20749 - Commands 514) and (phx20361 - Commands 762). 98* Reformatted print.pl1 99* END HISTORY COMMENTS */ 100 101 102 /* format: style2,ind3,ll80,dclind4,comcol51,linecom */ 103 104 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 105 /* */ 106 /* Name: print, pr */ 107 /* */ 108 /* print ASCII text file on user console. */ 109 /* */ 110 /* Note: There is a known bug in this program which is fixable only by an */ 111 /* unreasonable amount of effort. The -match, -exclude, -from and -to */ 112 /* control arguments will not find their target strings if it happens that */ 113 /* they are split across MSF components. Fixing this bug would require a lot */ 114 /* of hair, incluing a buffer somewhere big enough for the reassembly of the */ 115 /* split line. For now we ignore it. Anybody who wants to fix it is */ 116 /* welcome to. */ 117 /* */ 118 /* */ 119 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 120 121 122 print: 123 pr: 124 procedure; 125 126 dcl arg char (arg_len) unaligned based (arg_ptr); 127 dcl arg_len fixed bin (21); 128 dcl arg_list_ptr ptr; 129 dcl arg_ptr ptr; 130 dcl c fixed bin (35); 131 dcl error_code fixed bin (35); 132 dcl exclude_arg_count fixed bin; /* number of -exclude args */ 133 dcl forcount fixed bin; /* # of input lines to print */ 134 dcl from_line fixed bin; /* starting line */ 135 dcl from_page fixed bin; /* lowest page number to print */ 136 dcl from_regexpr char (from_regexpr_len + 2) 137 based (from_regexpr_ptr); 138 dcl from_regexpr_len fixed bin (21); /* length of above */ 139 dcl from_regexpr_ptr ptr; /* starting reg exp */ 140 dcl iarg fixed bin; /* arg number */ 141 dcl indentation fixed bin (21); /* indentation */ 142 dcl input_path_count fixed bin; /* number of pathnames (zero, one, or more) */ 143 dcl junk fixed bin; 144 dcl last_count fixed bin; 145 dcl left_col fixed bin; /* left side of print band */ 146 dcl match_arg_count fixed bin; /* number of -match args */ 147 dcl nargs fixed bin; /* arg count */ 148 dcl output_buffer_size fixed bin; /* size of print buffer */ 149 dcl out_switch ptr; /* write output on this */ 150 /* switch; its assumed */ 151 /* attached & open for */ 152 /* stream output. */ 153 dcl right_col fixed bin; /* right side of print band */ 154 dcl star_sel fixed bin (2); /* branches, or branches+links */ 155 dcl switch_name char (32); /* plain talk name of -osw */ 156 dcl to_line fixed bin; /* ending line */ 157 dcl to_page fixed bin; /* highest */ 158 dcl to_regexpr_len fixed bin (21); 159 dcl to_regexpr_ptr ptr; /* ending reg exp */ 160 161 dcl 1 sws, /* switch bits */ 162 2 check_lines bit (1), /* TRUE if -match or -ex */ 163 2 dont_want_archive bit (1), /* TRUE if print archive as big file */ 164 2 from_line_given bit (1), 165 2 from_page_given bit (1), 166 2 had_an_arg bit (1), /* TRUE if any arg */ 167 2 last_given bit (1), 168 2 no_heading bit (1), /* TRUE if dont want heading */ 169 2 no_vertsp bit (1), /* TRUE if simulating NP and VT */ 170 2 one_iox_call bit (1), /* TRUE if can do in one call to iox */ 171 2 paging bit (1), /* TRUE if paged output is wanted */ 172 2 pause_after_page bit (1), /* TRUE if pause after page */ 173 2 pause_before_print bit (1), /* TRUE if pause before printing */ 174 2 print_quick_way bit (1), /* TRUE if can do without prt_conv */ 175 2 print_trailing_nls bit (1), /* TRUE if print some NLs at end like old print */ 176 2 to_line_given bit (1), 177 2 to_page_given bit (1), 178 2 want_heading bit (1), /* TRUE if print heading */ 179 2 want_line_numbers bit (1); /* TRUE if print line numbers */ 180 181 dcl archive_$next_component_info 182 entry (ptr, fixed bin (24), ptr, ptr, 183 fixed bin (35)); 184 dcl check_star_name_$entry entry (char (*), fixed bin (35)); 185 dcl com_err_ entry options (variable); 186 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 187 dcl cu_$arg_list_ptr entry (ptr); 188 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), 189 fixed bin (35)); 190 dcl cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin (21), 191 fixed bin (35), ptr); 192 dcl cv_dec_check_ entry (char (*), fixed bin (35)) 193 returns (fixed bin); 194 dcl date_time_$format entry (char (*), fixed bin (71), char (*), 195 char (*)) returns (char (250) var); 196 dcl expand_pathname_$component 197 entry (char (*), char (*), char (*), char (*), 198 fixed bin (35)); 199 dcl get_system_free_area_ entry () returns (ptr); 200 dcl hcs_$star_ entry (char (*), char (*), fixed bin (2), ptr, 201 fixed bin, ptr, ptr, fixed bin (35)); 202 dcl hcs_$status_minf entry (char (*), char (*), fixed bin (1), 203 fixed bin (2), fixed bin (24), fixed bin (35)); 204 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, 205 fixed bin (24), fixed bin (35)); 206 dcl ioa_$ioa_switch entry options (variable); 207 dcl ioa_$ioa_switch_nnl entry options (variable); 208 dcl ioa_$rsnp entry options (variable); 209 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 210 dcl iox_$get_line entry (ptr, ptr, fixed bin (21), 211 fixed bin (21), fixed bin (35)); 212 dcl iox_$look_iocb entry (char (*), ptr, fixed bin (35)); 213 dcl iox_$put_chars entry (ptr, ptr, fixed bin (21), 214 fixed bin (35)); 215 dcl match_star_name_ entry (char (*), char (*), fixed bin (35)); 216 dcl msf_manager_$close entry (ptr); 217 dcl msf_manager_$get_ptr entry (ptr, fixed bin, bit (1), ptr, 218 fixed bin (24), fixed bin (35)); 219 dcl msf_manager_$open entry (char (*), char (*), ptr, fixed bin (35)) 220 ; 221 dcl pathname_ entry (char (*), char (*)) 222 returns (char (168)); 223 dcl pathname_$component entry (char (*), char (*), char (*)) 224 returns (char (194)); 225 dcl print_conv_$print_conv_ 226 entry; 227 dcl prt_conv_ entry (ptr, fixed bin (21), ptr, 228 fixed bin (21), ptr); 229 dcl search_file_ entry (ptr, fixed bin (21), fixed bin (21), 230 ptr, fixed bin (21), fixed bin (21), 231 fixed bin (21), fixed bin (21), fixed bin (35)) 232 ; 233 dcl search_file_$silent entry (ptr, fixed bin (21), fixed bin (21), 234 ptr, fixed bin (21), fixed bin (21), 235 fixed bin (21), fixed bin (21), fixed bin (35)) 236 ; 237 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), 238 fixed bin (35)); 239 240 dcl (addr, clock, codeptr, divide, index, length, max, min, mod, null, 241 reverse, rtrim, search, string, substr, sum, unspec) 242 builtin; 243 dcl cleanup condition; 244 245 dcl CR char (1) int static options (constant) 246 init (" "); 247 dcl NL char (1) int static options (constant) init (" 248 "); 249 dcl NLCRVTNP char (4) int static options (constant) init (" 250 "); 251 dcl NP char (1) int static options (constant) init (" "); 252 dcl NUL char (1) int static options (constant) 253 init (""); 254 dcl VT char (1) int static options (constant) init (" "); 255 dcl LONGEST_SEARCH_FILE_REXP 256 fixed bin static options (constant) init (132); 257 dcl MAX_BUFFER_LTH fixed bin int static options (constant) 258 init (1025); /* types returned by check_star_name_ */ 259 dcl 1 type static options (constant), 260 2 NOSTAR fixed bin (35) init (0), 261 2 STAR fixed bin (35) init (1), 262 2 STARSTAR fixed bin (35) init (2); 263 dcl TERMINATE_SEG bit (4) internal static options (constant) 264 init ("0010"b); 265 266 dcl error_table_$bad_conversion 267 fixed bin (35) ext static; 268 dcl error_table_$badopt fixed bin (35) ext static; 269 dcl error_table_$dirseg fixed bin (35) ext static; 270 dcl error_table_$inconsistent 271 fixed bin (35) ext static; 272 dcl error_table_$long_record 273 fixed bin (35) ext static; 274 dcl error_table_$noarg fixed bin (35) ext static; 275 dcl error_table_$no_component 276 fixed bin (35) ext static; 277 dcl error_table_$nomatch fixed bin (35) ext static; 278 dcl error_table_$regexp_undefined 279 fixed bin (35) ext static; 280 dcl error_table_$zero_length_seg 281 fixed bin (35) ext static; 282 dcl iox_$user_input ptr ext static; 283 dcl iox_$user_output ptr ext static; 284 285 /* ======================================================== */ 286 287 /* Set up default values */ 288 289 star_sel = star_BRANCHES_ONLY; /* default is -no_chase */ 290 from_line, from_page = 1; /* default is to print whole file */ 291 to_page = -1; 292 match_arg_count, exclude_arg_count, to_line, indentation, forcount, 293 from_regexpr_len, to_regexpr_len, input_path_count = 0; 294 string (sws) = "0"b; 295 right_col = MAX_BUFFER_LTH; 296 last_count, left_col = 1; 297 298 pcip = addr (PCI); 299 unspec (PCI) = ""b; 300 pci.cv_proc = codeptr (print_conv_$print_conv_); 301 pci.line = 1; 302 pci.phys_line_length = MAX_BUFFER_LTH; 303 pci.ctl_char = "1"b; 304 pci.lpi = 6; 305 pci.sheets_per_page = 1; 306 pci.top_label_line = ""; 307 pci.bot_label_line = ""; 308 pci.overflow_off = "1"b; /* Don't put in NP */ 309 pci.label_wksp = null; 310 pci.label_nelem = 0; 311 switch_name = "user_output"; /* default switch */ 312 out_switch = iox_$user_output; 313 314 /* Analyze all the control arguments. */ 315 316 call cu_$arg_list_ptr (arg_list_ptr); 317 call cu_$arg_count (nargs, error_code); 318 if error_code ^= 0 319 then 320 do; 321 call com_err_ (error_code, "print"); /* can't be AF */ 322 return; 323 end; 324 325 do iarg = 1 to nargs; /* preprocess the args */ 326 call cu_$arg_ptr (iarg, arg_ptr, arg_len, error_code); 327 if error_code ^= 0 328 then 329 do; 330 ARG_READ_ERR: 331 call com_err_ (error_code, "print", "Argument ^d.", iarg); 332 RETURN: 333 return; 334 end; 335 336 if index (arg, "-") ^= 1 /* number or pathname? */ 337 then 338 do; 339 junk = cv_dec_check_ (arg, error_code); 340 341 if error_code = 0 /* its a number */ 342 then 343 do; 344 if input_path_count = 0 /* make "print 0" work as it used to */ 345 then goto its_a_name; 346 347 if junk = 0 /* 0's are not allowed */ 348 then 349 do; 350 error_code = error_table_$bad_conversion; 351 goto ARG_ERR; 352 end; 353 354 if ^sws.from_line_given 355 then 356 do; 357 from_line = junk; 358 sws.from_line_given = "1"b; 359 end; 360 361 else if ^sws.to_line_given 362 then 363 do; 364 to_line = junk; 365 sws.to_line_given = "1"b; 366 end; 367 368 else 369 do; 370 call com_err_ (error_table_$inconsistent, "print", 371 "Only one line range is allowed. ^a", arg); 372 return; 373 end; 374 sws.had_an_arg = "1"b; 375 end; 376 377 else 378 do; /* non-numeric */ 379 if search (arg, "*?") ^= 0 /* pretend starname matches 2 */ 380 then input_path_count = input_path_count + 1; 381 its_a_name: /* count file names */ 382 input_path_count = input_path_count + 1; 383 end; 384 end; 385 386 else 387 do; 388 sws.had_an_arg = "1"b; 389 390 if arg = "-name" | arg = "-nm" 391 then 392 do; 393 iarg = iarg + 1; 394 395 if iarg > nargs 396 then 397 do; 398 miss_arg: 399 call com_err_ (error_table_$noarg, "print", 400 "After ^a.", arg); 401 return; 402 end; /* count file names */ 403 input_path_count = input_path_count + 1; 404 end; 405 406 else if arg = "-from" | arg = "-fm" 407 then call GET_FROM_TO (sws.from_line_given, from_regexpr_ptr, 408 from_regexpr_len, from_line); 409 410 else if arg = "-to" 411 then call GET_FROM_TO (sws.to_line_given, to_regexpr_ptr, 412 to_regexpr_len, to_line); 413 414 else if arg = "-for" 415 then forcount = GETNUM (); 416 417 else if arg = "-from_page" 418 then 419 do; 420 sws.from_page_given = "1"b; 421 from_page = GETNUM (); 422 end; 423 424 else if arg = "-to_page" 425 then 426 do; 427 sws.to_page_given = "1"b; 428 to_page = GETNUM (); 429 end; 430 431 else if arg = "-indent" | arg = "-ind" | arg = "-in" 432 then indentation = GETNUM (); 433 434 else if arg = "-last" | arg = "-lt" 435 then 436 do; 437 sws.last_given = "1"b; 438 last_count = GETNUM (); 439 end; 440 441 else if arg = "-left_col" | arg = "-lc" 442 then left_col = GETNUM (); 443 444 else if arg = "-right_col" | arg = "-rc" 445 then right_col = GETNUM (); 446 447 else if arg = "-line_length" | arg = "-ll" 448 then pci.phys_line_length = GETNUM (); 449 450 else if arg = "-page_length" | arg = "-pl" 451 then 452 do; 453 pci.page_length = GETNUM (); 454 pci.overflow_off = "0"b; /* Do NP */ 455 end; 456 457 else if arg = "-phys_page_length" | arg = "-ppl" 458 then pci.phys_page_length = GETNUM (); 459 460 else if arg = "-stop" | arg = "-sp" 461 then 462 do; /* pause after each page */ 463 sws.pause_after_page = "1"b; 464 sws.pause_before_print = "1"b; 465 end; 466 467 else if arg = "-wait" | arg = "-wt" 468 then sws.pause_before_print = "1"b; 469 470 else if arg = "-header" | arg = "-he" 471 then 472 do; 473 sws.want_heading = "1"b; 474 sws.no_heading = "0"b; 475 end; 476 477 else if arg = "-no_header" | arg = "-nhe" 478 then sws.no_heading = "1"b; 479 480 else if arg = "-no_archive" | arg = "-nac" 481 then sws.dont_want_archive = "1"b; 482 483 else if arg = "-archive" | arg = "-ac" 484 then sws.dont_want_archive = "0"b; 485 486 else if arg = "-no_vertsp" 487 then sws.no_vertsp = "1"b; 488 489 else if arg = "-vertsp" 490 then sws.no_vertsp = "0"b; 491 492 else if arg = "-match" 493 then 494 do; 495 if iarg >= nargs 496 then goto miss_arg; 497 498 iarg = iarg + 1; 499 match_arg_count = match_arg_count + 1; 500 end; 501 502 else if arg = "-ex" | arg = "-exclude" 503 then 504 do; 505 if iarg >= nargs 506 then goto miss_arg; 507 508 iarg = iarg + 1; 509 exclude_arg_count = exclude_arg_count + 1; 510 end; 511 512 else if arg = "-number" | arg = "-nb" 513 then sws.want_line_numbers = "1"b; 514 515 else if arg = "-chase" 516 then star_sel = star_ALL_ENTRIES; 517 518 else if arg = "-no_chase" 519 then star_sel = star_BRANCHES_ONLY; 520 521 else if arg = "-output_switch" | arg = "-osw" 522 then 523 do; 524 iarg = iarg + 1; 525 call cu_$arg_ptr (iarg, arg_ptr, arg_len, error_code); 526 if error_code ^= 0 527 then goto ARG_READ_ERR; 528 529 call iox_$look_iocb (arg, out_switch, error_code); 530 if error_code ^= 0 531 then 532 do; 533 call com_err_ (error_code, "print", 534 "Looking for output switch ^a", arg); 535 goto RETURN; 536 end; 537 switch_name = arg; 538 end; 539 540 else 541 do; /* illegal */ 542 error_code = error_table_$badopt; 543 ARG_ERR: 544 call com_err_ (error_code, "print", "^a", arg); 545 return; 546 end; 547 end; 548 end; 549 550 /* Control arguments are processed */ 551 552 if input_path_count = 0 553 then 554 do; 555 call com_err_ (error_table_$noarg, "print", "No pathname given."); 556 return; 557 end; 558 559 if (switch_name ^= "user_output") 560 & (sws.pause_before_print | sws.pause_after_page) 561 then /* Can't give -stop or */ 562 do; /* -wait with -osw */ 563 call com_err_ (error_table_$inconsistent, "print", 564 "-output_switch cannot be used with ^[-stop^;-wait^].", 565 sws.pause_after_page); 566 return; 567 end; 568 569 if (sws.to_page_given | sws.from_page_given) 570 & (sws.from_line_given | sws.to_line_given) 571 then 572 do; 573 call com_err_ (error_table_$inconsistent, "print", 574 "Page and line specifiers cannot be used together."); 575 return; 576 end; 577 578 if sws.from_line_given & sws.last_given 579 then 580 do; 581 call com_err_ (error_table_$inconsistent, "print", 582 "-from and -last cannot be used together."); 583 return; 584 end; 585 586 if sws.to_line_given & sws.from_line_given & to_line < from_line 587 & from_regexpr_len + to_regexpr_len = 0/* but no REs in the range */ 588 then 589 do; 590 call com_err_ (error_table_$inconsistent, "print", 591 "-from ^d > -to ^d", from_line, to_line); 592 return; 593 end; 594 595 if sws.from_page_given & sws.to_page_given & to_page < from_page 596 then 597 do; 598 call com_err_ (error_table_$inconsistent, "print", 599 "-from_page ^d > -to_page ^d", from_page, to_page); 600 return; 601 end; 602 603 if right_col < left_col 604 then 605 do; 606 call com_err_ (error_table_$inconsistent, "print", 607 "-left_col ^d > -right_col ^d", left_col, right_col); 608 return; 609 end; 610 611 if pci.phys_line_length < 5 /* prt_conv_ cannot handle length < 5. */ 612 then /* It gives fatal process errors when */ 613 do; /* attempting to process HT char. */ 614 call com_err_ (0, "print", 615 "Implementation restriction: -line_length must be greater than 4." 616 ); 617 return; 618 end; 619 620 sws.check_lines = match_arg_count > 0 | exclude_arg_count > 0; 621 622 sws.paging = 623 (pci.page_length ^= 0) | (pci.phys_page_length ^= 0) 624 | sws.from_page_given | sws.to_page_given; 625 626 sws.print_quick_way = 627 (left_col <= 1) & (right_col = MAX_BUFFER_LTH) 628 & (pci.phys_line_length = MAX_BUFFER_LTH) & (^sws.paging) 629 & (mod (indentation, 10) = 0) & (^sws.no_vertsp); 630 631 sws.one_iox_call = 632 (forcount = 0) & ^sws.from_page_given & ^sws.to_page_given 633 & (indentation = 0) & ^sws.pause_after_page & ^sws.no_vertsp 634 & ^sws.from_line_given & ^sws.to_line_given & ^sws.last_given 635 & ^sws.check_lines & ^sws.want_line_numbers; 636 637 output_buffer_size = min (pci.phys_line_length, MAX_BUFFER_LTH); 638 639 if right_col = MAX_BUFFER_LTH 640 then right_col = output_buffer_size; 641 642 if pci.phys_line_length = MAX_BUFFER_LTH 643 then pci.phys_line_length = output_buffer_size; 644 645 pci.rmarg = output_buffer_size; 646 647 if pci.page_length = 0 648 then pci.page_length = 131071; 649 650 if pci.phys_page_length = 0 651 then pci.phys_page_length = 66; 652 653 if input_path_count = 1 & ^sws.had_an_arg /* old way? */ 654 then sws.want_heading, sws.print_trailing_nls = "1"b; 655 656 else if input_path_count > 1 657 then sws.want_heading = "1"b; /* default to head if many segs */ 658 659 if sws.no_heading 660 then sws.want_heading = "0"b; /* .. but may over-ride */ 661 662 match_arg_count = max (match_arg_count, 1); /* Illegal PL/I to have match_arg_count = 0 */ 663 exclude_arg_count = max (exclude_arg_count, 1); 664 /* .. anything to make Monte happy */ 665 666 /* ------------------------------------------------------- */ 667 668 GET_FROM_TO: 669 proc (bv_had, bv_regexpr_ptr, bv_regexpr_len, bv_line); 670 671 dcl bv_had bit (1), 672 bv_regexpr_ptr ptr, 673 bv_regexpr_len fixed bin (21), 674 bv_line fixed bin; 675 676 dcl range_arg char (6) var; 677 678 if iarg >= nargs /* nothing to look at? */ 679 then goto miss_arg; 680 681 range_arg = arg; 682 iarg = iarg + 1; 683 684 call cu_$arg_ptr_rel (iarg, arg_ptr, arg_len, error_code, arg_list_ptr); 685 if error_code ^= 0 686 then goto ARG_READ_ERR; 687 688 junk = cv_dec_check_ (arg, error_code); 689 690 if bv_had /* if we have already had */ 691 then 692 do; /* one of these */ 693 call com_err_ (error_table_$inconsistent, "print", 694 "Only one line range is allowed. ^a ^[^i^;^s^a^]", range_arg, 695 (error_code ^= 0), junk, arg); 696 goto RETURN; 697 end; 698 699 bv_had = "1"b; /* well, we have one one */ 700 701 if arg_len >= 2 & /* check for /RE/ */ 702 index (arg, "/") = 1 & index (reverse (arg), "/") = 1 703 then 704 do; 705 if arg_len = 2 706 then error_code = error_table_$regexp_undefined; 707 else call search_file_$silent (arg_ptr, 2, arg_len - 2, arg_ptr, 1, 708 arg_len, 0, 0, error_code); 709 if error_code ^= 0 & error_code ^= error_table_$nomatch 710 then 711 do; 712 call com_err_ (error_code, "print", "^a ^a", range_arg, arg); 713 goto RETURN; 714 end; 715 716 if arg_len > LONGEST_SEARCH_FILE_REXP + 2 717 then /* too long? */ 718 do; 719 call com_err_ (0, "print", 720 "Regular expressions may not be longer than ^d characters. ^/^-^a", 721 LONGEST_SEARCH_FILE_REXP + 2, arg); 722 goto RETURN; 723 end; 724 725 bv_regexpr_ptr = arg_ptr; 726 bv_regexpr_len = arg_len - 2; 727 end; 728 729 else 730 do; 731 bv_line = cv_dec_check_ (arg, error_code); 732 if error_code ^= 0 | bv_line < 1 733 then 734 do; 735 error_code = error_table_$bad_conversion; 736 ARG_OPERAND_ERR: 737 call com_err_ (error_code, "print", "^a ^a", range_arg, arg); 738 go to RETURN; 739 end; 740 end; 741 742 return; 743 744 /* ------------------------------------------------------- */ 745 746 GETNUM: 747 entry () returns (fixed bin); 748 749 dcl answer fixed bin; 750 751 range_arg = arg; 752 iarg = iarg + 1; /* yes */ 753 call cu_$arg_ptr_rel (iarg, arg_ptr, arg_len, error_code, arg_list_ptr); 754 if error_code ^= 0 755 then goto ARG_READ_ERR; 756 757 answer = cv_dec_check_ (arg, error_code); 758 if error_code ^= 0 | answer < 1 759 then 760 do; 761 error_code = error_table_$bad_conversion; 762 goto ARG_OPERAND_ERR; 763 end; 764 return (answer); 765 766 end GET_FROM_TO; 767 768 /* Make a second pass over the arguments and store operands of -match & -exclude */ 769 770 begin; /* needed because of adjustable arrays */ 771 772 dcl arg_token char (6) var; 773 dcl star_area area based (star_area_ptr); 774 dcl star_area_ptr ptr; 775 dcl star_entry_array (star_entry_count) fixed bin 776 based (star_entry_array_ptr); 777 dcl star_entry_array_ptr ptr; 778 dcl match_string_ptr (match_arg_count) ptr; 779 dcl match_string_len (match_arg_count) fixed bin (21); 780 dcl match_string_count fixed bin; 781 dcl exclude_string_ptr (exclude_arg_count) ptr; 782 dcl exclude_string_len (exclude_arg_count) fixed bin (21); 783 dcl exclude_string_count fixed bin; 784 dcl ever_printed bit (1); /* global this command */ 785 dcl ever_had_err bit (1); 786 dcl ever_found_from bit (1); 787 dcl ever_found_page bit (1); 788 dcl seg_ptr ptr; /* -> msf component */ 789 dcl FCB_ptr ptr; /* -> FCB for msf */ 790 dcl had_err bit (1); 791 dcl dir_name char (168); /* directory name */ 792 dcl entry_name char (32); 793 dcl archive_element char (32); 794 dcl entry_star_type fixed bin (35); 795 dcl archive_element_star_type 796 fixed bin (35); 797 dcl archive_elements_found bit (1); 798 dcl star_entry_array_index fixed bin; 799 dcl star_entry_name char (32); 800 801 ever_printed, ever_had_err, ever_found_from, ever_found_page = "0"b; 802 match_string_count, exclude_string_count = 0; 803 804 if sws.check_lines 805 then 806 do iarg = 1 to nargs; 807 call cu_$arg_ptr_rel (iarg, arg_ptr, arg_len, error_code, 808 arg_list_ptr); 809 if error_code ^= 0 810 then goto ARG_READ_ERR; 811 812 if arg = "-match" 813 then 814 do; 815 iarg = iarg + 1; 816 call cu_$arg_ptr_rel (iarg, arg_ptr, arg_len, error_code, 817 arg_list_ptr); 818 if error_code ^= 0 819 then goto ARG_READ_ERR; 820 821 if arg_len >= 2 & /* check for /RE/ */ 822 index (arg, "/") = 1 & index (reverse (arg), "/") = 1 823 then 824 do; 825 826 if arg_len = 2 827 then c = error_table_$regexp_undefined; 828 else call search_file_$silent (arg_ptr, 2, 829 arg_len - 2, arg_ptr, 1, arg_len, 0, 0, c); 830 if c ^= 0 & c ^= error_table_$nomatch 831 then 832 do; 833 call com_err_ (c, "print", "-match ^a", arg); 834 goto RETURN; 835 end; 836 end; 837 838 match_string_count = match_string_count + 1; 839 match_string_ptr (match_string_count) = arg_ptr; 840 match_string_len (match_string_count) = arg_len; 841 end; 842 843 else if arg = "-ex" | arg = "-exclude" 844 then 845 do; 846 arg_token = arg; 847 iarg = iarg + 1; 848 call cu_$arg_ptr_rel (iarg, arg_ptr, arg_len, error_code, 849 arg_list_ptr); 850 if error_code ^= 0 851 then goto ARG_READ_ERR; 852 853 if arg_len >= 2 & /* check for RE */ 854 index (arg, "/") = 1 & index (reverse (arg), "/") = 1 855 then 856 do; 857 858 if arg_len = 2 859 then c = error_table_$regexp_undefined; 860 else call search_file_$silent (arg_ptr, 2, 861 arg_len - 2, arg_ptr, 1, arg_len, 0, 0, c); 862 if c ^= 0 & c ^= error_table_$nomatch 863 then 864 do; 865 call com_err_ (c, "print", "^a ^a", arg_token, 866 arg); 867 goto RETURN; 868 end; 869 end; 870 871 exclude_string_count = exclude_string_count + 1; 872 exclude_string_ptr (exclude_string_count) = arg_ptr; 873 exclude_string_len (exclude_string_count) = arg_len; 874 end; /**/ 875 876 else if arg = "-name" | arg = "-nm"/* NAME can also look like a ctlarg */ 877 then iarg = iarg + 1; 878 end; 879 880 star_area_ptr = get_system_free_area_ (); 881 star_names_ptr, star_entry_ptr, star_entry_array_ptr, seg_ptr, 882 FCB_ptr = null; 883 884 on cleanup call CLEANER; 885 886 input_path_count = 0; 887 888 /* Make third pass over arguments to print each file named. */ 889 890 do iarg = 1 to nargs; 891 had_err = "0"b; 892 call cu_$arg_ptr_rel (iarg, arg_ptr, arg_len, error_code, 893 arg_list_ptr); 894 if error_code ^= 0 895 then goto ARG_READ_ERR; 896 897 junk = cv_dec_check_ (arg, error_code); 898 if error_code = 0 & input_path_count > 0 899 then ; /* ignore numeric args */ 900 901 else if index (arg, "-") = 1 902 then 903 do; /* skip other ctls */ 904 if arg = "-name" | arg = "-nm" 905 then 906 do; 907 iarg = iarg + 1; 908 call cu_$arg_ptr_rel (iarg, arg_ptr, arg_len, 909 error_code, arg_list_ptr); 910 if error_code ^= 0 911 then goto ARG_READ_ERR; 912 913 goto segname; 914 end; 915 916 else if arg = "-from" | arg = "-fm" | arg = "-to" 917 | arg = "-for" | arg = "-from_page" | arg = "-to_page" 918 | arg = "-indent" | arg = "-ind" | arg = "-in" 919 | arg = "-left_col" | arg = "-lc" | arg = "-right_col" 920 | arg = "-rc" | arg = "-line_length" | arg = "-ll" 921 | arg = "-page_length" | arg = "-pl" 922 | arg = "-phys_page_length" | arg = "-ppl" 923 | arg = "-match" | arg = "-exclude" | arg = "-ex" 924 | arg = "-output_switch" | arg = "-osw" | arg = "-last" 925 | arg = "-lt" 926 then iarg = iarg + 1; 927 end; 928 929 else 930 do; /* non-ctl arg */ 931 segname: 932 call expand_pathname_$component (arg, dir_name, entry_name, 933 archive_element, error_code); 934 if error_code ^= 0 935 then goto ARG_ERR; 936 937 input_path_count = input_path_count + 1; 938 939 call check_star_name_$entry (entry_name, entry_star_type); 940 941 if entry_star_type ^= type.NOSTAR 942 & entry_star_type ^= type.STAR 943 & entry_star_type ^= type.STARSTAR 944 then 945 do; 946 had_err = "1"b; 947 call com_err_ (entry_star_type, "print", "^a", 948 entry_name); 949 end; 950 951 else 952 do; 953 if archive_element = "" 954 then archive_element_star_type = type.NOSTAR; 955 else call check_star_name_$entry (archive_element, 956 archive_element_star_type); 957 958 if archive_element_star_type ^= type.NOSTAR 959 & archive_element_star_type ^= type.STAR 960 & archive_element_star_type ^= type.STARSTAR 961 then 962 do; 963 had_err = "1"b; 964 call com_err_ (archive_element_star_type, "print", 965 "^a", archive_element); 966 end; 967 968 else 969 do; 970 archive_elements_found = "0"b; 971 972 if entry_star_type = type.NOSTAR 973 then /* No stars */ 974 call PRINT_ONE_ENTRYNAME (dir_name, 975 entry_name, archive_element, 976 star_SEGMENT); 977 978 else 979 do; /* Has stars */ 980 call hcs_$star_ (dir_name, entry_name, 981 star_sel, star_area_ptr, 982 star_entry_count, star_entry_ptr, 983 star_names_ptr, error_code); 984 if error_code ^= 0 985 then 986 do; 987 call com_err_ (error_code, "print", 988 "^a", 989 pathname_ (dir_name, entry_name)) 990 ; 991 had_err = "1"b; 992 end; 993 994 else 995 do; /* Found some */ 996 allocate star_entry_array 997 set (star_entry_array_ptr) 998 in (star_area); 999 /* print starname segs in alpha order */ 1000 do star_entry_array_index = 1 1001 to star_entry_count; 1002 star_entry_array ( 1003 star_entry_array_index) = 1004 star_entry_array_index; 1005 end; 1006 1007 call SORT_STAR_ARRAY; 1008 1009 do star_entry_array_index = 1 1010 to star_entry_count; 1011 star_entry_name = 1012 star_names ( 1013 star_entries ( 1014 star_entry_array ( 1015 star_entry_array_index)) 1016 .nindex); 1017 call PRINT_ONE_ENTRYNAME (dir_name, 1018 star_entry_name, 1019 archive_element, 1020 ( 1021 star_entries ( 1022 star_entry_array ( 1023 star_entry_array_index)).type) 1024 ); 1025 end; 1026 end; 1027 1028 call CLEANER; /* Free storage */ 1029 end; 1030 end; 1031 end; 1032 1033 if ^had_err & archive_element ^= "" & ^archive_elements_found 1034 then 1035 do; 1036 had_err = "1"b; /* fix bug for TR number 20687 */ 1037 error_code = error_table_$no_component; 1038 /* end of fixing bug */ 1039 call com_err_ (error_code, "print", "^a", 1040 pathname_$component (dir_name, entry_name, 1041 archive_element)); 1042 end; 1043 end; 1044 1045 if had_err 1046 then ever_had_err = "1"b; 1047 end; 1048 1049 if ^ever_printed & ^ever_had_err 1050 then 1051 do; /* gotta tell him something for his dime */ 1052 if sws.from_line_given & ^ever_found_from & ^sws.last_given 1053 then if from_regexpr_len > 0 1054 then call com_err_ (0, "print", "^a not matched.", 1055 from_regexpr); 1056 else call com_err_ (0, "print", "Line ^d not found.", 1057 from_line); 1058 1059 else if sws.from_page_given & ^ever_found_page 1060 then call com_err_ (0, "print", "Page ^d not found.", from_page); 1061 1062 else call com_err_ (0, "print", "No lines selected."); 1063 end; 1064 1065 else if sws.print_trailing_nls & ^ever_had_err 1066 then call ioa_$ioa_switch (out_switch, "^/"); 1067 1068 1069 /* return; /* Normal program exit (from inside begin block) */ 1070 1071 /* ------------------------------------------------------- */ 1072 1073 SORT_STAR_ARRAY: 1074 proc; 1075 1076 dcl d fixed bin, 1077 swap bit (1), 1078 t fixed bin; 1079 1080 d = star_entry_count; 1081 do while (d > 1); 1082 d = divide (d + 1, 2, 17, 0); 1083 swap = "1"b; 1084 do while (swap); 1085 swap = "0"b; 1086 do star_entry_array_index = 1 to star_entry_count - d; 1087 if star_names ( 1088 star_entries (star_entry_array (star_entry_array_index)) 1089 .nindex) 1090 > 1091 star_names ( 1092 star_entries (star_entry_array (star_entry_array_index + d)) 1093 .nindex) 1094 then 1095 do; 1096 swap = "1"b; 1097 t = star_entry_array (star_entry_array_index); 1098 star_entry_array (star_entry_array_index) = 1099 star_entry_array (star_entry_array_index + d); 1100 star_entry_array (star_entry_array_index + d) = t; 1101 end; 1102 end; 1103 end; 1104 end; 1105 1106 end SORT_STAR_ARRAY; 1107 1108 CLEANER: 1109 proc; 1110 1111 if star_names_ptr ^= null 1112 then free star_names in (star_area); 1113 1114 if star_entry_ptr ^= null 1115 then free star_entries in (star_area); 1116 1117 if star_entry_array_ptr ^= null 1118 then free star_entry_array in (star_area); 1119 1120 if FCB_ptr ^= null 1121 then call msf_manager_$close (FCB_ptr); 1122 1123 else if seg_ptr ^= null 1124 then call terminate_file_ (seg_ptr, (0), TERMINATE_SEG, (0)); 1125 1126 star_names_ptr, star_entry_ptr, star_entry_array_ptr, seg_ptr, FCB_ptr = 1127 null; 1128 1129 end CLEANER; 1130 1131 /* ------------------------------------------------------- */ 1132 1133 /* This subroutine handles the file system stuff. 1134* It knows how to handle MSFs and archives. */ 1135 1136 PRINT_ONE_ENTRYNAME: 1137 proc (dirname, ename, arch_elem_wanted, en_type); 1138 1139 dcl dirname char (168); /* (arg) directory */ 1140 dcl ename char (32); /* (arg) entry */ 1141 dcl arch_elem_wanted char (32); /* (arg) element */ 1142 dcl en_type fixed bin (2) uns; 1143 /* (arg) whether to bitch */ 1144 1145 dcl 1 sws1, /* switch bits */ 1146 2 doing_archive bit (1), /* TRUE if doing an archive */ 1147 2 found_first bit (1), /* flags for line select */ 1148 2 found_last bit (1), 1149 2 found_to bit (1), 1150 2 last_msf_component bit (1), /* TRUE for last MSF component, */ 1151 /* and all segs & archive elements */ 1152 2 more_in_archive bit (1), /* TRUE if archive scanning */ 1153 2 print_heading_first 1154 bit (1), /* TRUE if printing heading */ 1155 2 stop_after_first_elem 1156 bit (1), /* TRUE if doing nonstar archive elem */ 1157 2 paused bit (1); /* TRUE if we paused at the beginning of this entry */ 1158 1159 dcl 1 ACI like archive_component_info aligned; 1160 dcl ( 1161 ARCH_COMP init (3), 1162 MSF_COMP init (2), 1163 SEG init (1) 1164 ) fixed bin int static options (constant); 1165 dcl bitc fixed bin (24); /* bit count */ 1166 dcl comp_ptr ptr; /* if print archive */ 1167 /* MSF part or archive element */ 1168 dcl component char (seg_charct) based (comp_ptr); 1169 dcl ec1 fixed bin (35); /* err code */ 1170 dcl entry_type fixed bin (2); /* arg to status */ 1171 dcl error_code fixed bin (35); /* err code */ 1172 dcl indent_string char (indentation) init (""); 1173 dcl last_line_number fixed bin; /* number of input line last output. */ 1174 dcl line_count fixed bin; 1175 dcl last_slew char (1); 1176 dcl line_length fixed bin (21); /* length of one line */ 1177 dcl line_number fixed bin; /* line number to print */ 1178 dcl msf_component fixed bin; /* component number */ 1179 dcl msf_component_count fixed bin (24); /* highest component */ 1180 dcl output_buffer char (MAX_BUFFER_LTH); 1181 dcl output_buffer_ch (MAX_BUFFER_LTH) char (1) 1182 defined output_buffer; 1183 dcl output_buffer_length fixed bin (21); /* amount currently used */ 1184 dcl page_number fixed bin; /* current page number */ 1185 dcl seg_charct fixed bin (21); /* char count of current seg */ 1186 dcl seg_type fixed bin; /* type of entry passed to PRINT_ONE_SEG */ 1187 /* can be: SEG, MSF_COMP, ARCH_COMP */ 1188 dcl segment char (seg_charct) based (seg_ptr); 1189 dcl slew char (1); /* vertical motion char */ 1190 dcl vt_length fixed bin (21); /* length of line up to next VT */ 1191 dcl wanted_elem char (32); 1192 1193 call iox_$control (out_switch, "reset_more", null (), (0)); 1194 /* for video system users ... */ 1195 1196 last_line_number = 0; 1197 last_slew = NUL; 1198 sws1.doing_archive, sws1.found_to, sws1.paused = "0"b; 1199 sws1.last_msf_component = "1"b; 1200 1201 call initiate_file_ (dirname, ename, R_ACCESS, seg_ptr, bitc, error_code); 1202 1203 if seg_ptr = null 1204 then 1205 do; /* Can't initiate: missing? or directory/msf? */ 1206 call hcs_$status_minf (dirname, ename, 1, entry_type, 1207 msf_component_count, ec1); 1208 if ec1 ^= 0 1209 then 1210 do; 1211 if en_type = star_LINK 1212 then return; /* don't complain about missing link target if * convention */ 1213 1214 else 1215 do; 1216 error_code = ec1; 1217 abort: 1218 call com_err_ (error_code, "print", "^a", 1219 pathname_ (dirname, ename)); 1220 had_err = "1"b; 1221 return; 1222 end; 1223 end; 1224 1225 if entry_type ^= star_DIRECTORY 1226 then goto abort; /* A seg we can't initiate */ 1227 1228 /* Directory */ 1229 1230 if msf_component_count < 1 1231 then 1232 do; /* really dir */ 1233 if en_type ^= star_SEGMENT 1234 then return; /* quiet if star convention */ 1235 error_code = error_table_$dirseg; 1236 /* don't print dirs */ 1237 goto abort; /* .. just fuss */ 1238 end; 1239 1240 /* Multisegment file case */ 1241 1242 else 1243 do; 1244 seg_type = MSF_COMP; 1245 call msf_manager_$open (dirname, ename, FCB_ptr, error_code); 1246 if error_code ^= 0 1247 then goto abort; 1248 1249 call RESET; 1250 1251 if sws.last_given /* for -last */ 1252 then 1253 do; 1254 from_line = 0; 1255 1256 if sws.to_line_given & to_regexpr_len = 0 1257 then from_line = max (to_line - last_count + 1, 1); 1258 /* count lines in the MSF */ 1259 else 1260 do; 1261 do msf_component = 0 1262 to msf_component_count - 1 1263 while (^sws1.found_to); 1264 call msf_manager_$get_ptr (FCB_ptr, 1265 msf_component, "0"b, comp_ptr, bitc, 1266 error_code); 1267 if error_code ^= 0 1268 then goto MSF_err; 1269 1270 seg_charct = divide (bitc + 8, 9, 21, 0); 1271 1272 if seg_charct > 0 1273 then 1274 do; 1275 call COUNT_LINES (component, 1276 msf_component 1277 = msf_component_count - 1, 1278 line_count, sws1.found_to); 1279 from_line = from_line + line_count; 1280 end; 1281 end; 1282 from_line = max (from_line - last_count + 1, 1); 1283 end; 1284 end; 1285 1286 line_number = 1; 1287 sws1.paused = "0"b; 1288 1289 do msf_component = 0 to msf_component_count - 1 1290 while (^sws1.found_last); 1291 1292 call msf_manager_$get_ptr (FCB_ptr, msf_component, "0"b, 1293 comp_ptr, bitc, error_code); 1294 if error_code ^= 0 1295 then goto MSF_err; 1296 1297 sws1.last_msf_component = 1298 (msf_component = msf_component_count - 1); 1299 seg_charct = divide (bitc + 8, 9, 21, 0); 1300 if seg_charct = 0 1301 then error_code = error_table_$zero_length_seg; 1302 /* Actually print component */ 1303 else call PRINT_ONE_SEG (component); 1304 /* dont count nnl lines twice */ 1305 if ^sws1.last_msf_component 1306 then if substr (component, seg_charct, 1) ^= NL 1307 then line_number = line_number - 1; 1308 end; 1309 1310 MSF_err: 1311 if error_code ^= 0 1312 then 1313 do; 1314 had_err = "1"b; 1315 call com_err_ (error_code, "print", 1316 "Component ^d of multisegment file ^a.", 1317 msf_component, pathname_ (dirname, ename)); 1318 end; 1319 1320 call msf_manager_$close (FCB_ptr); 1321 end; /* of MSF */ 1322 return; /* exit from MSF case */ 1323 end; /* seg_ptr = null */ 1324 1325 /* Segment case */ 1326 1327 error_code = 0; 1328 sws1.doing_archive = 1329 arch_elem_wanted ^= "" 1330 | (^sws.dont_want_archive 1331 & index (reverse (rtrim (ename)), reverse (".archive")) = 1); 1332 1333 /* Archive case */ 1334 1335 if sws1.doing_archive 1336 then 1337 do; 1338 seg_type = ARCH_COMP; 1339 stop_after_first_elem = (archive_element_star_type = type.NOSTAR); 1340 1341 if arch_elem_wanted = "" 1342 then 1343 do; 1344 wanted_elem = "**"; /* print whole archive? */ 1345 stop_after_first_elem = "0"b; 1346 end; 1347 else wanted_elem = arch_elem_wanted; 1348 1349 comp_ptr = null; 1350 ACI.version = ARCHIVE_COMPONENT_INFO_VERSION_1; 1351 sws1.more_in_archive = "1"b; 1352 1353 do while (sws1.more_in_archive & error_code = 0); 1354 call archive_$next_component_info (seg_ptr, bitc, comp_ptr, 1355 addr (ACI), error_code); 1356 if error_code = 0 1357 then 1358 do; 1359 if comp_ptr = null 1360 then sws1.more_in_archive = "0"b; 1361 1362 else 1363 do; 1364 call match_star_name_ (ACI.name, wanted_elem, 1365 error_code); 1366 if error_code ^= 0 1367 then error_code = 0; 1368 else 1369 do; 1370 call RESET; 1371 1372 seg_charct = 1373 divide (ACI.comp_bc + 8, 9, 21, 0); 1374 if seg_charct = 0 1375 then 1376 do; /* archive wont let this happen, but ... */ 1377 call com_err_ ( 1378 error_table_$zero_length_seg, 1379 "print", "^a", 1380 pathname_$component (dirname, ename, 1381 ACI.name)); 1382 had_err = "1"b; 1383 end; 1384 1385 else 1386 do; 1387 archive_elements_found = "1"b; 1388 1389 if sws.last_given 1390 /* for -last */ 1391 then 1392 do; 1393 if sws.to_line_given 1394 & to_regexpr_len = 0 1395 then from_line = 1396 max (to_line 1397 - last_count + 1, 1); 1398 else 1399 do; 1400 call COUNT_LINES (component, 1401 "1"b, from_line, 1402 sws1.found_to); 1403 from_line = 1404 max (from_line 1405 - last_count + 1, 1); 1406 end; 1407 end; 1408 1409 line_number = 1; 1410 sws1.paused = "0"b; 1411 /* fixed bug for TR number 18887 */ 1412 call iox_$control (out_switch, 1413 "reset_more", null (), (0)); 1414 /* for video system users ... */ 1415 /* end of fixing bug */ 1416 1417 call PRINT_ONE_SEG (component); 1418 /* Terminate loop */ 1419 if stop_after_first_elem 1420 then sws1.more_in_archive = "0"b; 1421 end; 1422 end; 1423 end; 1424 end; /* error_code = 0 */ 1425 end; /* loop */ 1426 end; /* of archive case */ 1427 1428 /* Single segment file case. */ 1429 1430 else 1431 do; 1432 seg_type = SEG; 1433 call RESET; 1434 1435 seg_charct = divide (bitc + 8, 9, 21, 0); 1436 if seg_charct ^= 0 1437 then 1438 do; 1439 if sws.last_given /* for -last */ 1440 then 1441 do; 1442 if sws.to_line_given & to_regexpr_len = 0 1443 then from_line = max (to_line - last_count + 1, 1); 1444 else 1445 do; 1446 call COUNT_LINES (segment, "1"b, from_line, 1447 sws1.found_to); 1448 from_line = max (from_line - last_count + 1, 1); 1449 end; 1450 end; 1451 1452 line_number = 1; 1453 sws1.paused = "0"b; 1454 1455 call PRINT_ONE_SEG (segment); 1456 end; 1457 1458 else error_code = error_table_$zero_length_seg; 1459 end; /* of ssf case */ 1460 1461 call terminate_file_ (seg_ptr, (0), TERMINATE_SEG, (0)); 1462 /* done with segment */ 1463 seg_ptr = null; 1464 if error_code ^= 0 1465 then 1466 do; 1467 had_err = "1"b; 1468 call com_err_ (error_code, "print", "^a", 1469 pathname_ (dirname, ename)); 1470 end; 1471 1472 return; /* Normal exit from PRINT_ONE_ENTRYNAME */ 1473 1474 /* ------------------------------------------------------- */ 1475 1476 RESET: 1477 proc; 1478 1479 sws1.print_heading_first = sws.want_heading;/* treat archive elements as single files */ 1480 /* clear items not to be carried from one file to next */ 1481 pci.level, pci.pos, pci.slew_residue, pci.sav_pos, pci.esc_state, 1482 pci.esc_num = 0; 1483 pci.temp, sws1.found_first, sws1.found_last = "0"b; 1484 page_number, pci.line = 1; 1485 line_count = 0; 1486 slew = NL; 1487 end RESET; 1488 1489 /* ------------------------------------------------------- */ 1490 1491 COUNT_LINES: /* count lines in a segment */ 1492 proc (seg, last_seg, lines, found_to); 1493 1494 /* PARAMETERS */ 1495 1496 dcl seg char (*); 1497 dcl last_seg bit (1); 1498 dcl lines fixed bin; 1499 dcl found_to bit (1); 1500 1501 /* LOCAL */ 1502 1503 dcl c fixed bin (35), 1504 char_index fixed bin (21); 1505 1506 char_index = 0; 1507 lines = 0; 1508 1509 do while (char_index < seg_charct); 1510 line_length = index (substr (seg, char_index + 1), NL); 1511 if line_length > 0 1512 then lines = lines + 1; 1513 else 1514 do; /* Last line of seg does */ 1515 if last_seg 1516 then /* NOT end with NL. Count */ 1517 lines = lines + 1; /* it if no more MSF comps.*/ 1518 line_length = length (substr (seg, char_index + 1)); 1519 end; 1520 1521 if to_regexpr_len > 0 /* using regexpr for to? */ 1522 then 1523 do; 1524 call search_file_ (to_regexpr_ptr, 2, to_regexpr_len, addr (seg), 1525 char_index + 1, char_index + line_length, 0, 0, c); 1526 if c = 0 1527 then 1528 do; 1529 found_to = "1"b; 1530 if substr (seg, char_index + line_length, length (NL)) 1531 ^= NL 1532 then /* if last line of segment */ 1533 lines = lines + 1; /* matches /RE/, but does */ 1534 return; /* not end with NL, count */ 1535 end; /* this line. */ 1536 end; 1537 char_index = char_index + line_length; 1538 end; 1539 1540 end COUNT_LINES; 1541 1542 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 1543 1544 /* This subroutine does the actual printing. 1545* It deals with one segment at a time, which may be either an SSF, 1546* one component of a MSF, or an archive element. */ 1547 1548 PRINT_ONE_SEG: 1549 proc (segment); 1550 1551 dcl segment char (*); /* seg to be printed */ 1552 1553 dcl char_index fixed bin (21); /* index of last char used */ 1554 dcl line_count_this_page fixed bin; /* lines per page, for paging */ 1555 dcl line_length fixed bin (21); /* length of one line */ 1556 dcl print_this_line bit (1); 1557 dcl region_begin fixed bin (21); /* char_index at sws1.found_first */ 1558 dcl seg_ptr ptr; /* -> seg to be printed */ 1559 dcl segarray (seg_charct) char (1) based (seg_ptr); 1560 1561 seg_ptr = addr (segment); 1562 1563 char_index, line_count_this_page = 0; 1564 1565 if (sws.print_quick_way & sws.one_iox_call) /* Print whole segment */ 1566 then /* without from/to */ 1567 PRINT_QUICK_WAY: /* tests, etc */ 1568 do; 1569 if sws.pause_before_print 1570 then call PAUSE; 1571 1572 call PRINT_HEAD; 1573 call PRINT_STRING (seg_ptr, seg_charct); 1574 ever_printed = "1"b; 1575 return; /* Normal exit, easy case */ 1576 end PRINT_QUICK_WAY; 1577 1578 PRINT_SEG: /* loop through lines of */ 1579 do while (char_index < seg_charct & ^sws1.found_last); 1580 /* segment, printing those*/ 1581 /* that pass tests. */ 1582 line_length = index (substr (segment, char_index + 1), NL); 1583 if line_length = 0 /* no EOL, take the rest */ 1584 then line_length = length (substr (segment, char_index + 1)); 1585 1586 call PRINT_ONE_LINE (); 1587 line_number = line_number + 1; 1588 1589 end PRINT_SEG; 1590 1591 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1592 /* */ 1593 /* If file doesn't end with a NP character as its very last character, then we must */ 1594 /* output final NP when paging. This is ONLY done for last component of MSF, not for */ 1595 /* earlier components. */ 1596 /* */ 1597 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1598 1599 if (seg_type ^= MSF_COMP | sws1.last_msf_component) 1600 & 1601 ^(pci.line = 1 & pci.pos = 0 & pci.level = 0 & pci.slew_residue = 0) 1602 then /* This tests for file not */ 1603 do; /* ending with NP. */ 1604 1605 if pci.pos > 0 | pci.slew_residue = -1 1606 then /* If file doesn't end */ 1607 do; /* with a NL, NP or VT, */ 1608 slew = NL; /* force NL to be present. */ 1609 call SLEW (); 1610 end; 1611 1612 if sws.paging /* When paging, end file */ 1613 then /* with a NP char. */ 1614 do; 1615 slew = NP; 1616 call SLEW (); 1617 end; 1618 end; 1619 1620 return; /* Normal exit, medium and hard cases */ 1621 1622 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 1623 1624 /* This routine is used if we are printing one line at a time. 1625* It knows how to mess with the insides of the line */ 1626 1627 PRINT_ONE_LINE: 1628 proc; 1629 1630 print_this_line = "1"b; 1631 1632 call CHECK_FROM_LINE (); /* Check -from/-to line. */ 1633 if print_this_line 1634 then call CHECK_TO_LINE (); 1635 if print_this_line 1636 then print_this_line = MATCH_EXCLUDE (); 1637 1638 if print_this_line 1639 then /* check page boundaries. */ 1640 if sws.to_page_given 1641 then if page_number > to_page 1642 then 1643 do; 1644 sws1.found_last = "1"b; 1645 return; 1646 end; 1647 1648 if print_this_line & (page_number >= from_page) 1649 then 1650 do; 1651 if sws.pause_before_print & ^sws1.paused 1652 then 1653 do; 1654 call PAUSE; 1655 sws1.paused = "1"b; 1656 end; 1657 1658 call PRINT_HEAD; /* Print heading before 1st line of file. */ 1659 ever_found_page = "1"b; 1660 ever_printed = "1"b; 1661 end; 1662 else print_this_line = "0"b; 1663 1664 if sws.print_quick_way 1665 then 1666 do; 1667 if print_this_line 1668 then call PROCESS_LINE_VIA_IOX (addr (segarray (char_index + 1)), 1669 line_length); 1670 1671 end; 1672 else 1673 do; 1674 if ^sws.no_vertsp /* prt_conv_ converts VT */ 1675 then /* to some number of NLs. */ 1676 do; /* In vertsp mode, we */ 1677 vt_length = /* want VT itself to be */ 1678 index (substr (segment, char_index + 1, line_length), VT) 1679 ; 1680 do while (vt_length > 0); /* output. Special-case VT*/ 1681 call /* in this code. */ 1682 PROCESS_LINE_VIA_PRT_CONV ( 1683 addr (segarray (char_index + 1)), vt_length, 1684 print_this_line, "0"b, "1"b); 1685 char_index = char_index + vt_length; 1686 line_length = line_length - vt_length; 1687 vt_length = 1688 index (substr (segment, char_index + 1, line_length), 1689 VT); 1690 end; /* do while (vt_length) */ 1691 end; /* if ^sws.no_vertsp */ 1692 1693 call /* Call prt_conv_ on line */ 1694 PROCESS_LINE_VIA_PRT_CONV (addr (segarray (char_index + 1)), 1695 line_length, print_this_line, "0"b, "0"b); 1696 end; /* else do */ 1697 1698 char_index = char_index + line_length; 1699 1700 if forcount > 0 1701 then 1702 do; /* forcount and line_count */ 1703 if line_count >= forcount 1704 then 1705 do; /* must be check here after */ 1706 sws1.found_last = "1"b; /* printing each line. */ 1707 seg_charct = char_index + line_length; 1708 end; 1709 end; 1710 1711 end PRINT_ONE_LINE; 1712 1713 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 1714 1715 CHECK_FROM_LINE: 1716 proc; 1717 1718 dcl c fixed bin (35); 1719 1720 region_begin = char_index; 1721 if sws1.found_first 1722 then return; 1723 1724 if from_regexpr_len > 0 1725 then 1726 do; 1727 call search_file_ (from_regexpr_ptr, 2, from_regexpr_len, 1728 addr (segment), char_index + 1, char_index + line_length, 0, 0, 1729 c); 1730 if c = 0 1731 then 1732 do; 1733 ever_found_from, sws1.found_first = "1"b; 1734 from_line = line_number; 1735 end; 1736 else print_this_line = "0"b; 1737 end; 1738 else if line_number >= from_line 1739 then ever_found_from, sws1.found_first = "1"b; 1740 else print_this_line = "0"b; 1741 1742 end CHECK_FROM_LINE; 1743 1744 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 1745 1746 CHECK_TO_LINE: 1747 proc; 1748 1749 dcl c fixed bin (35); 1750 1751 if ^sws.to_line_given & (forcount = 0) 1752 then return; 1753 1754 if to_regexpr_len > 0 /* need regexpr for to? */ 1755 then 1756 do; 1757 call search_file_ (to_regexpr_ptr, 2, to_regexpr_len, 1758 addr (segment), char_index + 1, char_index + line_length, 0, 0, 1759 c); 1760 if c = 0 1761 then 1762 do; 1763 sws1.found_last = "1"b; 1764 seg_charct = char_index + line_length; 1765 end; 1766 end; 1767 1768 else if to_line > 0 1769 then 1770 do; 1771 if line_number >= to_line 1772 then 1773 do; 1774 if substr (segment, char_index + line_length, 1) = NL 1775 then 1776 do; 1777 sws1.found_last = "1"b; 1778 seg_charct = char_index + line_length; 1779 end; 1780 end; 1781 end; 1782 1783 end CHECK_TO_LINE; 1784 1785 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 1786 1787 LINENO_AND_INDENT: 1788 proc (strike_level, chars_for_line); 1789 1790 dcl strike_level fixed bin, 1791 chars_for_line fixed bin (21); 1792 1793 if last_slew = "" 1794 then 1795 do; 1796 last_line_number = line_number; 1797 last_slew = slew; 1798 return; 1799 end; 1800 1801 if sws.want_line_numbers 1802 then if strike_level = 0 & last_slew ^= CR 1803 then if line_number ^= last_line_number 1804 then call ioa_$ioa_switch_nnl (out_switch, "^8i ", line_number) 1805 ; 1806 else call ioa_$ioa_switch_nnl (out_switch, "^8i+ ", line_number) 1807 ; 1808 else call ioa_$ioa_switch_nnl (out_switch, "^-"); 1809 last_line_number = line_number; 1810 last_slew = slew; 1811 1812 if indentation > 0 & chars_for_line > 0 /* Indent? */ 1813 then call PRINT_STRING (addr (indent_string), indentation); 1814 1815 end LINENO_AND_INDENT; 1816 1817 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 1818 1819 /* This subroutine checks if the current line is printable in the presence 1820* of the control args -match and -exclude */ 1821 1822 MATCH_EXCLUDE: 1823 proc returns (bit (1)); 1824 1825 dcl jj fixed bin; 1826 dcl c fixed bin (35); 1827 dcl srchp ptr, 1828 srchl fixed bin (21); 1829 dcl srch char (srchl) based (srchp); 1830 dcl (matched, excluded) bit (1); 1831 1832 if ^sws.check_lines 1833 then return ("1"b); 1834 1835 matched = "0"b; 1836 do jj = 1 to match_string_count while (^matched); 1837 srchp = match_string_ptr (jj); 1838 srchl = match_string_len (jj); 1839 1840 if srchl > 2 & index (srch, "/") = 1 & index (reverse (srch), "/") = 1 1841 then 1842 do; 1843 call search_file_ (srchp, 2, srchl - 2, addr (segment), 1844 char_index + 1, char_index + line_length, 0, 0, c); 1845 if c = 0 1846 then matched = "1"b; 1847 end; 1848 1849 else if index (substr (segment, char_index + 1, line_length), srch) 1850 ^= 0 1851 then matched = "1"b; 1852 end; 1853 1854 if match_string_count > 0 & ^matched 1855 then return ("0"b); 1856 1857 excluded = "0"b; 1858 do jj = 1 to exclude_string_count; 1859 srchp = exclude_string_ptr (jj); 1860 srchl = exclude_string_len (jj); 1861 1862 if srchl > 2 & index (srch, "/") = 1 & index (reverse (srch), "/") = 1 1863 then 1864 do; 1865 call search_file_ (srchp, 2, srchl - 2, addr (segment), 1866 char_index + 1, char_index + line_length, 0, 0, c); 1867 if c = 0 1868 then excluded = "1"b; 1869 end; 1870 1871 else if index (substr (segment, char_index + 1, line_length), srch) 1872 ^= 0 1873 then excluded = "1"b; 1874 end; 1875 1876 return (^excluded); 1877 1878 end MATCH_EXCLUDE; 1879 1880 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 1881 1882 PAUSE: 1883 proc; 1884 1885 dcl buffer char (256); 1886 1887 error_code = error_table_$long_record; 1888 do while (error_code = error_table_$long_record); 1889 /* This call skips one input line: i.e. pauses */ 1890 call iox_$get_line (iox_$user_input, addr (buffer), 256, (0), 1891 error_code); 1892 end; 1893 1894 call iox_$control (iox_$user_input, "resetread", null, (0)); 1895 1896 end PAUSE; 1897 1898 1899 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 1900 1901 /* Print the heading. Uglinesses of this output format are for compatibility 1902* with the old print. I don't like them either. */ 1903 1904 PRINT_HEAD: 1905 proc; 1906 1907 dcl date char (64) var, 1908 head_line char (250), 1909 head_line_len fixed bin (21); 1910 1911 if ^sws1.print_heading_first 1912 then return; 1913 1914 if sws1.doing_archive 1915 then 1916 do; /* New format */ 1917 date = date_time_$format ("date_time", ACI.time_modified, "", ""); 1918 call ioa_$rsnp ("^/^2-^a::^a^-^a^/", head_line, head_line_len, 1919 ename, ACI.name, date); 1920 end; 1921 1922 else 1923 do; 1924 date = date_time_$format ("date_time", clock (), "", ""); 1925 call ioa_$rsnp ("^/^2-^a^-^a^2/", head_line, head_line_len, ename, 1926 date); 1927 end; 1928 if sws.print_quick_way | sws.one_iox_call 1929 then call PRINT_STRING (addr (head_line), head_line_len); 1930 else 1931 do; 1932 call PROCESS_LINE_VIA_PRT_CONV (addr (head_line), head_line_len, 1933 "1"b, "1"b, "0"b); 1934 line_count = line_count - 1; /* After printed the heading, */ 1935 end; /* "line_count" must not be */ 1936 sws1.print_heading_first = "0"b; /* incremented by one. Avoid */ 1937 /* errors error when enters */ 1938 end PRINT_HEAD; /* print foo -for N -he -ind N */ 1939 1940 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 1941 1942 PRINT_STRING: 1943 proc (ptr, len); 1944 1945 dcl ptr ptr, 1946 len fixed bin (21); 1947 1948 call iox_$put_chars (out_switch, ptr, len, error_code); 1949 if error_code ^= 0 1950 then 1951 do; 1952 call com_err_ (error_code, "print", "Writing to switch ^a.", 1953 switch_name); 1954 go to RETURN; 1955 end; 1956 1957 end PRINT_STRING; 1958 1959 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 1960 1961 /* This routine processes line fragments where each */ 1962 /* fragment ends with a NL, VT, NP or CR. These are the */ 1963 /* slew characters needed to drive proper slew processing.*/ 1964 1965 PROCESS_LINE_VIA_IOX: 1966 proc (line_ptr_parm, line_len_parm); 1967 1968 dcl line_ptr_parm ptr, /* ptr to output line. */ 1969 line_len_parm fixed bin (21); /* length of output line. */ 1970 1971 dcl end_of_output_line fixed bin (21); /* location in line of */ 1972 /* VT, NL, or NP char. */ 1973 1974 dcl line_len fixed bin (21), 1975 line_ptr ptr, 1976 line char (line_len) based (line_ptr), 1977 line_array (line_len) char (1) based (line_ptr); 1978 1979 line_ptr = line_ptr_parm; /* copy, because we change */ 1980 line_len = line_len_parm; /* these values. */ 1981 1982 do while (line_len > 0); 1983 end_of_output_line = search (line, NLCRVTNP); 1984 if end_of_output_line > 0 1985 then 1986 do; 1987 slew = line_array (end_of_output_line); 1988 end_of_output_line = end_of_output_line - 1; 1989 end; /* remove slew char from */ 1990 /* end of output line. */ 1991 else 1992 do; 1993 slew = ""; 1994 end_of_output_line = length (line); 1995 end; 1996 1997 ever_found_page = "1"b; 1998 call LINENO_AND_INDENT (0, end_of_output_line); 1999 2000 if end_of_output_line ^= 0 2001 then call PRINT_STRING (addr (line), end_of_output_line); 2002 2003 call SLEW (); 2004 2005 if (end_of_output_line + 1) < line_len /* not at the end of the line*/ 2006 then line_ptr = addr (line_array (end_of_output_line + 2)); 2007 line_len = line_len - (end_of_output_line + 1); 2008 2009 end; 2010 2011 line_count = line_count + 1; 2012 2013 end PROCESS_LINE_VIA_IOX; 2014 2015 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 2016 2017 /* This routine calls prt_conv_ to process a single line. It may be called */ 2018 /* many times for lines which are overlength or contain overstrikes. */ 2019 /* HTs are converted to SP chars, VT to NLs (unless vertical_tab = "1"b), */ 2020 /* and NP to NLs. Overstriking is handling by using CR to overlay line */ 2021 /* images atop one another. */ 2022 2023 PROCESS_LINE_VIA_PRT_CONV: 2024 proc (line_ptr_parm, line_len_parm, print_this_line, header, vertical_tab); 2025 2026 dcl line_ptr_parm ptr, /* ptr to output line. */ 2027 line_len_parm fixed bin (21), /* length of output line. */ 2028 print_this_line bit (1), /* on if line passed all */ 2029 /* tests for printing */ 2030 /* except -from_page. We */ 2031 /* do -from_page test here */ 2032 /* since line may span */ 2033 /* pages */ 2034 header bit (1), /* on when printing header */ 2035 vertical_tab bit (1); /* on when line fragment */ 2036 /* ends with VT, not NL */ 2037 2038 dcl chars_done fixed bin (21); /* number of chars processed from line. */ 2039 dcl chars_for_line fixed bin (21); /* amount of output buffer to actually print */ 2040 dcl chars_to_do fixed bin (21); /* number of chars left on page */ 2041 dcl (saved_line_length, saved_rmarg) 2042 fixed bin; 2043 2044 dcl line_len fixed bin (21), 2045 line_ptr ptr, 2046 line char (line_len) based (line_ptr), 2047 line_array (line_len) char (1) based (line_ptr); 2048 2049 if header /* When printing header, */ 2050 then /* don't honor */ 2051 do; /* -line_length */ 2052 saved_line_length = pci.phys_line_length; 2053 pci.phys_line_length = length (output_buffer); 2054 saved_rmarg = pci.rmarg; 2055 pci.rmarg = length (output_buffer); 2056 end; 2057 2058 line_ptr = line_ptr_parm; /* copy, because we change */ 2059 line_len = line_len_parm; /* these values. */ 2060 2061 chars_to_do = length (line); /* loop, calling prt_conv_ */ 2062 do while (chars_to_do > 0 | pci.slew_residue > 0); 2063 line_count_this_page = pci.line; /* remember line count */ 2064 /* before output. SLEW uses*/ 2065 /* this. */ 2066 call prt_conv_ (addr (line), chars_to_do, addr (output_buffer), 2067 output_buffer_length, addr (pci)); 2068 chars_done = length (line) - chars_to_do; 2069 2070 if chars_done > 0 /* prevent subcriptrange */ 2071 /* (underflow) condition */ 2072 /* when a line contains */ 2073 /* BACK SPACES characters.*/ 2074 then line_ptr = addr (line_array (chars_done)); 2075 2076 slew = output_buffer_ch (output_buffer_length); 2077 2078 output_buffer_length = output_buffer_length - 1; 2079 /* remove slew char from */ 2080 /* end of output line. */ 2081 2082 if vertical_tab & slew = NL /* For VT mapped in NL */ 2083 then /* (rather than NP), */ 2084 do; /* change slew to VT and */ 2085 slew = VT; /* ignore prt_conv_ NLs. */ 2086 pci.slew_residue = 0; /* SLEW proc outputs VT. */ 2087 end; 2088 2089 if header /* Ignore -left_col and */ 2090 /* -right_col for header. */ 2091 then chars_for_line = output_buffer_length; 2092 else chars_for_line = 2093 min (right_col, output_buffer_length) - left_col + 1; 2094 2095 /* watch for negative character counts */ 2096 if chars_for_line < 0 2097 then chars_for_line = 0; 2098 2099 if print_this_line & (page_number >= from_page) 2100 then /* Do -from_page test, and */ 2101 do; /* print line if it passes */ 2102 ever_found_page = "1"b; 2103 if ^header 2104 then call LINENO_AND_INDENT (pci.level, chars_for_line); 2105 call PRINT_STRING (addr (output_buffer_ch (left_col)), 2106 chars_for_line); 2107 call SLEW (); 2108 end; /* if have not done yet */ 2109 if chars_done < line_len /* then always moves the */ 2110 then line_ptr = addr (line_array (2)); /* pointer to the NEXT */ 2111 line_len = line_len - chars_done; /* character in the line. */ 2112 /* Then update line_len by */ 2113 /* starting from the char */ 2114 /* pointed by the pointer */ 2115 /* to the remaining line. */ 2116 2117 if slew = NP /* After NP, redo the */ 2118 then /* -to_page test. */ 2119 do; 2120 page_number = page_number + 1; 2121 if sws.to_page_given 2122 then 2123 do; 2124 if page_number > to_page 2125 then 2126 do; 2127 sws1.found_last = "1"b; 2128 return; 2129 end; 2130 end; 2131 end; 2132 end; 2133 2134 if header /* After header, restore */ 2135 then /* -line_length info. */ 2136 do; 2137 pci.phys_line_length = saved_line_length; 2138 pci.rmarg = saved_rmarg; 2139 end; 2140 2141 line_count = line_count + 1; 2142 2143 end PROCESS_LINE_VIA_PRT_CONV; 2144 2145 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 2146 2147 SLEW: 2148 proc; 2149 2150 dcl needct fixed bin; 2151 2152 if slew = "" /* no slew */ 2153 then return; 2154 2155 if slew = CR 2156 then go to real_slew; 2157 2158 if slew = NP /* ejecting a page? */ 2159 then 2160 do; 2161 if sws.pause_after_page 2162 then 2163 do; 2164 call PRINT_STRING (addr (NL), 1); 2165 call PAUSE; 2166 end; 2167 else if ^sws.no_vertsp 2168 then goto real_slew; 2169 2170 else /* Compute lines needed */ 2171 do; 2172 needct = pci.phys_page_length - line_count_this_page + 1; 2173 call ioa_$ioa_switch_nnl (out_switch, "^v/", needct); 2174 line_count_this_page = 0; 2175 end; 2176 end; 2177 2178 else if slew = VT /* VT is never simulated */ 2179 then go to real_slew; /* by us. prt_conv_ does */ 2180 /* the simulation. */ 2181 2182 else /* NL slew. */ 2183 do; 2184 line_count_this_page = line_count_this_page + 1; 2185 real_slew: 2186 call PRINT_STRING (addr (slew), 1); 2187 end; 2188 2189 end SLEW; 2190 2191 end PRINT_ONE_SEG; 2192 2193 end PRINT_ONE_ENTRYNAME; 2194 2195 end; /* of begin block */ 2196 1 1 1 2 /* BEGIN INCLUDE FILE ... prt_conv_info.incl.pl1 */ 1 3 /* Modified: 12 September 1980 by G. Palter */ 1 4 1 5 1 6 /****^ HISTORY COMMENTS: 1 7* 1) change(87-05-10,Gilcrease), approve(87-07-31,MCR7686), 1 8* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 1 9* Add modes.line_nbrs, flags.(eol eof) bits for eor -nb. 1 10* END HISTORY COMMENTS */ 1 11 1 12 1 13 dcl pcip ptr; /* pointer to conversion info structure */ 1 14 1 15 dcl 1 pci based (pcip) aligned, /* printer conversion info structure */ 1 16 2 cv_proc ptr, /* pointer to character conversion procedure */ 1 17 2 lmarg fixed bin, /* left margin indentation */ 1 18 2 rmarg fixed bin, /* right margin limit */ 1 19 2 page_length fixed bin, /* number of lines on page */ 1 20 2 phys_line_length fixed bin, /* physical width of paper */ 1 21 2 phys_page_length fixed bin, /* physical length of paper */ 1 22 2 lpi fixed bin, /* lines per inch */ 1 23 2 sheets_per_page fixed bin, /* sheets of paper per logical page */ 1 24 2 line_count fixed bin, /* count of converted lines */ 1 25 2 page_count fixed bin, /* count of converted pages */ 1 26 2 func fixed bin, /* special conversion function */ 1 27 /* 0 => normal conversion */ 1 28 /* 1 => change NL to FF */ 1 29 /* 2 => change NL to top inside page */ 1 30 /* 3 => change NL to end of page */ 1 31 /* 4 => change NL to top of outside page */ 1 32 (2 modes, /* conversion modes */ 1 33 3 overflow_off bit (1), /* "1"b to suppress end of page overflow */ 1 34 3 single_space bit (1), /* "1"b to change all forms advance chars to NL */ 1 35 3 non_edited bit (1), /* "1"b to print ASCII control chars */ 1 36 3 truncate bit (1), /* "1"b to truncate lines that are too long */ 1 37 3 esc bit (1), /* "1"b to process ESC character */ 1 38 3 ctl_char bit (1), /* "1"b to output control characters */ 1 39 3 line_nbrs bit (1), /* "1"b to output line numbers */ 1 40 3 pci_pad bit (5), 1 41 2 flags, /* flags internal to prt_conv_ */ 1 42 3 ignore_next_ff bit (1), /* ON => prt_conv_ just output a FF; ignore next character if 1 43* it's a FF */ 1 44 3 eol bit (1), /* "1"b = end-of-line encountered */ 1 45 3 eof bit (1), /* "1"b = end-of-segment encountered */ 1 46 3 flags_pad bit (3), 1 47 2 coroutine_modes, 1 48 3 upper_case bit(1), /* "1"b to convert to upper case */ 1 49 3 ht bit(1), /* "1"b to skip tab conversion */ 1 50 3 coroutine_pad bit(13), 1 51 3 slew_table_idx bit(3) ) unal, /* slew table index */ 1 52 2 top_label_line char (136), /* contains an optional top of page label */ 1 53 2 bot_label_line char (136), /* contains an optional bottom of page label */ 1 54 2 top_label_length fixed bin, /* length of top label line */ 1 55 2 bot_label_length fixed bin, /* length of bottom label line */ 1 56 2 form_stops (256) unal, /* logical form stops */ 1 57 3 lbits bit (9), /* leftmost bits */ 1 58 3 rbits bit (9), /* rightmost bits */ 1 59 1 60 /* The following items are for internal use by the print conversion procedure. 1 61* They should be zeroed once and then never referenced again. */ 1 62 1 63 2 level fixed bin, /* overstrike level */ 1 64 2 pos fixed bin, /* print position at end of incomplete line */ 1 65 2 line fixed bin, /* current line number */ 1 66 2 slew_residue fixed bin, /* number of lines remaining to be slewed */ 1 67 2 label_nelem fixed bin, /* characters remaining in label */ 1 68 2 label_wksp ptr, /* pointer to label being processed */ 1 69 2 sav_pos fixed bin, /* position saved during label processing */ 1 70 2 esc_state fixed bin, /* state of ESC processing */ 1 71 2 esc_num fixed bin, /* number following ESC sequence */ 1 72 2 temp bit (36); /* conversion proc temporary */ 1 73 1 74 /* End of include file ...... prt_conv_info.incl.pl1 */ 1 75 2197 2198 2199 dcl 1 PCI like pci aligned; 2200 2 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 2 2 2 3 /* This include file contains structures for the hcs_$star_, 2 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 2 5* 2 6* Written 23 October 1978 by Monte Davidoff. 2 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 2 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 2 9**/ 2 10 2 11 /* automatic */ 2 12 2 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 2 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 2 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 2 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 2 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 2 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 2 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 2 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 2 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 2 22 2 23 /* based */ 2 24 2 25 /* hcs_$star_ entry structure */ 2 26 2 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 2 28 2 type fixed binary (2) unsigned unaligned, 2 29 /* storage system type */ 2 30 2 nnames fixed binary (16) unsigned unaligned, 2 31 /* number of names of entry that match star_name */ 2 32 2 nindex fixed binary (18) unsigned unaligned; 2 33 /* index of first name in star_names */ 2 34 2 35 /* hcs_$star_ name structure */ 2 36 2 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 2 38 2 39 /* hcs_$star_list_ branch structure */ 2 40 2 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 2 42 2 type fixed binary (2) unsigned unaligned, 2 43 /* storage system type */ 2 44 2 nnames fixed binary (16) unsigned unaligned, 2 45 /* number of names of entry that match star_name */ 2 46 2 nindex fixed binary (18) unsigned unaligned, 2 47 /* index of first name in star_list_names */ 2 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 2 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 2 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 2 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 2 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 2 53 2 pad bit (7) unaligned, 2 54 2 records fixed binary (18) unsigned unaligned; 2 55 /* records used by branch */ 2 56 2 57 /* hcs_$star_dir_list_ branch structure */ 2 58 2 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 2 60 2 type fixed binary (2) unsigned unaligned, 2 61 /* storage system type */ 2 62 2 nnames fixed binary (16) unsigned unaligned, 2 63 /* number of names of entry that match star_name */ 2 64 2 nindex fixed binary (18) unsigned unaligned, 2 65 /* index of first name in star_list_names */ 2 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 2 67 2 pad bit (36) unaligned, 2 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 2 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 2 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 2 71 2 bit_count fixed binary (24) unaligned; 2 72 /* bit count of the branch */ 2 73 2 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 2 75 2 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 2 77 2 type fixed binary (2) unsigned unaligned, 2 78 /* storage system type */ 2 79 2 nnames fixed binary (16) unsigned unaligned, 2 80 /* number of names of entry that match star_name */ 2 81 2 nindex fixed binary (18) unsigned unaligned, 2 82 /* index of first name in star_list_names */ 2 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 2 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 2 85 2 pathname_len fixed binary (18) unsigned unaligned, 2 86 /* length of the pathname of the link */ 2 87 2 pathname_index fixed binary (18) unsigned unaligned; 2 88 /* index of start of pathname in star_list_names */ 2 89 2 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 2 91 2 92 declare star_list_names char (32) based (star_list_names_ptr) 2 93 dimension (star_links (star_branch_count + star_link_count).nindex 2 94 + star_links (star_branch_count + star_link_count).nnames 2 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 2 96 * binary ( 2 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 2 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 2 99 2 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 2 101 2 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 2 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 2 104 2 105 /* internal static */ 2 106 2 107 /* star_select_sw values */ 2 108 2 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 2 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 2 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 2 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 2 113 fixed binary (3) internal static options (constant) initial (5); 2 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 2 115 fixed binary (3) internal static options (constant) initial (7); 2 116 2 117 /* storage system types */ 2 118 2 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 2 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 2 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 2 122 2 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 2201 2202 3 1 /* BEGIN INCLUDE FILE ... archive_component_info.incl.pl1 ... WOS 01/13/81 */ 3 2 /* Structure describing an archive component, used by archive_ */ 3 3 3 4 dcl archive_component_info_ptr pointer; 3 5 3 6 dcl 1 archive_component_info aligned based (archive_component_info_ptr), 3 7 2 version fixed bin, 3 8 2 comp_bc fixed bin (24), 3 9 2 comp_ptr pointer, 3 10 2 name char (32) unaligned, 3 11 2 time_modified fixed bin (71), 3 12 2 time_updated fixed bin (71), 3 13 2 comp_lth fixed bin (19), 3 14 2 access bit (36) unaligned; 3 15 3 16 dcl ARCHIVE_COMPONENT_INFO_VERSION_1 fixed bin internal static options (constant) init (1); 3 17 3 18 /* BEGIN INCLUDE FILE ... archive_component_info.incl.pl1 ... WOS 01/13/81 */ 2203 2204 4 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 4 2* 4 3* Values for the "access mode" argument so often used in hardcore 4 4* James R. Davis 26 Jan 81 MCR 4844 4 5* Added constants for SM access 4/28/82 Jay Pattin 4 6* Added text strings 03/19/85 Chris Jones 4 7**/ 4 8 4 9 4 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 4 11 dcl ( 4 12 N_ACCESS init ("000"b), 4 13 R_ACCESS init ("100"b), 4 14 E_ACCESS init ("010"b), 4 15 W_ACCESS init ("001"b), 4 16 RE_ACCESS init ("110"b), 4 17 REW_ACCESS init ("111"b), 4 18 RW_ACCESS init ("101"b), 4 19 S_ACCESS init ("100"b), 4 20 M_ACCESS init ("010"b), 4 21 A_ACCESS init ("001"b), 4 22 SA_ACCESS init ("101"b), 4 23 SM_ACCESS init ("110"b), 4 24 SMA_ACCESS init ("111"b) 4 25 ) bit (3) internal static options (constant); 4 26 4 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 4 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 4 29 4 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 4 31 static options (constant); 4 32 4 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 4 34 static options (constant); 4 35 4 36 dcl ( 4 37 N_ACCESS_BIN init (00000b), 4 38 R_ACCESS_BIN init (01000b), 4 39 E_ACCESS_BIN init (00100b), 4 40 W_ACCESS_BIN init (00010b), 4 41 RW_ACCESS_BIN init (01010b), 4 42 RE_ACCESS_BIN init (01100b), 4 43 REW_ACCESS_BIN init (01110b), 4 44 S_ACCESS_BIN init (01000b), 4 45 M_ACCESS_BIN init (00010b), 4 46 A_ACCESS_BIN init (00001b), 4 47 SA_ACCESS_BIN init (01001b), 4 48 SM_ACCESS_BIN init (01010b), 4 49 SMA_ACCESS_BIN init (01011b) 4 50 ) fixed bin (5) internal static options (constant); 4 51 4 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 2205 2206 2207 end print; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 06/09/89 1255.2 print.pl1 >spec>install>1057>print.pl1 2197 1 02/04/88 2009.3 prt_conv_info.incl.pl1 >ldd>include>prt_conv_info.incl.pl1 2201 2 06/10/82 1045.5 star_structures.incl.pl1 >ldd>include>star_structures.incl.pl1 2203 3 04/16/81 0942.6 archive_component_info.incl.pl1 >ldd>include>archive_component_info.incl.pl1 2205 4 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.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. ACI 000102 automatic structure level 1 dcl 1159 set ref 1354 1354 ARCHIVE_COMPONENT_INFO_VERSION_1 constant fixed bin(17,0) initial dcl 3-16 ref 1350 ARCH_COMP constant fixed bin(17,0) initial dcl 1160 ref 1338 CR constant char(1) initial packed unaligned dcl 245 ref 1801 2155 FCB_ptr 000122 automatic pointer dcl 789 set ref 881* 1120 1120* 1126* 1245* 1264* 1292* 1320* LONGEST_SEARCH_FILE_REXP constant fixed bin(17,0) initial dcl 255 ref 716 719 MAX_BUFFER_LTH constant fixed bin(17,0) initial dcl 257 ref 295 302 626 626 637 639 642 1180 1181 MSF_COMP constant fixed bin(17,0) initial dcl 1160 ref 1244 1599 NL 000005 constant char(1) initial packed unaligned dcl 247 set ref 1305 1486 1510 1530 1530 1582 1608 1774 2082 2164 2164 NLCRVTNP 000004 constant char(4) initial packed unaligned dcl 249 ref 1983 NOSTAR 000000 constant fixed bin(35,0) initial level 2 dcl 259 ref 941 953 958 972 1339 NP constant char(1) initial packed unaligned dcl 251 ref 1615 2117 2158 NUL constant char(1) initial packed unaligned dcl 252 ref 1197 PCI 000160 automatic structure level 1 dcl 2199 set ref 298 299* R_ACCESS 000105 constant bit(3) initial packed unaligned dcl 4-11 set ref 1201* SEG constant fixed bin(17,0) initial dcl 1160 ref 1432 STAR 1 000000 constant fixed bin(35,0) initial level 2 dcl 259 ref 941 958 STARSTAR 2 000000 constant fixed bin(35,0) initial level 2 dcl 259 ref 941 958 TERMINATE_SEG 000003 constant bit(4) initial packed unaligned dcl 263 set ref 1123* 1461* VT constant char(1) initial packed unaligned dcl 254 ref 1677 1687 2085 2178 addr builtin function dcl 240 ref 298 1354 1354 1524 1524 1561 1667 1667 1681 1681 1693 1693 1727 1727 1757 1757 1812 1812 1843 1843 1865 1865 1890 1890 1928 1928 1932 1932 2000 2000 2005 2066 2066 2066 2066 2066 2066 2070 2105 2105 2109 2164 2164 2185 2185 answer 000541 automatic fixed bin(17,0) dcl 749 set ref 757* 758 764 arch_elem_wanted parameter char(32) packed unaligned dcl 1141 ref 1136 1328 1341 1347 archive_$next_component_info 000010 constant entry external dcl 181 ref 1354 archive_component_info based structure level 1 dcl 3-6 archive_element 000207 automatic char(32) packed unaligned dcl 793 set ref 931* 953 955* 964* 972* 1017* 1033 1039* 1039* archive_element_star_type 000220 automatic fixed bin(35,0) dcl 795 set ref 953* 955* 958 958 958 964* 1339 archive_elements_found 000221 automatic bit(1) packed unaligned dcl 797 set ref 970* 1033 1387* arg based char packed unaligned dcl 126 set ref 336 339* 370* 379 390 390 398* 406 406 410 414 417 424 431 431 431 434 434 441 441 444 444 447 447 450 450 457 457 460 460 467 467 470 470 477 477 480 480 483 483 486 489 492 502 502 512 512 515 518 521 521 529* 533* 537 543* 681 688* 693* 701 701 712* 719* 731* 736* 751 757* 812 821 821 833* 843 843 846 853 853 865* 876 876 897* 901 904 904 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 931* arg_len 000100 automatic fixed bin(21,0) dcl 127 set ref 326* 336 339 339 370 370 379 390 390 398 398 406 406 410 414 417 424 431 431 431 434 434 441 441 444 444 447 447 450 450 457 457 460 460 467 467 470 470 477 477 480 480 483 483 486 489 492 502 502 512 512 515 518 521 521 525* 529 529 533 533 537 543 543 681 684* 688 688 693 693 701 701 701 705 707 707* 712 712 716 719 719 726 731 731 736 736 751 753* 757 757 807* 812 816* 821 821 821 826 828 828* 833 833 840 843 843 846 848* 853 853 853 858 860 860* 865 865 873 876 876 892* 897 897 901 904 904 908* 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 931 931 arg_list_ptr 000102 automatic pointer dcl 128 set ref 316* 684* 753* 807* 816* 848* 892* 908* arg_ptr 000104 automatic pointer dcl 129 set ref 326* 336 339 370 379 390 390 398 406 406 410 414 417 424 431 431 431 434 434 441 441 444 444 447 447 450 450 457 457 460 460 467 467 470 470 477 477 480 480 483 483 486 489 492 502 502 512 512 515 518 521 521 525* 529 533 537 543 681 684* 688 693 701 701 707* 707* 712 719 725 731 736 751 753* 757 807* 812 816* 821 821 828* 828* 833 839 843 843 846 848* 853 853 860* 860* 865 872 876 876 892* 897 901 904 904 908* 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 916 931 arg_token 000100 automatic varying char(6) dcl 772 set ref 846* 865* bitc 000124 automatic fixed bin(24,0) dcl 1165 set ref 1201* 1264* 1270 1292* 1299 1354* 1435 bot_label_line 57 based char(136) level 2 dcl 1-15 set ref 307* buffer 000706 automatic char(256) packed unaligned dcl 1885 set ref 1890 1890 bv_had parameter bit(1) packed unaligned dcl 671 set ref 668 690 699* bv_line parameter fixed bin(17,0) dcl 671 set ref 668 731* 732 bv_regexpr_len parameter fixed bin(21,0) dcl 671 set ref 668 726* bv_regexpr_ptr parameter pointer dcl 671 set ref 668 725* c 000106 automatic fixed bin(35,0) dcl 130 in procedure "pr" set ref 826* 828* 830 830 833* 858* 860* 862 862 865* c 000604 automatic fixed bin(35,0) dcl 1503 in procedure "COUNT_LINES" set ref 1524* 1526 c 000667 automatic fixed bin(35,0) dcl 1826 in procedure "MATCH_EXCLUDE" set ref 1843* 1845 1865* 1867 c 000640 automatic fixed bin(35,0) dcl 1718 in procedure "CHECK_FROM_LINE" set ref 1727* 1730 c 000650 automatic fixed bin(35,0) dcl 1749 in procedure "CHECK_TO_LINE" set ref 1757* 1760 char_index 000614 automatic fixed bin(21,0) dcl 1553 in procedure "PRINT_ONE_SEG" set ref 1563* 1578 1582 1583 1667 1667 1677 1681 1681 1685* 1685 1687 1693 1693 1698* 1698 1707 1720 1727 1727 1757 1757 1764 1774 1778 1843 1843 1849 1865 1865 1871 char_index 000605 automatic fixed bin(21,0) dcl 1503 in procedure "COUNT_LINES" set ref 1506* 1509 1510 1518 1524 1524 1530 1537* 1537 chars_done 001164 automatic fixed bin(21,0) dcl 2038 set ref 2068* 2070 2070 2109 2111 chars_for_line parameter fixed bin(21,0) dcl 1790 in procedure "LINENO_AND_INDENT" ref 1787 1812 chars_for_line 001165 automatic fixed bin(21,0) dcl 2039 in procedure "PROCESS_LINE_VIA_PRT_CONV" set ref 2089* 2092* 2096 2096* 2103* 2105* chars_to_do 001166 automatic fixed bin(21,0) dcl 2040 set ref 2061* 2062 2066* 2068 check_lines 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 620* 631 804 1832 check_star_name_$entry 000012 constant entry external dcl 184 ref 939 955 cleanup 000000 stack reference condition dcl 243 ref 884 clock builtin function dcl 240 ref 1924 1924 codeptr builtin function dcl 240 ref 300 com_err_ 000014 constant entry external dcl 185 ref 321 330 370 398 533 543 555 563 573 581 590 598 606 614 693 712 719 736 833 865 947 964 987 1039 1052 1056 1059 1062 1217 1315 1377 1468 1952 comp_bc 1 000102 automatic fixed bin(24,0) level 2 dcl 1159 set ref 1372 comp_ptr 000126 automatic pointer dcl 1166 set ref 1264* 1275 1292* 1303 1305 1349* 1354* 1359 1400 1417 component based char packed unaligned dcl 1168 set ref 1275* 1303* 1305 1400* 1417* ctl_char 14(05) based bit(1) level 3 packed packed unaligned dcl 1-15 set ref 303* cu_$arg_count 000016 constant entry external dcl 186 ref 317 cu_$arg_list_ptr 000020 constant entry external dcl 187 ref 316 cu_$arg_ptr 000022 constant entry external dcl 188 ref 326 525 cu_$arg_ptr_rel 000024 constant entry external dcl 190 ref 684 753 807 816 848 892 908 cv_dec_check_ 000026 constant entry external dcl 192 ref 339 688 731 757 897 cv_proc based pointer level 2 dcl 1-15 set ref 300* d 000274 automatic fixed bin(17,0) dcl 1076 set ref 1080* 1081 1082* 1082 1086 1087 1098 1100 date 001014 automatic varying char(64) dcl 1907 set ref 1917* 1918* 1924* 1925* date_time_$format 000030 constant entry external dcl 194 ref 1917 1924 dir_name 000125 automatic char(168) packed unaligned dcl 791 set ref 931* 972* 980* 987* 987* 1017* 1039* 1039* dirname parameter char(168) packed unaligned dcl 1139 set ref 1136 1201* 1206* 1217* 1217* 1245* 1315* 1315* 1377* 1377* 1468* 1468* divide builtin function dcl 240 ref 1082 1270 1299 1372 1435 doing_archive 000100 automatic bit(1) level 2 packed packed unaligned dcl 1145 set ref 1198* 1328* 1335 1914 dont_want_archive 0(01) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 480* 483* 1328 ec1 000130 automatic fixed bin(35,0) dcl 1169 set ref 1206* 1208 1216 en_type parameter fixed bin(2,0) unsigned dcl 1142 ref 1136 1211 1233 ename parameter char(32) packed unaligned dcl 1140 set ref 1136 1201* 1206* 1217* 1217* 1245* 1315* 1315* 1328 1377* 1377* 1468* 1468* 1918* 1925* end_of_output_line 001152 automatic fixed bin(21,0) dcl 1971 set ref 1983* 1984 1987 1988* 1988 1994* 1998* 2000 2000* 2005 2005 2007 entry_name 000177 automatic char(32) packed unaligned dcl 792 set ref 931* 939* 947* 972* 980* 987* 987* 1039* 1039* entry_star_type 000217 automatic fixed bin(35,0) dcl 794 set ref 939* 941 941 941 947* 972 entry_type 000131 automatic fixed bin(2,0) dcl 1170 set ref 1206* 1225 error_code 000107 automatic fixed bin(35,0) dcl 131 in procedure "pr" set ref 317* 318 321* 326* 327 330* 339* 341 350* 525* 526 529* 530 533* 542* 543* 684* 685 688* 693 705* 707* 709 709 712* 731* 732 735* 736* 753* 754 757* 758 761* 807* 809 816* 818 848* 850 892* 894 897* 898 908* 910 931* 934 980* 984 987* 1037* 1039* error_code 000132 automatic fixed bin(35,0) dcl 1171 in procedure "PRINT_ONE_ENTRYNAME" set ref 1201* 1216* 1217* 1235* 1245* 1246 1264* 1267 1292* 1294 1300* 1310 1315* 1327* 1353 1354* 1356 1364* 1366 1366* 1458* 1464 1468* 1887* 1888 1890* 1948* 1949 1952* error_table_$bad_conversion 000110 external static fixed bin(35,0) dcl 266 ref 350 735 761 error_table_$badopt 000112 external static fixed bin(35,0) dcl 268 ref 542 error_table_$dirseg 000114 external static fixed bin(35,0) dcl 269 ref 1235 error_table_$inconsistent 000116 external static fixed bin(35,0) dcl 270 set ref 370* 563* 573* 581* 590* 598* 606* 693* error_table_$long_record 000120 external static fixed bin(35,0) dcl 272 ref 1887 1888 error_table_$no_component 000124 external static fixed bin(35,0) dcl 275 ref 1037 error_table_$noarg 000122 external static fixed bin(35,0) dcl 274 set ref 398* 555* error_table_$nomatch 000126 external static fixed bin(35,0) dcl 277 ref 709 830 862 error_table_$regexp_undefined 000130 external static fixed bin(35,0) dcl 278 ref 705 826 858 error_table_$zero_length_seg 000132 external static fixed bin(35,0) dcl 280 set ref 1300 1377* 1458 esc_num 334 based fixed bin(17,0) level 2 dcl 1-15 set ref 1481* esc_state 333 based fixed bin(17,0) level 2 dcl 1-15 set ref 1481* ever_found_from 000115 automatic bit(1) packed unaligned dcl 786 set ref 801* 1052 1733* 1738* ever_found_page 000116 automatic bit(1) packed unaligned dcl 787 set ref 801* 1059 1659* 1997* 2102* ever_had_err 000114 automatic bit(1) packed unaligned dcl 785 set ref 801* 1045* 1049 1065 ever_printed 000113 automatic bit(1) packed unaligned dcl 784 set ref 801* 1049 1574* 1660* exclude_arg_count 000110 automatic fixed bin(17,0) dcl 132 set ref 292* 509* 509 620 663* 663 781 782 exclude_string_count 000112 automatic fixed bin(17,0) dcl 783 set ref 802* 871* 871 872 873 1858 exclude_string_len 000112 automatic fixed bin(21,0) array dcl 782 set ref 873* 1860 exclude_string_ptr 000112 automatic pointer array dcl 781 set ref 872* 1859 excluded 000674 automatic bit(1) packed unaligned dcl 1830 set ref 1857* 1867* 1871* 1876 expand_pathname_$component 000032 constant entry external dcl 196 ref 931 forcount 000111 automatic fixed bin(17,0) dcl 133 set ref 292* 414* 631 1700 1703 1751 found_first 0(01) 000100 automatic bit(1) level 2 packed packed unaligned dcl 1145 set ref 1483* 1721 1733* 1738* found_last 0(02) 000100 automatic bit(1) level 2 packed packed unaligned dcl 1145 set ref 1289 1483* 1578 1644* 1706* 1763* 1777* 2127* found_to parameter bit(1) packed unaligned dcl 1499 in procedure "COUNT_LINES" set ref 1491 1529* found_to 0(03) 000100 automatic bit(1) level 2 in structure "sws1" packed packed unaligned dcl 1145 in procedure "PRINT_ONE_ENTRYNAME" set ref 1198* 1261 1275* 1400* 1446* from_line 000112 automatic fixed bin(17,0) dcl 134 set ref 290* 357* 406* 586 590* 1056* 1254* 1256* 1279* 1279 1282* 1282 1393* 1400* 1403* 1403 1442* 1446* 1448* 1448 1734* 1738 from_line_given 0(02) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 354 358* 406* 569 578 586 631 1052 from_page 000113 automatic fixed bin(17,0) dcl 135 set ref 290* 421* 595 598* 1059* 1648 2099 from_page_given 0(03) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 420* 569 595 622 631 1059 from_regexpr based char packed unaligned dcl 136 set ref 1052* from_regexpr_len 000114 automatic fixed bin(21,0) dcl 138 set ref 292* 406* 586 1052 1052 1052 1724 1727* from_regexpr_ptr 000116 automatic pointer dcl 139 set ref 406* 1052 1727* get_system_free_area_ 000034 constant entry external dcl 199 ref 880 had_an_arg 0(04) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 374* 388* 653 had_err 000124 automatic bit(1) packed unaligned dcl 790 set ref 891* 946* 963* 991* 1033 1036* 1045 1220* 1314* 1382* 1467* hcs_$star_ 000036 constant entry external dcl 200 ref 980 hcs_$status_minf 000040 constant entry external dcl 202 ref 1206 head_line 001035 automatic char(250) packed unaligned dcl 1907 set ref 1918* 1925* 1928 1928 1932 1932 head_line_len 001134 automatic fixed bin(21,0) dcl 1907 set ref 1918* 1925* 1928* 1932* header parameter bit(1) packed unaligned dcl 2026 ref 2023 2049 2089 2103 2134 iarg 000120 automatic fixed bin(17,0) dcl 140 set ref 325* 326* 330* 393* 393 395 495 498* 498 505 508* 508 524* 524 525* 678 682* 682 684* 752* 752 753* 804* 807* 815* 815 816* 847* 847 848* 876* 876* 890* 892* 907* 907 908* 916* 916* indent_string 000133 automatic char initial packed unaligned dcl 1172 set ref 1172* 1812 1812 indentation 000121 automatic fixed bin(21,0) dcl 141 set ref 292* 431* 626 631 1172 1812 1812* index builtin function dcl 240 ref 336 701 701 821 821 853 853 901 1328 1510 1582 1677 1687 1840 1840 1849 1862 1862 1871 initiate_file_ 000042 constant entry external dcl 204 ref 1201 input_path_count 000122 automatic fixed bin(17,0) dcl 142 set ref 292* 344 379* 379 381* 381 403* 403 552 653 656 886* 898 937* 937 ioa_$ioa_switch 000044 constant entry external dcl 206 ref 1065 ioa_$ioa_switch_nnl 000046 constant entry external dcl 207 ref 1801 1806 1808 2173 ioa_$rsnp 000050 constant entry external dcl 208 ref 1918 1925 iox_$control 000052 constant entry external dcl 209 ref 1193 1412 1894 iox_$get_line 000054 constant entry external dcl 210 ref 1890 iox_$look_iocb 000056 constant entry external dcl 212 ref 529 iox_$put_chars 000060 constant entry external dcl 213 ref 1948 iox_$user_input 000134 external static pointer dcl 282 set ref 1890* 1894* iox_$user_output 000136 external static pointer dcl 283 ref 312 jj 000666 automatic fixed bin(17,0) dcl 1825 set ref 1836* 1837 1838* 1858* 1859 1860* junk 000123 automatic fixed bin(17,0) dcl 143 set ref 339* 347 357 364 688* 693* 897* label_nelem 327 based fixed bin(17,0) level 2 dcl 1-15 set ref 310* label_wksp 330 based pointer level 2 dcl 1-15 set ref 309* last_count 000124 automatic fixed bin(17,0) dcl 144 set ref 296* 438* 1256 1282 1393 1403 1442 1448 last_given 0(05) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 437* 578 631 1052 1251 1389 1439 last_line_number 000133 automatic fixed bin(17,0) dcl 1173 set ref 1196* 1796* 1801 1809* last_msf_component 0(04) 000100 automatic bit(1) level 2 packed packed unaligned dcl 1145 set ref 1199* 1297* 1305 1599 last_seg parameter bit(1) packed unaligned dcl 1497 ref 1491 1515 last_slew 000135 automatic char(1) packed unaligned dcl 1175 set ref 1197* 1793 1797* 1801 1810* left_col 000125 automatic fixed bin(17,0) dcl 145 set ref 296* 441* 603 606* 626 2092 2105 2105 len parameter fixed bin(21,0) dcl 1945 set ref 1942 1948* length builtin function dcl 240 ref 1518 1530 1583 1994 2053 2055 2061 2068 level 323 based fixed bin(17,0) level 2 dcl 1-15 set ref 1481* 1599 2103* line 325 based fixed bin(17,0) level 2 in structure "pci" dcl 1-15 in procedure "pr" set ref 301* 1484* 1599 2063 line based char packed unaligned dcl 2044 in procedure "PROCESS_LINE_VIA_PRT_CONV" set ref 2061 2066 2066 2068 line based char packed unaligned dcl 1974 in procedure "PROCESS_LINE_VIA_IOX" set ref 1983 1994 2000 2000 line_array based char(1) array packed unaligned dcl 2044 in procedure "PROCESS_LINE_VIA_PRT_CONV" set ref 2070 2109 line_array based char(1) array packed unaligned dcl 1974 in procedure "PROCESS_LINE_VIA_IOX" set ref 1987 2005 line_count 000134 automatic fixed bin(17,0) dcl 1174 set ref 1275* 1279 1485* 1703 1934* 1934 2011* 2011 2141* 2141 line_count_this_page 000615 automatic fixed bin(17,0) dcl 1554 set ref 1563* 2063* 2172 2174* 2184* 2184 line_len 001171 automatic fixed bin(21,0) dcl 2044 in procedure "PROCESS_LINE_VIA_PRT_CONV" set ref 2059* 2061 2066 2066 2068 2109 2111* 2111 line_len 001153 automatic fixed bin(21,0) dcl 1974 in procedure "PROCESS_LINE_VIA_IOX" set ref 1980* 1982 1983 1994 2000 2000 2005 2007* 2007 line_len_parm parameter fixed bin(21,0) dcl 1968 in procedure "PROCESS_LINE_VIA_IOX" ref 1965 1980 line_len_parm parameter fixed bin(21,0) dcl 2026 in procedure "PROCESS_LINE_VIA_PRT_CONV" ref 2023 2059 line_length 000616 automatic fixed bin(21,0) dcl 1555 in procedure "PRINT_ONE_SEG" set ref 1582* 1583 1583* 1667* 1677 1686* 1686 1687 1693* 1698 1707 1727 1757 1764 1774 1778 1843 1849 1865 1871 line_length 000136 automatic fixed bin(21,0) dcl 1176 in procedure "PRINT_ONE_ENTRYNAME" set ref 1510* 1511 1518* 1524 1530 1537 line_number 000137 automatic fixed bin(17,0) dcl 1177 set ref 1286* 1305* 1305 1409* 1452* 1587* 1587 1734 1738 1771 1796 1801 1801* 1806* 1809 line_ptr 001172 automatic pointer dcl 2044 in procedure "PROCESS_LINE_VIA_PRT_CONV" set ref 2058* 2061 2066 2066 2068 2070* 2070 2109* 2109 line_ptr 001154 automatic pointer dcl 1974 in procedure "PROCESS_LINE_VIA_IOX" set ref 1979* 1983 1987 1994 2000 2000 2005* 2005 line_ptr_parm parameter pointer dcl 1968 in procedure "PROCESS_LINE_VIA_IOX" ref 1965 1979 line_ptr_parm parameter pointer dcl 2026 in procedure "PROCESS_LINE_VIA_PRT_CONV" ref 2023 2058 lines parameter fixed bin(17,0) dcl 1498 set ref 1491 1507* 1511* 1511 1515* 1515 1530* 1530 lpi 7 based fixed bin(17,0) level 2 dcl 1-15 set ref 304* match_arg_count 000126 automatic fixed bin(17,0) dcl 146 set ref 292* 499* 499 620 662* 662 778 779 match_star_name_ 000062 constant entry external dcl 215 ref 1364 match_string_count 000110 automatic fixed bin(17,0) dcl 780 set ref 802* 838* 838 839 840 1836 1854 match_string_len 000110 automatic fixed bin(21,0) array dcl 779 set ref 840* 1838 match_string_ptr 000110 automatic pointer array dcl 778 set ref 839* 1837 matched 000673 automatic bit(1) packed unaligned dcl 1830 set ref 1835* 1836 1845* 1849* 1854 max builtin function dcl 240 ref 662 663 1256 1282 1393 1403 1442 1448 min builtin function dcl 240 ref 637 2092 mod builtin function dcl 240 ref 626 modes 14 based structure level 2 packed packed unaligned dcl 1-15 more_in_archive 0(05) 000100 automatic bit(1) level 2 packed packed unaligned dcl 1145 set ref 1351* 1353 1359* 1419* msf_component 000140 automatic fixed bin(17,0) dcl 1178 set ref 1261* 1264* 1275* 1289* 1292* 1297* 1315* msf_component_count 000141 automatic fixed bin(24,0) dcl 1179 set ref 1206* 1230 1261 1275 1289 1297 msf_manager_$close 000064 constant entry external dcl 216 ref 1120 1320 msf_manager_$get_ptr 000066 constant entry external dcl 217 ref 1264 1292 msf_manager_$open 000070 constant entry external dcl 219 ref 1245 name 4 000102 automatic char(32) level 2 packed packed unaligned dcl 1159 set ref 1364* 1377* 1377* 1918* nargs 000127 automatic fixed bin(17,0) dcl 147 set ref 317* 325 395 495 505 678 804 890 needct 001202 automatic fixed bin(17,0) dcl 2150 set ref 2172* 2173* nindex 0(18) based fixed bin(18,0) array level 2 packed packed unsigned unaligned dcl 2-27 ref 1011 1087 1087 nnames 0(02) based fixed bin(16,0) array level 2 packed packed unsigned unaligned dcl 2-27 ref 1111 no_heading 0(06) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 474* 477* 659 no_vertsp 0(07) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 486* 489* 626 631 1674 2167 null builtin function dcl 240 ref 309 881 1111 1114 1117 1120 1123 1126 1193 1193 1203 1349 1359 1412 1412 1463 1894 1894 one_iox_call 0(08) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 631* 1565 1928 out_switch 000132 automatic pointer dcl 149 set ref 312* 529* 1065* 1193* 1412* 1801* 1806* 1808* 1948* 2173* output_buffer 000142 automatic char(1025) packed unaligned dcl 1180 set ref 2053 2055 2066 2066 2076 2076 2105 2105 2105 2105 output_buffer_ch defined char(1) array packed unaligned dcl 1181 set ref 2076 2105 2105 output_buffer_length 000543 automatic fixed bin(21,0) dcl 1183 set ref 2066* 2076 2078* 2078 2089 2092 output_buffer_size 000130 automatic fixed bin(17,0) dcl 148 set ref 637* 639 642 645 overflow_off 14 based bit(1) level 3 packed packed unaligned dcl 1-15 set ref 308* 454* page_length 4 based fixed bin(17,0) level 2 dcl 1-15 set ref 453* 622 647 647* page_number 000544 automatic fixed bin(17,0) dcl 1184 set ref 1484* 1638 1648 2099 2120* 2120 2124 paging 0(09) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 622* 626 1612 pathname_ 000072 constant entry external dcl 221 ref 987 987 1217 1217 1315 1315 1468 1468 pathname_$component 000074 constant entry external dcl 223 ref 1039 1039 1377 1377 pause_after_page 0(10) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 463* 559 563* 631 2161 pause_before_print 0(11) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 464* 467* 559 1569 1651 paused 0(08) 000100 automatic bit(1) level 2 packed packed unaligned dcl 1145 set ref 1198* 1287* 1410* 1453* 1651 1655* pci based structure level 1 dcl 1-15 set ref 2066 2066 pcip 000156 automatic pointer dcl 1-13 set ref 298* 300 301 302 303 304 305 306 307 308 309 310 447 453 454 457 611 622 622 626 637 642 642 645 647 647 650 650 1481 1481 1481 1481 1481 1481 1483 1484 1599 1599 1599 1599 1605 1605 2052 2053 2054 2055 2062 2063 2066 2066 2086 2103 2137 2138 2172 phys_line_length 5 based fixed bin(17,0) level 2 dcl 1-15 set ref 302* 447* 611 626 637 642 642* 2052 2053* 2137* phys_page_length 6 based fixed bin(17,0) level 2 dcl 1-15 set ref 457* 622 650 650* 2172 pos 324 based fixed bin(17,0) level 2 dcl 1-15 set ref 1481* 1599 1605 print_conv_$print_conv_ 000076 constant entry external dcl 225 ref 300 print_heading_first 0(06) 000100 automatic bit(1) level 2 packed packed unaligned dcl 1145 set ref 1479* 1911 1936* print_quick_way 0(12) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 626* 1565 1664 1928 print_this_line parameter bit(1) packed unaligned dcl 2026 in procedure "PROCESS_LINE_VIA_PRT_CONV" ref 2023 2099 print_this_line 000617 automatic bit(1) packed unaligned dcl 1556 in procedure "PRINT_ONE_SEG" set ref 1630* 1633 1635 1635* 1638 1648 1662* 1667 1681* 1693* 1736* 1740* print_trailing_nls 0(13) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 653* 1065 prt_conv_ 000100 constant entry external dcl 227 ref 2066 ptr parameter pointer dcl 1945 set ref 1942 1948* range_arg 000536 automatic varying char(6) dcl 676 set ref 681* 693* 712* 736* 751* region_begin 000620 automatic fixed bin(21,0) dcl 1557 set ref 1720* reverse builtin function dcl 240 ref 701 821 853 1328 1328 1840 1862 right_col 000134 automatic fixed bin(17,0) dcl 153 set ref 295* 444* 603 606* 626 639 639* 2092 rmarg 3 based fixed bin(17,0) level 2 dcl 1-15 set ref 645* 2054 2055* 2138* rtrim builtin function dcl 240 ref 1328 sav_pos 332 based fixed bin(17,0) level 2 dcl 1-15 set ref 1481* saved_line_length 001167 automatic fixed bin(17,0) dcl 2041 set ref 2052* 2137 saved_rmarg 001170 automatic fixed bin(17,0) dcl 2041 set ref 2054* 2138 search builtin function dcl 240 ref 379 1983 search_file_ 000102 constant entry external dcl 229 ref 1524 1727 1757 1843 1865 search_file_$silent 000104 constant entry external dcl 233 ref 707 828 860 seg parameter char packed unaligned dcl 1496 set ref 1491 1510 1518 1524 1524 1530 seg_charct 000545 automatic fixed bin(21,0) dcl 1185 set ref 1270* 1272 1275 1275 1299* 1300 1303 1303 1305 1305 1372* 1374 1400 1400 1417 1417 1435* 1436 1446 1446 1455 1455 1509 1573* 1578 1707* 1764* 1778* seg_ptr 000120 automatic pointer dcl 788 in begin block on line 770 set ref 881* 1123 1123* 1126* 1201* 1203 1354* 1446 1455 1461* 1463* seg_ptr 000622 automatic pointer dcl 1558 in procedure "PRINT_ONE_SEG" set ref 1561* 1573* 1667 1667 1681 1681 1693 1693 seg_type 000546 automatic fixed bin(17,0) dcl 1186 set ref 1244* 1338* 1432* 1599 segarray based char(1) array packed unaligned dcl 1559 set ref 1667 1667 1681 1681 1693 1693 segment parameter char packed unaligned dcl 1551 in procedure "PRINT_ONE_SEG" set ref 1548 1561 1582 1583 1677 1687 1727 1727 1757 1757 1774 1843 1843 1849 1865 1865 1871 segment based char packed unaligned dcl 1188 in procedure "PRINT_ONE_ENTRYNAME" set ref 1446* 1455* sheets_per_page 10 based fixed bin(17,0) level 2 dcl 1-15 set ref 305* slew 000547 automatic char(1) packed unaligned dcl 1189 set ref 1486* 1608* 1615* 1797 1810 1987* 1993* 2076* 2082 2085* 2117 2152 2155 2158 2178 2185 2185 slew_residue 326 based fixed bin(17,0) level 2 dcl 1-15 set ref 1481* 1599 1605 2062 2086* srch based char packed unaligned dcl 1829 ref 1840 1840 1849 1862 1862 1871 srchl 000672 automatic fixed bin(21,0) dcl 1827 set ref 1838* 1840 1840 1840 1843 1849 1860* 1862 1862 1862 1865 1871 srchp 000670 automatic pointer dcl 1827 set ref 1837* 1840 1840 1843* 1849 1859* 1862 1862 1865* 1871 star_ALL_ENTRIES constant fixed bin(2,0) initial dcl 2-111 ref 515 star_BRANCHES_ONLY constant fixed bin(2,0) initial dcl 2-110 ref 289 518 star_DIRECTORY constant fixed bin(2,0) initial unsigned dcl 2-121 ref 1225 star_LINK constant fixed bin(2,0) initial unsigned dcl 2-119 ref 1211 star_SEGMENT 000106 constant fixed bin(2,0) initial unsigned dcl 2-120 set ref 972* 1233 star_area based area(1024) dcl 773 ref 996 1111 1114 1117 star_area_ptr 000104 automatic pointer dcl 774 set ref 880* 980* 996 1111 1114 1117 star_entries based structure array level 1 dcl 2-27 ref 1114 star_entry_array based fixed bin(17,0) array dcl 775 set ref 996 1002* 1011 1017 1087 1087 1097 1098* 1098 1100* 1117 star_entry_array_index 000222 automatic fixed bin(17,0) dcl 798 set ref 1000* 1002 1002* 1009* 1011 1017* 1086* 1087 1087 1097 1098 1098 1100* star_entry_array_ptr 000106 automatic pointer dcl 777 set ref 881* 996* 1002 1011 1017 1087 1087 1097 1098 1098 1100 1117 1117 1126* star_entry_count 000516 automatic fixed bin(17,0) dcl 2-14 set ref 980* 996 1000 1009 1080 1086 1111 1114 1117 star_entry_name 000223 automatic char(32) packed unaligned dcl 799 set ref 1011* 1017* star_entry_ptr 000520 automatic pointer dcl 2-15 set ref 881* 980* 1011 1017 1087 1087 1111 1114 1114 1126* star_names based char(32) array packed unaligned dcl 2-37 ref 1011 1087 1087 1111 star_names_ptr 000522 automatic pointer dcl 2-19 set ref 881* 980* 1011 1087 1087 1111 1111 1126* star_sel 000135 automatic fixed bin(2,0) dcl 154 set ref 289* 515* 518* 980* stop_after_first_elem 0(07) 000100 automatic bit(1) level 2 packed packed unaligned dcl 1145 set ref 1339* 1345* 1419 strike_level parameter fixed bin(17,0) dcl 1790 ref 1787 1801 string builtin function dcl 240 set ref 294* substr builtin function dcl 240 ref 1305 1510 1518 1530 1582 1583 1677 1687 1774 1849 1871 sum builtin function dcl 240 ref 1111 swap 000275 automatic bit(1) packed unaligned dcl 1076 set ref 1083* 1084 1085* 1096* switch_name 000136 automatic char(32) packed unaligned dcl 155 set ref 311* 537* 559 1952* sws 000154 automatic structure level 1 packed packed unaligned dcl 161 set ref 294* sws1 000100 automatic structure level 1 packed packed unaligned dcl 1145 t 000276 automatic fixed bin(17,0) dcl 1076 set ref 1097* 1100 temp 335 based bit(36) level 2 dcl 1-15 set ref 1483* terminate_file_ 000106 constant entry external dcl 237 ref 1123 1461 time_modified 14 000102 automatic fixed bin(71,0) level 2 dcl 1159 set ref 1917* to_line 000146 automatic fixed bin(17,0) dcl 156 set ref 292* 364* 410* 586 590* 1256 1393 1442 1768 1771 to_line_given 0(14) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 361 365* 410* 569 586 631 1256 1393 1442 1751 to_page 000147 automatic fixed bin(17,0) dcl 157 set ref 291* 428* 595 598* 1638 2124 to_page_given 0(15) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 427* 569 595 622 631 1638 2121 to_regexpr_len 000150 automatic fixed bin(21,0) dcl 158 set ref 292* 410* 586 1256 1393 1442 1521 1524* 1754 1757* to_regexpr_ptr 000152 automatic pointer dcl 159 set ref 410* 1524* 1757* top_label_line 15 based char(136) level 2 dcl 1-15 set ref 306* type 000000 constant structure level 1 unaligned dcl 259 in procedure "pr" type based fixed bin(2,0) array level 2 in structure "star_entries" packed packed unsigned unaligned dcl 2-27 in procedure "pr" ref 1017 unspec builtin function dcl 240 set ref 299* version 000102 automatic fixed bin(17,0) level 2 dcl 1159 set ref 1350* vertical_tab parameter bit(1) packed unaligned dcl 2026 ref 2023 2082 vt_length 000550 automatic fixed bin(21,0) dcl 1190 set ref 1677* 1680 1681* 1685 1686 1687* want_heading 0(16) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 473* 653* 656* 659* 1479 want_line_numbers 0(17) 000154 automatic bit(1) level 2 packed packed unaligned dcl 161 set ref 512* 631 1801 wanted_elem 000551 automatic char(32) packed unaligned dcl 1191 set ref 1344* 1347* 1364* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 4-33 E_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 M_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 N_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 REW_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 RW_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 4-30 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 S_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 W_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 archive_component_info_ptr automatic pointer dcl 3-4 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 2-114 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 2-109 star_LINKS_ONLY_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 2-112 star_branch_count automatic fixed bin(17,0) dcl 2-13 star_dir_list_branch based structure array level 1 dcl 2-59 star_link_count automatic fixed bin(17,0) dcl 2-17 star_link_pathname based char packed unaligned dcl 2-102 star_links based structure array level 1 dcl 2-76 star_linkx automatic fixed bin(17,0) dcl 2-18 star_list_branch based structure array level 1 dcl 2-41 star_list_branch_ptr automatic pointer dcl 2-16 star_list_names based char(32) array packed unaligned dcl 2-92 star_list_names_ptr automatic pointer dcl 2-20 star_select_sw automatic fixed bin(3,0) dcl 2-21 NAMES DECLARED BY EXPLICIT CONTEXT. ARG_ERR 001771 constant label dcl 543 ref 351 934 ARG_OPERAND_ERR 012432 constant label dcl 736 ref 762 ARG_READ_ERR 000730 constant label dcl 330 ref 526 685 754 809 818 850 894 910 CHECK_FROM_LINE 007721 constant entry internal dcl 1715 ref 1632 CHECK_TO_LINE 010032 constant entry internal dcl 1746 ref 1633 CLEANER 005205 constant entry internal dcl 1108 ref 884 1028 COUNT_LINES 007205 constant entry internal dcl 1491 ref 1275 1400 1446 GETNUM 012501 constant entry internal dcl 746 ref 414 421 428 431 438 441 444 447 453 457 GET_FROM_TO 011776 constant entry internal dcl 668 ref 406 410 LINENO_AND_INDENT 010143 constant entry internal dcl 1787 ref 1998 2103 MATCH_EXCLUDE 010311 constant entry internal dcl 1822 ref 1635 MSF_err 006166 constant label dcl 1310 ref 1267 1294 PAUSE 010663 constant entry internal dcl 1882 ref 1569 1654 2165 PRINT_HEAD 010754 constant entry internal dcl 1904 ref 1572 1658 PRINT_ONE_ENTRYNAME 005352 constant entry internal dcl 1136 ref 972 1017 PRINT_ONE_LINE 007510 constant entry internal dcl 1627 ref 1586 PRINT_ONE_SEG 007352 constant entry internal dcl 1548 ref 1303 1417 1455 PRINT_QUICK_WAY 007376 constant label dcl 1565 PRINT_SEG 007411 constant label dcl 1578 PRINT_STRING 011230 constant entry internal dcl 1942 ref 1573 1812 1928 2000 2105 2164 2185 PROCESS_LINE_VIA_IOX 011314 constant entry internal dcl 1965 ref 1667 PROCESS_LINE_VIA_PRT_CONV 011411 constant entry internal dcl 2023 ref 1681 1693 1932 RESET 007152 constant entry internal dcl 1476 ref 1249 1370 1433 RETURN 000763 constant label dcl 332 ref 535 696 713 722 738 834 867 1954 SLEW 011675 constant entry internal dcl 2147 ref 1609 1616 2003 2107 SORT_STAR_ARRAY 005101 constant entry internal dcl 1073 ref 1007 abort 005554 constant label dcl 1217 ref 1225 1237 1246 its_a_name 001132 constant label dcl 381 ref 344 miss_arg 001153 constant label dcl 398 ref 495 505 678 pr 000536 constant entry external dcl 122 print 000545 constant entry external dcl 122 real_slew 011766 constant label dcl 2185 ref 2155 2167 2178 segname 004066 constant label dcl 931 ref 913 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 14150 14310 13425 14160 Length 14726 13425 140 401 523 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME pr 534 external procedure is an external procedure. GET_FROM_TO internal procedure shares stack frame of external procedure pr. begin block on line 770 383 begin block uses auto adjustable storage, and enables or reverts conditions. on unit on line 884 64 on unit SORT_STAR_ARRAY internal procedure shares stack frame of begin block on line 770. CLEANER 90 internal procedure is called by several nonquick procedures. PRINT_ONE_ENTRYNAME 1118 internal procedure uses auto adjustable storage. RESET internal procedure shares stack frame of internal procedure PRINT_ONE_ENTRYNAME. COUNT_LINES internal procedure shares stack frame of internal procedure PRINT_ONE_ENTRYNAME. PRINT_ONE_SEG internal procedure shares stack frame of internal procedure PRINT_ONE_ENTRYNAME. PRINT_ONE_LINE internal procedure shares stack frame of internal procedure PRINT_ONE_ENTRYNAME. CHECK_FROM_LINE internal procedure shares stack frame of internal procedure PRINT_ONE_ENTRYNAME. CHECK_TO_LINE internal procedure shares stack frame of internal procedure PRINT_ONE_ENTRYNAME. LINENO_AND_INDENT internal procedure shares stack frame of internal procedure PRINT_ONE_ENTRYNAME. MATCH_EXCLUDE internal procedure shares stack frame of internal procedure PRINT_ONE_ENTRYNAME. PAUSE internal procedure shares stack frame of internal procedure PRINT_ONE_ENTRYNAME. PRINT_HEAD internal procedure shares stack frame of internal procedure PRINT_ONE_ENTRYNAME. PRINT_STRING internal procedure shares stack frame of internal procedure PRINT_ONE_ENTRYNAME. PROCESS_LINE_VIA_IOX internal procedure shares stack frame of internal procedure PRINT_ONE_ENTRYNAME. PROCESS_LINE_VIA_PRT_CONV internal procedure shares stack frame of internal procedure PRINT_ONE_ENTRYNAME. SLEW internal procedure shares stack frame of internal procedure PRINT_ONE_ENTRYNAME. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME PRINT_ONE_ENTRYNAME 000100 sws1 PRINT_ONE_ENTRYNAME 000102 ACI PRINT_ONE_ENTRYNAME 000124 bitc PRINT_ONE_ENTRYNAME 000126 comp_ptr PRINT_ONE_ENTRYNAME 000130 ec1 PRINT_ONE_ENTRYNAME 000131 entry_type PRINT_ONE_ENTRYNAME 000132 error_code PRINT_ONE_ENTRYNAME 000133 indent_string PRINT_ONE_ENTRYNAME 000133 last_line_number PRINT_ONE_ENTRYNAME 000134 line_count PRINT_ONE_ENTRYNAME 000135 last_slew PRINT_ONE_ENTRYNAME 000136 line_length PRINT_ONE_ENTRYNAME 000137 line_number PRINT_ONE_ENTRYNAME 000140 msf_component PRINT_ONE_ENTRYNAME 000141 msf_component_count PRINT_ONE_ENTRYNAME 000142 output_buffer PRINT_ONE_ENTRYNAME 000543 output_buffer_length PRINT_ONE_ENTRYNAME 000544 page_number PRINT_ONE_ENTRYNAME 000545 seg_charct PRINT_ONE_ENTRYNAME 000546 seg_type PRINT_ONE_ENTRYNAME 000547 slew PRINT_ONE_ENTRYNAME 000550 vt_length PRINT_ONE_ENTRYNAME 000551 wanted_elem PRINT_ONE_ENTRYNAME 000604 c COUNT_LINES 000605 char_index COUNT_LINES 000614 char_index PRINT_ONE_SEG 000615 line_count_this_page PRINT_ONE_SEG 000616 line_length PRINT_ONE_SEG 000617 print_this_line PRINT_ONE_SEG 000620 region_begin PRINT_ONE_SEG 000622 seg_ptr PRINT_ONE_SEG 000640 c CHECK_FROM_LINE 000650 c CHECK_TO_LINE 000666 jj MATCH_EXCLUDE 000667 c MATCH_EXCLUDE 000670 srchp MATCH_EXCLUDE 000672 srchl MATCH_EXCLUDE 000673 matched MATCH_EXCLUDE 000674 excluded MATCH_EXCLUDE 000706 buffer PAUSE 001014 date PRINT_HEAD 001035 head_line PRINT_HEAD 001134 head_line_len PRINT_HEAD 001152 end_of_output_line PROCESS_LINE_VIA_IOX 001153 line_len PROCESS_LINE_VIA_IOX 001154 line_ptr PROCESS_LINE_VIA_IOX 001164 chars_done PROCESS_LINE_VIA_PRT_CONV 001165 chars_for_line PROCESS_LINE_VIA_PRT_CONV 001166 chars_to_do PROCESS_LINE_VIA_PRT_CONV 001167 saved_line_length PROCESS_LINE_VIA_PRT_CONV 001170 saved_rmarg PROCESS_LINE_VIA_PRT_CONV 001171 line_len PROCESS_LINE_VIA_PRT_CONV 001172 line_ptr PROCESS_LINE_VIA_PRT_CONV 001202 needct SLEW begin block on line 770 000100 arg_token begin block on line 770 000104 star_area_ptr begin block on line 770 000106 star_entry_array_ptr begin block on line 770 000110 match_string_len begin block on line 770 000110 match_string_ptr begin block on line 770 000110 match_string_count begin block on line 770 000112 exclude_string_count begin block on line 770 000112 exclude_string_ptr begin block on line 770 000112 exclude_string_len begin block on line 770 000113 ever_printed begin block on line 770 000114 ever_had_err begin block on line 770 000115 ever_found_from begin block on line 770 000116 ever_found_page begin block on line 770 000120 seg_ptr begin block on line 770 000122 FCB_ptr begin block on line 770 000124 had_err begin block on line 770 000125 dir_name begin block on line 770 000177 entry_name begin block on line 770 000207 archive_element begin block on line 770 000217 entry_star_type begin block on line 770 000220 archive_element_star_type begin block on line 770 000221 archive_elements_found begin block on line 770 000222 star_entry_array_index begin block on line 770 000223 star_entry_name begin block on line 770 000274 d SORT_STAR_ARRAY 000275 swap SORT_STAR_ARRAY 000276 t SORT_STAR_ARRAY pr 000100 arg_len pr 000102 arg_list_ptr pr 000104 arg_ptr pr 000106 c pr 000107 error_code pr 000110 exclude_arg_count pr 000111 forcount pr 000112 from_line pr 000113 from_page pr 000114 from_regexpr_len pr 000116 from_regexpr_ptr pr 000120 iarg pr 000121 indentation pr 000122 input_path_count pr 000123 junk pr 000124 last_count pr 000125 left_col pr 000126 match_arg_count pr 000127 nargs pr 000130 output_buffer_size pr 000132 out_switch pr 000134 right_col pr 000135 star_sel pr 000136 switch_name pr 000146 to_line pr 000147 to_page pr 000150 to_regexpr_len pr 000152 to_regexpr_ptr pr 000154 sws pr 000156 pcip pr 000160 PCI pr 000516 star_entry_count pr 000520 star_entry_ptr pr 000522 star_names_ptr pr 000536 range_arg GET_FROM_TO 000541 answer GET_FROM_TO THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as r_ne_as r_le_a enter_begin_block leave_begin_block call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 alloc_auto_adj mpfx2 mdfx1 signal_op enable_op ext_entry int_entry set_chars_eis index_chars_eis op_alloc_ op_freen_ clock_mac ix_rev_chars THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. archive_$next_component_info check_star_name_$entry com_err_ cu_$arg_count cu_$arg_list_ptr cu_$arg_ptr cu_$arg_ptr_rel cv_dec_check_ date_time_$format expand_pathname_$component get_system_free_area_ hcs_$star_ hcs_$status_minf initiate_file_ ioa_$ioa_switch ioa_$ioa_switch_nnl ioa_$rsnp iox_$control iox_$get_line iox_$look_iocb iox_$put_chars match_star_name_ msf_manager_$close msf_manager_$get_ptr msf_manager_$open pathname_ pathname_$component print_conv_$print_conv_ prt_conv_ search_file_ search_file_$silent terminate_file_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$badopt error_table_$dirseg error_table_$inconsistent error_table_$long_record error_table_$no_component error_table_$noarg error_table_$nomatch error_table_$regexp_undefined error_table_$zero_length_seg iox_$user_input iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 122 000535 289 000552 290 000554 291 000557 292 000561 294 000571 295 000573 296 000575 298 000600 299 000602 300 000605 301 000607 302 000610 303 000612 304 000614 305 000616 306 000620 307 000623 308 000626 309 000630 310 000632 311 000633 312 000636 316 000641 317 000647 318 000660 321 000662 322 000701 325 000702 326 000711 327 000726 330 000730 332 000763 336 000764 339 001000 341 001024 344 001026 347 001030 350 001032 351 001035 354 001036 357 001041 358 001042 359 001044 361 001045 364 001050 365 001051 366 001053 370 001054 372 001111 374 001112 375 001114 379 001115 381 001132 384 001133 388 001134 390 001136 393 001147 395 001150 398 001153 401 001212 403 001213 404 001214 406 001215 410 001230 414 001237 417 001246 420 001252 421 001254 422 001256 424 001257 427 001263 428 001265 429 001267 431 001270 434 001311 437 001321 438 001323 439 001325 441 001326 444 001341 447 001354 450 001374 453 001404 454 001413 455 001416 457 001417 460 001437 463 001447 464 001451 465 001453 467 001454 470 001467 473 001477 474 001501 475 001503 477 001504 480 001517 483 001532 486 001545 489 001554 492 001563 495 001567 498 001572 499 001573 500 001574 502 001575 505 001605 508 001610 509 001611 510 001612 512 001613 515 001626 518 001635 521 001644 524 001654 525 001655 526 001672 529 001674 530 001720 533 001722 535 001757 537 001760 538 001765 542 001766 543 001771 545 002025 548 002026 552 002030 555 002032 556 002060 559 002061 563 002076 566 002132 569 002133 573 002163 575 002211 578 002212 581 002221 583 002247 586 002250 590 002262 592 002322 595 002323 598 002332 600 002367 603 002370 606 002373 608 002430 611 002431 614 002435 617 002464 620 002465 622 002476 626 002512 631 002555 637 002633 639 002640 642 002645 645 002652 647 002654 650 002660 653 002664 656 002677 659 002703 662 002710 663 002715 770 002722 778 002725 779 002734 781 002740 782 002746 801 002752 802 002756 804 002760 807 002774 809 003013 812 003021 815 003030 816 003031 818 003050 821 003056 826 003110 828 003117 830 003157 833 003165 834 003223 838 003226 839 003227 840 003234 841 003240 843 003241 846 003251 847 003261 848 003262 850 003301 853 003307 858 003341 860 003350 862 003410 865 003416 867 003454 871 003457 872 003460 873 003465 874 003471 876 003472 878 003503 880 003505 881 003514 884 003523 886 003545 890 003547 891 003560 892 003561 894 003600 897 003606 898 003633 901 003641 904 003655 907 003665 908 003666 910 003705 913 003713 916 003714 927 004065 931 004066 934 004122 937 004130 939 004132 941 004147 946 004155 947 004157 949 004210 953 004211 955 004220 958 004235 963 004243 964 004245 966 004276 970 004277 972 004300 980 004317 984 004363 987 004366 991 004440 992 004442 996 004443 1000 004451 1002 004461 1005 004463 1007 004465 1009 004466 1011 004477 1017 004513 1025 004532 1028 004534 1033 004540 1036 004550 1037 004552 1039 004556 1045 004633 1047 004637 1049 004642 1052 004650 1056 004723 1059 004757 1062 005023 1063 005052 1065 005053 2195 005077 1073 005101 1080 005102 1081 005105 1082 005111 1083 005114 1084 005116 1085 005120 1086 005121 1087 005133 1096 005164 1097 005166 1098 005172 1100 005175 1102 005177 1103 005201 1104 005202 1106 005203 1108 005204 1111 005212 1114 005250 1117 005260 1120 005267 1123 005304 1126 005337 1129 005350 1136 005351 1172 005357 1193 005374 1196 005426 1197 005427 1198 005431 1199 005437 1201 005441 1203 005500 1206 005505 1208 005545 1211 005547 1216 005552 1217 005554 1220 005626 1221 005631 1225 005632 1230 005635 1233 005640 1235 005644 1237 005647 1244 005650 1245 005652 1246 005701 1249 005703 1251 005704 1254 005711 1256 005712 1261 005727 1264 005742 1267 005766 1270 005770 1272 005774 1275 005775 1279 006032 1281 006036 1282 006040 1286 006051 1287 006053 1289 006055 1292 006070 1294 006114 1297 006116 1299 006126 1300 006132 1303 006137 1305 006151 1308 006164 1310 006166 1314 006170 1315 006173 1320 006252 1322 006262 1327 006263 1328 006264 1335 006330 1338 006333 1339 006335 1341 006343 1344 006347 1345 006352 1346 006354 1347 006355 1349 006360 1350 006362 1351 006364 1353 006366 1354 006373 1356 006415 1359 006417 1364 006426 1366 006446 1370 006452 1372 006453 1374 006457 1377 006460 1382 006536 1383 006541 1387 006542 1389 006545 1393 006551 1400 006566 1403 006621 1409 006632 1410 006634 1412 006636 1417 006673 1419 006706 1425 006713 1426 006714 1432 006715 1433 006717 1435 006720 1436 006724 1439 006725 1442 006732 1446 006747 1448 007003 1452 007014 1453 007016 1455 007020 1456 007034 1458 007035 1461 007040 1463 007070 1464 007073 1467 007075 1468 007077 1472 007151 1476 007152 1479 007153 1481 007162 1483 007171 1484 007176 1485 007201 1486 007202 1487 007204 1491 007205 1506 007216 1507 007217 1509 007221 1510 007225 1511 007243 1515 007246 1518 007254 1521 007257 1524 007263 1526 007326 1529 007330 1530 007335 1534 007345 1537 007346 1538 007350 1540 007351 1548 007352 1561 007363 1563 007366 1565 007370 1569 007376 1572 007402 1573 007403 1574 007405 1575 007410 1578 007411 1582 007420 1583 007436 1586 007442 1587 007443 1589 007444 1599 007445 1605 007467 1608 007474 1609 007476 1612 007477 1615 007504 1616 007506 1620 007507 1627 007510 1630 007511 1632 007513 1633 007514 1635 007520 1638 007525 1644 007540 1645 007542 1648 007543 1651 007553 1654 007561 1655 007562 1658 007564 1659 007565 1660 007570 1661 007571 1662 007572 1664 007574 1667 007601 1671 007612 1674 007613 1677 007616 1680 007633 1681 007636 1685 007650 1686 007652 1687 007654 1690 007671 1693 007672 1698 007703 1700 007705 1703 007711 1706 007713 1707 007715 1711 007720 1715 007721 1720 007722 1721 007724 1724 007730 1727 007734 1730 010000 1733 010002 1734 010007 1735 010012 1736 010013 1737 010015 1738 010016 1740 010027 1742 010031 1746 010032 1751 010033 1754 010043 1757 010045 1760 010111 1763 010113 1764 010115 1766 010120 1768 010121 1771 010123 1774 010125 1777 010135 1778 010137 1783 010142 1787 010143 1793 010145 1796 010152 1797 010154 1798 010156 1801 010157 1806 010220 1808 010244 1809 010263 1810 010265 1812 010267 1815 010310 1822 010311 1832 010313 1835 010325 1836 010326 1837 010341 1838 010346 1840 010353 1843 010402 1845 010451 1847 010455 1849 010456 1852 010472 1854 010474 1857 010507 1858 010510 1859 010517 1860 010524 1862 010531 1865 010560 1867 010627 1869 010633 1871 010634 1874 010650 1876 010652 1882 010663 1887 010664 1888 010667 1890 010674 1892 010717 1894 010720 1896 010753 1904 010754 1911 010755 1914 010761 1917 010764 1918 011030 1920 011073 1924 011074 1925 011142 1928 011200 1932 011212 1934 011223 1936 011225 1938 011227 1942 011230 1948 011232 1949 011252 1952 011254 1954 011310 1957 011313 1965 011314 1979 011316 1980 011321 1982 011323 1983 011326 1984 011341 1987 011342 1988 011346 1989 011350 1993 011351 1994 011353 1997 011355 1998 011360 2000 011363 2003 011371 2005 011372 2007 011404 2009 011406 2011 011407 2013 011410 2023 011411 2049 011413 2052 011420 2053 011425 2054 011427 2055 011431 2058 011433 2059 011436 2061 011440 2062 011441 2063 011451 2066 011456 2068 011503 2070 011506 2076 011514 2078 011521 2082 011523 2085 011534 2086 011536 2089 011542 2092 011553 2096 011564 2099 011566 2102 011600 2103 011603 2105 011616 2107 011627 2109 011630 2111 011637 2117 011641 2120 011644 2121 011645 2124 011652 2127 011655 2128 011657 2132 011660 2134 011661 2137 011667 2138 011671 2141 011673 2143 011674 2147 011675 2152 011676 2155 011704 2158 011707 2161 011711 2164 011716 2165 011724 2166 011725 2167 011726 2172 011731 2173 011736 2174 011761 2176 011762 2178 011763 2184 011765 2185 011766 2189 011774 2207 011775 668 011776 678 012002 681 012005 682 012016 684 012017 685 012036 688 012040 690 012064 693 012072 696 012146 699 012147 701 012152 705 012203 707 012212 709 012252 712 012257 713 012315 716 012316 719 012321 722 012365 725 012366 726 012371 727 012374 731 012375 732 012421 735 012427 736 012432 738 012471 742 012472 746 012501 751 012504 752 012515 753 012516 754 012535 757 012537 758 012563 761 012570 762 012573 764 012574 ----------------------------------------------------------- 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