COMPILATION LISTING OF SEGMENT head_sheet_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/28/88 1335.3 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 /* format: style4 */ 13 14 /* format: off */ 15 16 /* HEAD_SHEET_ - This program prints the IO Daemon header page. 17* THVV */ 18 19 /* Modified in March 1975 by J. C. Whitmore for chopping and access isolation */ 20 /* Modified in December 1975 by M. A. Braida to state when a request has been 21* continued and to enable a separator page to be printed on other than the first copy */ 22 /* Modified in Sept. 1977 by J. C. Whitmore to add the set_page_length and separator entries */ 23 /* Modified by J. C. Whitmore, 4/78, for new dprint_msg format */ 24 /* Modified by C. Hornig, 6/79, to take prt_ctl out of static */ 25 /* Modified by J. C. Whitmore, 5/80, for dest and head garbage bug for short page length */ 26 /* Modified by GA Texada 04/01/81 to increase the size of sysdir to 168 so test entry point can be called with impunity */ 27 /* Modified: 20 November 1981 by G. Palter as part of fixing the following bugs from the I/O daemon error list: 28* 0012: phx09251 phx03749 phx04015 29* "-no_endpage" does not really work. When the daemon prints what should be the last line of the "logical" page 30* (line 3 of a real page), it issues a form-feed to get to the next line which is the top of the next "logical" 31* page. However, if the paper info or printer alignment (for remotes) is incorrect, this form-feed will cause 32* extra blank paper. The daemon should never print a form-feed in this mode except when one appears in the user's 33* print file 34* 0032: phx11372 35* When running an I/O daemon in test mode with the coordinator and driverin the same process, printing a single 36* request, exiting the I/O daemon, re-entering the I/O daemon, and printing another request will cause the 37* head/tail sheets of the first request to be printed surrounding the file specified in the second request */ 38 /* Modified: November 1983 by C. Marker added support for no_separator */ 39 40 41 /****^ HISTORY COMMENTS: 42* 1) change(88-06-03,Brunelle), approve(88-06-03,MCR7911), 43* audit(88-10-20,Wallman), install(88-10-28,MR12.2-1199): 44* The print_head_sheet and print_separator entrypoints were upgraded to 45* handle a null a_prt_ctl_ptr argument by using the default_ctl values. 46* The declarations were reorganized. 47* END HISTORY COMMENTS */ 48 49 50 /* format: on */ 51 52 head_sheet_: 53 proc (a_stream, a_ordatap, a_code); 54 55 /* Parameters */ 56 57 dcl a_code fixed bin (35) parameter; /* Return error code */ 58 dcl a_message char (*) parameter; /* optional message for head sheet */ 59 dcl a_ordatap ptr parameter; /* ptr to output_request_data */ 60 dcl a_prt_ctl_ptr pointer parameter; /* pointer to prt_ctl */ 61 dcl a_stream char (*) parameter; /* print stream. */ 62 dcl a_switch pointer parameter; /* IOCB ptr for same */ 63 64 /* External Procedures & Variables */ 65 66 dcl convert_binary_integer_$decimal_string entry (fixed bin) returns (char (12) var); 67 dcl error_table_$action_not_performed fixed bin (35) ext static; 68 dcl ioa_$rsnnl entry options (variable); 69 dcl hcs_$initiate_count entry (char (*), char (*), char (*), fixed bin (24), fixed bin (2), ptr, fixed bin (35)); 70 dcl hcs_$truncate_seg entry (ptr, fixed bin, fixed bin (35)); 71 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 72 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 73 dcl bigletter_ entry (char (*), entry); 74 dcl bigletter_$five entry (char (*), entry); 75 dcl iox_$find_iocb entry (char (*), pointer, fixed bin (35)); 76 dcl iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)); 77 dcl iox_$modes entry (pointer, char (*), char (*), fixed bin (35)); 78 dcl system_info_$installation_id entry (char (*) aligned); 79 80 /* Builtins */ 81 82 dcl (addr, null, substr, length, divide, index, min, char, max, ptr, copy, rtrim, ltrim, unspec) builtin; 83 84 /* Internal Static */ 85 86 dcl NL char (1) int static options (constant) init (" 87 "); /* the next initialized char will list funny, carriage return */ 88 dcl CR char (1) int static options (constant) init (" "); 89 90 dcl FF char (1) aligned int static options (constant) init (" "); 91 dcl big_letters bit (1) int static; /* ON if will use big bigletters */ 92 dcl copy_offset fixed bin int static; /* where to put the copy number data for copy 2, 3,... */ 93 dcl default_ctl_not_set bit (1) int static init ("1"b); /* initialize when first used */ 94 dcl head_field fixed bin int static; /* this is the default */ 95 dcl hs_ptr ptr int static init (null); /* ptr to page buffer for the head sheet */ 96 dcl installation char (32) aligned int static; /* Local installation ID */ 97 dcl last_request_no fixed bin int static; /* request number of the last request */ 98 dcl lead_cp_space fixed bin int static; /* how many spaces to put in front of copy... */ 99 dcl line_length fixed bin int static init (136); /* line length for formatting, default is 136 */ 100 dcl line_no fixed bin int static; /* current line we are working on */ 101 dcl med_letters bit (1) int static; /* ON if wull use medium bigletters */ 102 dcl mode char (256) int static; /* string for printer changemode call */ 103 dcl n_letters fixed bin int static; /* number if big, med, or small letters that fit on line */ 104 dcl n_nl fixed bin int static; /* 2 or 3 NL chars before a Big Letter line */ 105 dcl no_pad_blanks fixed bin int static; /* field separator for continued/restarted message */ 106 dcl page_length fixed bin int static init (69); /* page length */ 107 dcl page_size fixed bin int static; /* number of chars per head sheet face */ 108 dcl sep_ptr ptr int static init (null); /* ptr to separator chars (base of template seg) */ 109 dcl sep_size fixed bin int static; /* number of chars in the separator */ 110 dcl static_ctl_not_set bit (1) int static init ("1"b); /* initialize on first call */ 111 dcl sysdir char (168) int static init (">daemon_dir_dir>io_daemon_dir"); 112 dcl type_field fixed bin int static; /* length of the request_type/device_name fields */ 113 dcl xl fixed bin int static; /* the length of xxbar, including NL */ 114 dcl xxbar char (204) var int static; 115 116 dcl 1 static_ctl aligned like prt_ctl int static; /* the active set of parameters */ 117 118 dcl 1 default_ctl aligned like prt_ctl int static; /* the default parameters for old type entries */ 119 120 /* Automatic */ 121 122 dcl (i, j, l, n, l2) fixed bin; 123 dcl l1 fixed bin (21); 124 dcl iocbp pointer; 125 dcl bitct fixed bin (24); 126 dcl copyx char (22) aligned; 127 dcl change_static bit (1); 128 dcl dest char (64) aligned; 129 dcl h1_len fixed bin; /* the length of hline_1 */ 130 dcl h3_len fixed bin; /* and hline_3 */ 131 dcl head char (64) aligned; 132 dcl hline_1 char (204); /* space for the 1st header line */ 133 dcl hline_3 char (204); /* space for the 3rd line */ 134 dcl letter_size fixed bin; 135 dcl level_str char (32) aligned; 136 dcl message char (200) var; 137 dcl next_char fixed bin; 138 dcl notep ptr; 139 dcl omode char (256); 140 dcl personl fixed bin; 141 dcl proji fixed bin; 142 dcl projl fixed bin; 143 dcl request_type char (32) aligned; 144 dcl restrt_cnt_msg char (30) aligned; 145 dcl separator_only bit (1); 146 dcl temp char (280) aligned; 147 dcl xcode fixed bin (35); 148 149 /* Based */ 150 151 dcl buf char (16000) based (hs_ptr); /* string that makes up the head sheet text */ 152 153 154 /* head_sheet_: entry (a_stream, a_ordatap, a_code); */ 155 156 /* locate the iocb to use based on input stream name */ 157 call iox_$find_iocb (a_stream, iocbp, a_code); 158 if a_code ^= 0 then 159 return; 160 161 /* use our default ctl for printer control. initialize if necessary */ 162 if default_ctl_not_set then 163 call init_default_prt_ctl; 164 prt_ctl_ptr = addr (default_ctl); 165 166 go to common; 167 168 print_head_sheet: 169 entry (a_switch, a_prt_ctl_ptr, a_ordatap, a_code); 170 171 iocbp = a_switch; 172 173 /* if passed a null pointer to prt_ctl use our own default. initialize if necessary */ 174 if a_prt_ctl_ptr ^= null then 175 prt_ctl_ptr = a_prt_ctl_ptr; 176 else do; 177 if default_ctl_not_set then 178 call init_default_prt_ctl; 179 prt_ctl_ptr = addr (default_ctl); 180 end; 181 182 common: 183 a_code = 0; /* no errors yet */ 184 ordatap = a_ordatap; /* define output_request_data for proc */ 185 186 call check_static_ctl (prt_ctl_ptr, change_static, separator_only); 187 188 if prt_ctl.banner_type = NO_BANNERS & ^separator_only then 189 return; /* no head sheet text */ 190 191 if change_static then do; 192 call init_template_and_static (a_prt_ctl_ptr, a_code); 193 /* set up field definitions */ 194 if a_code ^= 0 then 195 return; 196 end; 197 198 if separator_only then do; 199 message = ""; /* no words above the separator bars */ 200 go to write_separator; 201 end; 202 203 dmp = ordata.dpmp; 204 a_code = 0; /* this is the initial value */ 205 206 next_char = 1; /* start building at the first char */ 207 line_no = 0; /* we have no lines yet */ 208 209 if ^ordata.continued then /* the continued flag may mean restarting this request */ 210 if ordata.request_no = last_request_no then do; /* this is simple, the head sheet is the same */ 211 if ordata.copies > 1 & copy_offset > 0 then do; /* for multi copy just change the number */ 212 if ordata.no_separator then 213 call ioa_$rsnnl ("^d copies", copyx, n, ordata.copies); 214 else call ioa_$rsnnl ("copy ^d of ^d", copyx, n, ordata.copy_no, ordata.copies); 215 substr (buf, copy_offset, 15) = copyx; /* insert the new copy number */ 216 end; 217 go to print_it; 218 end; 219 220 last_request_no = ordata.request_no; /* next time we will check against this one */ 221 222 /* LINE 1 - request no, requestor, header option, dest option, request no */ 223 224 call ioa_$rsnnl ("^7d^5x^24a ^va^2x^24a^4x^7d", hline_1, h1_len, 225 /* make the 1st line */ 226 ordata.request_no, char (ordata.requestor, 24), head_field, char (dprint_msg.heading, head_field), 227 /* use char to truncate field..ioa_ bug */ 228 dprint_msg.destination, ordata.request_no); 229 230 h1_len = min (static_ctl.phys_line_length, h1_len); 231 /* get ready to truncate */ 232 substr (buf, next_char, h1_len + 2) = substr (hline_1, 1, h1_len) || NL || NL; 233 /* copy in the first two lines */ 234 next_char = next_char + h1_len + 2; /* keep the index of good chars */ 235 line_no = line_no + 2; /* we now have two header lines, count them */ 236 237 /* LINE 3 - path name */ 238 239 call ioa_$rsnnl ("^vx^a", hline_3, h3_len, lead_cp_space, ordata.full_path); 240 /* this is header line 3 */ 241 242 h3_len = min (h3_len, static_ctl.phys_line_length); 243 /* get ready to truncate */ 244 substr (buf, next_char, h3_len + 2) = substr (hline_3, 1, h3_len) || NL || NL; 245 next_char = next_char + h3_len + 2; 246 line_no = line_no + 2; 247 248 /* LINE 5 - Just a bar made of ----- */ 249 250 substr (buf, next_char, xl) = xxbar; /* put in the --------------------NL */ 251 next_char = next_char + xl; 252 line_no = line_no + 1; 253 254 /* LINE 6 - copies if more than 1 and whether the request was restarted or continued */ 255 256 if ordata.copies = 1 then 257 copyx = ""; 258 else if ordata.no_separator then 259 call ioa_$rsnnl ("^d copies", copyx, j, ordata.copies); 260 else call ioa_$rsnnl ("copy ^d of ^d", copyx, j, ordata.copy_no, ordata.copies); 261 262 if ordata.control_flags.continued then /* continued takes precedence over restarted */ 263 call ioa_$rsnnl ("continued from request ^d", restrt_cnt_msg, n, ordata.contd_no); 264 else if ordata.control_flags.restarted then /* restarted request */ 265 call ioa_$rsnnl ("restarted from request ^d", restrt_cnt_msg, n, ordata.restart_no); 266 else restrt_cnt_msg = ""; /* neither continued nor restarted */ 267 /* SAVE THE CHAR COUNT "n" for the insertion operation */ 268 if copyx = "" & restrt_cnt_msg = "" then do; /* for blank data skip line */ 269 substr (buf, next_char, 1) = NL; 270 next_char = next_char + 1; 271 copy_offset = 0; /* say there is no copy number field */ 272 end; 273 else do; /* non-blank, so put in the copy field for sure */ 274 substr (buf, next_char, lead_cp_space + 15) = copy (" ", lead_cp_space) || copyx; 275 /* if blank, OK */ 276 copy_offset = next_char + lead_cp_space; /* this is for copy number 2, 3, ... */ 277 next_char = copy_offset + 15; 278 if restrt_cnt_msg = "" then do; 279 substr (buf, next_char, 1) = NL; /* terminate the line */ 280 next_char = next_char + 1; 281 end; 282 else do; 283 substr (buf, next_char, no_pad_blanks + 31) = 284 copy (" ", no_pad_blanks) || substr (restrt_cnt_msg, 1, n) || NL; 285 next_char = next_char + no_pad_blanks + n + 1; 286 end; 287 end; 288 line_no = line_no + 1; /* there was one line either way */ 289 290 /* LINE 7, 8, and 9 */ 291 292 substr (buf, next_char, xl + n_nl) = xxbar || copy (NL, n_nl); 293 /* closing ----- and 1 or 2 more NL */ 294 next_char = next_char + xl + n_nl; 295 line_no = line_no + n_nl + 1; 296 297 /* find person and project (for defaults) */ 298 299 personl = index (ordata.requestor, ".") - 1; 300 proji = personl + 2; 301 projl = index (substr (ordata.requestor, proji), ".") - 1; 302 303 /* LINES 10 to 18 are made by bigletter_ */ 304 305 if dprint_msg.destination = "" then 306 dest = substr (ordata.requestor, proji, projl); 307 else dest = dprint_msg.destination; 308 309 if big_letters then /* for normal banners use large bigletters */ 310 call bigletter_ (substr (dest, 1, n_letters), wout); 311 /* Write banner destination */ 312 else if med_letters then 313 call bigletter_$five (substr (dest, 1, n_letters), wout); 314 /* smaller letters for smaller banners */ 315 else call wout (addr (dest), min (n_letters, length (rtrim (dest)))); 316 /* for very short head sheets .... */ 317 318 /* LINE 19 and 20 */ 319 320 substr (buf, next_char, xl + 1) = NL || xxbar; 321 next_char = next_char + xl + 1; 322 line_no = line_no + 2; 323 324 /* LINE 21 - date, device and installation id */ 325 326 if ordata.request_type = "printer" then 327 request_type = ""; /* don't mention normal type */ 328 else request_type = ordata.request_type; 329 330 call ioa_$rsnnl ("^24a^6x^va^4x^va^6x^a", temp, n, ordata.date_time_start_request, type_field, 331 char (request_type, type_field), type_field, char (ordata.device_name, type_field), installation); 332 333 n = min (static_ctl.phys_line_length, n); 334 substr (buf, next_char, n + 1) = substr (temp, 1, n) || NL; 335 next_char = next_char + n + 1; 336 line_no = line_no + 1; 337 338 /* LINE 22, 23, and 24 -----------------NL NL NL */ 339 340 substr (buf, next_char, xl + n_nl) = xxbar || copy (NL, n_nl); 341 next_char = next_char + xl + n_nl; 342 line_no = line_no + n_nl + 1; /* add on the correct number of NL's */ 343 344 /* LINE 25 to 33 - big letter line for heading (defaults to requestor's name) */ 345 346 if dprint_msg.heading = "" then 347 head = substr (ordata.requestor, 1, personl); 348 else do; 349 head = dprint_msg.heading; 350 if substr (head, 1, 5) = " for " then 351 head = substr (head, 6); 352 end; 353 354 /* Write banner heading */ 355 if big_letters then 356 call bigletter_ (substr (head, 1, n_letters), wout); 357 else if med_letters then /* small for short banner pl */ 358 call bigletter_$five (substr (head, 1, n_letters), wout); 359 else call wout (addr (head), min (n_letters, length (rtrim (head)))); 360 /* for very short head sheets .... */ 361 362 /* LINES 34 to the bottom of the page may be blank or will have the ACCESS CLASS banner */ 363 364 if ordata.access_class_string ^= "" then do; 365 366 /* LINES 34 and 35 NL------------NL */ 367 368 substr (buf, next_char, xl + 1) = NL || xxbar; 369 next_char = next_char + xl + 1; 370 line_no = line_no + 2; 371 372 /* LINES 36 and possibly 37 are the access class in small letters */ 373 374 l1 = length (rtrim (ordata.access_class_string)); 375 /* how long is the string */ 376 temp = ordata.access_class_string; /* let's make this easier to read */ 377 n = min (l1, static_ctl.phys_line_length); /* first line is small letters, how many? */ 378 379 substr (buf, next_char, n + 1) = substr (temp, 1, n) || NL; 380 next_char = next_char + n + 1; 381 line_no = line_no + 1; 382 383 if l1 > static_ctl.phys_line_length then do; /* is there more to write? */ 384 temp = substr (temp, n + 1); /* see what is left */ 385 l1 = length (rtrim (temp)); 386 if l1 > static_ctl.phys_line_length then 387 substr (temp, static_ctl.phys_line_length, 1) = "?"; 388 /* if too long, mark as truncated */ 389 n = min (l1, static_ctl.phys_line_length); 390 substr (buf, next_char, n + 1) = substr (temp, 1, n) || NL; 391 next_char = next_char + n + 1; 392 line_no = line_no + 1; 393 end; 394 395 /* LINE 37 (or 38 for a two line access class ) is again -----------NL */ 396 397 substr (buf, next_char, xl + n_nl) = xxbar || copy (NL, n_nl); 398 /* add two more NL's before the bigletters */ 399 next_char = next_char + xl + n_nl; 400 line_no = line_no + n_nl + 1; /* add on the correct number of NL's */ 401 402 /* LINE 41 (or 42) starts the access class level in big letters */ 403 404 level_str = substr (ordata.access_class_string, 1, 32); 405 /* get the level name */ 406 l2 = index (level_str, ",") - 1; /* find component separator */ 407 if l2 < 1 then 408 l2 = length (rtrim (level_str)); /* only one component */ 409 temp = ""; /* clear for easy centering */ 410 substr (temp, max (1, divide (n_letters - l2, 2, 17) + 1), l2) = substr (level_str, 1, l2); 411 412 if big_letters then 413 call bigletter_ (substr (temp, 1, n_letters), wout); 414 /* omit partial letters */ 415 else if med_letters then 416 call bigletter_$five (substr (temp, 1, n_letters), wout); 417 418 /* don't put out any smaller letters...its already there */ 419 420 end; 421 422 /* END the head sheet page with the same lines as on 1 and 2 */ 423 424 n = page_length - line_no - 3; /* how many blank lines to 3 from the bottom */ 425 426 substr (buf, next_char, n) = copy (NL, n); /* put in the correct number */ 427 next_char = next_char + n; 428 line_no = line_no + n; 429 430 substr (buf, next_char, h3_len + 2) = substr (hline_3, 1, h3_len) || NL || NL; 431 /* put in the pathname */ 432 next_char = next_char + h3_len + 2; 433 line_no = line_no + 2; 434 435 substr (buf, next_char, h1_len + 1) = substr (hline_1, 1, h1_len) || NL; 436 /* and the BOTTOM line */ 437 page_size = next_char + h1_len; /* offset of last char of the head_sheet */ 438 439 print_it: 440 if ordata.separator then do; 441 l1 = page_size + sep_size; /* write enough chars to cover the separator */ 442 substr (buf, page_size + 1, sep_size) = substr (sep_ptr -> buf, 1, sep_size); 443 /* copy in the separator */ 444 end; 445 else do; /* on successive copies, don't print the separator */ 446 l1 = page_size + 1; /* just write the head_sheet */ 447 substr (buf, page_size + 1, 1) = FF; /* and make the last char be a form feed */ 448 end; 449 450 call iox_$modes (iocbp, mode, omode, xcode); 451 452 call iox_$put_chars (iocbp, hs_ptr, l1, a_code); 453 if a_code ^= 0 then 454 return; 455 456 457 /* Advertising page follows. */ 458 459 call hcs_$initiate_count (sysdir, "printer_notice", "", bitct, 0, notep, xcode); 460 if notep ^= null then 461 if bitct > 0 then do; 462 call iox_$modes (iocbp, "default", (""), xcode); 463 call iox_$put_chars (iocbp, notep, divide (bitct, 9, 21, 0), xcode); 464 call hcs_$terminate_noname (notep, xcode); 465 end; 466 467 call iox_$modes (iocbp, omode, (""), xcode); 468 469 a_code = 0; 470 471 return; 472 473 474 /* ------- SET CTL ENTRY ------- */ 475 476 set_ctl: 477 entry (a_prt_ctl_ptr, a_code); 478 479 /* This entry is used to get data on how the head sheet is to be aligned and 480* how banner bars are to be printed */ 481 482 a_code = 0; 483 484 prt_ctl_ptr = a_prt_ctl_ptr; /* copy ptr to make code easier to read */ 485 486 if prt_ctl.banner_bars < 0 | prt_ctl.banner_bars > 2 487 /* legal type? */ 488 | prt_ctl.banner_type < 0 | prt_ctl.banner_type > 2 then do; 489 ctl_err: 490 a_code = error_table_$action_not_performed; 491 return; 492 end; 493 494 if prt_ctl.phys_line_length < 10 | prt_ctl.phys_line_length > 200 then 495 go to ctl_err; 496 497 if prt_ctl.lines_per_inch ^= 6 & prt_ctl.lines_per_inch ^= 8 then 498 go to ctl_err; 499 500 if prt_ctl.phys_page_length < prt_ctl.lines_per_inch + 1 | prt_ctl.phys_page_length > 258 then 501 go to ctl_err; 502 503 default_ctl = prt_ctl; /* get the new default values */ 504 505 default_ctl_not_set = "0"b; /* it is now initialized */ 506 507 return; 508 509 510 511 /* ------- SEPARATOR ENTRY ------- */ 512 513 separator: 514 entry (a_stream, a_message, a_code); 515 516 /* this entry will print a fake head sheet with the message centered just 517* above the separator bars */ 518 519 /* locate the iocb to use based on input stream name */ 520 call iox_$find_iocb (a_stream, iocbp, a_code); 521 if a_code ^= 0 then 522 return; 523 524 /* use our default ctl for printer control. initialize if necessary */ 525 if default_ctl_not_set then 526 call init_default_prt_ctl; 527 528 go to separator_common; 529 530 print_separator: 531 entry (a_switch, a_prt_ctl_ptr, a_message, a_code); 532 533 iocbp = a_switch; 534 535 /* if passed a null pointer to prt_ctl use our own default. initialize if necessary */ 536 if a_prt_ctl_ptr ^= null then 537 prt_ctl_ptr = a_prt_ctl_ptr; 538 else do; 539 if default_ctl_not_set then 540 call init_default_prt_ctl; 541 prt_ctl_ptr = addr (default_ctl); 542 end; 543 544 separator_common: 545 a_code = 0; 546 ordatap = null; /* this is not a real request for head_sheet */ 547 548 call check_static_ctl (prt_ctl_ptr, change_static, separator_only); 549 550 if change_static then do; 551 call init_template_and_static (prt_ctl_ptr, a_code); 552 /* set up field definitions */ 553 if a_code ^= 0 then 554 return; 555 end; 556 557 message = ltrim (rtrim (a_message)); /* copy and clean the message */ 558 559 write_separator: /* head_sheet entries come here too!! */ 560 561 last_request_no = -1; /* mark last head sheet as destroyed */ 562 copy_offset = 0; 563 564 line_no = 0; /* no lines yet */ 565 next_char = 1; /* start at the begining */ 566 567 if page_length > 7 then do; 568 n = page_length - 7; /* number of lines to 7 from the bottom */ 569 substr (buf, 1, n) = copy (NL, n); /* skip to that point */ 570 next_char = n + 1; 571 line_no = n; 572 573 /* if the message is real, center it using small bigletters */ 574 575 if message ^= "" then do; 576 577 temp = ltrim (message); /* strip leading spaces */ 578 i = length (rtrim (temp)); /* real message length */ 579 head = ""; /* clear the heading */ 580 n = divide (static_ctl.phys_line_length, 7, 17); 581 /* our own version of n_letters */ 582 substr (head, max (1, divide (n - i, 2, 17) + 1)) = substr (temp, 1, n); 583 584 call bigletter_$five (substr (head, 1, n), wout); 585 /* write the big message */ 586 587 end; 588 end; 589 590 n = page_length - line_no; /* how far to the separator field */ 591 substr (buf, next_char, n) = copy (NL, n); /* space down to it */ 592 next_char = next_char + n; 593 substr (buf, next_char, sep_size) = substr (sep_ptr -> buf, 1, sep_size); 594 /* add the separator */ 595 596 l1 = next_char + sep_size - 1; /* number of chars to write out */ 597 598 call iox_$modes (iocbp, mode, omode, xcode); 599 600 call iox_$put_chars (iocbp, hs_ptr, l1, a_code); 601 if a_code ^= 0 then 602 return; 603 604 call iox_$modes (iocbp, omode, (""), xcode); 605 606 return; 607 608 609 /* ------- TEST ENTRY ------- */ 610 611 test: 612 entry (a_sys_dir); 613 614 dcl a_sys_dir char (*); 615 616 sysdir = a_sys_dir; /* for testing the new notice mechanism */ 617 return; 618 619 620 /* ------- INIT ENTRY ------- */ 621 622 init: 623 entry (); 624 625 last_request_no = 0; 626 return; 627 628 629 init_template_and_static: 630 proc (ctlp, code); 631 632 /* this internal proc will create the buffer and set all the internal static values */ 633 634 dcl code fixed bin (35); 635 dcl ctlp ptr; 636 637 code = 0; /* start clean */ 638 static_ctl = ctlp -> prt_ctl; /* copy new control values */ 639 static_ctl_not_set = "0"b; /* it is now initialized */ 640 641 line_length = max (82, static_ctl.phys_line_length); 642 page_length = static_ctl.phys_page_length - static_ctl.lines_per_inch; 643 if sep_ptr = null then do; /* initialize buffer seg in process dir */ 644 call hcs_$make_seg ("", "head_sheet_.template", "", 01010b, sep_ptr, code); 645 if sep_ptr = null then 646 return; /* if it didn't work, return code to caller */ 647 end; 648 call hcs_$truncate_seg (sep_ptr, 0, code); 649 if code ^= 0 then 650 return; 651 l = divide (static_ctl.lines_per_inch - 4, 2, 17, 0); 652 /* number of new lines before and after sep */ 653 substr (sep_ptr -> buf, 1, l) = copy (NL, l); /* won't be more than two */ 654 n = l + 1; /* n will be the next char in the string */ 655 do i = 1 to 4; /* make 4 separator lines */ 656 if static_ctl.banner_bars = NORMAL_BANNER_BARS then do; /* this is the double bar case */ 657 substr (sep_ptr -> buf, n, static_ctl.phys_line_length + 1) = 658 copy ("Z", static_ctl.phys_line_length) || CR; 659 /* a row of ZZZs */ 660 n = n + static_ctl.phys_line_length + 1;/* update the length */ 661 end; 662 if static_ctl.banner_bars = NO_BANNER_BARS then do; 663 substr (sep_ptr -> buf, n, 1) = NL; /* no bar...just a new line */ 664 n = n + 1; 665 end; 666 else do; /* this is for the single or double bar case */ 667 substr (sep_ptr -> buf, n, static_ctl.phys_line_length + 1) = 668 copy ("N", static_ctl.phys_line_length) || NL; 669 /* last a row of NNNs */ 670 n = n + static_ctl.phys_line_length + 1; 671 end; 672 end; 673 substr (sep_ptr -> buf, n - 1, 1) = FF; /* get to top of next page after separator */ 674 sep_size = n - 1; /* this is how much to print */ 675 676 i = divide (sep_size + 3, 4, 17, 0); /* find number of words to hold separator */ 677 hs_ptr = ptr (sep_ptr, i + 1); /* start the head sheet 1 word later */ 678 679 if page_length > 51 & static_ctl.banner_type ^= BRIEF_BANNERS then do; 680 big_letters = "1"b; /* use the Biggest letters */ 681 n_nl = 2; /* put 2 NL's after each xxbar */ 682 letter_size = 10; /* 10 print positions per letter */ 683 end; 684 else if page_length > 37 then do; 685 med_letters = "1"b; /* use the medium size letters */ 686 big_letters = "0"b; 687 letter_size = 7; /* 7 print positions for these letters */ 688 n_nl = 1; /* put only 1 NL after each xxbar */ 689 end; 690 else do; /* for very short head sheets, we go 1 line */ 691 big_letters = "0"b; 692 med_letters = "0"b; 693 n_nl = 1; /* still 1 NL after each xxbar */ 694 letter_size = 1; /* this is straight text */ 695 end; 696 copy_offset = 0; /* don't try to insert a copy number */ 697 last_request_no = -1; /* say there was no last request */ 698 if static_ctl.banner_type ^= BRIEF_BANNERS then 699 xxbar = copy ("-", static_ctl.phys_line_length) || NL; 700 /* this is one line of "---------" */ 701 else xxbar = NL; 702 xl = length (xxbar); /* how long it was */ 703 head_field = line_length - 74; /* field width for heading on top and bottom */ 704 type_field = divide (line_length - 72, 2, 17); /* field width for device and request type */ 705 no_pad_blanks = max (3, min (39, static_ctl.phys_line_length - 65)); 706 /* field separator for continued/restarted message */ 707 lead_cp_space = max (0, min (20, no_pad_blanks - 3)); 708 /* num spaces before "copy n..." */ 709 n_letters = divide (static_ctl.phys_line_length, letter_size, 17); 710 /* number of big letters per line */ 711 call system_info_$installation_id (installation); 712 mode = "in0,noskip,truncate,ll" || convert_binary_integer_$decimal_string (static_ctl.phys_line_length); 713 /* be ready to truncate */ 714 715 return; 716 717 end init_template_and_static; 718 719 /* ------------------------------------------------------- */ 720 721 wout: 722 proc (strp, lth); 723 724 dcl strp ptr; 725 dcl lth fixed bin; 726 dcl bcs char (lth) based (strp); 727 dcl i fixed bin; 728 dcl temp char (204) aligned; 729 730 temp = bcs; /* copy to a clean string */ 731 i = length (rtrim (temp)); /* see how long it actually is */ 732 substr (buf, next_char, i + 1) = substr (temp, 1, i) || NL; 733 next_char = next_char + i + 1; 734 line_no = line_no + 1; /* mark the line as last printed */ 735 736 return; 737 738 end wout; 739 740 741 init_default_prt_ctl: 742 proc; 743 744 unspec (default_ctl) = "0"b; /* clear everything */ 745 746 default_ctl.phys_line_length = 136; 747 default_ctl.phys_page_length = 66; 748 default_ctl.lines_per_inch = 6; 749 default_ctl.banner_bars = NORMAL_BANNER_BARS; 750 default_ctl.banner_type = NORMAL_BANNERS; 751 752 default_ctl_not_set = "0"b; /* once per process */ 753 754 return; 755 756 end init_default_prt_ctl; 757 758 759 760 761 check_static_ctl: 762 proc (ctlp, change_static, separator_only); 763 764 dcl ctlp ptr; 765 dcl change_static bit (1); 766 dcl separator_only bit (1); 767 768 769 change_static, separator_only = "0"b; /* clear to the normal case */ 770 771 if static_ctl_not_set then 772 change_static = "1"b; /* nothing to check against */ 773 if ordatap ^= null then do; /* look for separator only case */ 774 if ordata.separator & ctlp -> prt_ctl.banner_type = NO_BANNERS then 775 if ctlp -> prt_ctl.banner_bars ^= NO_BANNER_BARS then 776 separator_only = "1"b; 777 end; 778 779 if change_static then 780 return; /* don't check against static values first time */ 781 782 if ctlp -> prt_ctl.phys_line_length ^= static_ctl.phys_line_length then 783 change_static = "1"b; 784 else if ctlp -> prt_ctl.phys_page_length ^= static_ctl.phys_page_length then 785 change_static = "1"b; 786 else if ctlp -> prt_ctl.lines_per_inch ^= static_ctl.lines_per_inch then 787 change_static = "1"b; 788 else if ctlp -> prt_ctl.banner_type ^= static_ctl.banner_type then 789 change_static = "1"b; 790 else if ctlp -> prt_ctl.banner_bars ^= static_ctl.banner_bars then 791 change_static = "1"b; 792 793 return; 794 795 end check_static_ctl; 796 /* BEGIN INCLUDE FILE ... dprint_msg.incl.pl1 */ 1 2 /* Modified: November 1983 by C. Marker Added no_separator. */ 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(87-05-10,Gilcrease), approve(87-05-13,MCR7686), 1 6* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 1 7* Add line_nbrs bit for line-numbered printouts, version 4. 1 8* 2) change(88-02-05,Farley), approve(88-02-05,PBF7686), audit(88-02-05,GWMay), 1 9* install(88-02-05,MR12.2-1022): 1 10* Corrected alignment of line_nbrs, was aligned s/b unaligned.. 1 11* 3) change(88-08-23,Farley), approve(88-09-16,MCR7911), 1 12* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 1 13* Increased size of forms field to 64 characters (was only 24), which 1 14* updates the version to 5. 1 15* END HISTORY COMMENTS */ 1 16 1 17 1 18 dcl dmp ptr; /* ptr to message */ 1 19 1 20 dcl 1 dprint_msg based (dmp) aligned, /* structure of a IO daemon print or punch request */ 1 21 2 header like queue_msg_hdr, /* header for all standard queue messages */ 1 22 2 version fixed bin, /* version of the dprint_msg used */ 1 23 2 copies fixed bin, /* number of copies user requested */ 1 24 2 bit_count fixed bin (35), /* the bitcount of the segment at request time */ 1 25 2 output_module fixed bin, /* 1=print, 2=7punch, 3= mcc, 4=raw */ 1 26 2 control, /* control flags. */ 1 27 3 nep bit (1) unal, /* TRUE if printing over perforations */ 1 28 3 single bit (1) unal, /* TRUE if ignore FF and VT */ 1 29 3 non_edited bit (1) unal, /* TRUE if printing in non-edited mode */ 1 30 3 truncate bit (1) unal, /* TRUE if truncating lines at line length */ 1 31 3 esc bit (1) unal, /* TRUE if text escapes are to be processed */ 1 32 3 center_top_label bit (1) unal, /* TRUE if top label to be centered */ 1 33 3 center_bottom_label bit (1) unal, /* TRUE if bottom label to be centered */ 1 34 3 no_separator bit(1) unal, /* TRUE if the inner head a tail sheets of multiple copies are to be suppressed. */ 1 35 3 line_nbrs bit (1) unal, /* TRUE if line numbers wanted */ 1 36 3 padding bit (27) unal, 1 37 2 lmargin fixed bin, /* indent from the left */ 1 38 2 line_lth fixed bin, /* logical line length */ 1 39 2 page_lth fixed bin, /* logical page length */ 1 40 2 heading_lth fixed bin, /* number of chars in heading */ 1 41 2 top_label_lth fixed bin, /* number of chars in the top label */ 1 42 2 bottom_label_lth fixed bin, /* number of chars in bottom label */ 1 43 2 chan_stop_path_lth fixed bin, /* number of chars in channel stop pathname */ 1 44 2 forms_name_lth fixed bin, /* number of chars in forms name */ 1 45 2 future_fb_values (7) fixed bin, /* make future versions possible */ 1 46 2 forms char (24), /* name of special forms, or blank */ 1 47 2 destination char (24), /* routing for output */ 1 48 2 heading char (head_max_lth refer (dprint_msg.heading_lth)), /* heading on page 1 */ 1 49 2 top_label char (label_max_lth refer (dprint_msg.top_label_lth)), /* top page heading for each page */ 1 50 2 bottom_label char (label_max_lth refer (dprint_msg.bottom_label_lth)), /* bottom page heading */ 1 51 2 chan_stop_path char (path_max_lth refer (dprint_msg.chan_stop_path_lth)), /* path of rqti seg with channel stops */ 1 52 2 forms_name char (forms_max_lth refer (dprint_msg.forms_name_lth)); /* forms name string */ 1 53 1 54 1 55 dcl ( 1 56 head_max_lth init (64), /* allocation size for heading */ 1 57 label_max_lth init (136), /* allocation size for label fields */ 1 58 path_max_lth init (168), /* allocation size for pathname fields */ 1 59 forms_max_lth init (64) /* allocation size for forms name string */ 1 60 ) fixed bin int static options (constant); 1 61 1 62 dcl ( 1 63 dprint_msg_version_3 init (3), 1 64 dprint_msg_version_4 init (4), 1 65 dprint_msg_version_5 init (5) /* current version */ 1 66 ) fixed bin int static options (constant); 1 67 1 68 /* END INCLUDE FILE ... dprint_msg.incl.pl1 */ 796 797 /* BEGIN INCLUDE FILE ... output_request_data.incl.pl1 */ 2 2 2 3 /* Modified by R. McDonald May 1980 to include page charges (UNCA) */ 2 4 /* Modified by C. Marker October 1983 added no_separator */ 2 5 2 6 2 7 /****^ HISTORY COMMENTS: 2 8* 1) change(87-05-10,Gilcrease), approve(87-05-13,MCR7686), 2 9* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 2 10* Add the line_nbrs bit for line-numbered output. 2 11* 2) change(88-08-19,Brunelle), approve(88-08-19,MCR7911), 2 12* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 2 13* Added single_sheet bit to denote if continuous paper. 2 14* END HISTORY COMMENTS */ 2 15 2 16 2 17 dcl 1 ordata based (ordatap) aligned, 2 18 2 dpmp ptr, /* Ptr to dprint_msg */ 2 19 2 requestor char (32), /* Person.Proj.tag requesting */ 2 20 2 full_path char (168), /* source of the output */ 2 21 2 queue fixed bin, /* Queue requested. */ 2 22 2 copies fixed bin, /* Copies requested. */ 2 23 2 copy_no fixed bin, /* Number this copy */ 2 24 2 request_no fixed bin (35), /* Number request assigned by coord */ 2 25 2 restart_no fixed bin (35), /* old number of restarted request (0 = not restarted) */ 2 26 2 request_type char (32), /* Name of device class wanted. */ 2 27 2 access_class_string char (280), /* Access class - size limit for two printer lines */ 2 28 2 punsw fixed bin, /* 0 = print, 1= punch */ 2 29 2 delete fixed bin, /* 1= delete, 0= don't */ 2 30 2 device_name char (32), /* Name of physical device used */ 2 31 2 output_mode char (128), /* user's mode string for ios_$changemode */ 2 32 2 time_start_request fixed bin (71), /* Clock time when picked request */ 2 33 2 date_time_start_request char (24), /* .. in chars too */ 2 34 2 line_count fixed bin (24), /* Line count returned by DIM */ 2 35 2 page_count fixed bin, /* Page count returned by DIM */ 2 36 2 cpu_time fixed bin (71), /* Total CPU usage while printing */ 2 37 2 real_time fixed bin (71), /* Total realtime while printing */ 2 38 2 page_waits fixed bin, /* Total page-waits while printing */ 2 39 2 pre_pages fixed bin, /* Total pre-pages (???) .. */ 2 40 2 bit_count fixed bin (24), /* Number of bits transmitted. */ 2 41 2 charge float bin, /* What the thing cost. */ 2 42 2 control_flags, 2 43 3 continued bit (1) unal, /* request started by one driver and given to another */ 2 44 3 restarted bit (1) unal, /* request is restarted */ 2 45 3 separator bit (1) unal, /* used to determine necessity of a separator page */ 2 46 3 notify bit (1) unal, /* if should confirm to user */ 2 47 3 saved bit (1) unal, /* request was suspended by operator, we'll save it */ 2 48 3 priority_request bit (1) unal, /* operator said run now!! */ 2 49 3 no_separator bit (1) unal, /* suppress inner head and tail sheets when printing multiple copies */ 2 50 3 line_nbrs bit (1) unal, /* if line-numbered output requested */ 2 51 3 single_sheet bit (1) unal, /* ON if single_sheet output */ 2 52 3 padding bit (27) unal, /* not used */ 2 53 2 contd_no fixed bin (35), /* old number of continued request (0 = not continued) */ 2 54 2 total_charge float bin, /* total charge for all copies */ 2 55 2 price_per_n_lines float bin, /* line price rate used to compute charge */ 2 56 2 n_lines_for_price fixed bin, /* number of lines price is based on */ 2 57 2 charge_queue fixed bin, /* base charge rate on this queue */ 2 58 2 price_per_n_pages float bin, /* page charge rate used to compute charge */ 2 59 2 n_pages_for_price fixed bin, /* number of pages price is based on */ 2 60 2 rs_number fixed bin (9) unsigned unaligned, /* rate_structure number used */ 2 61 2 rs_unavailable bit (1) unaligned, /* 1=>couldn't read SAT */ 2 62 2 no_accounting bit (1) unaligned, /* 1=>accounting:nothing in iod_tables */ 2 63 2 pad_bits bit (25) unaligned, 2 64 2 line_nbr fixed bin (35), /* current line number */ 2 65 2 pad_space (6) fixed bin (35); /* save some room to grow */ 2 66 2 67 dcl ordatap ptr; /* Ptr to above structure */ 2 68 2 69 dcl 1 REQUEST like ordata aligned; /* If wanted, a place to put the above thing */ 2 70 2 71 /* END INCLUDE FILE ... output_request_data.incl.pl1 */ 797 798 /* BEGIN INCLUDE FILE ... prt_ctl.incl.pl1 */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(88-02-23,Brunelle), approve(88-08-31,MCR7911), 3 6* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 3 7* Ancient History 3 8* Modified: 11 December 1981 by G. Palter to add force_ctl_char 3 9* Modified: November 1983 by C. Marker to add force_nsep 3 10* 2) change(88-02-23,Brunelle), approve(88-08-31,MCR7911), 3 11* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 3 12* Literals for banner type and banner bars type added. 3 13* END HISTORY COMMENTS */ 3 14 3 15 3 16 /* format: style4 */ 3 17 3 18 /* This structure is used by the IO Daemon to define the printer control functions */ 3 19 3 20 dcl prt_ctl_ptr ptr; 3 21 3 22 dcl 1 prt_ctl aligned based (prt_ctl_ptr), /* printer control values */ 3 23 2 flags, 3 24 3 force_nep bit (1) unal, /* set noskip for the user */ 3 25 3 force_esc bit (1) unal, /* set escape processing for the user */ 3 26 3 no_auto_print bit (1) unal, /* ask for a cmd before each request is printed */ 3 27 3 meter bit (1) unal, /* meter printer functions */ 3 28 3 force_ctl_char bit (1) unal, /* set ctl_char mode for the user */ 3 29 3 force_nsep bit (1) unal, /* supress printing of inner head and tail sheets for multiple copies */ 3 30 3 ctl_pad bit (30) unal, /* default for future values */ 3 31 2 banner_type fixed bin, /* 0 = no banners */ 3 32 /* 1 = normal head/tail sheets */ 3 33 /* 2 = brief head/tail sheets */ 3 34 /* 3 to 10 RESERVED */ 3 35 2 banner_bars fixed bin, /* 0 = normal overprinted separator bars */ 3 36 /* 1 = single print line bars (no overprint) */ 3 37 /* 2 = suppress the separator bars (no separator) */ 3 38 2 banner_indent fixed bin, /* how far to indent the banner (future) */ 3 39 2 banner_line fixed bin, /* what line to start the banner on (future) */ 3 40 3 41 2 paper_info, 3 42 3 phys_page_length fixed bin, 3 43 3 phys_line_length fixed bin, 3 44 3 lines_per_inch fixed bin, 3 45 2 channel_stops (256) bit (16) unal, /* logical stops for slew to channel */ 3 46 2 prt_ctl_pad (10) fixed bin; /* for future additions */ 3 47 3 48 /* constants for prt_ctl.banner_type */ 3 49 dcl (NO_BANNERS init (0), 3 50 NORMAL_BANNERS init (1), 3 51 BRIEF_BANNERS init (2)) fixed bin int static options (constant); 3 52 3 53 /* constants for prt_ctl.banner_bars */ 3 54 dcl (NORMAL_BANNER_BARS init (0), 3 55 SINGLE_BANNER_BARS init (1), 3 56 NO_BANNER_BARS init (2)) fixed bin int static options (constant); 3 57 3 58 /* END INCLUDE FILE ... prt_ctl.incl.pl1 */ 798 799 /* BEGIN INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 4 2 4 3 /* This is the message header used for standard system queue messages, namely: 4 4* IO daemon requests, absentee requests, retrieval requests. 4 5**/ 4 6 4 7 /* Written by Jerry Whitmore, Spring 1978. 4 8* Modified by T. Casey, November 1978, to add values for state. 4 9* Modified by R. Kovalcik, June 1982, defer_until_process_terminataion 4 10**/ 4 11 4 12 dcl 1 queue_msg_hdr based aligned, /* standard header for all system queue messages */ 4 13 2 msg_time fixed bin (71), /* date and time of request */ 4 14 2 hdr_version fixed bin, /* version of this declaration */ 4 15 2 dirname char (168), /* directory name */ 4 16 2 ename char (32), /* entry name of file requested */ 4 17 2 message_type fixed bin, /* message format descriptor */ 4 18 /* 0 = absentee request */ 4 19 /* 1 = print request */ 4 20 /* 2 = punch request */ 4 21 /* 3 = tape request */ 4 22 /* 4 = retrieval request */ 4 23 2 bit_flags, 4 24 3 delete_sw bit (1) unal, /* delete file when done */ 4 25 3 notify bit (1) unal, /* user wants to be notified */ 4 26 3 defer_until_process_termination bit (1) unal, /* don't process request until process terminates */ 4 27 3 padding bit (33) unal, 4 28 2 state fixed bin, /* stage of processing after being queued: 4 29* 0 = initial unprocessed state, 1 = deferred, 4 30* 2 = in state transition, 3 = eligible, 4 = running, 4 31* 5 = bumped, 6 = deferred_until_process_termination */ 4 32 2 orig_queue fixed bin, /* queue the request was submitted to */ 4 33 2 std_length fixed bin, /* length of std msg for this type */ 4 34 2 dupt_lock bit (36) aligned, /* lock word for defer until process termination */ 4 35 2 hdr_pad (3) fixed bin; 4 36 4 37 dcl queue_msg_hdr_version_1 fixed bin int static options (constant) init (1); /* current version of the header */ 4 38 4 39 /* Values for queue_msg_hdr.state */ 4 40 4 41 dcl STATE_UNPROCESSED fixed bin int static options (constant) init (0); 4 42 dcl STATE_DEFERRED fixed bin int static options (constant) init (1); 4 43 dcl STATE_TRANSITION fixed bin int static options (constant) init (2); 4 44 dcl STATE_ELIGIBLE fixed bin int static options (constant) init (3); 4 45 dcl STATE_RUNNING fixed bin int static options (constant) init (4); 4 46 dcl STATE_BUMPED fixed bin int static options (constant) init (5); 4 47 dcl STATE_DUPT fixed bin int static options (constant) init (6); 4 48 4 49 /* END INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 799 800 801 end head_sheet_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/28/88 1232.4 head_sheet_.pl1 >special_ldd>install>MR12.2-1199>head_sheet_.pl1 796 1 10/28/88 1227.6 dprint_msg.incl.pl1 >special_ldd>install>MR12.2-1199>dprint_msg.incl.pl1 797 2 10/28/88 1226.4 output_request_data.incl.pl1 >special_ldd>install>MR12.2-1199>output_request_data.incl.pl1 798 3 10/28/88 1227.1 prt_ctl.incl.pl1 >special_ldd>install>MR12.2-1199>prt_ctl.incl.pl1 799 4 08/31/82 1636.3 queue_msg_hdr.incl.pl1 >ldd>include>queue_msg_hdr.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. BRIEF_BANNERS constant fixed bin(17,0) initial dcl 3-49 ref 679 698 CR 004522 constant char(1) initial packed unaligned dcl 88 ref 657 FF constant char(1) initial dcl 90 ref 447 673 NL 004523 constant char(1) initial packed unaligned dcl 86 ref 232 232 244 244 269 279 283 292 320 334 340 368 379 390 397 426 430 430 435 569 591 653 663 667 698 701 732 NORMAL_BANNERS constant fixed bin(17,0) initial dcl 3-49 ref 750 NORMAL_BANNER_BARS constant fixed bin(17,0) initial dcl 3-54 ref 656 749 NO_BANNERS constant fixed bin(17,0) initial dcl 3-49 ref 188 774 NO_BANNER_BARS constant fixed bin(17,0) initial dcl 3-54 ref 662 774 a_code parameter fixed bin(35,0) dcl 57 set ref 52 157* 158 168 182* 192* 194 204* 452* 453 469* 476 482* 489* 513 520* 521 530 544* 551* 553 600* 601 a_message parameter char packed unaligned dcl 58 ref 513 530 557 a_ordatap parameter pointer dcl 59 ref 52 168 184 a_prt_ctl_ptr parameter pointer dcl 60 set ref 168 174 174 192* 476 484 530 536 536 a_stream parameter char packed unaligned dcl 61 set ref 52 157* 513 520* a_switch parameter pointer dcl 62 ref 168 171 530 533 a_sys_dir parameter char packed unaligned dcl 614 ref 611 616 access_class_string 101 based char(280) level 2 dcl 2-17 ref 364 374 376 404 addr builtin function dcl 82 ref 164 179 315 315 359 359 541 banner_bars 2 000304 internal static fixed bin(17,0) level 2 in structure "static_ctl" dcl 116 in procedure "head_sheet_" set ref 656 662 790 banner_bars 2 based fixed bin(17,0) level 2 in structure "prt_ctl" dcl 3-22 in procedure "head_sheet_" ref 486 486 774 790 banner_bars 2 000510 internal static fixed bin(17,0) level 2 in structure "default_ctl" dcl 118 in procedure "head_sheet_" set ref 749* banner_type 1 000304 internal static fixed bin(17,0) level 2 in structure "static_ctl" dcl 116 in procedure "head_sheet_" set ref 679 698 788 banner_type 1 000510 internal static fixed bin(17,0) level 2 in structure "default_ctl" dcl 118 in procedure "head_sheet_" set ref 750* banner_type 1 based fixed bin(17,0) level 2 in structure "prt_ctl" dcl 3-22 in procedure "head_sheet_" ref 188 486 486 774 788 bcs based char packed unaligned dcl 726 ref 730 big_letters 000010 internal static bit(1) packed unaligned dcl 91 set ref 309 355 412 680* 686* 691* bigletter_ 000732 constant entry external dcl 73 ref 309 355 412 bigletter_$five 000734 constant entry external dcl 74 ref 312 357 415 584 bitct 000110 automatic fixed bin(24,0) dcl 125 set ref 459* 460 463 463 buf based char(16000) packed unaligned dcl 151 set ref 215* 232* 244* 250* 269* 274* 279* 283* 292* 320* 334* 340* 368* 379* 390* 397* 426* 430* 435* 442* 442 447* 569* 591* 593* 593 653* 657* 663* 667* 673* 732* change_static 000117 automatic bit(1) packed unaligned dcl 127 in procedure "head_sheet_" set ref 186* 191 548* 550 change_static parameter bit(1) packed unaligned dcl 765 in procedure "check_static_ctl" set ref 761 769* 771* 779 782* 784* 786* 788* 790* char builtin function dcl 82 ref 224 224 224 224 330 330 330 330 code parameter fixed bin(35,0) dcl 634 set ref 629 637* 644* 648* 649 contd_no 305 based fixed bin(35,0) level 2 dcl 2-17 set ref 262* continued 304 based bit(1) level 3 packed packed unaligned dcl 2-17 ref 209 262 control_flags 304 based structure level 2 dcl 2-17 convert_binary_integer_$decimal_string 000714 constant entry external dcl 66 ref 712 copies 65 based fixed bin(17,0) level 2 dcl 2-17 set ref 211 212* 214* 256 258* 260* copy builtin function dcl 82 ref 274 283 292 340 397 426 569 591 653 657 667 698 copy_no 66 based fixed bin(17,0) level 2 dcl 2-17 set ref 214* 260* copy_offset 000011 internal static fixed bin(17,0) dcl 92 set ref 211 215 271* 276* 277 562* 696* copyx 000111 automatic char(22) dcl 126 set ref 212* 214* 215 256* 258* 260* 268 274 ctlp parameter pointer dcl 635 in procedure "init_template_and_static" ref 629 638 ctlp parameter pointer dcl 764 in procedure "check_static_ctl" ref 761 774 774 782 784 786 788 790 date_time_start_request 264 based char(24) level 2 dcl 2-17 set ref 330* default_ctl 000510 internal static structure level 1 dcl 118 set ref 164 179 503* 541 744* default_ctl_not_set 000012 internal static bit(1) initial packed unaligned dcl 93 set ref 162 177 505* 525 539 752* dest 000120 automatic char(64) dcl 128 set ref 305* 307* 309 309 312 312 315 315 315 315 destination 130 based char(24) level 2 dcl 1-20 set ref 224* 305 307 device_name 211 based char(32) level 2 dcl 2-17 ref 330 330 divide builtin function dcl 82 ref 410 463 463 580 582 651 676 704 709 dmp 000664 automatic pointer dcl 1-18 set ref 203* 224 224 224 305 307 346 349 dpmp based pointer level 2 dcl 2-17 ref 203 dprint_msg based structure level 1 dcl 1-20 error_table_$action_not_performed 000716 external static fixed bin(35,0) dcl 67 ref 489 full_path 12 based char(168) level 2 dcl 2-17 set ref 239* h1_len 000140 automatic fixed bin(17,0) dcl 129 set ref 224* 230* 230 232 232 234 435 435 437 h3_len 000141 automatic fixed bin(17,0) dcl 130 set ref 239* 242* 242 244 244 245 430 430 432 hcs_$initiate_count 000722 constant entry external dcl 69 ref 459 hcs_$make_seg 000730 constant entry external dcl 72 ref 644 hcs_$terminate_noname 000726 constant entry external dcl 71 ref 464 hcs_$truncate_seg 000724 constant entry external dcl 70 ref 648 head 000142 automatic char(64) dcl 131 set ref 346* 349* 350 350* 350 355 355 357 357 359 359 359 359 579* 582* 584 584 head_field 000013 internal static fixed bin(17,0) dcl 94 set ref 224* 224 224 703* heading 136 based char level 2 dcl 1-20 ref 224 224 346 349 heading_lth 106 based fixed bin(17,0) level 2 dcl 1-20 ref 224 224 346 349 hline_1 000162 automatic char(204) packed unaligned dcl 132 set ref 224* 232 435 hline_3 000245 automatic char(204) packed unaligned dcl 133 set ref 239* 244 430 hs_ptr 000014 internal static pointer initial dcl 95 set ref 215 232 244 250 269 274 279 283 292 320 334 340 368 379 390 397 426 430 435 442 447 452* 569 591 593 600* 677* 732 i 000100 automatic fixed bin(17,0) dcl 122 in procedure "head_sheet_" set ref 578* 582 655* 676* 677 i 000100 automatic fixed bin(17,0) dcl 727 in procedure "wout" set ref 731* 732 732 733 index builtin function dcl 82 ref 299 301 406 installation 000016 internal static char(32) dcl 96 set ref 330* 711* ioa_$rsnnl 000720 constant entry external dcl 68 ref 212 214 224 239 258 260 262 264 330 iocbp 000106 automatic pointer dcl 124 set ref 157* 171* 450* 452* 462* 463* 467* 520* 533* 598* 600* 604* iox_$find_iocb 000736 constant entry external dcl 75 ref 157 520 iox_$modes 000742 constant entry external dcl 77 ref 450 462 467 598 604 iox_$put_chars 000740 constant entry external dcl 76 ref 452 463 600 j 000101 automatic fixed bin(17,0) dcl 122 set ref 258* 260* l 000102 automatic fixed bin(17,0) dcl 122 set ref 651* 653 653 654 l1 000105 automatic fixed bin(21,0) dcl 123 set ref 374* 377 383 385* 386 389 441* 446* 452* 596* 600* l2 000104 automatic fixed bin(17,0) dcl 122 set ref 406* 407 407* 410 410 410 last_request_no 000026 internal static fixed bin(17,0) dcl 97 set ref 209 220* 559* 625* 697* lead_cp_space 000027 internal static fixed bin(17,0) dcl 98 set ref 239* 274 274 276 707* length builtin function dcl 82 ref 315 315 359 359 374 385 407 578 702 731 letter_size 000330 automatic fixed bin(17,0) dcl 134 set ref 682* 687* 694* 709 level_str 000331 automatic char(32) dcl 135 set ref 404* 406 407 410 line_length 000030 internal static fixed bin(17,0) initial dcl 99 set ref 641* 703 704 line_no 000031 internal static fixed bin(17,0) dcl 100 set ref 207* 235* 235 246* 246 252* 252 288* 288 295* 295 322* 322 336* 336 342* 342 370* 370 381* 381 392* 392 400* 400 424 428* 428 433* 433 564* 571* 590 734* 734 lines_per_inch 7 000304 internal static fixed bin(17,0) level 3 in structure "static_ctl" dcl 116 in procedure "head_sheet_" set ref 642 651 786 lines_per_inch 7 000510 internal static fixed bin(17,0) level 3 in structure "default_ctl" dcl 118 in procedure "head_sheet_" set ref 748* lines_per_inch 7 based fixed bin(17,0) level 3 in structure "prt_ctl" dcl 3-22 in procedure "head_sheet_" ref 497 497 500 786 lth parameter fixed bin(17,0) dcl 725 ref 721 730 ltrim builtin function dcl 82 ref 557 577 max builtin function dcl 82 ref 410 582 641 705 707 med_letters 000032 internal static bit(1) packed unaligned dcl 101 set ref 312 357 415 685* 692* message 000341 automatic varying char(200) dcl 136 set ref 199* 557* 575 577 min builtin function dcl 82 ref 230 242 315 315 333 359 359 377 389 705 707 mode 000033 internal static char(256) packed unaligned dcl 102 set ref 450* 598* 712* n 000103 automatic fixed bin(17,0) dcl 122 set ref 212* 214* 262* 264* 283 285 330* 333* 333 334 334 335 377* 379 379 380 384 389* 390 390 391 424* 426 426 427 428 568* 569 569 570 571 580* 582 582 584 584 590* 591 591 592 654* 657 660* 660 663 664* 664 667 670* 670 673 674 n_letters 000133 internal static fixed bin(17,0) dcl 103 set ref 309 309 312 312 315 315 355 355 357 357 359 359 410 412 412 415 415 709* n_nl 000134 internal static fixed bin(17,0) dcl 104 set ref 292 292 294 295 340 340 341 342 397 397 399 400 681* 688* 693* next_char 000424 automatic fixed bin(17,0) dcl 137 set ref 206* 232 234* 234 244 245* 245 250 251* 251 269 270* 270 274 276 277* 279 280* 280 283 285* 285 292 294* 294 320 321* 321 334 335* 335 340 341* 341 368 369* 369 379 380* 380 390 391* 391 397 399* 399 426 427* 427 430 432* 432 435 437 565* 570* 591 592* 592 593 596 732 733* 733 no_pad_blanks 000135 internal static fixed bin(17,0) dcl 105 set ref 283 283 285 705* 707 no_separator 304(06) based bit(1) level 3 packed packed unaligned dcl 2-17 ref 212 258 notep 000426 automatic pointer dcl 138 set ref 459* 460 463* 464* null builtin function dcl 82 ref 174 460 536 546 643 645 773 omode 000430 automatic char(256) packed unaligned dcl 139 set ref 450* 467* 598* 604* ordata based structure level 1 dcl 2-17 ordatap 000666 automatic pointer dcl 2-67 set ref 184* 203 209 209 211 212 212 214 214 220 224 224 224 224 239 256 258 258 260 260 262 262 264 264 299 301 305 326 328 330 330 330 346 364 374 376 404 439 546* 773 774 page_length 000136 internal static fixed bin(17,0) initial dcl 106 set ref 424 567 568 590 642* 679 684 page_size 000137 internal static fixed bin(17,0) dcl 107 set ref 437* 441 442 446 447 paper_info 5 based structure level 2 in structure "prt_ctl" dcl 3-22 in procedure "head_sheet_" paper_info 5 000304 internal static structure level 2 in structure "static_ctl" dcl 116 in procedure "head_sheet_" paper_info 5 000510 internal static structure level 2 in structure "default_ctl" dcl 118 in procedure "head_sheet_" personl 000530 automatic fixed bin(17,0) dcl 140 set ref 299* 300 346 phys_line_length 6 000510 internal static fixed bin(17,0) level 3 in structure "default_ctl" dcl 118 in procedure "head_sheet_" set ref 746* phys_line_length 6 based fixed bin(17,0) level 3 in structure "prt_ctl" dcl 3-22 in procedure "head_sheet_" ref 494 494 782 phys_line_length 6 000304 internal static fixed bin(17,0) level 3 in structure "static_ctl" dcl 116 in procedure "head_sheet_" set ref 230 242 333 377 383 386 386 389 580 641 657 657 660 667 667 670 698 705 709 712* 782 phys_page_length 5 000304 internal static fixed bin(17,0) level 3 in structure "static_ctl" dcl 116 in procedure "head_sheet_" set ref 642 784 phys_page_length 5 based fixed bin(17,0) level 3 in structure "prt_ctl" dcl 3-22 in procedure "head_sheet_" ref 500 500 784 phys_page_length 5 000510 internal static fixed bin(17,0) level 3 in structure "default_ctl" dcl 118 in procedure "head_sheet_" set ref 747* proji 000531 automatic fixed bin(17,0) dcl 141 set ref 300* 301 305 projl 000532 automatic fixed bin(17,0) dcl 142 set ref 301* 305 prt_ctl based structure level 1 dcl 3-22 ref 503 638 prt_ctl_ptr 000670 automatic pointer dcl 3-20 set ref 164* 174* 179* 186* 188 484* 486 486 486 486 494 494 497 497 500 500 500 503 536* 541* 548* 551* ptr builtin function dcl 82 ref 677 queue_msg_hdr based structure level 1 dcl 4-12 request_no 67 based fixed bin(35,0) level 2 dcl 2-17 set ref 209 220 224* 224* request_type 000533 automatic char(32) dcl 143 in procedure "head_sheet_" set ref 326* 328* 330 330 request_type 71 based char(32) level 2 in structure "ordata" dcl 2-17 in procedure "head_sheet_" ref 326 328 requestor 2 based char(32) level 2 dcl 2-17 ref 224 224 299 301 305 346 restart_no 70 based fixed bin(35,0) level 2 dcl 2-17 set ref 264* restarted 304(01) based bit(1) level 3 packed packed unaligned dcl 2-17 ref 264 restrt_cnt_msg 000543 automatic char(30) dcl 144 set ref 262* 264* 266* 268 278 283 rtrim builtin function dcl 82 ref 315 315 359 359 374 385 407 557 578 731 sep_ptr 000140 internal static pointer initial dcl 108 set ref 442 593 643 644* 645 648* 653 657 663 667 673 677 sep_size 000142 internal static fixed bin(17,0) dcl 109 set ref 441 442 442 593 593 596 674* 676 separator 304(02) based bit(1) level 3 packed packed unaligned dcl 2-17 ref 439 774 separator_only 000553 automatic bit(1) packed unaligned dcl 145 in procedure "head_sheet_" set ref 186* 188 198 548* separator_only parameter bit(1) packed unaligned dcl 766 in procedure "check_static_ctl" set ref 761 769* 774* static_ctl 000304 internal static structure level 1 dcl 116 set ref 638* static_ctl_not_set 000143 internal static bit(1) initial packed unaligned dcl 110 set ref 639* 771 strp parameter pointer dcl 724 ref 721 730 substr builtin function dcl 82 set ref 215* 232* 232 244* 244 250* 269* 274* 279* 283* 283 292* 301 305 309 309 312 312 320* 334* 334 340* 346 350 350 355 355 357 357 368* 379* 379 384 386* 390* 390 397* 404 410* 410 412 412 415 415 426* 430* 430 435* 435 442* 442 447* 569* 582* 582 584 584 591* 593* 593 653* 657* 663* 667* 673* 732* 732 sysdir 000144 internal static char(168) initial packed unaligned dcl 111 set ref 459* 616* system_info_$installation_id 000744 constant entry external dcl 78 ref 711 temp 000554 automatic char(280) dcl 146 in procedure "head_sheet_" set ref 330* 334 376* 379 384* 384 385 386* 390 409* 410* 412 412 415 415 577* 578 582 temp 000101 automatic char(204) dcl 728 in procedure "wout" set ref 730* 731 732 type_field 000216 internal static fixed bin(17,0) dcl 112 set ref 330* 330 330 330* 330 330 704* unspec builtin function dcl 82 set ref 744* xcode 000662 automatic fixed bin(35,0) dcl 147 set ref 450* 459* 462* 463* 464* 467* 598* 604* xl 000217 internal static fixed bin(17,0) dcl 113 set ref 250 251 292 294 320 321 340 341 368 369 397 399 702* xxbar 000220 internal static varying char(204) dcl 114 set ref 250 292 320 340 368 397 698* 701* 702 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. REQUEST automatic structure level 1 dcl 2-69 SINGLE_BANNER_BARS internal static fixed bin(17,0) initial dcl 3-54 STATE_BUMPED internal static fixed bin(17,0) initial dcl 4-46 STATE_DEFERRED internal static fixed bin(17,0) initial dcl 4-42 STATE_DUPT internal static fixed bin(17,0) initial dcl 4-47 STATE_ELIGIBLE internal static fixed bin(17,0) initial dcl 4-44 STATE_RUNNING internal static fixed bin(17,0) initial dcl 4-45 STATE_TRANSITION internal static fixed bin(17,0) initial dcl 4-43 STATE_UNPROCESSED internal static fixed bin(17,0) initial dcl 4-41 dprint_msg_version_3 internal static fixed bin(17,0) initial dcl 1-62 dprint_msg_version_4 internal static fixed bin(17,0) initial dcl 1-62 dprint_msg_version_5 internal static fixed bin(17,0) initial dcl 1-62 forms_max_lth internal static fixed bin(17,0) initial dcl 1-55 head_max_lth internal static fixed bin(17,0) initial dcl 1-55 label_max_lth internal static fixed bin(17,0) initial dcl 1-55 path_max_lth internal static fixed bin(17,0) initial dcl 1-55 queue_msg_hdr_version_1 internal static fixed bin(17,0) initial dcl 4-37 NAMES DECLARED BY EXPLICIT CONTEXT. check_static_ctl 004376 constant entry internal dcl 761 ref 186 548 common 000253 constant label dcl 182 ref 166 ctl_err 003044 constant label dcl 489 ref 494 497 500 head_sheet_ 000135 constant entry external dcl 52 init 003611 constant entry external dcl 622 init_default_prt_ctl 004355 constant entry internal dcl 741 ref 162 177 525 539 init_template_and_static 003621 constant entry internal dcl 629 ref 192 551 print_head_sheet 000214 constant entry external dcl 168 print_it 002534 constant label dcl 439 ref 217 print_separator 003163 constant entry external dcl 530 separator 003102 constant entry external dcl 513 separator_common 003225 constant label dcl 544 ref 528 set_ctl 003016 constant entry external dcl 476 test 003565 constant entry external dcl 611 wout 004276 constant entry internal dcl 721 ref 309 309 312 312 315 355 355 357 357 359 412 412 415 415 584 584 write_separator 003310 constant label dcl 559 set ref 200 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4772 5740 4524 5002 Length 6406 4524 746 431 245 704 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME head_sheet_ 608 external procedure is an external procedure. init_template_and_static internal procedure shares stack frame of external procedure head_sheet_. wout 117 internal procedure is assigned to an entry variable. init_default_prt_ctl internal procedure shares stack frame of external procedure head_sheet_. check_static_ctl internal procedure shares stack frame of external procedure head_sheet_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 big_letters head_sheet_ 000011 copy_offset head_sheet_ 000012 default_ctl_not_set head_sheet_ 000013 head_field head_sheet_ 000014 hs_ptr head_sheet_ 000016 installation head_sheet_ 000026 last_request_no head_sheet_ 000027 lead_cp_space head_sheet_ 000030 line_length head_sheet_ 000031 line_no head_sheet_ 000032 med_letters head_sheet_ 000033 mode head_sheet_ 000133 n_letters head_sheet_ 000134 n_nl head_sheet_ 000135 no_pad_blanks head_sheet_ 000136 page_length head_sheet_ 000137 page_size head_sheet_ 000140 sep_ptr head_sheet_ 000142 sep_size head_sheet_ 000143 static_ctl_not_set head_sheet_ 000144 sysdir head_sheet_ 000216 type_field head_sheet_ 000217 xl head_sheet_ 000220 xxbar head_sheet_ 000304 static_ctl head_sheet_ 000510 default_ctl head_sheet_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME head_sheet_ 000100 i head_sheet_ 000101 j head_sheet_ 000102 l head_sheet_ 000103 n head_sheet_ 000104 l2 head_sheet_ 000105 l1 head_sheet_ 000106 iocbp head_sheet_ 000110 bitct head_sheet_ 000111 copyx head_sheet_ 000117 change_static head_sheet_ 000120 dest head_sheet_ 000140 h1_len head_sheet_ 000141 h3_len head_sheet_ 000142 head head_sheet_ 000162 hline_1 head_sheet_ 000245 hline_3 head_sheet_ 000330 letter_size head_sheet_ 000331 level_str head_sheet_ 000341 message head_sheet_ 000424 next_char head_sheet_ 000426 notep head_sheet_ 000430 omode head_sheet_ 000530 personl head_sheet_ 000531 proji head_sheet_ 000532 projl head_sheet_ 000533 request_type head_sheet_ 000543 restrt_cnt_msg head_sheet_ 000553 separator_only head_sheet_ 000554 temp head_sheet_ 000662 xcode head_sheet_ 000664 dmp head_sheet_ 000666 ordatap head_sheet_ 000670 prt_ctl_ptr head_sheet_ wout 000100 i wout 000101 temp wout THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this return_mac shorten_stack ext_entry ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. bigletter_ bigletter_$five convert_binary_integer_$decimal_string hcs_$initiate_count hcs_$make_seg hcs_$terminate_noname hcs_$truncate_seg ioa_$rsnnl iox_$find_iocb iox_$modes iox_$put_chars system_info_$installation_id THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 52 000131 157 000155 158 000175 162 000177 164 000203 166 000206 168 000207 171 000230 174 000234 177 000244 179 000250 182 000253 184 000254 186 000257 188 000261 191 000267 192 000272 194 000302 198 000304 199 000307 200 000310 203 000311 204 000314 206 000315 207 000317 209 000321 211 000330 212 000335 214 000370 215 000424 217 000432 220 000433 224 000435 230 000520 232 000527 234 000561 235 000566 239 000570 242 000622 244 000630 245 000662 246 000667 250 000671 251 000677 252 000701 256 000702 258 000712 260 000745 262 001001 264 001036 266 001072 268 001075 269 001105 270 001113 271 001114 272 001115 274 001116 276 001144 277 001150 278 001152 279 001156 280 001161 281 001162 283 001163 285 001221 288 001227 292 001230 294 001261 295 001266 299 001272 300 001303 301 001305 305 001322 307 001333 309 001336 312 001367 315 001421 320 001451 321 001474 322 001501 326 001503 328 001514 330 001517 333 001607 334 001616 335 001637 336 001644 340 001645 341 001676 342 001703 346 001707 349 001723 350 001726 355 001735 357 001766 359 002020 364 002050 368 002055 369 002100 370 002105 374 002107 376 002121 377 002124 379 002130 380 002150 381 002155 383 002156 384 002161 385 002166 386 002200 389 002206 390 002212 391 002232 392 002237 397 002240 399 002271 400 002276 404 002302 406 002305 407 002315 409 002331 410 002334 412 002347 415 002400 420 002431 424 002432 426 002437 427 002444 428 002445 430 002446 432 002500 433 002505 435 002507 437 002530 439 002534 441 002540 442 002543 444 002552 446 002553 447 002556 450 002563 452 002606 453 002623 459 002625 460 002675 462 002703 463 002732 464 002752 467 002763 469 003010 471 003011 476 003012 482 003030 484 003031 486 003034 489 003044 491 003047 494 003050 497 003055 500 003062 503 003070 505 003074 507 003075 513 003076 520 003124 521 003147 525 003151 528 003155 530 003156 533 003202 536 003206 539 003216 541 003222 544 003225 546 003226 548 003230 550 003232 551 003235 553 003245 557 003247 559 003310 562 003313 564 003314 565 003315 567 003317 568 003322 569 003324 570 003330 571 003332 575 003334 577 003341 578 003357 579 003371 580 003374 582 003377 584 003417 587 003445 590 003446 591 003452 592 003457 593 003460 596 003466 598 003472 600 003515 601 003532 604 003534 606 003561 611 003562 616 003600 617 003607 622 003610 625 003616 626 003620 629 003621 637 003623 638 003624 639 003632 641 003633 642 003640 643 003643 644 003647 645 003710 648 003716 649 003732 651 003736 653 003743 654 003747 655 003751 656 003757 657 003762 660 004007 662 004014 663 004017 664 004024 665 004025 667 004026 670 004053 672 004060 673 004062 674 004070 676 004073 677 004076 679 004102 680 004110 681 004112 682 004114 683 004116 684 004117 685 004122 686 004124 687 004125 688 004127 689 004131 691 004132 692 004133 693 004134 694 004136 696 004137 697 004140 698 004142 701 004172 702 004177 703 004201 704 004204 705 004210 707 004221 709 004231 711 004234 712 004244 715 004273 721 004275 730 004303 731 004312 732 004324 733 004346 734 004353 736 004354 741 004355 744 004356 746 004362 747 004364 748 004366 749 004370 750 004372 752 004374 754 004375 761 004376 769 004400 771 004410 773 004416 774 004422 779 004440 782 004445 784 004456 786 004465 788 004474 790 004503 793 004511 ----------------------------------------------------------- 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