COMPILATION LISTING OF SEGMENT isolts_err_log_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/28/88 1318.6 mst Fri 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 isolts_err_log_: proc; 12 13 /* isolts_err_log_ - a group of subroutines that maintain the isolts_err_log */ 14 /* initially coded by James A. Bush 6/78 */ 15 16 /* External entries */ 17 18 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), 19 fixed bin (2), ptr, fixed bin (35)); 20 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), 21 ptr, fixed bin (35)); 22 dcl hcs_$set_bc_seg entry (ptr, fixed bin (24), fixed bin (35)); 23 dcl hcs_$set_max_length_seg entry (ptr, fixed bin (19), fixed bin (35)); 24 dcl iox_$attach_name entry (char (*), ptr, char (*), ptr, fixed bin (35)); 25 dcl iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 26 dcl iox_$close entry (ptr, fixed bin (35)); 27 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 28 dcl date_time_ entry (fixed bin (71), char (*)); 29 dcl dprint_ entry (char (*), char (*), ptr, fixed bin (35)); 30 dcl unique_chars_ entry (bit (*)) returns (char (15)); 31 dcl user_info_ entry (char (*), char (*), char (*)); 32 dcl dump_segment_ entry (ptr, ptr, fixed bin, fixed bin, fixed bin, bit (*)); 33 dcl get_default_wdir_ entry returns (char (168)); 34 dcl (com_err_, ioa_$ioa_switch) entry options (variable); 35 dcl clock_ entry returns (fixed bin (71)); 36 dcl tolts_util_$bci_to_ascii entry (bit (*), char (*) varying, fixed bin); 37 38 /* External static */ 39 40 dcl error_table_$noentry fixed bin (35) ext; 41 dcl iox_$user_output ptr ext; 42 43 /* Automatic */ 44 45 dcl (i, j, first, cnt, lim) fixed bin; /* do loop cnters */ 46 dcl tlog char (24); 47 dcl (uname, uproj, uacct) char (32); 48 dcl out_str char (136) varying; 49 dcl dump_str char (136); 50 dcl cd_type char (5); 51 dcl code fixed bin (35); 52 dcl tptr ptr; 53 dcl (term, first_printed) bit (1); 54 dcl format bit (11); 55 56 /* internal static */ 57 58 dcl (efp, mep, imep, iocbp) ptr int static; /* ptr to our error file */ 59 dcl hdir char (168) int static; 60 dcl sname char (32) int static; 61 dcl mes_begin bit (1) int static; /* message begin flag */ 62 dcl (s_att, s_open) bit (1) int static init ("0"b); /* flags for file attachment and opening */ 63 64 /* Entry parameters */ 65 66 dcl rcode fixed bin (35); /* standard system error rcode */ 67 dcl mptr ptr; /* ptr to message text */ 68 dcl mlen fixed bin; /* word length of message */ 69 dcl mtype fixed bin (2); /* type of message */ 70 dcl (cput, scut) fixed bin (5); /* cpu and scu tags of cpu in error */ 71 dcl a_cnt fixed bin; /* cnt of log entrieds to display */ 72 dcl a_lim fixed bin; /* if not = 0 then the number to display from cnt */ 73 dcl dp_sw bit (1); /* = "0"b then display on user's term, = "1"b then dprint */ 74 dcl d_type char (5); /* type of dump */ 75 76 /* Builtins */ 77 78 dcl (addr, addrel, fixed, floor, length, null, ptr, substr, rel, rtrim, unspec) builtin; 79 80 /* Structures */ 81 82 dcl 1 ilog based (efp) aligned, /* definition of isolts_err_log */ 83 2 len fixed bin (35), /* length of message buffer area in chars */ 84 2 version fixed bin, /* version of this log (1) */ 85 2 first bit (18) unaligned, /* relative address of first message in log */ 86 2 last bit (18) unaligned, /* relative address of last message in log */ 87 2 init_wd char (4), /* = "INIT" if log has been initialized */ 88 2 time_init fixed bin (71), /* clock time log was initialized */ 89 2 nxt_seq fixed bin (35), /* next message sequence numbr */ 90 2 first_mess bit (1) unaligned, /* if = "0"b, log is empty */ 91 2 pad1 bit (35) unaligned, 92 2 buffer char (0 refer (ilog.len)), /* message buffer */ 93 2 end_buf char (1); /* end of error file */ 94 95 dcl 1 ilog_mess based (mep) aligned, /* format of message entry */ 96 (2 next bit (18), /* fwd and backward message threads */ 97 2 prev bit (18), 98 2 mess_complete bit (1), /* = "1"b if this is a completeed message */ 99 2 cpu_tag fixed bin (5), /* tag of cpu generating error message */ 100 2 scu_tag fixed bin (5), /* tag of scu being used for cpu test */ 101 2 pad1 bit (2), 102 2 type fixed bin (2), /* 1 = begin, 2 = intermediate, 3 = end message */ 103 2 txt_len fixed bin, /* length of message in characters */ 104 2 time_logged fixed bin (71), /* clock time message logged */ 105 2 seq_num fixed bin (35), /* message sequence number */ 106 2 next_full bit (18), /* ptr to nxt full message */ 107 2 pad2 bit (18), 108 2 text char (0 refer (ilog_mess.txt_len))) unaligned, /* message text */ 109 2 nxt_mess char (1); /* means of spacing to next message */ 110 111 dcl 1 ilog_imess based (imep) aligned, /* format of intermediate message entry */ 112 (2 next bit (18), /* fwd and backward message threads */ 113 2 prev bit (18), 114 2 pad1 bit (15), 115 2 type fixed bin (2), /* 1 = begin, 2 = intermediate, 3 = end message */ 116 2 txt_len fixed bin, /* length of message in characters */ 117 2 text char (0 refer (ilog_imess.txt_len))) unaligned, /* message text */ 118 2 nxt_imess char (1); /* means of spacing to next message */ 119 120 121 /* Constants */ 122 123 dcl cleanup condition; 124 dcl pname char (6) int static options (constant) init 125 ("isolts"); 126 dcl tags (0 : 7) char (1) static options (constant) init 127 ("a", "b", "c", "d", "e", "f", "g", "h"); 128 dcl NL char (1) int static options (constant) init (" 129 "); 130 dcl NP char (1) int static options (constant) init (" "); 131 132 /* init - entry to initiate or create at first reference the isolts_err_log */ 133 134 init: entry (rcode); 135 136 rcode = 0; /* preset return code */ 137 mes_begin = "0"b; /* reset message begin flag */ 138 hdir = get_default_wdir_ (); /* get our home dir name */ 139 140 /* now get a pointer to our error message file */ 141 142 call hcs_$initiate (hdir, "isolts_err_log", "", 0, 1, efp, code); 143 if efp = null then /* if error */ 144 if code = error_table_$noentry then do; /* does not exist */ 145 call com_err_ (0, pname, "Creating ^a>isolts_err_log", hdir); 146 call hcs_$make_seg (hdir, "isolts_err_log", "", 01010b, efp, code); 147 if efp = null then do; /* you can't win */ 148 call com_err_ (code, pname, "Attempting to create ^a>isolts_err_log", hdir); 149 rcode = code; 150 return; 151 end; 152 ilog_init: 153 call hcs_$set_max_length_seg (efp, 65536, code); /* set max length to 64k */ 154 if code ^= 0 then do; 155 call com_err_ (code, pname, "Setting max length of ^a>isolts_err_log to 64k", hdir); 156 rcode = code; 157 return; 158 end; 159 call hcs_$set_bc_seg (efp, 65536 * 36, code); /* set bit cnt to 64k */ 160 if code ^= 0 then do; 161 call com_err_ (code, pname, "Setting bit cnt of ^a>isolts_err_log to 64k", hdir); 162 rcode = code; 163 return; 164 end; 165 166 /* now lets set up the log header */ 167 168 ilog.len = (65536 - fixed (rel (addr (ilog.buffer)))) * 4; /* set buffer length */ 169 ilog.version = 1; /* version of this log is 1 */ 170 ilog.first, ilog.last = rel (addr (ilog.buffer)); /* set first and last message ptrs */ 171 ilog.nxt_seq = 0; /* start with a sequence number of 0 */ 172 ilog.buffer = ""; /* pad message buffer with blanks */ 173 ilog.first_mess = "0"b; /* reset first message flag */ 174 ilog.time_init = clock_ (); /* get clock time */ 175 ilog.init_wd = "INIT"; /* set init word */ 176 return; 177 end; 178 else do; 179 call com_err_ (code, pname, "Initiating ^a>isolts_err_log", hdir); 180 rcode = code; 181 return; 182 end; 183 if ilog.init_wd ^= "INIT" then do; /* if error file inconsistant */ 184 call com_err_ (0, pname, "^a>isolts_err_log is inconsistant, reinitializing", hdir); 185 go to ilog_init; 186 end; 187 return; 188 189 /* */ 190 191 /* write - entry to write message entries into the isolts_err_log */ 192 193 write: entry (mptr, mlen, mtype, cput, scut); 194 195 go to mess_type (mtype); /* execute desired code */ 196 197 mess_type (1): /* message begining */ 198 199 mes_begin = "1"b; /* set message begining flag */ 200 if ^ilog.first_mess then do; /* if we haven't written to log before... */ 201 mep = addrel (efp, ilog.first); /* start at begining */ 202 ilog_mess.prev = "0"b; /* and set prev ptr to 0 */ 203 ilog.first_mess = "1"b; /* set first message flag */ 204 end; 205 else do; /* otherwise go to next message loc */ 206 mep = addrel (efp, ptr (efp, ilog.last) -> ilog_mess.next_full); 207 ilog_mess.prev = ilog.last; /* set prev ptr to last message complete */ 208 end; 209 ilog_mess.mess_complete = "0"b; /* reset message complete flag */ 210 ilog_mess.time_logged = clock_ (); /* set the time */ 211 ilog_mess.seq_num = ilog.nxt_seq; /* set sequence number */ 212 if unspec (ilog.nxt_seq) = "377777777777"b3 then do; /* do not overflow seq number */ 213 call com_err_ (0, pname, "Error message log sequence number has reached max value of ^d, resetting to 0", 214 ilog.nxt_seq); 215 ilog.nxt_seq = 0; /* reset sequence number */ 216 end; 217 else ilog.nxt_seq = ilog.nxt_seq + 1; /* otherwise just increment it by one */ 218 ilog_mess.cpu_tag = cput; /* set cpu and scu tags */ 219 ilog_mess.scu_tag = scut; 220 ilog_mess.type = 1; /* set start message type */ 221 ilog_mess.txt_len = cv_wmess (addr (ilog_mess.text)); /* go convert, and store message */ 222 ilog_mess.next = rel (addr (ilog_mess.nxt_mess)); /* set next message ptr */ 223 imep = null; /* and null out intermediate message ptr */ 224 225 return; /* thats it */ 226 227 mess_type (2): /* intemediate message */ 228 229 if ^mes_begin then do; /* something is wrong */ 230 call com_err_ (0, pname, "Attempting to write intermediate message entry before beginning of message"); 231 return; 232 end; 233 if imep = null then do; /* if first intermediate message */ 234 imep = addrel (efp, ilog_mess.next); /* set it */ 235 ilog_imess.prev = rel (mep); /* set prev ptr to start message entry */ 236 end; 237 else do; /* else go from lst intermediate message */ 238 tptr = addr (ilog_imess.nxt_imess); /* set temp ptr */ 239 if wrap (tptr) then do; /* if buffer wrap around */ 240 tptr = addrel (efp, ilog.first); /* reset temp ptr to start of buffer */ 241 ilog_imess.next = rel (tptr); /* and change thread from last message */ 242 end; 243 tptr -> ilog_imess.prev = rel (imep); /* set prev thread */ 244 imep = tptr; /* and copy ptr */ 245 end; 246 ilog_imess.type = 2; /* set intermediate type */ 247 ilog_imess.txt_len = cv_wmess (addr (ilog_imess.text)); /* go convert and write message */ 248 ilog_imess.next = rel (addr (ilog_imess.nxt_imess)); /* set next ptr */ 249 250 return; /* and return */ 251 252 mess_type (3): /* end message */ 253 254 mes_begin = "0"b; /* reset message begin flag */ 255 ilog_mess.mess_complete = "1"b; /* and set message complete flag */ 256 if imep = null then do; /* if only 1 message entry in this message */ 257 tptr = addr (ilog_mess.nxt_mess); 258 ilog_mess.type = 3; /* set type in main messae to end */ 259 end; 260 else do; 261 tptr = addr (ilog_imess.nxt_imess); /* if there were intermediate messages */ 262 ilog_imess.type = 3; /* set type in intermeditate message to end */ 263 end; 264 if wrap (tptr) then do; /* check for wrap around */ 265 ilog_mess.next_full = ilog.first; /* set next message back to start of buffer */ 266 if imep ^= null then /* if intermediate messages */ 267 ilog_imess.next = ilog.first; /* set thread to beginning of buffer */ 268 else ilog_mess.next = ilog.first; /* otherwise set tread of maj. message */ 269 end; 270 else do; 271 if substr (rel (tptr), 18, 1) then /* if odd address */ 272 tptr = addrel (tptr, 1); /* make even */ 273 ilog_mess.next_full = rel (tptr); /* no wrap nedded, set to next one in buffer */ 274 end; 275 ilog.last = rel (mep); /* set last pointer */ 276 277 return; /* and return */ 278 279 /* */ 280 281 /* display - entry to display requested isolts_err_log entries either on user's terminal or queue a dprint */ 282 283 display: entry (a_cnt, a_lim, dp_sw); 284 285 if ^ilog.first_mess then do; /* log is empty */ 286 call com_err_ (0, pname, "Error log file is empty"); 287 return; 288 end; 289 cnt = a_cnt; /* copy parameters */ 290 lim = a_lim; 291 s_att, s_open = "0"b; /* reset flags */ 292 if dp_sw then /* if user wants log entries dprinted... */ 293 call attach_file ("ilog", "0"b); /* go attach print file */ 294 else iocbp = iox_$user_output; /* else put it out to terminal */ 295 on cleanup call clean_up; /* establish a cleanup handler */ 296 if cnt = 0 then /* set defaults */ 297 cnt = 1; 298 else if cnt = -1 then 299 cnt = 100000; /* set to big number to make sure we get all */ 300 if lim = 0 | lim = -1 then 301 lim = 1; 302 else lim = cnt - lim; 303 304 first_printed, term = "0"b; /* reset terminate condition, and first page flag */ 305 mep, tptr = addrel (efp, ilog.last); /* preset ptrs */ 306 307 do i = 1 by 1 while (i ^= cnt + 1 & ^term); /* go backwards to desired number of entries */ 308 mep = tptr; /* set mep to last valid message */ 309 if ilog_mess.prev = "0"b then /* if we come to first message */ 310 term = "1"b; 311 else tptr = addrel (efp, ilog_mess.prev); /* otherwise go to prev mess */ 312 if tptr -> ilog_mess.next_full ^= rel (mep) | /* if threads do not match up */ 313 ilog_mess.prev ^= rel (tptr) then term = "1"b; /* quit */ 314 end; 315 316 /* now go forward through desired number of message entries */ 317 318 do j = i-2 to lim by -1; 319 if ilog_mess.mess_complete then do; /* display only if complete message */ 320 call date_time_ ((ilog_mess.time_logged), tlog); /* convert date and time */ 321 322 /* output isolts message header first */ 323 324 call ioa_$ioa_switch (iocbp, 325 "^[^|^]^a error message sequence # ^d logged at ^a for cpu ^a using memory ^a", 326 first_printed, pname, ilog_mess.seq_num, tlog, 327 tags (ilog_mess.cpu_tag), tags (ilog_mess.scu_tag)); 328 term = "0"b; 329 first_printed = "1"b; /* set first page printed flag */ 330 imep = mep; /* set ptr equal */ 331 332 /* now output each message entry */ 333 334 do while (^term); 335 if imep = mep then do; /* if first message entry */ 336 out_str = ilog_mess.text; /* copy message text */ 337 if substr (out_str, 1, 1) = NP then /* if form feed */ 338 out_str = substr (out_str, 2); /* get rid of it */ 339 call ioa_$ioa_switch (iocbp, "^a", out_str); /* output primary message entry */ 340 end; 341 else call ioa_$ioa_switch (iocbp, "^a", ilog_imess.text); /* output inter. message entry */ 342 if ilog_imess.type = 3 then /* if end message */ 343 term = "1"b; /* this is the last text for this message */ 344 else imep = addrel (efp, ilog_imess.next); /* increment intermediate message ptr */ 345 end; 346 end; 347 mep = addrel (efp, ilog_mess.next_full); /* increment message ptr */ 348 end; 349 if dp_sw then /* if dprinting file */ 350 call prt_queue ("ILOG", "0"b); /* go queue it up */ 351 return; 352 353 /* */ 354 355 /* dump - entry to output dumps to a dump file for dprinting */ 356 357 dump: entry (d_type, mptr, mlen, mtype, cput, scut); 358 359 if mtype = 1 then do; /* output text a line at a time */ 360 if ^s_att & ^s_open then do; /* if first time throutgh */ 361 call attach_file (d_type, "1"b); /* attach and open print file */ 362 on cleanup call clean_up; /* establish a cleanup condition handler */ 363 call ioa_$ioa_switch (iocbp, "^3-*** ^a ^a of cpu ^a using memory ^a ***^/", 364 pname, d_type, tags (cput), tags (scut)); /* output header line */ 365 end; 366 i = cv_wmess (addr (dump_str)); /* go convert message to ascii */ 367 if substr (dump_str, 1, 1) = NP then /* if form feed */ 368 dump_str = substr (dump_str, 2); /* get rid of it */ 369 call ioa_$ioa_switch (iocbp, "^a", dump_str); /* and store in dump file */ 370 end; 371 else do; /* output requested octal dump to dump file */ 372 call ioa_$ioa_switch (iocbp, "^2/"); /* skip 2 lines */ 373 if d_type = "mdump" then do; 374 cd_type = "MDUMP"; /* form dype in all caps */ 375 format = "01000100000"b; /* rel address only, long form */ 376 first = fixed (rel (mptr), 17); 377 end; 378 else if d_type = "sdump" then do; 379 cd_type = "SDUMP"; 380 format = "11000100000"b; /* abs and rel addresses, long form */ 381 first = 0; /* relative address begines at 0 */ 382 end; 383 else do; 384 cd_type = "XDUMP"; 385 format = "11000100000"b; /* abs and rel addresses, long form */ 386 first = 0; /* relative address begines at 0 */ 387 end; 388 call dump_segment_ (iocbp, mptr, 0, first, mlen, format); 389 call prt_queue (cd_type, "1"b); 390 end; 391 return; 392 393 /* */ 394 395 /* cv_wmess - internal function subroutine to convert bci message, store, and return length */ 396 397 cv_wmess: proc (str_ptr) returns (fixed bin); 398 399 dcl str_ptr ptr; 400 dcl in_str bit (mlen * 36) based (mptr); 401 dcl bout_str char (136) based (str_ptr); 402 403 call tolts_util_$bci_to_ascii (in_str, out_str, mlen * 6); /* convert message */ 404 if substr (out_str, length (out_str), 1) = NL then /* if trailing newline... */ 405 out_str = substr (out_str, 1, length (out_str) - 1); /* get rid of it */ 406 if substr (out_str, 1, 1) = NL then /* if leading newline... */ 407 out_str = substr (out_str, 2); /* get rid of it */ 408 bout_str = out_str; /* copy results */ 409 return (length (out_str)); /* and return length */ 410 411 end cv_wmess; 412 413 /* wrap - an internal function subroutine to check if the message buffer should be wrapped around */ 414 415 wrap: proc (limp) returns (bit (1)); 416 417 dcl limp ptr; 418 if fixed (rel (addrel (limp, 40))) > fixed (rel (addr (ilog.end_buf))) then 419 return ("1"b); /* buffer needs to be wraped */ 420 else return ("0"b); /* no need to wrap */ 421 422 end wrap; 423 424 /* clean_up - internal procedure to close and detach err file */ 425 426 clean_up: proc; 427 428 if s_open then do; /* if file open */ 429 call iox_$close (iocbp, code); 430 s_open = "0"b; 431 end; 432 if s_att then do; /* if file attached */ 433 call iox_$detach_iocb (iocbp, code); 434 s_att = "0"b; 435 iocbp = null; 436 end; 437 438 end clean_up; 439 440 /* */ 441 442 /* attach_file - internal procedure to attach and open stream file */ 443 444 attach_file: proc (fname, ld_sw); 445 446 dcl fname char (*); /* either ilog or dump */ 447 dcl ld_sw bit (1); /* "0"b = ilog, "1"b = dump */ 448 449 sname = unique_chars_ (""b) || "." || fname; /* form unique name */ 450 hdir = get_default_wdir_ (); /* and get our home dir */ 451 call iox_$attach_name ("err_file", iocbp, "vfile_ " || rtrim (hdir) || ">" || sname, null, code); 452 if code ^= 0 then do; /* if some problem with attach */ 453 call com_err_ (code, pname, "Attempting to attach ^[dump^;error log^] file - ^a>^a", 454 ld_sw, hdir, sname); 455 return; /* get out now */ 456 end; 457 s_att = "1"b; /* indicate our seg is attached */ 458 call iox_$open (iocbp, 2, "0"b, code); /* open for stream output */ 459 if code ^= 0 then do; 460 call com_err_ (code, pname, "Attempting to open ^a>^a for stream_output", hdir, sname); 461 call clean_up; /* go detach file */ 462 return; 463 end; 464 s_open = "1"b; 465 end attach_file; 466 467 /* prt_queue - internal procedure to queue up a dprint request for a error log file or dump file */ 468 469 prt_queue: proc (rname, ld_sw); 470 471 dcl rname char (*); /* either "ERR RPT" or "ZDUMP" */ 472 dcl ld_sw bit (1); 473 474 call clean_up; /* close and detach file */ 475 call user_info_ (uname, uproj, uacct); /* get users name and project */ 476 out_str = rtrim (uname) || "." || rtrim (uproj); /* form desc line */ 477 if length (out_str) < 10 then 478 i = floor ((14 - length (out_str)) / 2); /* form center index */ 479 else i = 1; /* if name to long, start at collum 1 */ 480 dpap = addr (dprint_arg_buf); /* set dprint arg ptr */ 481 dprint_arg.version = 1; /* set appropriate args */ 482 dprint_arg.copies = 1; 483 dprint_arg.delete = 1; 484 dprint_arg.queue = 3; /* probably should be queue 1 */ 485 dprint_arg.pt_pch = 1; 486 dprint_arg.notify = 1; /* might want to make this 0 */ 487 dprint_arg.output_module = 1; 488 dprint_arg.dest = ""; 489 substr (dprint_arg.dest, i) = out_str; /* set in person/project info */ 490 if ld_sw then /* if printing dump file */ 491 dprint_arg.heading = " for ISOLTS " || rname; 492 else dprint_arg.heading = " for ISOLTS ER RPT"; 493 call dprint_ (hdir, sname, dpap, code); /* queue it up */ 494 call ioa_$ioa_switch (iox_$user_output, 495 "^/^[dump^;error report^] file ^a has been queued for printing", ld_sw, sname); 496 end prt_queue; 497 1 1 /* BEGIN INCLUDE FILE ... dprint_arg.incl.pl1 */ 1 2 /* Modified 11/13/74 by Noel I. Morris */ 1 3 /* Modified: 10 April 1981 by G. Palter for version 6 structure -- longer request type names */ 1 4 /* Modified: 30 April 1982 by R. Kovalcik for version 7 structure -- defer_until_process_terminataion */ 1 5 /* Modified: November 1983 by C. Marker for version 8 structure -- no_separator */ 1 6 1 7 /****^ HISTORY COMMENTS: 1 8* 1) change(87-05-10,Gilcrease), approve(87-05-13,MCR7686), 1 9* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 1 10* Add line_nbrs bit for line-numbered printouts, version 9. 1 11* 2) change(88-02-05,Farley), approve(88-02-05,PBF7686), audit(88-02-05,GWMay), 1 12* install(88-02-05,MR12.2-1022): 1 13* Corrected alignment of line_nbrs, was aligned s/b unaligned.. 1 14* 3) change(88-08-29,Farley), approve(88-09-16,MCR7911), 1 15* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 1 16* Created a new 64 character forms_name variable, which supersedes the old 1 17* char 24 form_name variable, version 10. 1 18* END HISTORY COMMENTS */ 1 19 1 20 1 21 dcl dpap ptr; /* ptr to argument structure */ 1 22 dcl 1 dprint_arg_buf aligned like dprint_arg; /* Automatic storage for arg. */ 1 23 1 24 dcl 1 dprint_arg based (dpap) aligned, /* argument structure */ 1 25 2 version fixed bin, /* version number of dcl - current version is 9 */ 1 26 2 copies fixed bin, /* number of copies wanted */ 1 27 2 delete fixed bin, /* 1=delete after print */ 1 28 2 queue fixed bin, /* print queue */ 1 29 2 pt_pch fixed bin, /* 1=print, 2=punch */ 1 30 2 notify fixed bin, /* 1 = notify user when done */ 1 31 2 heading char (64), /* first page heading */ 1 32 2 output_module fixed bin, /* 1=print, 2=7punch, 3=mcc, 4=raw, 5=plotter */ 1 33 2 dest char (12), /* version 5 made this a pad - see destination below */ 1 34 /* limit of version 1 structure */ 1 35 2 carriage_control, /* Carriage control flags. */ 1 36 3 nep bit (1) unal, /* TRUE if print trhu perf. */ 1 37 3 single bit (1) unal, /* TRUE if ignore FF and VT */ 1 38 3 non_edited bit (1) unal, /* TRUE if printing in non-edited mode */ 1 39 3 truncate bit (1) unal, /* TRUE if truncating lines at line length */ 1 40 3 center_top_label bit (1) unal, /* TRUE if top label to be centered */ 1 41 3 center_bottom_label bit (1) unal, /* TRUE if bottom label to be centered */ 1 42 3 esc bit (1) unal, /* version 5 TRUE if text escapes are to be processed */ 1 43 3 no_separator bit (1) unal, /* version 8 TRUE if the inner head and tail sheets are to be suppressed. */ 1 44 3 line_nbrs bit (1) unal, /* version 9, line numbers */ 1 45 3 padding bit (27) unal, 1 46 2 pad (30) fixed bin, 1 47 2 forms char (8), /* version 5 made this a pad - see form_name below */ 1 48 2 lmargin fixed bin, /* left margin */ 1 49 2 line_lth fixed bin, /* max line lth */ 1 50 /* limit of version 2 structure */ 1 51 2 class char (8), /* version 6 made this a pad - see request_type below */ 1 52 2 page_lth fixed bin, /* Paper length arg */ 1 53 /* limit of version 3 structure */ 1 54 2 top_label char (136), /* top-of-page label */ 1 55 2 bottom_label char (136), /* bottom-of-page label */ 1 56 /* limit of version 4 structure */ 1 57 2 bit_count fixed bin (35), /* segment bit count */ 1 58 2 form_name char (24), /* name of special forms needed - moved from forms */ 1 59 /* version 10 made this a pad - see forms_name below */ 1 60 2 destination char (24), /* the long destination - moved from dest */ 1 61 2 chan_stop_path char (168), /* path of user channel stops - future */ 1 62 /* limit of version 5 structure */ 1 63 2 request_type character (24) unaligned, /* request type for the request */ 1 64 /* limit of version 6 structure */ 1 65 2 defer_until_process_termination fixed bin, /* 1 = don't process request until requesting process terminates */ 1 66 2 forms_name char (64) unal; /* name of special forms needed - moved from form_name */ 1 67 /* limit of version 10 structure */ 1 68 1 69 dcl dprint_arg_version_1 fixed bin int static options (constant) init (1); 1 70 dcl dprint_arg_version_2 fixed bin int static options (constant) init (2); 1 71 dcl dprint_arg_version_3 fixed bin int static options (constant) init (3); 1 72 dcl dprint_arg_version_4 fixed bin int static options (constant) init (4); 1 73 dcl dprint_arg_version_5 fixed bin int static options (constant) init (5); 1 74 dcl dprint_arg_version_6 fixed bin int static options (constant) init (6); 1 75 dcl dprint_arg_version_7 fixed bin int static options (constant) init (7); 1 76 dcl dprint_arg_version_8 fixed bin int static options (constant) init (8); 1 77 dcl dprint_arg_version_9 fixed bin int static options (constant) init (9); 1 78 dcl dprint_arg_version_10 fixed bin int static options (constant) init (10); 1 79 /* current version */ 1 80 1 81 dcl ( 1 82 DP_PRINT init (1), 1 83 DP_PUNCH init (2), 1 84 DP_PLOT init (3) 1 85 ) fixed bin static options (constant); /* for dprint_arg.pt_pch */ 1 86 1 87 /* END INCLUDE FILE ... dprint_arg.incl.pl1 */ 498 499 500 end isolts_err_log_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/28/88 1302.2 isolts_err_log_.pl1 >special_ldd>install>MR12.2-1199>isolts_err_log_.pl1 498 1 10/28/88 1227.7 dprint_arg.incl.pl1 >special_ldd>install>MR12.2-1199>dprint_arg.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. NL 003776 constant char(1) initial packed unaligned dcl 128 ref 404 406 NP constant char(1) initial packed unaligned dcl 130 ref 337 367 a_cnt parameter fixed bin(17,0) dcl 71 ref 283 289 a_lim parameter fixed bin(17,0) dcl 72 ref 283 290 addr builtin function dcl 78 ref 168 170 221 221 222 238 247 247 248 257 261 366 366 418 480 addrel builtin function dcl 78 ref 201 206 234 240 271 305 311 344 347 418 bout_str based char(136) packed unaligned dcl 401 set ref 408* buffer 10 based char level 2 dcl 82 set ref 168 170 172* cd_type 000250 automatic char(5) packed unaligned dcl 50 set ref 374* 379* 384* 389* cleanup 000262 stack reference condition dcl 123 ref 295 362 clock_ 000146 constant entry external dcl 35 ref 174 210 cnt 000103 automatic fixed bin(17,0) dcl 45 set ref 289* 296 296* 298 298* 302 307 code 000252 automatic fixed bin(35,0) dcl 51 set ref 142* 143 146* 148* 149 152* 154 155* 156 159* 160 161* 162 179* 180 429* 433* 451* 452 453* 458* 459 460* 493* com_err_ 000142 constant entry external dcl 34 ref 145 148 155 161 179 184 213 230 286 453 460 copies 1 based fixed bin(17,0) level 2 dcl 1-24 set ref 482* cpu_tag 1(01) based fixed bin(5,0) level 2 packed packed unaligned dcl 95 set ref 218* 324 cput parameter fixed bin(5,0) dcl 70 ref 193 218 357 363 d_type parameter char(5) packed unaligned dcl 74 set ref 357 361* 363* 373 378 date_time_ 000126 constant entry external dcl 28 ref 320 delete 2 based fixed bin(17,0) level 2 dcl 1-24 set ref 483* dest 27 based char(12) level 2 dcl 1-24 set ref 488* 489* dp_sw parameter bit(1) packed unaligned dcl 73 ref 283 292 349 dpap 000270 automatic pointer dcl 1-21 set ref 480* 481 482 483 484 485 486 487 488 489 490 492 493* dprint_ 000130 constant entry external dcl 29 ref 493 dprint_arg based structure level 1 dcl 1-24 dprint_arg_buf 000272 automatic structure level 1 dcl 1-22 set ref 480 dump_segment_ 000136 constant entry external dcl 32 ref 388 dump_str 000206 automatic char(136) packed unaligned dcl 49 set ref 366 366 367 367* 367 369* efp 000010 internal static pointer dcl 58 set ref 142* 143 146* 147 152* 159* 168 168 169 170 170 170 171 172 173 174 175 183 200 201 201 203 206 206 206 207 211 212 213 215 217 217 234 240 240 265 266 268 275 285 305 305 311 344 347 418 end_buf based char(1) level 2 dcl 82 set ref 418 error_table_$noentry 000152 external static fixed bin(35,0) dcl 40 ref 143 first 000102 automatic fixed bin(17,0) dcl 45 in procedure "isolts_err_log_" set ref 376* 381* 386* 388* first 2 based bit(18) level 2 in structure "ilog" packed packed unaligned dcl 82 in procedure "isolts_err_log_" set ref 170* 201 240 265 266 268 first_mess 7 based bit(1) level 2 packed packed unaligned dcl 82 set ref 173* 200 203* 285 first_printed 000257 automatic bit(1) packed unaligned dcl 53 set ref 304* 324* 329* fixed builtin function dcl 78 ref 168 376 418 418 floor builtin function dcl 78 ref 477 fname parameter char packed unaligned dcl 446 ref 444 449 format 000260 automatic bit(11) packed unaligned dcl 54 set ref 375* 380* 385* 388* get_default_wdir_ 000140 constant entry external dcl 33 ref 138 450 hcs_$initiate 000106 constant entry external dcl 18 ref 142 hcs_$make_seg 000110 constant entry external dcl 20 ref 146 hcs_$set_bc_seg 000112 constant entry external dcl 22 ref 159 hcs_$set_max_length_seg 000114 constant entry external dcl 23 ref 152 hdir 000020 internal static char(168) packed unaligned dcl 59 set ref 138* 142* 145* 146* 148* 155* 161* 179* 184* 450* 451 453* 460* 493* heading 6 based char(64) level 2 dcl 1-24 set ref 490* 492* i 000100 automatic fixed bin(17,0) dcl 45 set ref 307* 307* 318 366* 477* 479* 489 ilog based structure level 1 dcl 82 ilog_imess based structure level 1 dcl 111 ilog_mess based structure level 1 dcl 95 imep 000014 internal static pointer dcl 58 set ref 223* 233 234* 235 238 241 243 244* 246 247 247 247 248 248 256 261 262 266 266 330* 335 341 342 344* 344 in_str based bit packed unaligned dcl 400 set ref 403* init_wd 3 based char(4) level 2 dcl 82 set ref 175* 183 ioa_$ioa_switch 000144 constant entry external dcl 34 ref 324 339 341 363 369 372 494 iocbp 000016 internal static pointer dcl 58 set ref 294* 324* 339* 341* 363* 369* 372* 388* 429* 433* 435* 451* 458* iox_$attach_name 000116 constant entry external dcl 24 ref 451 iox_$close 000122 constant entry external dcl 26 ref 429 iox_$detach_iocb 000124 constant entry external dcl 27 ref 433 iox_$open 000120 constant entry external dcl 25 ref 458 iox_$user_output 000154 external static pointer dcl 41 set ref 294 494* j 000101 automatic fixed bin(17,0) dcl 45 set ref 318* last 2(18) based bit(18) level 2 packed packed unaligned dcl 82 set ref 170* 206 207 275* 305 ld_sw parameter bit(1) packed unaligned dcl 472 in procedure "prt_queue" set ref 469 490 494* ld_sw parameter bit(1) packed unaligned dcl 447 in procedure "attach_file" set ref 444 453* len based fixed bin(35,0) level 2 dcl 82 set ref 168* 168 170 172 418 length builtin function dcl 78 ref 404 404 409 477 477 lim 000104 automatic fixed bin(17,0) dcl 45 set ref 290* 300 300 300* 302* 302 318 limp parameter pointer dcl 417 ref 415 418 mep 000012 internal static pointer dcl 58 set ref 201* 202 206* 207 209 210 211 218 219 220 221 221 221 222 222 234 235 255 257 258 265 268 273 275 305* 308* 309 311 312 312 319 320 324 324 324 330 335 336 347* 347 mes_begin 000102 internal static bit(1) packed unaligned dcl 61 set ref 137* 197* 227 252* mess_complete 1 based bit(1) level 2 packed packed unaligned dcl 95 set ref 209* 255* 319 mlen parameter fixed bin(17,0) dcl 68 set ref 193 357 388* 403 403 403 mptr parameter pointer dcl 67 set ref 193 357 376 388* 403 mtype parameter fixed bin(2,0) dcl 69 ref 193 195 357 359 next based bit(18) level 2 in structure "ilog_imess" packed packed unaligned dcl 111 in procedure "isolts_err_log_" set ref 241* 248* 266* 344 next based bit(18) level 2 in structure "ilog_mess" packed packed unaligned dcl 95 in procedure "isolts_err_log_" set ref 222* 234 268* next_full 5 based bit(18) level 2 packed packed unaligned dcl 95 set ref 206 265* 273* 312 347 notify 5 based fixed bin(17,0) level 2 dcl 1-24 set ref 486* null builtin function dcl 78 ref 143 147 223 233 256 266 435 451 451 nxt_imess based char(1) level 2 dcl 111 set ref 238 248 261 nxt_mess based char(1) level 2 dcl 95 set ref 222 257 nxt_seq 6 based fixed bin(35,0) level 2 dcl 82 set ref 171* 211 212 213* 215* 217* 217 out_str 000143 automatic varying char(136) dcl 48 set ref 336* 337 337* 337 339* 403* 404 404 404* 404 404 406 406* 406 408 409 476* 477 477 489 output_module 26 based fixed bin(17,0) level 2 dcl 1-24 set ref 487* pname 000006 constant char(6) initial packed unaligned dcl 124 set ref 145* 148* 155* 161* 179* 184* 213* 230* 286* 324* 363* 453* 460* prev 0(18) based bit(18) level 2 in structure "ilog_mess" packed packed unaligned dcl 95 in procedure "isolts_err_log_" set ref 202* 207* 309 311 312 prev 0(18) based bit(18) level 2 in structure "ilog_imess" packed packed unaligned dcl 111 in procedure "isolts_err_log_" set ref 235* 243* pt_pch 4 based fixed bin(17,0) level 2 dcl 1-24 set ref 485* ptr builtin function dcl 78 ref 206 queue 3 based fixed bin(17,0) level 2 dcl 1-24 set ref 484* rcode parameter fixed bin(35,0) dcl 66 set ref 134 136* 149* 156* 162* 180* rel builtin function dcl 78 ref 168 170 222 235 241 243 248 271 273 275 312 312 376 418 418 rname parameter char packed unaligned dcl 471 ref 469 490 rtrim builtin function dcl 78 ref 451 476 476 s_att 000103 internal static bit(1) initial packed unaligned dcl 62 set ref 291* 360 432 434* 457* s_open 000104 internal static bit(1) initial packed unaligned dcl 62 set ref 291* 360 428 430* 464* scu_tag 1(07) based fixed bin(5,0) level 2 packed packed unaligned dcl 95 set ref 219* 324 scut parameter fixed bin(5,0) dcl 70 ref 193 219 357 363 seq_num 4 based fixed bin(35,0) level 2 packed packed unaligned dcl 95 set ref 211* 324* sname 000072 internal static char(32) packed unaligned dcl 60 set ref 449* 451 453* 460* 493* 494* str_ptr parameter pointer dcl 399 ref 397 408 substr builtin function dcl 78 set ref 271 337 337 367 367 404 404 406 406 489* tags 000004 constant char(1) initial array packed unaligned dcl 126 set ref 324* 324* 363* 363* term 000256 automatic bit(1) packed unaligned dcl 53 set ref 304* 307 309* 312* 328* 334 342* text 6 based char level 2 in structure "ilog_mess" packed packed unaligned dcl 95 in procedure "isolts_err_log_" set ref 221 221 336 text 2 based char level 2 in structure "ilog_imess" packed packed unaligned dcl 111 in procedure "isolts_err_log_" set ref 247 247 341* time_init 4 based fixed bin(71,0) level 2 dcl 82 set ref 174* time_logged 2 based fixed bin(71,0) level 2 packed packed unaligned dcl 95 set ref 210* 320 tlog 000105 automatic char(24) packed unaligned dcl 46 set ref 320* 324* tolts_util_$bci_to_ascii 000150 constant entry external dcl 36 ref 403 tptr 000254 automatic pointer dcl 52 set ref 238* 239* 240* 241 243 244 257* 261* 264* 271 271* 271 273 305* 308 311* 312 312 txt_len 1(18) based fixed bin(17,0) level 2 in structure "ilog_mess" packed packed unaligned dcl 95 in procedure "isolts_err_log_" set ref 221* 221 221 222 257 336 txt_len 1(18) based fixed bin(17,0) level 2 in structure "ilog_imess" packed packed unaligned dcl 111 in procedure "isolts_err_log_" set ref 238 247* 247 247 248 261 341 341 type 1(15) based fixed bin(2,0) level 2 in structure "ilog_mess" packed packed unaligned dcl 95 in procedure "isolts_err_log_" set ref 220* 258* type 1(15) based fixed bin(2,0) level 2 in structure "ilog_imess" packed packed unaligned dcl 111 in procedure "isolts_err_log_" set ref 246* 262* 342 uacct 000133 automatic char(32) packed unaligned dcl 47 set ref 475* uname 000113 automatic char(32) packed unaligned dcl 47 set ref 475* 476 unique_chars_ 000132 constant entry external dcl 30 ref 449 unspec builtin function dcl 78 ref 212 uproj 000123 automatic char(32) packed unaligned dcl 47 set ref 475* 476 user_info_ 000134 constant entry external dcl 31 ref 475 version 1 based fixed bin(17,0) level 2 in structure "ilog" dcl 82 in procedure "isolts_err_log_" set ref 169* version based fixed bin(17,0) level 2 in structure "dprint_arg" dcl 1-24 in procedure "isolts_err_log_" set ref 481* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. DP_PLOT internal static fixed bin(17,0) initial dcl 1-81 DP_PRINT internal static fixed bin(17,0) initial dcl 1-81 DP_PUNCH internal static fixed bin(17,0) initial dcl 1-81 dprint_arg_version_1 internal static fixed bin(17,0) initial dcl 1-69 dprint_arg_version_10 internal static fixed bin(17,0) initial dcl 1-78 dprint_arg_version_2 internal static fixed bin(17,0) initial dcl 1-70 dprint_arg_version_3 internal static fixed bin(17,0) initial dcl 1-71 dprint_arg_version_4 internal static fixed bin(17,0) initial dcl 1-72 dprint_arg_version_5 internal static fixed bin(17,0) initial dcl 1-73 dprint_arg_version_6 internal static fixed bin(17,0) initial dcl 1-74 dprint_arg_version_7 internal static fixed bin(17,0) initial dcl 1-75 dprint_arg_version_8 internal static fixed bin(17,0) initial dcl 1-76 dprint_arg_version_9 internal static fixed bin(17,0) initial dcl 1-77 NAMES DECLARED BY EXPLICIT CONTEXT. attach_file 003073 constant entry internal dcl 444 ref 292 361 clean_up 003031 constant entry internal dcl 426 ref 295 362 461 474 cv_wmess 002674 constant entry internal dcl 397 ref 221 247 366 display 001622 constant entry external dcl 283 dump 002353 constant entry external dcl 357 ilog_init 000657 constant label dcl 152 ref 185 init 000422 constant entry external dcl 134 isolts_err_log_ 000411 constant entry external dcl 11 mess_type 000000 constant label array(3) dcl 197 ref 195 prt_queue 003417 constant entry internal dcl 469 ref 349 389 wrap 002772 constant entry internal dcl 415 ref 239 264 write 001153 constant entry external dcl 193 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4306 4464 4003 4316 Length 5022 4003 156 321 302 76 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME isolts_err_log_ 678 external procedure is an external procedure. on unit on line 295 64 on unit on unit on line 362 64 on unit cv_wmess internal procedure shares stack frame of external procedure isolts_err_log_. wrap internal procedure shares stack frame of external procedure isolts_err_log_. clean_up 70 internal procedure is called by several nonquick procedures. attach_file internal procedure shares stack frame of external procedure isolts_err_log_. prt_queue internal procedure shares stack frame of external procedure isolts_err_log_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 efp isolts_err_log_ 000012 mep isolts_err_log_ 000014 imep isolts_err_log_ 000016 iocbp isolts_err_log_ 000020 hdir isolts_err_log_ 000072 sname isolts_err_log_ 000102 mes_begin isolts_err_log_ 000103 s_att isolts_err_log_ 000104 s_open isolts_err_log_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME isolts_err_log_ 000100 i isolts_err_log_ 000101 j isolts_err_log_ 000102 first isolts_err_log_ 000103 cnt isolts_err_log_ 000104 lim isolts_err_log_ 000105 tlog isolts_err_log_ 000113 uname isolts_err_log_ 000123 uproj isolts_err_log_ 000133 uacct isolts_err_log_ 000143 out_str isolts_err_log_ 000206 dump_str isolts_err_log_ 000250 cd_type isolts_err_log_ 000252 code isolts_err_log_ 000254 tptr isolts_err_log_ 000256 term isolts_err_log_ 000257 first_printed isolts_err_log_ 000260 format isolts_err_log_ 000270 dpap isolts_err_log_ 000272 dprint_arg_buf isolts_err_log_ 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 call_int_other return_mac mpfx2 enable_op shorten_stack ext_entry int_entry floor_fx2 divide_fx1 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. clock_ com_err_ date_time_ dprint_ dump_segment_ get_default_wdir_ hcs_$initiate hcs_$make_seg hcs_$set_bc_seg hcs_$set_max_length_seg ioa_$ioa_switch iox_$attach_name iox_$close iox_$detach_iocb iox_$open tolts_util_$bci_to_ascii unique_chars_ user_info_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$noentry iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000410 134 000416 136 000427 137 000431 138 000432 142 000440 143 000512 145 000522 146 000552 147 000617 148 000624 149 000653 150 000656 152 000657 154 000674 155 000676 156 000726 157 000731 159 000732 160 000747 161 000751 162 001001 163 001004 168 001005 169 001021 170 001024 171 001031 172 001032 173 001036 174 001040 175 001050 176 001054 179 001055 180 001104 181 001107 183 001110 184 001114 185 001144 187 001145 193 001146 195 001173 197 001175 200 001200 201 001204 202 001211 203 001213 204 001215 206 001216 207 001230 209 001233 210 001235 211 001250 212 001253 213 001256 215 001306 216 001311 217 001312 218 001316 219 001324 220 001331 221 001335 222 001345 223 001353 225 001355 227 001356 230 001361 231 001405 233 001406 234 001412 235 001417 236 001422 238 001423 239 001434 240 001441 241 001450 243 001453 244 001460 246 001462 247 001467 248 001477 250 001505 252 001506 255 001510 256 001513 257 001517 258 001527 259 001533 261 001534 262 001545 264 001551 265 001556 266 001563 268 001573 269 001575 271 001576 273 001605 275 001611 277 001615 283 001616 285 001627 286 001634 287 001663 289 001664 290 001667 291 001671 292 001673 294 001710 295 001713 296 001735 298 001742 300 001746 302 001755 304 001757 305 001761 307 001772 308 002002 309 002005 311 002014 312 002017 314 002033 318 002035 319 002045 320 002052 324 002072 328 002154 329 002155 330 002157 334 002162 335 002164 336 002171 337 002204 339 002221 340 002243 341 002244 342 002275 344 002307 345 002314 347 002315 348 002324 349 002327 351 002344 357 002345 359 002373 360 002376 361 002403 362 002422 363 002444 366 002510 367 002514 369 002523 370 002546 372 002547 373 002566 374 002576 375 002600 376 002602 377 002607 378 002610 379 002612 380 002615 381 002621 382 002622 384 002623 385 002626 386 002632 388 002633 389 002666 391 002673 397 002674 403 002676 404 002730 406 002743 408 002760 409 002767 415 002772 418 002774 420 003023 426 003030 428 003036 429 003040 430 003051 432 003053 433 003055 434 003066 435 003070 438 003072 444 003073 449 003104 450 003147 451 003156 452 003260 453 003263 455 003324 457 003325 458 003330 459 003350 460 003352 461 003406 462 003412 464 003413 465 003416 469 003417 474 003430 475 003434 476 003453 477 003531 479 003547 480 003551 481 003553 482 003555 483 003556 484 003557 485 003561 486 003563 487 003564 488 003565 489 003570 490 003602 492 003627 493 003633 494 003660 496 003711 ----------------------------------------------------------- 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