COMPILATION LISTING OF SEGMENT pps_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 02/02/88 1648.6 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 pps_attach: proc (iocb_ptr_arg, option_array, com_err_switch, code); 12 13 /* Modified 84-08-22 to call unique_chars_... -E. A. Ranzenbach */ 14 15 /* PARAMETERS */ 16 17 18 dcl code fixed bin (35); 19 dcl com_err_switch bit (1) aligned; 20 dcl iocb_ptr_arg ptr; 21 dcl option_array (*) char (*) varying; 22 23 24 /* ENTRY CONSTANTS */ 25 26 27 dcl com_err_ entry options (variable); 28 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 29 dcl cv_entry_ entry (char (*), ptr, fixed bin (35)) returns (entry); 30 dcl cv_ptr_ entry (char (*), fixed bin (35)) returns (ptr); 31 dcl default_handler_$set entry (entry); 32 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 33 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 34 dcl hcs_$reset_ips_mask entry (fixed bin (35), fixed bin (35)); 35 dcl hcs_$set_ips_mask entry (fixed bin (35), fixed bin (35)); 36 dcl iox_$propagate entry (ptr); 37 dcl mvt_entry entry (char (*), char (*)) variable; 38 dcl ppf6023$ppf6023_move entry (char (*), char (*)); 39 dcl pps_$pps_attach entry (ptr, (*) char (*), bit (1) aligned, fixed bin (35)); 40 dcl pps_control entry (ptr, char (*), ptr, fixed bin (35)); 41 dcl pps_detach entry (ptr, fixed bin (35)); 42 dcl pps_modes entry (ptr, char (*), char (*), fixed bin (35)); 43 dcl pps_open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 44 dcl pps_util_$find_ppscb entry (char (*), char (*), char (*), ptr, fixed bin (35)); 45 dcl requote_string_ entry (char (*)) returns (char (*)); 46 dcl unique_chars_ entry (bit (*)) returns (char (15)); 47 48 49 /* EXTERNAL DATA */ 50 51 52 dcl error_table_$bad_arg fixed bin (35) ext; 53 dcl error_table_$bad_conversion fixed bin (35) ext; 54 dcl error_table_$badopt fixed bin (35) ext; 55 dcl error_table_$noarg fixed bin (35) ext; 56 dcl error_table_$not_detached fixed bin (35) ext; 57 dcl error_table_$unimplemented_version fixed bin (35) ext; 58 dcl ppf6023$ppf6023_table ext; 59 dcl pps_conv_$pps_conv_ ext; 60 61 62 /* BUILTIN FUNCTIONS */ 63 64 65 dcl addr builtin; 66 dcl hbound builtin; 67 dcl length builtin; 68 dcl ltrim builtin; 69 dcl null builtin; 70 dcl rtrim builtin; 71 dcl substr builtin; 72 73 /* AUTOMATIC STORAGE */ 74 75 76 dcl bottom_label char (132); 77 dcl file_number pic "9999999999"; 78 dcl i fixed bin; 79 dcl iocb_ptr ptr; 80 dcl j fixed bin; 81 dcl mask fixed bin (35); 82 dcl may_be_volid bit (1); 83 dcl modes_index fixed bin; 84 dcl n fixed bin; 85 dcl n_opts fixed bin; 86 dcl ppscb_dir char (168); 87 dcl ppscb_entry char (32); 88 dcl ppscb_name char (32); 89 dcl ppscb_ptr ptr; 90 dcl retain_option char (4) varying; 91 dcl string_len fixed bin (21); 92 dcl string_ptr ptr; 93 dcl table_ptr ptr; 94 dcl tape_density pic "99999"; 95 dcl top_label char (132); 96 dcl volids char (256) varying; 97 98 99 /* CONSTANTS */ 100 101 102 dcl DEFAULT_TARGET_ATTACH_DESCRIP char (121) static internal options (constant) init ("tape_ibm_ ^a -create -name FILE^d -number ^d -format fb -record 133 -block 1596 -density ^d -retain ^a -force -mode ascii"); 103 dcl ME char (4) static internal options (constant) init ("pps_"); 104 dcl OPT_NAME_ARRAY (20) static internal char (16) varying options (constant) init ( 105 "-bottom_label", 106 "-blbl", 107 "-char_table", 108 "-ct", 109 "-control_block", 110 "-cblk", 111 "-density", 112 "-den", 113 "-label", 114 "-lbl", 115 "-modes", 116 "-mds", 117 "-number", 118 "-nb", 119 "-retain", 120 "-ret", 121 "-top_label", 122 "-tlbl", 123 "-volume", 124 "-vol"); 125 dcl OPT_INDEX_ARRAY (20) static internal fixed bin options (constant) init ( 126 1, 1, 6, 6, 2, 2, 3, 3, 4, 4, 5, 5, 9, 9, 10, 10, 7, 7, 8, 8); 127 128 /* INTERNAL STATIC */ 129 130 131 132 133 /* BASED VARIABLES */ 134 135 136 dcl string char (string_len) based (string_ptr) varying; 137 138 /* 139* 140* Initialize necessary data items. 141* 142**/ 143 144 145 code = 0; 146 mask = 0; 147 iocb_ptr = iocb_ptr_arg; 148 149 call default_handler_$set (Default_Condition_Handler); 150 151 152 /* 153* 154* Now check to see if the I/O switch is attached. If so, complain. If not, then process the options and, if no errors 155* are found, attach the I/O switch. 156* 157**/ 158 159 160 if iocb.attach_descrip_ptr ^= null () then do; 161 code = error_table_$not_detached; 162 if com_err_switch then 163 call com_err_ (code, ME, "^a", iocb.name); 164 return; 165 end; 166 167 168 /* 169* 170* Process the attach description arguments from left to right. 171* 172**/ 173 174 175 call Process_Options (); 176 if code ^= 0 then return; 177 178 179 /* 180* 181* Now get the attach data in order. 182* 183**/ 184 185 186 call Update_Attach_Block (); 187 if code ^= 0 then return; 188 189 /* 190* 191* Now, very carefully, update the IOCB. 192* 193**/ 194 195 196 call hcs_$set_ips_mask (0, mask); 197 198 iocb.attach_data_ptr = ppsab_ptr; 199 iocb.attach_descrip_ptr = addr (ppsab.attach_descrip); 200 iocb.control = pps_control; 201 iocb.modes = pps_modes; 202 iocb.open = pps_open; 203 iocb.detach_iocb = pps_detach; 204 call iox_$propagate (iocb_ptr); 205 206 call hcs_$reset_ips_mask (mask, mask); 207 208 209 /* 210* 211* If there were modes specified in the attach description, try to put them in effect. 212* 213**/ 214 215 216 if modes_index > 0 then do; 217 call pps_modes (iocb_ptr, (option_array (modes_index)), "", code); 218 if code ^= 0 then 219 if com_err_switch then 220 call com_err_ (code, ME, "^a^/Default modes remain in effect.", option_array (modes_index)); 221 end; 222 223 224 return; 225 226 Update_Attach_Block: proc (); 227 228 229 dcl string char (512) varying; 230 dcl init_ppsab bit (1) aligned; 231 232 233 /* 234* 235* Make sure we have an attach data block and determine the proper file number from this data block and the file 236* number which may have been specified in the attach description. 237* 238**/ 239 240 241 call hcs_$make_seg ("", (rtrim (iocb.name)||".ppsseg"), "", 01010b, ppsab_ptr, code); 242 if ppsab_ptr = null () then do; /* ERROR - cannot create ppsseg. */ 243 if com_err_switch then 244 call com_err_ (code, ME, "Cannot create ppsseg in process directory."); 245 return; 246 end; 247 if code ^= 0 then do; /* Must have already been there. */ 248 code = 0; 249 if ppsab.version = pps_attach_block_version_1 then init_ppsab = "0"b; 250 else if ppsab.version = 0 then init_ppsab = "1"b; 251 else do; 252 code = error_table_$unimplemented_version; 253 if com_err_switch then 254 call com_err_ (code, ME, "^a.ppsseg in process directory has bad version.", iocb.name); 255 return; 256 end; 257 end; 258 else init_ppsab = "1"b; 259 260 261 if file_number ^= 0 then do; 262 if file_number > ppsab.file_number+1 then do; 263 code = error_table_$bad_arg; 264 if com_err_switch then 265 call com_err_ (code, ME, "File number specified is beyond end of volume."); 266 return; 267 end; 268 end; 269 else file_number = ppsab.file_number+1; 270 271 /* 272* 273* Compose an attach description for the iocb.attach_descrip_ptr. 274* 275**/ 276 277 278 string = "pps_ -volume " || rtrim (volids) || " -density " || ltrim (tape_density, "0") 279 || " -number " || ltrim (file_number, "0") || " -retain " || retain_option; 280 if top_label ^= "" then do; 281 string = string || " -top_label "; 282 string = string || requote_string_ (rtrim (top_label)); 283 end; 284 if bottom_label ^= "" then do; 285 string = string || " -bottom_label "; 286 string = string || requote_string_ (rtrim (bottom_label)); 287 end; 288 if ppscb_entry ^= "" then do; 289 string = string || " -ppscb "; 290 if ppscb_dir ^= ">" then string = string || ppscb_dir; 291 string = string || ">"; 292 string = string || ppscb_entry; 293 string = string || " "; 294 string = string || ppscb_name; 295 end; 296 297 298 /* 299* 300* Fill in the appropriate items in the attach data block. 301* 302**/ 303 304 305 ppsab.attach_descrip = string; 306 ppsab.file_number = file_number; 307 ppsab.ppscb_dir = ppscb_dir; 308 ppsab.ppscb_entry = ppscb_entry; 309 ppsab.ppscb_name = ppscb_name; 310 ppsab.ppscb_ptr = ppscb_ptr; 311 ppsab.retain_option = retain_option; 312 ppsab.table_ptr = table_ptr; 313 ppsab.mvt_entry = mvt_entry; 314 ppsab.target_iocb_ptr = null (); 315 ppsab.open_descrip = ""; 316 317 318 if ^init_ppsab then return; 319 320 321 ppsab.version = pps_attach_block_version_1; 322 ppsab.target_name = "pps_"||unique_chars_ ("0"b); 323 ppsab.target_attach_descrip = DEFAULT_TARGET_ATTACH_DESCRIP; 324 ppsab.tape_density = tape_density; 325 ppsab.volids = volids; 326 327 /* 328* 329* Initialize the prt_conv_info structure. 330* 331**/ 332 333 334 ppsab.pps_pci.cv_proc = addr (pps_conv_$pps_conv_); 335 ppsab.pps_pci.lmarg = 0; /* default indent = 0 */ 336 ppsab.pps_pci.rmarg = 132; /* default line length = 132 */ 337 ppsab.pps_pci.page_length = 58; /* default page_length = physical_page_length - pages_per_inch */ 338 ppsab.pps_pci.phys_line_length = 132; /* for 11 inch paper */ 339 ppsab.pps_pci.phys_page_length = 58+6; /* for 8.5 inch paper */ 340 ppsab.pps_pci.lpi = 6; /* the default */ 341 ppsab.pps_pci.sheets_per_page = 1; 342 ppsab.pps_pci.line_count = 0; 343 ppsab.pps_pci.page_count = 0; 344 ppsab.pps_pci.func = 0; 345 ppsab.pps_pci.modes.overflow_off = "0"b; 346 ppsab.pps_pci.modes.single_space = "0"b; 347 ppsab.pps_pci.modes.non_edited = "0"b; 348 ppsab.pps_pci.modes.truncate = "0"b; 349 ppsab.pps_pci.modes.esc = "0"b; 350 ppsab.pps_pci.modes.ctl_char = "0"b; 351 ppsab.pps_pci.coroutine_modes.upper_case = "0"b; 352 ppsab.pps_pci.coroutine_modes.ht = "0"b; 353 ppsab.pps_pci.coroutine_modes.slew_table_idx = "000"b; 354 ppsab.pps_pci.top_label_line = top_label; 355 ppsab.pps_pci.bot_label_line = bottom_label; 356 ppsab.pps_pci.top_label_length = length (rtrim (top_label)); 357 ppsab.pps_pci.bot_label_length = length (rtrim (bottom_label)); 358 do i = 1 to hbound (ppsab.pps_pci.form_stops, 1); 359 ppsab.pps_pci.form_stops (i).lbits = (9)"0"b; 360 ppsab.pps_pci.form_stops (i).rbits = (9)"0"b; 361 end; 362 ppsab.pps_pci.level = 0; 363 ppsab.pps_pci.pos = 0; 364 ppsab.pps_pci.line = 0; 365 ppsab.pps_pci.slew_residue = 0; 366 ppsab.pps_pci.label_nelem = 0; 367 ppsab.pps_pci.label_wksp = null (); 368 ppsab.pps_pci.sav_pos = 0; 369 ppsab.pps_pci.esc_state = 0; 370 ppsab.pps_pci.esc_num = 0; 371 ppsab.pps_pci.temp = (36)"0"b; 372 373 374 return; 375 376 377 end Update_Attach_Block; 378 379 Process_Options: proc (); 380 381 382 /* 383* 384* Initialize data items for pps_attach_block structure later. 385* 386**/ 387 388 389 bottom_label = ""; 390 file_number = 0; 391 may_be_volid = "1"b; 392 modes_index = 0; 393 mvt_entry = ppf6023$ppf6023_move; 394 ppscb_dir = ""; 395 ppscb_entry = ""; 396 ppscb_name = ""; 397 ppscb_ptr = null (); 398 retain_option = "none"; 399 table_ptr = addr (ppf6023$ppf6023_table); 400 tape_density = 1600; 401 top_label = ""; 402 volids = ""; 403 404 405 /* 406* 407* Now, process the options in the option_array. 408* 409**/ 410 411 412 n_opts = hbound (option_array, 1); 413 i = 1; 414 do while (i <= n_opts); 415 416 417 /* 418* 419* Look up the option in the name array. 420* 421**/ 422 423 424 if substr (option_array (i), 1, 1) ^= "-" then do; 425 if ^may_be_volid then goto bad_opt; 426 volids = volids || option_array (i) || " "; 427 goto next_opt; 428 end; 429 430 may_be_volid = "0"b; 431 432 do j = 1 to hbound (OPT_NAME_ARRAY, 1); 433 if OPT_NAME_ARRAY (j) = option_array (i) then 434 goto OPTION (OPT_INDEX_ARRAY (j)); 435 end; 436 437 438 bad_opt: 439 440 code = error_table_$badopt; 441 if com_err_switch then 442 call com_err_ (code, ME, "^a", option_array (i)); 443 return; 444 445 446 OPTION (1): /* -bottom_label XX, -blbl XX */ 447 448 call Get_Next_String (); 449 bottom_label = string; 450 goto next_opt; 451 452 453 OPTION (2): /* -control_block cbpath cbname, -cblk cbpath cbname */ 454 455 456 call Get_Next_String (); 457 call expand_pathname_ ((string), ppscb_dir, ppscb_entry, code); 458 if code ^= 0 then do; 459 if com_err_switch then 460 call com_err_ (code, ME, "^a", string); 461 return; 462 end; 463 call Get_Next_String (); 464 ppscb_name = string; 465 call pps_util_$find_ppscb (ppscb_dir, ppscb_entry, ppscb_name, ppscb_ptr, code); 466 if ppscb_ptr = null () then do; 467 if com_err_switch then 468 call com_err_ (code, ME, "Could not find PPS control block ^a in ^a^[>^]^a.", 469 ppscb_name, ppscb_dir, (ppscb_dir ^= ">"), ppscb_entry); 470 return; 471 end; 472 goto next_opt; 473 474 475 OPTION (3): /* -density _n, -den _n */ 476 477 call Get_Next_Dec (); 478 if (n ^= 800) & (n ^= 1600) then do; 479 code = error_table_$bad_arg; 480 if com_err_switch then 481 call com_err_ (code, ME, "Illegal density specification. ^d", n); 482 return; 483 end; 484 tape_density = n; 485 goto next_opt; 486 487 488 OPTION (4): /* -label XX, -lbl XX */ 489 490 call Get_Next_String (); 491 top_label, bottom_label = string; 492 goto next_opt; 493 494 OPTION (5): /* -modes XX, -mds XX */ 495 496 call Get_Next_String (); 497 modes_index = i; 498 goto next_opt; 499 500 501 OPTION (6): /* -char_table XX, -ct XX */ 502 503 call Get_Next_String (); 504 mvt_entry = cv_entry_ ((string||"$"||string||"_move"), addr (pps_$pps_attach), code); 505 if code ^= 0 then do; 506 if com_err_switch then 507 call com_err_ (code, ME, "^a|^a_move", string, string); 508 end; 509 table_ptr = cv_ptr_ ((string||"$"||string||"_table"), code); 510 if code ^= 0 then do; 511 if com_err_switch then 512 call com_err_ (code, ME, "^a|^a_table", string, string); 513 return; 514 end; 515 goto next_opt; 516 517 518 OPTION (7): /* -top_label XX, -tlbl XX */ 519 520 call Get_Next_String (); 521 top_label = string; 522 goto next_opt; 523 524 525 OPTION (8): /* -volume XX, -vol XX */ 526 527 call Get_Next_String (); 528 if string = "" then do; 529 code = error_table_$bad_arg; 530 if com_err_switch then 531 call com_err_ (code, ME, "Invalid volume idetifier specified. ^a", string); 532 return; 533 end; 534 volids = volids||string||" "; 535 goto next_opt; 536 537 538 OPTION (9): /* -number N, -nb N */ 539 540 call Get_Next_Dec (); 541 file_number = n; 542 goto next_opt; 543 544 545 OPTION (10): /* -retain XX, -ret XX */ 546 547 call Get_Next_String (); 548 if string ^= "all" 549 & string ^= "none" then do; 550 code = error_table_$bad_arg; 551 if com_err_switch then 552 call com_err_ (code, ME, "Invalid retain specification. ^a", 553 string); 554 return; 555 end; 556 else retain_option = string; 557 goto next_opt; 558 559 560 next_opt: 561 562 i = i+1; 563 end; 564 565 566 if volids = "" then do; 567 code = error_table_$noarg; 568 if com_err_switch then 569 call com_err_ (code, ME, "No volume identifer(s) specified."); 570 return; 571 end; 572 573 574 fatal_opt_err: 575 576 return; 577 578 Get_Next_Dec: proc (); 579 580 581 if i >= n_opts then do; 582 code = error_table_$noarg; 583 if com_err_switch then 584 call com_err_ (code, ME, "Missing decimal integer following ^a control argument.", 585 option_array (i)); 586 goto fatal_opt_err; 587 end; 588 i = i+1; 589 n = cv_dec_check_ ((option_array (i)), code); 590 if code ^= 0 then do; 591 code = error_table_$bad_conversion; 592 if com_err_switch then 593 call com_err_ (code, ME, "Bad decimal integer following ^a control argument. ^a", 594 option_array (i-1), option_array (i)); 595 goto fatal_opt_err; 596 end; 597 return; 598 599 600 end Get_Next_Dec; 601 602 Get_Next_String: proc (); 603 604 605 if i >= n_opts then do; 606 code = error_table_$noarg; 607 if com_err_switch then 608 call com_err_ (code, ME, "String missing following ^a control argument.", option_array (i)); 609 goto fatal_opt_err; 610 end; 611 i = i+1; 612 string_ptr = addr (option_array (i)); 613 string_len = length (option_array (i)); 614 return; 615 616 617 end Get_Next_String; 618 619 620 end Process_Options; 621 622 /* 623* 624* Internal procedure to handle faults while IPS interrupts are masked. While not masked, any signals are simply 625* passed on up the stack to their normal handlers. For a fault while masked, the process is terminated (with the 626* reason "unable to do critical I/O") because the I/O control blocks are in an inconsistent state, and we can 627* tolerate neither spawning a command loop with interrupts masked nor a restart with a possibly changed mask. 628* 629**/ 630 631 632 Default_Condition_Handler: proc (p1, name, p2, p3, continue); 633 634 635 dcl continue bit (1) aligned; 636 dcl error_table_$unable_to_do_io fixed (35) ext; 637 dcl name char (*); 638 dcl p1 ptr; 639 dcl p2 ptr; 640 dcl p3 ptr; 641 dcl terminate_process_ entry (char (*), ptr); 642 643 dcl 1 ti aligned, 644 2 version fixed, 645 2 code fixed (35); 646 647 648 if mask ^= 0 then do; 649 ti.version = 0; 650 ti.code = error_table_$unable_to_do_io; 651 call terminate_process_ ("fatal_error", addr (ti)); 652 end; 653 if name ^= "cleanup" then continue = "1"b; 654 return; 655 656 657 end Default_Condition_Handler; 658 1 1 1 2 dcl 1 iocb aligned based (iocb_ptr), 1 3 /* I/O control block. */ 1 4 2 iocb_version fixed init (1), /* Version number of structure. */ 1 5 2 name char (32), /* I/O name of this block. */ 1 6 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 1 7 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 1 8 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 1 9 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 1 10 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 1 11 2 reserved bit (72), /* Reserved for future use. */ 1 12 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 1 13 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 1 14 /* open(p,mode,not_used,s) */ 1 15 2 close entry (ptr, fixed (35)),/* close(p,s) */ 1 16 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 17 /* get_line(p,bufptr,buflen,actlen,s) */ 1 18 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 19 /* get_chars(p,bufptr,buflen,actlen,s) */ 1 20 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 1 21 /* put_chars(p,bufptr,buflen,s) */ 1 22 2 modes entry (ptr, char (*), char (*), fixed (35)), 1 23 /* modes(p,newmode,oldmode,s) */ 1 24 2 position entry (ptr, fixed, fixed (21), fixed (35)), 1 25 /* position(p,u1,u2,s) */ 1 26 2 control entry (ptr, char (*), ptr, fixed (35)), 1 27 /* control(p,order,infptr,s) */ 1 28 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 29 /* read_record(p,bufptr,buflen,actlen,s) */ 1 30 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 1 31 /* write_record(p,bufptr,buflen,s) */ 1 32 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 1 33 /* rewrite_record(p,bufptr,buflen,s) */ 1 34 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 1 35 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 36 /* seek_key(p,key,len,s) */ 1 37 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 38 /* read_key(p,key,len,s) */ 1 39 2 read_length entry (ptr, fixed (21), fixed (35)); 1 40 /* read_length(p,len,s) */ 1 41 659 660 2 1 /* Begin include file ... pps_attach_block.incl.pl1 */ 2 2 2 3 2 4 dcl pps_attach_block_version_1 fixed bin static internal options (constant) init (1); 2 5 dcl ppsab_ptr ptr; 2 6 2 7 dcl 1 ppsab based (ppsab_ptr) aligned, 2 8 2 version fixed bin, 2 9 2 attach_descrip char (256) varying, 2 10 2 target_name char (32) unal, 2 11 2 target_attach_descrip char (256) unal, 2 12 2 detach_time_attach_descrip char (256) unal, 2 13 2 target_iocb_ptr ptr, 2 14 2 modes, 2 15 3 debug bit (1) unal, 2 16 3 no_print bit (1) unal, 2 17 3 single_page bit (1) unal, 2 18 2 ppscb_dir char (168) unal, 2 19 2 ppscb_entry char (32) unal, 2 20 2 ppscb_name char (32) unal, 2 21 2 ppscb_ptr ptr, 2 22 2 tape_density fixed bin, 2 23 2 file_number fixed bin, 2 24 2 file_name char (17), 2 25 2 retain_option char (4) varying, 2 26 2 volids char (256) varying, 2 27 2 open_descrip char (256) varying, 2 28 2 table_ptr ptr, 2 29 2 mvt_entry entry, 2 30 2 stop_every fixed bin (71), 2 31 2 stop_count fixed bin (71), 2 32 2 chars_printed fixed bin (35), 2 33 2 paper_info, 2 34 3 cpii fixed bin, 2 35 3 lpii fixed bin, 2 36 3 swi fixed bin, 2 37 3 sli fixed bin, 2 38 2 pps_pci like pci; 2 39 3 1 3 2 /* BEGIN INCLUDE FILE ... prt_conv_info.incl.pl1 */ 3 3 /* Modified: 12 September 1980 by G. Palter */ 3 4 3 5 3 6 /****^ HISTORY COMMENTS: 3 7* 1) change(87-05-10,Gilcrease), approve(87-07-31,MCR7686), 3 8* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 3 9* Add modes.line_nbrs, flags.(eol eof) bits for eor -nb. 3 10* END HISTORY COMMENTS */ 3 11 3 12 3 13 dcl pcip ptr; /* pointer to conversion info structure */ 3 14 3 15 dcl 1 pci based (pcip) aligned, /* printer conversion info structure */ 3 16 2 cv_proc ptr, /* pointer to character conversion procedure */ 3 17 2 lmarg fixed bin, /* left margin indentation */ 3 18 2 rmarg fixed bin, /* right margin limit */ 3 19 2 page_length fixed bin, /* number of lines on page */ 3 20 2 phys_line_length fixed bin, /* physical width of paper */ 3 21 2 phys_page_length fixed bin, /* physical length of paper */ 3 22 2 lpi fixed bin, /* lines per inch */ 3 23 2 sheets_per_page fixed bin, /* sheets of paper per logical page */ 3 24 2 line_count fixed bin, /* count of converted lines */ 3 25 2 page_count fixed bin, /* count of converted pages */ 3 26 2 func fixed bin, /* special conversion function */ 3 27 /* 0 => normal conversion */ 3 28 /* 1 => change NL to FF */ 3 29 /* 2 => change NL to top inside page */ 3 30 /* 3 => change NL to end of page */ 3 31 /* 4 => change NL to top of outside page */ 3 32 (2 modes, /* conversion modes */ 3 33 3 overflow_off bit (1), /* "1"b to suppress end of page overflow */ 3 34 3 single_space bit (1), /* "1"b to change all forms advance chars to NL */ 3 35 3 non_edited bit (1), /* "1"b to print ASCII control chars */ 3 36 3 truncate bit (1), /* "1"b to truncate lines that are too long */ 3 37 3 esc bit (1), /* "1"b to process ESC character */ 3 38 3 ctl_char bit (1), /* "1"b to output control characters */ 3 39 3 line_nbrs bit (1), /* "1"b to output line numbers */ 3 40 3 pci_pad bit (5), 3 41 2 flags, /* flags internal to prt_conv_ */ 3 42 3 ignore_next_ff bit (1), /* ON => prt_conv_ just output a FF; ignore next character if 3 43* it's a FF */ 3 44 3 eol bit (1), /* "1"b = end-of-line encountered */ 3 45 3 eof bit (1), /* "1"b = end-of-segment encountered */ 3 46 3 flags_pad bit (3), 3 47 2 coroutine_modes, 3 48 3 upper_case bit(1), /* "1"b to convert to upper case */ 3 49 3 ht bit(1), /* "1"b to skip tab conversion */ 3 50 3 coroutine_pad bit(13), 3 51 3 slew_table_idx bit(3) ) unal, /* slew table index */ 3 52 2 top_label_line char (136), /* contains an optional top of page label */ 3 53 2 bot_label_line char (136), /* contains an optional bottom of page label */ 3 54 2 top_label_length fixed bin, /* length of top label line */ 3 55 2 bot_label_length fixed bin, /* length of bottom label line */ 3 56 2 form_stops (256) unal, /* logical form stops */ 3 57 3 lbits bit (9), /* leftmost bits */ 3 58 3 rbits bit (9), /* rightmost bits */ 3 59 3 60 /* The following items are for internal use by the print conversion procedure. 3 61* They should be zeroed once and then never referenced again. */ 3 62 3 63 2 level fixed bin, /* overstrike level */ 3 64 2 pos fixed bin, /* print position at end of incomplete line */ 3 65 2 line fixed bin, /* current line number */ 3 66 2 slew_residue fixed bin, /* number of lines remaining to be slewed */ 3 67 2 label_nelem fixed bin, /* characters remaining in label */ 3 68 2 label_wksp ptr, /* pointer to label being processed */ 3 69 2 sav_pos fixed bin, /* position saved during label processing */ 3 70 2 esc_state fixed bin, /* state of ESC processing */ 3 71 2 esc_num fixed bin, /* number following ESC sequence */ 3 72 2 temp bit (36); /* conversion proc temporary */ 3 73 3 74 /* End of include file ...... prt_conv_info.incl.pl1 */ 3 75 2 40 2 41 2 42 2 43 /* End include file ... pps_attach_block.incl.pl1 */ 661 662 663 664 end pps_attach; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 02/02/88 1540.0 pps_.pl1 >special_ldd>install>MR12.2-1019>pps_.pl1 659 1 07/02/81 1905.0 iocbv.incl.pl1 >ldd>include>iocbv.incl.pl1 661 2 03/27/82 0438.0 pps_attach_block.incl.pl1 >ldd>include>pps_attach_block.incl.pl1 2-40 3 02/02/88 1529.2 prt_conv_info.incl.pl1 >special_ldd>install>MR12.2-1019>prt_conv_info.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. DEFAULT_TARGET_ATTACH_DESCRIP 000202 constant char(121) initial unaligned dcl 102 ref 323 ME 000350 constant char(4) initial unaligned dcl 103 set ref 162* 218* 243* 253* 264* 441* 459* 467* 480* 506* 511* 530* 551* 568* 583* 592* 607* OPT_INDEX_ARRAY 000012 constant fixed bin(17,0) initial array dcl 125 ref 433 OPT_NAME_ARRAY 000036 constant varying char(16) initial array dcl 104 ref 432 433 addr builtin function dcl 65 ref 199 334 399 504 504 612 651 651 attach_data_ptr 16 based pointer level 2 dcl 1-2 set ref 198* attach_descrip 1 based varying char(256) level 2 dcl 2-7 set ref 199 305* attach_descrip_ptr 14 based pointer level 2 dcl 1-2 set ref 160 199* bot_label_length 770 based fixed bin(17,0) level 3 dcl 2-7 set ref 357* bot_label_line 725 based char(136) level 3 dcl 2-7 set ref 355* bottom_label 000104 automatic char(132) unaligned dcl 76 set ref 284 286 286 355 357 389* 449* 491* code 1 000100 automatic fixed bin(35,0) level 2 in structure "ti" dcl 643 in procedure "Default_Condition_Handler" set ref 650* code parameter fixed bin(35,0) dcl 18 in procedure "pps_attach" set ref 11 145* 161* 162* 176 187 217* 218 218* 241* 243* 247 248* 252* 253* 263* 264* 438* 441* 457* 458 459* 465* 467* 479* 480* 504* 505 506* 509* 510 511* 529* 530* 550* 551* 567* 568* 582* 583* 589* 590 591* 592* 606* 607* com_err_ 000010 constant entry external dcl 27 ref 162 218 243 253 264 441 459 467 480 506 511 530 551 568 583 592 607 com_err_switch parameter bit(1) dcl 19 ref 11 162 218 243 253 264 441 459 467 480 506 511 530 551 568 583 592 607 continue parameter bit(1) dcl 635 set ref 632 653* control 66 based entry variable level 2 dcl 1-2 set ref 200* coroutine_modes 662(18) based structure level 3 packed unaligned dcl 2-7 ctl_char 662(05) based bit(1) level 4 packed unaligned dcl 2-7 set ref 350* cv_dec_check_ 000012 constant entry external dcl 28 ref 589 cv_entry_ 000014 constant entry external dcl 29 ref 504 cv_proc 646 based pointer level 3 dcl 2-7 set ref 334* cv_ptr_ 000016 constant entry external dcl 30 ref 509 default_handler_$set 000020 constant entry external dcl 31 ref 149 detach_iocb 26 based entry variable level 2 dcl 1-2 set ref 203* error_table_$bad_arg 000056 external static fixed bin(35,0) dcl 52 ref 263 479 529 550 error_table_$bad_conversion 000060 external static fixed bin(35,0) dcl 53 ref 591 error_table_$badopt 000062 external static fixed bin(35,0) dcl 54 ref 438 error_table_$noarg 000064 external static fixed bin(35,0) dcl 55 ref 567 582 606 error_table_$not_detached 000066 external static fixed bin(35,0) dcl 56 ref 161 error_table_$unable_to_do_io 000076 external static fixed bin(35,0) dcl 636 ref 650 error_table_$unimplemented_version 000070 external static fixed bin(35,0) dcl 57 ref 252 esc 662(04) based bit(1) level 4 packed unaligned dcl 2-7 set ref 349* esc_num 1202 based fixed bin(17,0) level 3 dcl 2-7 set ref 370* esc_state 1201 based fixed bin(17,0) level 3 dcl 2-7 set ref 369* expand_pathname_ 000022 constant entry external dcl 32 ref 457 file_number 000145 automatic picture(10) unaligned dcl 77 in procedure "pps_attach" set ref 261 262 269* 278 306 390* 541* file_number 413 based fixed bin(17,0) level 2 in structure "ppsab" dcl 2-7 in procedure "pps_attach" set ref 262 269 306* form_stops 771 based structure array level 3 packed unaligned dcl 2-7 set ref 358 func 661 based fixed bin(17,0) level 3 dcl 2-7 set ref 344* hbound builtin function dcl 66 ref 358 412 432 hcs_$make_seg 000024 constant entry external dcl 33 ref 241 hcs_$reset_ips_mask 000026 constant entry external dcl 34 ref 206 hcs_$set_ips_mask 000030 constant entry external dcl 35 ref 196 ht 662(19) based bit(1) level 4 packed unaligned dcl 2-7 set ref 352* i 000150 automatic fixed bin(17,0) dcl 78 set ref 358* 359 360* 413* 414 424 426 433 441 497 560* 560 581 583 588* 588 589 592 592 605 607 611* 611 612 613 init_ppsab 000643 automatic bit(1) dcl 230 set ref 249* 250* 258* 318 iocb based structure level 1 dcl 1-2 iocb_ptr 000152 automatic pointer dcl 79 set ref 147* 160 162 198 199 200 201 202 203 204* 217* 241 253 iocb_ptr_arg parameter pointer dcl 20 ref 11 147 iox_$propagate 000032 constant entry external dcl 36 ref 204 j 000154 automatic fixed bin(17,0) dcl 80 set ref 432* 433 433* label_nelem 1175 based fixed bin(17,0) level 3 dcl 2-7 set ref 366* label_wksp 1176 based pointer level 3 dcl 2-7 set ref 367* lbits 771 based bit(9) array level 4 packed unaligned dcl 2-7 set ref 359* length builtin function dcl 67 ref 356 357 613 level 1171 based fixed bin(17,0) level 3 dcl 2-7 set ref 362* line 1173 based fixed bin(17,0) level 3 dcl 2-7 set ref 364* line_count 657 based fixed bin(17,0) level 3 dcl 2-7 set ref 342* lmarg 650 based fixed bin(17,0) level 3 dcl 2-7 set ref 335* lpi 655 based fixed bin(17,0) level 3 dcl 2-7 set ref 340* ltrim builtin function dcl 68 ref 278 278 mask 000155 automatic fixed bin(35,0) dcl 81 set ref 146* 196* 206* 206* 648 may_be_volid 000156 automatic bit(1) unaligned dcl 82 set ref 391* 425 430* modes 56 based entry variable level 2 in structure "iocb" dcl 1-2 in procedure "pps_attach" set ref 201* modes 662 based structure level 3 in structure "ppsab" packed unaligned dcl 2-7 in procedure "pps_attach" modes_index 000157 automatic fixed bin(17,0) dcl 83 set ref 216 217 218 392* 497* mvt_entry 630 based entry variable level 2 in structure "ppsab" dcl 2-7 in procedure "pps_attach" set ref 313* mvt_entry 000100 automatic entry variable dcl 37 in procedure "pps_attach" set ref 313 393* 504* n 000160 automatic fixed bin(17,0) dcl 84 set ref 478 478 480* 484 541 589* n_opts 000161 automatic fixed bin(17,0) dcl 85 set ref 412* 414 581 605 name 1 based char(32) level 2 in structure "iocb" dcl 1-2 in procedure "pps_attach" set ref 162* 241 253* name parameter char unaligned dcl 637 in procedure "Default_Condition_Handler" ref 632 653 non_edited 662(02) based bit(1) level 4 packed unaligned dcl 2-7 set ref 347* null builtin function dcl 69 ref 160 242 314 367 397 466 open 32 based entry variable level 2 dcl 1-2 set ref 202* open_descrip 524 based varying char(256) level 2 dcl 2-7 set ref 315* option_array parameter varying char array dcl 21 set ref 11 217 218* 412 424 426 433 441* 583* 589 592* 592* 607* 612 613 overflow_off 662 based bit(1) level 4 packed unaligned dcl 2-7 set ref 345* p1 parameter pointer dcl 638 ref 632 p2 parameter pointer dcl 639 ref 632 p3 parameter pointer dcl 640 ref 632 page_count 660 based fixed bin(17,0) level 3 dcl 2-7 set ref 343* page_length 652 based fixed bin(17,0) level 3 dcl 2-7 set ref 337* pci based structure level 1 dcl 3-15 phys_line_length 653 based fixed bin(17,0) level 3 dcl 2-7 set ref 338* phys_page_length 654 based fixed bin(17,0) level 3 dcl 2-7 set ref 339* pos 1172 based fixed bin(17,0) level 3 dcl 2-7 set ref 363* ppf6023$ppf6023_move 000034 constant entry external dcl 38 ref 393 ppf6023$ppf6023_table 000072 external static fixed bin(17,0) dcl 58 set ref 399 pps_$pps_attach 000036 constant entry external dcl 39 set ref 504 504 pps_attach_block_version_1 constant fixed bin(17,0) initial dcl 2-4 ref 249 321 pps_control 000040 constant entry external dcl 40 ref 200 pps_conv_$pps_conv_ 000074 external static fixed bin(17,0) dcl 59 set ref 334 pps_detach 000042 constant entry external dcl 41 ref 203 pps_modes 000044 constant entry external dcl 42 ref 201 217 pps_open 000046 constant entry external dcl 43 ref 202 pps_pci 646 based structure level 2 dcl 2-7 pps_util_$find_ppscb 000050 constant entry external dcl 44 ref 465 ppsab based structure level 1 dcl 2-7 ppsab_ptr 000432 automatic pointer dcl 2-5 set ref 198 199 241* 242 249 250 262 269 305 306 307 308 309 310 311 312 313 314 315 321 322 323 324 325 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 362 363 364 365 366 367 368 369 370 371 ppscb_dir 000162 automatic char(168) unaligned dcl 86 in procedure "pps_attach" set ref 290 290 307 394* 457* 465* 467* 467 ppscb_dir 315 based char(168) level 2 in structure "ppsab" packed unaligned dcl 2-7 in procedure "pps_attach" set ref 307* ppscb_entry 000234 automatic char(32) unaligned dcl 87 in procedure "pps_attach" set ref 288 292 308 395* 457* 465* 467* ppscb_entry 367 based char(32) level 2 in structure "ppsab" packed unaligned dcl 2-7 in procedure "pps_attach" set ref 308* ppscb_name 000244 automatic char(32) unaligned dcl 88 in procedure "pps_attach" set ref 294 309 396* 464* 465* 467* ppscb_name 377 based char(32) level 2 in structure "ppsab" packed unaligned dcl 2-7 in procedure "pps_attach" set ref 309* ppscb_ptr 000254 automatic pointer dcl 89 in procedure "pps_attach" set ref 310 397* 465* 466 ppscb_ptr 410 based pointer level 2 in structure "ppsab" dcl 2-7 in procedure "pps_attach" set ref 310* rbits 771(09) based bit(9) array level 4 packed unaligned dcl 2-7 set ref 360* requote_string_ 000052 constant entry external dcl 45 ref 282 286 retain_option 000256 automatic varying char(4) dcl 90 in procedure "pps_attach" set ref 278 311 398* 556* retain_option 421 based varying char(4) level 2 in structure "ppsab" dcl 2-7 in procedure "pps_attach" set ref 311* rmarg 651 based fixed bin(17,0) level 3 dcl 2-7 set ref 336* rtrim builtin function dcl 70 ref 241 278 282 282 286 286 356 357 sav_pos 1200 based fixed bin(17,0) level 3 dcl 2-7 set ref 368* sheets_per_page 656 based fixed bin(17,0) level 3 dcl 2-7 set ref 341* single_space 662(01) based bit(1) level 4 packed unaligned dcl 2-7 set ref 346* slew_residue 1174 based fixed bin(17,0) level 3 dcl 2-7 set ref 365* slew_table_idx 662(33) based bit(3) level 4 packed unaligned dcl 2-7 set ref 353* string based varying char dcl 136 in procedure "pps_attach" set ref 449 457 459* 464 491 504 504 506* 506* 509 509 511* 511* 521 528 530* 534 548 548 551* 556 string 000442 automatic varying char(512) dcl 229 in procedure "Update_Attach_Block" set ref 278* 281* 281 282* 282 285* 285 286* 286 289* 289 290* 290 291* 291 292* 292 293* 293 294* 294 305 string_len 000260 automatic fixed bin(21,0) dcl 91 set ref 459 506 506 511 511 530 551 613* string_ptr 000262 automatic pointer dcl 92 set ref 449 457 459 464 491 504 504 506 506 509 509 511 511 521 528 530 534 548 548 551 556 612* substr builtin function dcl 71 ref 424 table_ptr 626 based pointer level 2 in structure "ppsab" dcl 2-7 in procedure "pps_attach" set ref 312* table_ptr 000264 automatic pointer dcl 93 in procedure "pps_attach" set ref 312 399* 509* tape_density 000266 automatic picture(5) unaligned dcl 94 in procedure "pps_attach" set ref 278 324 400* 484* tape_density 412 based fixed bin(17,0) level 2 in structure "ppsab" dcl 2-7 in procedure "pps_attach" set ref 324* target_attach_descrip 112 based char(256) level 2 packed unaligned dcl 2-7 set ref 323* target_iocb_ptr 312 based pointer level 2 dcl 2-7 set ref 314* target_name 102 based char(32) level 2 packed unaligned dcl 2-7 set ref 322* temp 1203 based bit(36) level 3 dcl 2-7 set ref 371* terminate_process_ 000100 constant entry external dcl 641 ref 651 ti 000100 automatic structure level 1 dcl 643 set ref 651 651 top_label 000270 automatic char(132) unaligned dcl 95 set ref 280 282 282 354 356 401* 491* 521* top_label_length 767 based fixed bin(17,0) level 3 dcl 2-7 set ref 356* top_label_line 663 based char(136) level 3 dcl 2-7 set ref 354* truncate 662(03) based bit(1) level 4 packed unaligned dcl 2-7 set ref 348* unique_chars_ 000054 constant entry external dcl 46 ref 322 upper_case 662(18) based bit(1) level 4 packed unaligned dcl 2-7 set ref 351* version based fixed bin(17,0) level 2 in structure "ppsab" dcl 2-7 in procedure "pps_attach" set ref 249 250 321* version 000100 automatic fixed bin(17,0) level 2 in structure "ti" dcl 643 in procedure "Default_Condition_Handler" set ref 649* volids 000331 automatic varying char(256) dcl 96 in procedure "pps_attach" set ref 278 325 402* 426* 426 534* 534 566 volids 423 based varying char(256) level 2 in structure "ppsab" dcl 2-7 in procedure "pps_attach" set ref 325* NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. pcip automatic pointer dcl 3-13 NAMES DECLARED BY EXPLICIT CONTEXT. Default_Condition_Handler 004250 constant entry internal dcl 632 ref 149 149 Get_Next_Dec 003732 constant entry internal dcl 578 ref 475 538 Get_Next_String 004151 constant entry internal dcl 602 ref 446 453 463 488 494 501 518 525 545 OPTION 000000 constant label array(10) dcl 446 ref 433 Process_Options 002333 constant entry internal dcl 379 ref 175 Update_Attach_Block 001101 constant entry internal dcl 226 ref 186 bad_opt 002537 constant label dcl 438 ref 425 fatal_opt_err 003731 constant label dcl 574 ref 586 595 609 next_opt 003667 constant label dcl 560 ref 427 450 472 485 492 498 515 522 535 542 557 pps_attach 000573 constant entry external dcl 11 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4730 5032 4357 4740 Length 5342 4357 102 274 350 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME pps_attach 710 external procedure is an external procedure. Update_Attach_Block internal procedure shares stack frame of external procedure pps_attach. Process_Options internal procedure shares stack frame of external procedure pps_attach. Get_Next_Dec internal procedure shares stack frame of external procedure pps_attach. Get_Next_String internal procedure shares stack frame of external procedure pps_attach. Default_Condition_Handler 84 internal procedure is assigned to an entry variable. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME Default_Condition_Handler 000100 ti Default_Condition_Handler pps_attach 000100 mvt_entry pps_attach 000104 bottom_label pps_attach 000145 file_number pps_attach 000150 i pps_attach 000152 iocb_ptr pps_attach 000154 j pps_attach 000155 mask pps_attach 000156 may_be_volid pps_attach 000157 modes_index pps_attach 000160 n pps_attach 000161 n_opts pps_attach 000162 ppscb_dir pps_attach 000234 ppscb_entry pps_attach 000244 ppscb_name pps_attach 000254 ppscb_ptr pps_attach 000256 retain_option pps_attach 000260 string_len pps_attach 000262 string_ptr pps_attach 000264 table_ptr pps_attach 000266 tape_density pps_attach 000270 top_label pps_attach 000331 volids pps_attach 000432 ppsab_ptr pps_attach 000442 string Update_Attach_Block 000643 init_ppsab Update_Attach_Block THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry_desc int_entry_desc unpack_picture THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cv_dec_check_ cv_entry_ cv_ptr_ default_handler_$set expand_pathname_ hcs_$make_seg hcs_$reset_ips_mask hcs_$set_ips_mask iox_$propagate ppf6023$ppf6023_move pps_$pps_attach pps_control pps_detach pps_modes pps_open pps_util_$find_ppscb requote_string_ terminate_process_ unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$bad_conversion error_table_$badopt error_table_$noarg error_table_$not_detached error_table_$unable_to_do_io error_table_$unimplemented_version ppf6023$ppf6023_table pps_conv_$pps_conv_ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000566 145 000606 146 000610 147 000611 149 000614 160 000625 161 000632 162 000636 164 000667 175 000670 176 000671 186 000674 187 000675 196 000700 198 000712 199 000715 200 000717 201 000724 202 000727 203 000732 204 000735 206 000743 216 000753 217 000755 218 001026 224 001100 226 001101 241 001102 242 001171 243 001176 245 001226 247 001227 248 001232 249 001233 250 001240 252 001245 253 001250 255 001303 257 001304 258 001305 261 001307 262 001317 263 001331 264 001335 266 001363 268 001364 269 001365 278 001400 280 001551 281 001556 282 001570 283 001645 284 001646 285 001652 286 001664 287 001741 288 001742 289 001746 290 001760 291 001776 292 002005 293 002017 294 002026 305 002040 306 002051 307 002061 308 002064 309 002067 310 002072 311 002074 312 002102 313 002104 314 002111 315 002113 318 002115 321 002120 322 002122 323 002155 324 002161 325 002171 334 002176 335 002201 336 002203 337 002205 338 002207 339 002211 340 002213 341 002215 342 002217 343 002220 344 002221 345 002222 346 002224 347 002226 348 002230 349 002232 350 002234 351 002236 352 002240 353 002242 354 002244 355 002247 356 002252 357 002264 358 002276 359 002303 360 002310 361 002313 362 002315 363 002317 364 002320 365 002321 366 002322 367 002323 368 002325 369 002327 370 002330 371 002331 374 002332 379 002333 389 002334 390 002337 391 002343 392 002345 393 002346 394 002353 395 002356 396 002361 397 002364 398 002366 399 002372 400 002374 401 002401 402 002404 412 002405 413 002411 414 002413 424 002417 425 002435 426 002437 427 002476 430 002500 432 002501 433 002507 435 002535 438 002537 441 002543 443 002607 446 002610 449 002611 450 002616 453 002617 457 002620 458 002657 459 002663 461 002721 463 002722 464 002723 465 002730 466 002761 467 002765 470 003041 472 003042 475 003043 478 003044 479 003051 480 003055 482 003107 484 003110 485 003120 488 003121 491 003122 492 003137 494 003141 497 003142 498 003144 501 003145 504 003146 505 003236 506 003242 509 003311 510 003373 511 003377 513 003447 515 003450 518 003451 521 003452 522 003457 525 003460 528 003461 529 003467 530 003473 532 003530 534 003531 535 003565 538 003567 541 003570 542 003577 545 003600 548 003601 550 003614 551 003620 554 003655 556 003656 557 003666 560 003667 563 003670 566 003671 567 003676 568 003702 570 003730 574 003731 578 003732 581 003733 582 003736 583 003742 586 004007 588 004010 589 004011 590 004057 591 004063 592 004066 595 004147 597 004150 602 004151 605 004152 606 004155 607 004161 609 004226 611 004227 612 004230 613 004244 614 004246 632 004247 648 004263 649 004266 650 004267 651 004271 653 004313 654 004324 ----------------------------------------------------------- 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