COMPILATION LISTING OF SEGMENT process_cobol_report Compiled by: Multics PL/I Compiler, Release 31b, of April 24, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 05/24/89 1024.3 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright,(C) Honeywell Information Systems Inc.,1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 10 11 12 /****^ HISTORY COMMENTS: 13* 1) change(89-04-23,Zimmerman), approve(89-04-23,MCR8081), 14* audit(89-05-05,RWaters), install(89-05-24,MR12.3-1048): 15* MCR8081 process_cobol_report.pl1 Change behavior to prevent creation of 16* zero or incorrect length output files. 17* 2) change(89-04-23,Zimmerman), approve(89-04-23,MCR8084), 18* audit(89-05-05,RWaters), install(89-05-24,MR12.3-1048): 19* MCR8084 process_cobol_report.pl1 Correct problem with adding to MSF 20* components. 21* END HISTORY COMMENTS */ 22 23 24 /* Modified on 11/28/84 by FCH, [5.3-2], BUG570(phx16601), MSFs give out of bounds */ 25 /* Modified on 89/03/10 by LVZ, bug572(phx16632) delete null output file. */ 26 /* Modified on 11/17/84 by FCH, {5.3-1], BUG572(phx16632),initialize bit count */ 27 /* Modified since Version 5.0 */ 28 29 /* format: style3 */ 30 process_cobol_report: 31 pcr: 32 proc; 33 34 dcl SZ_OF_INPUT_STRING fixed bin (35) static internal options (constant) init (1048576); 35 dcl SZ_OF_INPUT_ARRAY fixed bin (35) static internal options (constant) init (1048576); 36 dcl SZ_OF_OUT_STRING fixed bin (35) static internal options (constant) init (1048576); 37 dcl SZ_OF_OUT_ARRAY fixed bin (35) static internal options (constant) init (1048576); 38 dcl SZ_OF_DATA fixed bin (35) static internal options (constant) init (32768); 39 40 41 dcl input_string char (SZ_OF_INPUT_STRING) based (in_ptr); 42 dcl input_array (SZ_OF_INPUT_ARRAY) char (1) based (in_base_ptr); 43 dcl sys_info$max_seg_size 44 fixed bin (35) ext static; /*[5.3-2]*/ 45 dcl (max_size, maxer_size) 46 fixed bin (35); /*[5.3-2]*/ 47 dcl (old_size, new_size) 48 fixed bin; 49 dcl character_offset fixed bin (35); 50 dcl next_offset fixed bin (35); 51 52 dcl 01 text_line_in based (in_ptr) unal, 53 02 size fixed bin (35) unal, 54 02 report_code char (2), 55 02 control char (1), 56 02 filler char (1), 57 02 data char (SZ_OF_DATA); 58 59 dcl 01 skip_line_in based (in_ptr) unal, 60 02 size fixed bin (35) unal, 61 02 report_code char (2), 62 02 control char (1), 63 02 filler char (1), 64 02 number_of_skips 65 fixed bin (35) unal; 66 67 dcl skip_length fixed bin (21); 68 dcl report_codes_in char (255) varying; 69 dcl requested_code char (2); 70 dcl cch char (1); 71 72 dcl in_ptr pointer; 73 dcl in_base_ptr pointer; 74 75 dcl cu_$arg_count entry (fixed bin); 76 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 77 dcl num_of_args fixed bin; 78 dcl arg_no fixed bin; 79 dcl arg_ptr pointer; 80 dcl arg_len fixed bin; 81 dcl code fixed bin (35); 82 dcl arg char (arg_len) based (arg_ptr); 83 84 dcl reply char (40); 85 dcl iox_$get_line entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 86 dcl iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)); 87 dcl iox_$user_output pointer external; 88 dcl user_out ptr init (null ()); 89 90 dcl msf_manager_$open entry (char (*), char (*), pointer, fixed bin (35)); 91 dcl msf_manager_$get_ptr 92 entry (pointer, fixed bin, bit (1) aligned, pointer, fixed bin (24), fixed bin (35)); 93 dcl msf_manager_$close entry (pointer); 94 95 dcl delete_$path entry (char (*), char (*), bit (6), char (*), fixed bin (35)); 96 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 97 dcl in_dirname char (168); 98 dcl in_entryname char (32); 99 100 dcl who_am_i char (20) init ("process_cobol_report"); 101 dcl com_err_ entry options (variable); 102 103 dcl i fixed bin; 104 105 dcl error_table_$badopt fixed bin (35) ext static; 106 dcl error_table_$noentry 107 fixed bin (35) ext static; 108 dcl error_table_$badpath 109 fixed bin (35) ext static; 110 111 dcl file_output bit (1); 112 dcl fcb_ptr pointer; 113 dcl component_of_msf fixed bin; 114 dcl in_bit_count fixed bin (24); 115 dcl previous_in_ptr pointer; 116 dcl data_ptr pointer; 117 118 dcl all_codes bit (1); 119 dcl true bit (1) static internal options (constant) init ("1"b); 120 dcl false bit (1) static internal options (constant) init ("0"b); 121 122 dcl length_of_data fixed bin (35); 123 dcl newline_buffer char (254) init ((254)" 124 "); 125 dcl eof bit (1); 126 dcl in_seg_size fixed bin (35); 127 128 dcl out_dirname char (168); 129 dcl out_entryname char (32); 130 131 dcl out_fcb_ptr pointer; 132 dcl aclinfo_ptr pointer; 133 dcl out_base_ptr pointer; 134 dcl out_ptr pointer; 135 136 dcl out_string char (SZ_OF_OUT_STRING) based (out_ptr); 137 dcl out_array (SZ_OF_OUT_ARRAY) char (1) based (out_base_ptr); 138 dcl out_bit_count fixed bin (24); 139 dcl out_char_offset fixed bin (35); 140 dcl new_line char (1) init (" 141 "); 142 143 dcl tssi_$get_file entry (char (*), char (*), ptr, ptr, ptr, fixed bin (35)); 144 dcl tssi_$finish_file entry (ptr, fixed bin, fixed bin (24), bit (36) aligned, ptr, fixed bin (35)); 145 146 dcl data_length fixed bin (21); 147 dcl rcd_arg bit (1); 148 149 dcl 1 component_list (0:15), 150 02 base_seg_ptr pointer, 151 02 character_count 152 fixed bin (35); 153 154 dcl report_code_list (64) char (2); 155 dcl num_of_reports fixed bin; 156 dcl position fixed bin (35); 157 dcl last_component bit (1); 158 dcl report_index fixed bin; 159 dcl list_index fixed bin; 160 dcl found bit; 161 dcl num_of_components fixed bin; 162 dcl rest_of_segment fixed bin; 163 dcl buffer char (266); 164 dcl next_out_char_off fixed bin; 165 dcl out_component fixed bin; 166 dcl out_bc fixed bin (24); /*[5.3-2]*/ 167 dcl max_line_size fixed bin init (256); /*[5.3-2]*/ 168 dcl max_rec_size fixed bin init (266); /*[5.3-2]*/ 169 dcl cd_size fixed bin init (10); /*[5.3-2]*/ 170 dcl (segres, recsize) fixed bin; 171 dcl newpage_flag bit (1); 172 dcl stop_flag bit (1); 173 dcl newpage char (1) init (" "); 174 175 /*[5.3-1]*/ 176 out_bit_count = 0; 177 178 newpage_flag = true; 179 stop_flag = false; 180 user_out = iox_$user_output; 181 max_size = sys_info$max_seg_size * 4; /*[5.3-2]*/ 182 maxer_size = max_size + 1; 183 all_codes = false; 184 rcd_arg = false; 185 num_of_reports = 1; 186 report_code_list (1) = " "; 187 out_component = 0; 188 file_output = false; 189 190 call cu_$arg_ptr (1, arg_ptr, arg_len, code); 191 192 if code ^= 0 193 then go to error_and_out; 194 195 if arg_len = 0 196 then call comerr (0, 1, "^R""""^B"); /* null pathname */ 197 198 call expand_pathname_ (arg, in_dirname, in_entryname, code); 199 200 if code ^= 0 201 then call comerr (code, 1, arg); 202 203 call cu_$arg_count (num_of_args); 204 205 do i = 2 to num_of_args; 206 207 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 208 if code ^= 0 209 then go to error_and_out; 210 211 if arg = "-of" | arg = "-output_file" 212 then do; 213 214 file_output = "1"b; 215 i = i + 1; 216 217 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 218 219 if code ^= 0 220 then go to error_and_out; 221 else do; 222 223 call expand_pathname_ (arg, out_dirname, out_entryname, code); 224 if code ^= 0 225 then go to error_and_out; 226 227 end; 228 end; 229 else if arg = "-rcd" | arg = "-report_code" 230 then do; 231 232 if all_codes 233 then call comerr (0, 1, "The arguments -a and -rcd are incompatible"); 234 else rcd_arg = true; 235 236 i = i + 1; 237 238 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 239 240 if code ^= 0 241 then go to error_and_out; 242 else do; 243 244 num_of_reports = 0; 245 246 do position = 3 to arg_len by 3; 247 248 if substr (arg, position, 1) = "," 249 then do; 250 251 num_of_reports = num_of_reports + 1; 252 report_code_list (num_of_reports) = substr (arg, position - 2, 2); 253 254 end; 255 else call comerr (0, 1, "Illegal report code list"); 256 257 end; 258 259 if position - 1 = arg_len 260 then do; 261 262 num_of_reports = num_of_reports + 1; 263 report_code_list (num_of_reports) = substr (arg, position - 2, 2); 264 265 end; 266 else call comerr (0, 1, "Illegal report code list."); 267 268 end; 269 end; 270 else if arg = "-a" | arg = "-all" 271 then if rcd_arg 272 then call comerr (0, 1, "The options -rcd and -a are incompatible"); 273 else all_codes = true; 274 else if arg = "-nnp" | arg = "-no_newpage" 275 then newpage_flag = false; 276 else if arg = "-sp" | arg = "-stop" 277 then stop_flag = true; 278 else call comerr (error_table_$badopt, 1, arg); 279 end; 280 281 call msf_manager_$open (in_dirname, in_entryname, fcb_ptr, code); 282 283 if code ^= 0 284 then call comerr2 (code, 1, "^a>^a", in_dirname, in_entryname); 285 286 do component_of_msf = 0 to 15; 287 component_list.base_seg_ptr (component_of_msf) = null (); 288 end; 289 290 last_component = false; 291 component_of_msf = -1; 292 293 do while (^last_component); /* component table for report file */ 294 295 component_of_msf = component_of_msf + 1; 296 297 call msf_manager_$get_ptr (fcb_ptr, component_of_msf, "0"b, in_base_ptr, in_bit_count, code); 298 299 if code = error_table_$noentry 300 then last_component = true; 301 else if code ^= 0 302 then call comerr2 (code, 2, "^a>^a", in_dirname, out_dirname); 303 else do; 304 305 component_list.base_seg_ptr (component_of_msf) = in_base_ptr; 306 component_list.character_count (component_of_msf) = divide (in_bit_count, 9, 35, 0); 307 308 end; 309 310 end; 311 312 num_of_components = component_of_msf - 1; 313 314 if all_codes 315 then call fill_code_list; 316 317 if file_output 318 then do; /*output file specified */ 319 320 call tssi_$get_file (out_dirname, out_entryname, out_base_ptr, aclinfo_ptr, out_fcb_ptr, code); 321 322 if code ^= 0 323 then call comerr2 (code, 2, "^a>^a", out_dirname, out_entryname); 324 325 out_ptr = out_base_ptr; 326 out_char_offset = 1; 327 328 end; 329 330 do report_index = 1 to num_of_reports; /* for each report */ 331 332 requested_code = report_code_list (report_index); 333 334 call set_comp0; 335 336 eof = false; 337 338 call get_line; 339 340 if eof 341 then call comerr2 (0, 3, "Requested report code,^a,not found or format error in ^a", requested_code, 342 in_dirname || ">" || in_entryname); 343 344 if file_output 345 then do; /* output file specified */ 346 347 do while (^eof); /* for each report record */ 348 349 data_length = text_line_in.size; 350 351 if cch = ":" 352 then do; 353 354 next_out_char_off = out_char_offset + 1 + data_length; 355 356 /*[5.3-2]*/ 357 if next_out_char_off > maxer_size 358 then do; /* record does not fit */ 359 360 /*[5.3-2]*/ 361 call set_sizes; 362 363 /*[5.3-2]*/ 364 substr (out_string, 1, old_size) = 365 substr (text_line_in.data, 1, old_size); 366 367 call msf; 368 369 /*[5.3-2]*/ 370 if new_size > 1 371 /*[5.3-2]*/ 372 then substr (out_string, 1, new_size - 1) = 373 substr (text_line_in.data, old_size + 1); 374 375 /*[5.3-2]*/ 376 substr (out_string, new_size, 1) = new_line; 377 378 end; 379 else do; /* record fits */ 380 381 substr (out_string, 1, data_length) = 382 substr (text_line_in.data, 1, data_length); 383 substr (out_string, data_length + 1, 1) = new_line; 384 385 end; 386 387 out_char_offset = next_out_char_off; 388 389 end; 390 else if cch = "r" 391 then do; 392 393 skip_length = skip_line_in.number_of_skips; 394 395 if skip_length <= 254 396 then do; 397 398 next_out_char_off = out_char_offset + skip_length; 399 400 /*[5.3-2]*/ 401 if next_out_char_off > maxer_size 402 then do; /* record does not fit */ 403 404 /*[5.3-2]*/ 405 call set_sizes; 406 407 /*[5.3-2]*/ 408 substr (out_string, 1, old_size) = 409 substr (newline_buffer, 1, old_size); 410 411 call msf; 412 413 /*[5.3-2]*/ 414 substr (out_string, 1, new_size) = 415 substr (newline_buffer, 1, new_size); 416 417 end; 418 else substr (out_string, 1, skip_length) = 419 substr (newline_buffer, 1, skip_length); 420 421 out_char_offset = next_out_char_off; 422 423 end; 424 else call comerr (0, 3, "Too many successive new lines for output. Limit is 254.") 425 ; 426 427 end; 428 else if cch = "n" 429 then if newpage_flag 430 then do; /* emit newpage */ 431 432 substr (out_string, 1, 1) = newpage; 433 out_char_offset = out_char_offset + 1; 434 435 end; 436 else ; 437 else call comerr2 (0, 3, "Format error in input file. ^a>^a", in_dirname, in_entryname); 438 439 out_ptr = addr (out_array (out_char_offset)); 440 441 call get_line; 442 443 end; 444 445 out_bit_count = (out_char_offset - 1) * 9; 446 447 end; 448 else do; /* terminal output specified */ 449 450 if stop_flag 451 then call iox_$get_line (user_out, addr (reply), length (reply), 0, 0); 452 453 do while (^eof); 454 455 if text_line_in.control = ":" 456 then do; 457 458 data_length = text_line_in.size; 459 call iox_$put_chars (user_out, addr (text_line_in.data), data_length, code); 460 call iox_$put_chars (user_out, addr (newline_buffer), 1, code); 461 462 end; 463 else if cch = "r" 464 then do; 465 466 skip_length = skip_line_in.number_of_skips; 467 468 if skip_length <= 254 469 then call iox_$put_chars (user_out, addr (newline_buffer), skip_length, code); 470 else call comerr (0, 2, "Too many successive new lines for output. Limit is 254.") 471 ; 472 473 end; 474 else if cch = "n" 475 then if stop_flag 476 then call iox_$get_line (user_out, addr (reply), length (reply), 0, 0); 477 else ; 478 else call comerr2 (0, 2, "Format error in input file. ^a>^a", in_dirname, in_entryname); 479 480 call get_line; 481 end; 482 end; 483 end; 484 485 fill_code_list: 486 proc; 487 488 call set_comp0; 489 490 num_of_reports = 0; 491 eof = false; 492 493 do while (^eof); 494 495 call getl; 496 497 found = false; 498 499 do list_index = 1 to num_of_reports while (^found); 500 if text_line_in.report_code = report_code_list (list_index) 501 then found = true; 502 end; 503 504 if ^found 505 then do; 506 num_of_reports = num_of_reports + 1; 507 report_code_list (num_of_reports) = text_line_in.report_code; 508 end; 509 510 end; 511 512 end fill_code_list; 513 514 get_line: 515 proc; 516 517 do while (^eof); 518 519 call getl; 520 521 if text_line_in.report_code = requested_code 522 then return; 523 524 end; 525 end get_line; 526 527 getl: 528 proc; /* get the nest record */ 529 530 531 532 /*[5.3-2]*/ 533 segres = in_seg_size - next_offset + 1; /* size of remaining data */ 534 /*[5.3-2]*/ 535 in_ptr = addr (input_array (next_offset + 2)); 536 537 /*[5.3-2]*/ 538 if segres >= max_rec_size /*[5.3-2]*/ 539 then do; /* next record in component */ 540 /*[5.3-2]*/ 541 next_offset = next_offset + cd_size + text_line_in.size; 542 /*[5.3-2]*/ 543 go to srx; /*[5.3-2]*/ 544 end; 545 546 /*[5.3-2]*/ 547 if segres > 6 /*[5.3-2]*/ 548 then do; /* size control word in component */ 549 /*[5.3-2]*/ 550 recsize = cd_size + text_line_in.size; 551 552 /*[5.3-2]*/ 553 if segres >= recsize /*[5.3-2]*/ 554 then do; 555 next_offset = next_offset + recsize; 556 /* next rec in comp */ 557 /*[5.3-2]*/ 558 go to srx; /*[5.3-2]*/ 559 end; 560 561 /*[5.3-2]*/ 562 segres = segres - 2; 563 recsize = recsize - 2; /*[5.3-2]*/ 564 call set_buff (segres, recsize - segres); 565 /* split record */ 566 /*[5.3-2]*/ 567 next_offset = recsize - segres + 1; /*[5.3-2]*/ 568 go to srx; /*[5.3-2]*/ 569 end; 570 571 /*[5.3-2]*/ 572 go to sr (segres); /* size control word not completely in record */ 573 574 sr (0): 575 sr (1): 576 sr (2): /*[5.3-2]*/ 577 if segres = 1 /*[5.3-2]*/ 578 then if component_of_msf = num_of_components /*[5.3-2]*/ 579 then do; 580 eof = true; /*[5.3-2]*/ 581 return; /*[5.3-2]*/ 582 end; 583 584 /*[5.3-2]*/ 585 call set_comp; /* get next component */ 586 /*[5.3-2]*/ 587 next_offset = 3 - segres; /*[5.3-2]*/ 588 in_ptr = addr (input_array (next_offset)); /*[5.3-2]*/ 589 next_offset = next_offset + 8 + text_line_in.size;/*[5.3-2]*/ 590 go to srx; 591 592 sr (3): 593 sr (4): 594 sr (5): 595 sr (6): /* split size control word */ 596 /*[5.3-2]*/ 597 segres = 6 - segres; /*[5.3-2]*/ 598 call set_buff (segres, 256 + 8 - segres); /* split record */ 599 /*[5.3-2]*/ 600 next_offset = 4 + text_line_in.size - segres; /*[5.3-2]*/ 601 go to srx; 602 603 srx: /*[5.3-2]*/ 604 if text_line_in.size > max_line_size 605 then go to format_error; 606 607 /*[5.3-2]*/ 608 cch = text_line_in.control; 609 610 end; 611 612 set_buff: 613 proc (lsz, rsz); /* assemble split record */ 614 615 /*[5.3-2]*/ 616 dcl (lsz, rsz, sz) fixed bin; 617 618 /*[5.3-2]*/ 619 if lsz > 0 620 then substr (buffer, 1, lsz) = substr (input_string, 1, lsz); 621 622 /*[5.3-2]*/ 623 call set_comp; /*[5.3-2]*/ 624 in_ptr = in_base_ptr; /*[5.3-2]*/ 625 sz = min (rsz, 256 - lsz); 626 627 /*[5.3-2]*/ 628 if rsz > 0 629 then substr (buffer, lsz + 1, sz) = substr (input_string, 1, sz); 630 631 /*[5.3-2]*/ 632 in_ptr = addr (buffer); 633 634 end; 635 636 msf: 637 proc; 638 639 out_component = out_component + 1; 640 call msf_manager_$get_ptr (out_fcb_ptr, out_component, "1"b, out_base_ptr, out_bc, code); 641 out_ptr = out_base_ptr; 642 643 end; 644 645 set_sizes: 646 proc; 647 648 old_size = maxer_size - out_char_offset; 649 new_size = next_out_char_off - max_size; 650 next_out_char_off = new_size + 1; 651 652 end; 653 654 set_comp0: 655 proc; 656 657 component_of_msf = 0; 658 in_base_ptr = component_list.base_seg_ptr (0); 659 in_seg_size = component_list.character_count (0); 660 next_offset = 0; 661 662 end; 663 664 set_comp: 665 proc; 666 667 if component_of_msf = num_of_components 668 then go to format_error; 669 670 component_of_msf = component_of_msf + 1; 671 in_base_ptr = component_list.base_seg_ptr (component_of_msf); 672 in_seg_size = component_list.character_count (component_of_msf); 673 674 end; 675 676 comerr: 677 proc (code, labnum, message); 678 679 dcl code fixed bin (35), 680 labnum fixed bin, 681 message char (*); 682 683 call com_err_ (code, who_am_i, message); 684 685 go to lab (labnum); 686 687 lab (1): 688 go to the_end; 689 lab (2): 690 go to close_and_end; 691 lab (3): 692 go to close_both_and_end; 693 694 end; 695 696 comerr2: 697 proc (code, labnum, message, arg1, arg2); 698 699 dcl code fixed bin (35), 700 labnum fixed bin, 701 message char (*); 702 dcl (arg1, arg2) char (*); 703 704 call com_err_ (code, who_am_i, message, arg1, arg2); 705 706 go to lab (labnum); 707 708 lab (1): 709 go to the_end; 710 lab (2): 711 go to close_and_end; 712 lab (3): 713 go to close_both_and_end; 714 715 end; 716 717 close_both_and_end: 718 if file_output 719 then call tssi_$finish_file (out_fcb_ptr, out_component, out_bit_count, "110"b, aclinfo_ptr, code); 720 721 close_and_end: 722 call msf_manager_$close (fcb_ptr); 723 if out_bit_count = 0 724 then call delete_$path (out_dirname, out_entryname, "011110"b, who_am_i, code); 725 726 go to the_end; 727 728 format_error: 729 call comerr (0, 3, "format error"); 730 731 error_and_out: 732 call com_err_ (code, who_am_i); 733 734 the_end: 735 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/24/89 0828.1 process_cobol_report.pl1 >spec>install>MR12.3-1048>process_cobol_report.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. SZ_OF_DATA internal static fixed bin(35,0) initial dcl 38 ref 52 SZ_OF_INPUT_ARRAY internal static fixed bin(35,0) initial dcl 35 ref 42 SZ_OF_INPUT_STRING internal static fixed bin(35,0) initial dcl 34 ref 41 SZ_OF_OUT_ARRAY internal static fixed bin(35,0) initial dcl 37 ref 137 SZ_OF_OUT_STRING internal static fixed bin(35,0) initial dcl 36 ref 136 aclinfo_ptr 000424 automatic pointer dcl 132 set ref 320* 717* all_codes 000234 automatic bit(1) packed unaligned dcl 118 set ref 183* 232 273* 314 arg based char packed unaligned dcl 82 set ref 198* 200* 211 211 223* 229 229 248 252 263 270 270 274 274 276 276 278* arg1 parameter char packed unaligned dcl 702 set ref 696 704* arg2 parameter char packed unaligned dcl 702 set ref 696 704* arg_len 000120 automatic fixed bin(17,0) dcl 80 set ref 190* 195 198 198 200 200 207* 211 211 217* 223 223 229 229 238* 246 248 252 259 263 270 270 274 274 276 276 278 278 arg_ptr 000116 automatic pointer dcl 79 set ref 190* 198 200 207* 211 211 217* 223 229 229 238* 248 252 263 270 270 274 274 276 276 278 base_seg_ptr 000440 automatic pointer array level 2 dcl 149 set ref 287* 305* 658 671 buffer 000607 automatic char(266) packed unaligned dcl 163 set ref 619* 628* 632 cch 000107 automatic char(1) packed unaligned dcl 70 set ref 351 390 428 463 474 608* cd_size 000717 automatic fixed bin(17,0) initial dcl 169 set ref 169* 541 550 character_count 2 000440 automatic fixed bin(35,0) array level 2 dcl 149 set ref 306* 659 672 code parameter fixed bin(35,0) dcl 699 in procedure "comerr2" set ref 696 704* code parameter fixed bin(35,0) dcl 679 in procedure "comerr" set ref 676 683* code 000121 automatic fixed bin(35,0) dcl 81 in procedure "pcr" set ref 190* 192 198* 200 200* 207* 208 217* 219 223* 224 238* 240 281* 283 283* 297* 299 301 301* 320* 322 322* 459* 460* 468* 640* 717* 723* 731* com_err_ 000036 constant entry external dcl 101 ref 683 704 731 component_list 000440 automatic structure array level 1 unaligned dcl 149 component_of_msf 000232 automatic fixed bin(17,0) dcl 113 set ref 286* 287* 291* 295* 295 297* 305 306 312 574 657* 667 670* 670 671 672 control 1(18) based char(1) level 2 packed packed unaligned dcl 52 ref 455 608 cu_$arg_count 000012 constant entry external dcl 75 ref 203 cu_$arg_ptr 000014 constant entry external dcl 76 ref 190 207 217 238 data 2 based char(32768) level 2 packed packed unaligned dcl 52 set ref 364 370 381 459 459 data_length 000435 automatic fixed bin(21,0) dcl 146 set ref 349* 354 381 381 383 458* 459* delete_$path 000032 constant entry external dcl 95 ref 723 eof 000335 automatic bit(1) packed unaligned dcl 125 set ref 336* 340 347 453 491* 493 517 580* error_table_$badopt 000040 external static fixed bin(35,0) dcl 105 set ref 278* error_table_$noentry 000042 external static fixed bin(35,0) dcl 106 ref 299 expand_pathname_ 000034 constant entry external dcl 96 ref 198 223 false constant bit(1) initial packed unaligned dcl 120 ref 179 183 184 188 274 290 336 491 497 fcb_ptr 000230 automatic pointer dcl 112 set ref 281* 297* 721* file_output 000226 automatic bit(1) packed unaligned dcl 111 set ref 188* 214* 317 344 717 found 000605 automatic bit(1) packed unaligned dcl 160 set ref 497* 499 500* 504 i 000225 automatic fixed bin(17,0) dcl 103 set ref 205* 207* 215* 215 217* 236* 236 238* in_base_ptr 000112 automatic pointer dcl 73 set ref 297* 305 535 588 624 658* 671* in_bit_count 000233 automatic fixed bin(24,0) dcl 114 set ref 297* 306 in_dirname 000136 automatic char(168) packed unaligned dcl 97 set ref 198* 281* 283* 301* 340 437* 478* in_entryname 000210 automatic char(32) packed unaligned dcl 98 set ref 198* 281* 283* 340 437* 478* in_ptr 000110 automatic pointer dcl 72 set ref 349 364 370 381 393 455 458 459 459 466 500 507 521 535* 541 550 588* 589 600 603 608 619 624* 628 632* in_seg_size 000336 automatic fixed bin(35,0) dcl 126 set ref 533 659* 672* input_array based char(1) array packed unaligned dcl 42 set ref 535 588 input_string based char(1048576) packed unaligned dcl 41 ref 619 628 iox_$get_line 000016 constant entry external dcl 85 ref 450 474 iox_$put_chars 000020 constant entry external dcl 86 ref 459 460 468 iox_$user_output 000022 external static pointer dcl 87 ref 180 labnum parameter fixed bin(17,0) dcl 699 in procedure "comerr2" ref 696 706 labnum parameter fixed bin(17,0) dcl 679 in procedure "comerr" ref 676 685 last_component 000602 automatic bit(1) packed unaligned dcl 157 set ref 290* 293 299* list_index 000604 automatic fixed bin(17,0) dcl 159 set ref 499* 500* lsz parameter fixed bin(17,0) dcl 616 ref 612 619 619 619 625 628 max_line_size 000715 automatic fixed bin(17,0) initial dcl 167 set ref 167* 603 max_rec_size 000716 automatic fixed bin(17,0) initial dcl 168 set ref 168* 538 max_size 000100 automatic fixed bin(35,0) dcl 45 set ref 181* 182 649 maxer_size 000101 automatic fixed bin(35,0) dcl 45 set ref 182* 357 401 648 message parameter char packed unaligned dcl 679 in procedure "comerr" set ref 676 683* message parameter char packed unaligned dcl 699 in procedure "comerr2" set ref 696 704* msf_manager_$close 000030 constant entry external dcl 93 ref 721 msf_manager_$get_ptr 000026 constant entry external dcl 91 ref 297 640 msf_manager_$open 000024 constant entry external dcl 90 ref 281 new_line 000434 automatic char(1) initial packed unaligned dcl 140 set ref 140* 376 383 new_size 000103 automatic fixed bin(17,0) dcl 47 set ref 370 370 376 414 414 649* 650 newline_buffer 000235 automatic char(254) initial packed unaligned dcl 123 set ref 123* 408 414 418 460 460 468 468 newpage 000724 automatic char(1) initial packed unaligned dcl 173 set ref 173* 432 newpage_flag 000722 automatic bit(1) packed unaligned dcl 171 set ref 178* 274* 428 next_offset 000104 automatic fixed bin(35,0) dcl 50 set ref 533 535 541* 541 555* 555 567* 587* 588 589* 589 600* 660* next_out_char_off 000712 automatic fixed bin(17,0) dcl 164 set ref 354* 357 387 398* 401 421 649 650* num_of_args 000114 automatic fixed bin(17,0) dcl 77 set ref 203* 205 num_of_components 000606 automatic fixed bin(17,0) dcl 161 set ref 312* 574 667 num_of_reports 000600 automatic fixed bin(17,0) dcl 155 set ref 185* 244* 251* 251 252 262* 262 263 330 490* 499 506* 506 507 number_of_skips 2 based fixed bin(35,0) level 2 packed packed unaligned dcl 59 ref 393 466 old_size 000102 automatic fixed bin(17,0) dcl 47 set ref 364 364 370 408 408 648* out_array based char(1) array packed unaligned dcl 137 set ref 439 out_base_ptr 000426 automatic pointer dcl 133 set ref 320* 325 439 640* 641 out_bc 000714 automatic fixed bin(24,0) dcl 166 set ref 640* out_bit_count 000432 automatic fixed bin(24,0) dcl 138 set ref 176* 445* 717* 723 out_char_offset 000433 automatic fixed bin(35,0) dcl 139 set ref 326* 354 387* 398 421* 433* 433 439 445 648 out_component 000713 automatic fixed bin(17,0) dcl 165 set ref 187* 639* 639 640* 717* out_dirname 000337 automatic char(168) packed unaligned dcl 128 set ref 223* 301* 320* 322* 723* out_entryname 000411 automatic char(32) packed unaligned dcl 129 set ref 223* 320* 322* 723* out_fcb_ptr 000422 automatic pointer dcl 131 set ref 320* 640* 717* out_ptr 000430 automatic pointer dcl 134 set ref 325* 364 370 376 381 383 408 414 418 432 439* 641* out_string based char(1048576) packed unaligned dcl 136 set ref 364* 370* 376* 381* 383* 408* 414* 418* 432* position 000601 automatic fixed bin(35,0) dcl 156 set ref 246* 248 252* 259 263 rcd_arg 000436 automatic bit(1) packed unaligned dcl 147 set ref 184* 234* 270 recsize 000721 automatic fixed bin(17,0) dcl 170 set ref 550* 553 555 563* 563 564 567 reply 000122 automatic char(40) packed unaligned dcl 84 set ref 450 450 450 450 474 474 474 474 report_code 1 based char(2) level 2 packed packed unaligned dcl 52 ref 500 507 521 report_code_list 000540 automatic char(2) array packed unaligned dcl 154 set ref 186* 252* 263* 332 500 507* report_index 000603 automatic fixed bin(17,0) dcl 158 set ref 330* 332* requested_code 000106 automatic char(2) packed unaligned dcl 69 set ref 332* 340* 521 rsz parameter fixed bin(17,0) dcl 616 ref 612 625 628 segres 000720 automatic fixed bin(17,0) dcl 170 set ref 533* 538 547 553 562* 562 564* 564 567 572 574 587 592* 592 598* 598 600 size based fixed bin(35,0) level 2 packed packed unaligned dcl 52 ref 349 458 541 550 589 600 603 skip_length 000105 automatic fixed bin(21,0) dcl 67 set ref 393* 395 398 418 418 466* 468 468* skip_line_in based structure level 1 packed packed unaligned dcl 59 stop_flag 000723 automatic bit(1) packed unaligned dcl 172 set ref 179* 276* 450 474 sys_info$max_seg_size 000010 external static fixed bin(35,0) dcl 43 ref 181 sz 000762 automatic fixed bin(17,0) dcl 616 set ref 625* 628 628 text_line_in based structure level 1 packed packed unaligned dcl 52 true constant bit(1) initial packed unaligned dcl 119 ref 178 234 273 276 299 500 580 tssi_$finish_file 000046 constant entry external dcl 144 ref 717 tssi_$get_file 000044 constant entry external dcl 143 ref 320 user_out 000134 automatic pointer initial dcl 88 set ref 88* 180* 450* 459* 460* 468* 474* who_am_i 000220 automatic char(20) initial packed unaligned dcl 100 set ref 100* 683* 704* 723* 731* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. arg_no automatic fixed bin(17,0) dcl 78 character_offset automatic fixed bin(35,0) dcl 49 data_ptr automatic pointer dcl 116 error_table_$badpath external static fixed bin(35,0) dcl 108 length_of_data automatic fixed bin(35,0) dcl 122 previous_in_ptr automatic pointer dcl 115 report_codes_in automatic varying char(255) dcl 68 rest_of_segment automatic fixed bin(17,0) dcl 162 NAMES DECLARED BY EXPLICIT CONTEXT. close_and_end 001775 constant label dcl 721 ref 689 710 close_both_and_end 001750 constant label dcl 717 ref 691 712 comerr 002474 constant entry internal dcl 676 ref 195 200 232 255 266 270 278 424 470 728 comerr2 002536 constant entry internal dcl 696 ref 283 301 322 340 437 478 error_and_out 002054 constant label dcl 731 ref 192 208 219 224 240 fill_code_list 002072 constant entry internal dcl 485 ref 314 format_error 002042 constant label dcl 728 ref 603 667 get_line 002140 constant entry internal dcl 514 ref 338 441 480 getl 002155 constant entry internal dcl 527 ref 495 519 lab 000007 constant label array(3) dcl 687 in procedure "comerr" ref 685 lab 000012 constant label array(3) dcl 708 in procedure "comerr2" ref 706 msf 002400 constant entry internal dcl 636 ref 367 411 pcr 000241 constant entry external dcl 30 process_cobol_report 000251 constant entry external dcl 30 set_buff 002343 constant entry internal dcl 612 ref 564 598 set_comp 002460 constant entry internal dcl 664 ref 585 623 set_comp0 002450 constant entry internal dcl 654 ref 334 488 set_sizes 002430 constant entry internal dcl 645 ref 361 405 sr 000000 constant label array(0:6) dcl 574 ref 572 srx 002326 constant label dcl 603 ref 543 558 568 590 601 the_end 002071 constant label dcl 734 ref 687 708 726 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 439 450 450 459 459 460 460 468 468 474 474 535 588 632 divide builtin function ref 306 length builtin function ref 450 450 474 474 min builtin function ref 625 null builtin function ref 88 287 substr builtin function set ref 248 252 263 364* 364 370* 370 376* 381* 381 383* 408* 408 414* 414 418* 418 432* 619* 619 628* 628 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3432 3502 3220 3442 Length 3732 3220 50 213 211 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME pcr 706 external procedure is an external procedure. fill_code_list internal procedure shares stack frame of external procedure pcr. get_line internal procedure shares stack frame of external procedure pcr. getl internal procedure shares stack frame of external procedure pcr. set_buff internal procedure shares stack frame of external procedure pcr. msf internal procedure shares stack frame of external procedure pcr. set_sizes internal procedure shares stack frame of external procedure pcr. set_comp0 internal procedure shares stack frame of external procedure pcr. set_comp internal procedure shares stack frame of external procedure pcr. comerr internal procedure shares stack frame of external procedure pcr. comerr2 internal procedure shares stack frame of external procedure pcr. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME pcr 000100 max_size pcr 000101 maxer_size pcr 000102 old_size pcr 000103 new_size pcr 000104 next_offset pcr 000105 skip_length pcr 000106 requested_code pcr 000107 cch pcr 000110 in_ptr pcr 000112 in_base_ptr pcr 000114 num_of_args pcr 000116 arg_ptr pcr 000120 arg_len pcr 000121 code pcr 000122 reply pcr 000134 user_out pcr 000136 in_dirname pcr 000210 in_entryname pcr 000220 who_am_i pcr 000225 i pcr 000226 file_output pcr 000230 fcb_ptr pcr 000232 component_of_msf pcr 000233 in_bit_count pcr 000234 all_codes pcr 000235 newline_buffer pcr 000335 eof pcr 000336 in_seg_size pcr 000337 out_dirname pcr 000411 out_entryname pcr 000422 out_fcb_ptr pcr 000424 aclinfo_ptr pcr 000426 out_base_ptr pcr 000430 out_ptr pcr 000432 out_bit_count pcr 000433 out_char_offset pcr 000434 new_line pcr 000435 data_length pcr 000436 rcd_arg pcr 000440 component_list pcr 000540 report_code_list pcr 000600 num_of_reports pcr 000601 position pcr 000602 last_component pcr 000603 report_index pcr 000604 list_index pcr 000605 found pcr 000606 num_of_components pcr 000607 buffer pcr 000712 next_out_char_off pcr 000713 out_component pcr 000714 out_bc pcr 000715 max_line_size pcr 000716 max_rec_size pcr 000717 cd_size pcr 000720 segres pcr 000721 recsize pcr 000722 newpage_flag pcr 000723 stop_flag pcr 000724 newpage pcr 000762 sz set_buff THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out return_mac mpfx2 shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count cu_$arg_ptr delete_$path expand_pathname_ iox_$get_line iox_$put_chars msf_manager_$close msf_manager_$get_ptr msf_manager_$open tssi_$finish_file tssi_$get_file THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$noentry iox_$user_output sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 88 000211 100 000213 123 000221 140 000224 167 000226 168 000230 169 000232 173 000234 30 000240 176 000257 178 000260 179 000262 180 000263 181 000267 182 000272 183 000276 184 000277 185 000300 186 000302 187 000304 188 000305 190 000306 192 000323 195 000325 198 000337 200 000367 203 000416 205 000425 207 000435 208 000452 211 000454 214 000466 215 000470 217 000471 219 000506 223 000510 224 000540 228 000542 229 000543 232 000553 234 000567 236 000571 238 000572 240 000607 244 000611 246 000612 248 000621 251 000626 252 000627 254 000635 255 000636 257 000647 259 000654 262 000666 263 000667 265 000676 266 000677 269 000710 270 000711 273 000735 274 000740 276 000752 278 000765 279 001013 281 001015 283 001042 286 001053 287 001057 288 001063 290 001065 291 001066 293 001070 295 001072 297 001073 299 001116 301 001125 305 001137 306 001143 310 001147 312 001150 314 001153 317 001156 320 001160 322 001213 325 001224 326 001226 330 001230 332 001237 334 001244 336 001245 338 001246 340 001247 344 001300 347 001303 349 001306 351 001315 354 001320 357 001325 361 001327 364 001330 367 001336 370 001337 376 001355 378 001362 381 001363 383 001370 387 001373 389 001375 390 001376 393 001400 395 001406 398 001410 401 001414 405 001416 408 001417 411 001424 414 001425 417 001432 418 001433 421 001440 423 001442 424 001443 427 001454 428 001455 432 001461 433 001465 436 001471 437 001472 439 001503 441 001511 443 001512 445 001513 447 001525 450 001526 453 001555 455 001560 458 001565 459 001573 460 001612 462 001633 463 001634 466 001637 468 001645 470 001667 473 001700 474 001701 477 001732 478 001733 480 001744 481 001745 483 001746 717 001750 721 001775 723 002004 726 002041 728 002042 731 002054 734 002071 485 002072 488 002073 490 002074 491 002075 493 002076 495 002100 497 002101 499 002102 500 002113 502 002123 504 002125 506 002127 507 002130 510 002136 512 002137 514 002140 517 002141 519 002144 521 002145 524 002153 525 002154 527 002155 533 002156 535 002165 538 002172 541 002175 543 002205 547 002206 550 002210 553 002221 555 002223 558 002227 562 002230 563 002232 564 002234 567 002241 568 002245 572 002246 574 002247 580 002254 581 002256 585 002257 587 002260 588 002263 589 002270 590 002300 592 002301 598 002303 600 002310 601 002325 603 002326 608 002336 610 002342 612 002343 619 002345 623 002353 624 002354 625 002356 628 002365 632 002375 634 002377 636 002400 639 002401 640 002402 641 002425 643 002427 645 002430 648 002431 649 002437 650 002445 652 002447 654 002450 657 002451 658 002452 659 002454 660 002456 662 002457 664 002460 667 002461 670 002464 671 002465 672 002471 674 002473 676 002474 683 002505 685 002530 687 002533 689 002534 691 002535 696 002536 704 002561 706 002614 708 002617 710 002620 712 002621 ----------------------------------------------------------- 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