COMPILATION LISTING OF SEGMENT spool_driver_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/28/88 1334.8 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 /* format: style4,delnl,insnl,ifthenstmt,ifthen */ 14 15 /* format: off */ 16 17 /* Spooling driver control module for the I/O daemon */ 18 19 /* Created: 14 July 1975 by Janice B. Phillipps */ 20 /* Modified: June 1976 by J. Phillipps to change modes declaration from char(128) to char(256), to initialize 21* ordata.output_mode variable to null each time user line modes are parsed, and to correct one instance of request not 22* being deleted from dprint queue */ 23 /* Modified: January 1978 by J. C. Whitmore for new printer features and general clean up */ 24 /* Modified: May 1978 by J. C. Whitmore for new dprint_msg format */ 25 /* Modified: August 1978 by J. C. Whitmore for auto defer -> ll < phys_ll & init xfr rate/limit */ 26 /* Modified: June 1979 by C. Hornig to initialize driver_status.dev_ctl_ptr */ 27 /* Modified: 25 December 1981 by G. Palter to initialize prt_ctl.flags so that any unimplemented features will not be 28* accidently left on (eg: force_ctl_char) */ 29 /* Modified by C. Marker, 02/23/85, to use version 5 message segments */ 30 31 32 /****^ HISTORY COMMENTS: 33* 1) change(87-05-10,Gilcrease), approve(87-05-13,MCR7686), 34* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 35* Update for dprint_msg version 4. 36* 2) change(88-08-19,Brunelle), approve(88-08-19,MCR7911), 37* audit(88-10-21,Wallman), install(88-10-28,MR12.2-1199): 38* Upgraded to version 5 iod tables. 39* 3) change(88-08-29,Farley), approve(88-08-19,MCR7911), 40* audit(88-10-21,Wallman), install(88-10-28,MR12.2-1199): 41* Updated for version 5 dprint_msg. 42* END HISTORY COMMENTS */ 43 44 45 /* format: on */ 46 47 48 spool_driver_: 49 procedure (); 50 51 return; 52 53 dcl (addr, clock, null, substr, length, verify, divide, reverse, convert, max, mod, rtrim, string) builtin; 54 55 dcl (cleanup, command_question, resume, conversion) condition; 56 57 dcl date_string char (24), 58 ec fixed bin (35), 59 i fixed bin, /* index variable */ 60 net fixed bin, 61 opt char (3), 62 rcode fixed bin (35), 63 io_stat bit (72) aligned; /* ios_ status code */ 64 65 dcl omode char (256) aligned; 66 dcl p2 ptr; 67 68 dcl whoami char (24) int static options (constant) init ("spool_driver_"); 69 dcl master fixed bin int static options (constant) init (1); 70 dcl slave fixed bin int static options (constant) init (2); 71 dcl both fixed bin int static options (constant) init (0); 72 dcl log fixed bin int static options (constant) init (0); 73 dcl normal fixed bin int static options (constant) init (1); 74 dcl error fixed bin int static options (constant) init (2); 75 dcl header fixed bin int static options (constant) init (1); 76 dcl trailer fixed bin int static options (constant) init (2); 77 dcl err_msg fixed bin int static options (constant) init (3); 78 dcl demount_tape fixed bin init (1) int static options (constant); 79 80 dcl 1 static_ctl aligned int static like prt_ctl; /* here we hold the default control values */ 81 82 dcl 1 counts_data like counts; 83 84 dcl 1 spooling_data aligned, 85 2 siptr ptr, 86 2 line_length fixed bin; 87 88 dcl stream char (32) aligned internal static; /* stream for writing to printer */ 89 dcl static_sip ptr int static init (null); /* static version of spooling info ptr */ 90 dcl p ptr internal static; 91 dcl time fixed bin (71) internal static init (1); 92 dcl no_restart_label label int static; 93 94 dcl 1 st aligned based (addr (io_stat)), /* breakdown of status code */ 95 2 code fixed bin (35), 96 2 flags bit (36); 97 98 dcl space_ht_bs char (3) int static; /* horiz carriage control chars */ 99 dcl nl_vt_ff char (3) int static; /* vert carriage control chars, init nl || vt || ff */ 100 dcl BS char (1) int static options (constant) init (""); /* the backspace char */ 101 dcl SP char (1) int static options (constant) init (" "); /* the space character */ 102 dcl HT char (1) int static options (constant) init (" "); 103 /* the horiz tab character */ 104 dcl NL char (1) int static options (constant) init (" 105 "); /* the new-line character */ 106 dcl VT char (1) int static options (constant) init (" "); /* the vertical tab character */ 107 dcl FF char (1) int static options (constant) init (" "); /* the form feed character */ 108 109 dcl spool_static_$norestart ext; 110 dcl spool_static_$file_attch ext; 111 dcl spool_static_$debug ext; 112 dcl spool_static_$tally_printed ext; 113 114 dcl error_table_$fatal_error fixed bin (35) ext static; 115 dcl error_table_$action_not_performed fixed bin (35) ext static; 116 117 dcl iox_$find_iocb entry (char (*) aligned, ptr, fixed bin (35)); 118 dcl convert_binary_integer_$decimal_string entry (fixed bin) returns (char (12) var); 119 dcl date_time_ entry (fixed bin (71), char (*)); 120 dcl get_spooling_data_$renew_limits entry (ptr, char (*), fixed bin (35)); 121 dcl get_spooling_data_$initial entry (ptr, char (*), fixed bin (35)); 122 dcl head_sheet_$print_head_sheet entry (ptr, ptr, ptr, fixed bin (35)); 123 dcl ioa_ entry options (variable); 124 dcl iodd_listen_ entry (ptr); 125 dcl iodd_msg_ entry options (variable); 126 dcl ios_$attach entry (char (*) aligned, char (*) aligned, char (*) aligned, char (*) aligned, bit (72) aligned); 127 dcl ios_$changemode entry (char (*) aligned, char (*) aligned, char (*) aligned, bit (72) aligned); 128 dcl ios_$detach entry (char (*) aligned, char (*) aligned, char (*) aligned, bit (72) aligned); 129 dcl ios_$order entry (char (*) aligned, char (*) aligned, ptr, bit (72) aligned); 130 dcl ios_$write entry (char (*) aligned, ptr, fixed bin, fixed bin, fixed bin, bit (72) aligned); 131 dcl output_request_ entry (char (*) aligned, fixed bin, ptr, entry, fixed bin (35)); 132 dcl output_request_$error_during_request entry (char (*)); 133 dcl output_request_$set_single_copy entry (); 134 dcl spooling_question_handler_ entry (ptr, fixed bin (35)); 135 dcl tail_sheet_$print_tail_sheet entry (ptr, ptr, ptr, fixed bin (35)); 136 dcl timer_manager_$sleep entry (fixed bin (71), bit (2) aligned); 137 dcl write_sample_prt_banner_ entry (char (*), ptr, ptr, fixed bin (35)); 138 139 /* */ 140 141 init: 142 entry (arg_p); 143 144 dcl arg_p ptr; 145 146 stat_p = arg_p; /* pts to argument string */ 147 p = iodd_static.driver_ptr; /* get pointer to driver_status seg */ 148 p -> driver_status.dev_ctl_ptr, prt_ctl_ptr = addr (static_ctl); 149 /* use static device control */ 150 151 if iodd_static.attach_type ^= 1 then do; /* this driver needs to look like printer driver */ 152 /* expects an IOM channel */ 153 call iodd_msg_ (error, master, error_table_$fatal_error, whoami, 154 "This driver requires a prph statement in iod_tables."); 155 return; /* back to iodd_ */ 156 end; 157 158 if iodd_static.assigned_devices > 1 then do; /* be sure all is correct */ 159 call iodd_msg_ (error, master, error_table_$fatal_error, whoami, 160 "Multiple minor devices are not supported by the spool driver."); 161 return; 162 end; 163 164 if iodd_static.ctl_term.attached then do; /* can't use a control terminal */ 165 call iodd_msg_ (error, master, error_table_$fatal_error, whoami, 166 "The spool driver cannot run with a control terminal."); 167 return; 168 end; 169 170 if ^iodd_static.test_entry then spool_static_$debug = 0; 171 /* reset if not testing */ 172 173 spool_static_$norestart = 0; 174 spool_static_$file_attch = 0; 175 spool_static_$tally_printed = 0; 176 177 iodd_static.device_dim = "spooldim_"; /* the only dim used by this driver */ 178 179 iodd_static.dev_io_stream, stream = "printer_output"; 180 /* record the stream name */ 181 p -> driver_status.dev_out_stream = stream; 182 iodd_static.dev_in_stream = "Undefined_stream"; /* just to avoid un-initialized variables */ 183 184 call ios_$attach (stream, iodd_static.device_dim, iodd_static.attach_name, "", io_stat); 185 if st.code ^= 0 then do; 186 call iodd_msg_ (error, master, st.code, whoami, "Unable to attach spooldim_ to ^a", 187 iodd_static.attach_name); 188 return; 189 end; 190 191 call ios_$order (stream, "get_info_ptr", addr (spooling_data), io_stat); 192 if st.code ^= 0 then do; 193 call iodd_msg_ (error, master, st.code, whoami, "Unable to get ptr to spooling_info."); 194 go to clean_out; 195 end; 196 197 static_sip, sip = spooling_data.siptr; /* get the ptr once and for all */ 198 199 if spooling_info.version ^= spooling_info_version_4 then do; 200 call iodd_msg_ (error, master, 0, whoami, "Fatal error: Wrong version of spooling info structure."); 201 go to clean_out; 202 end; 203 204 205 /* Get ready to clean up after a no_coord or re_init condition */ 206 207 on cleanup 208 begin; /* they will try to transfer back to iodd_ by go to */ 209 if spool_static_$debug = 1 then call ioa_ ("spool_driver_: cleanup."); 210 if spool_static_$tally_printed = 0 then call ios_$order (stream, "print_tally", null, io_stat); 211 call ios_$detach (iodd_static.dev_io_stream, "", "", io_stat); 212 end; 213 214 215 call iox_$find_iocb (p -> driver_status.dev_out_stream, p -> driver_status.dev_out_iocbp, ec); 216 if ec ^= 0 then do; 217 call iodd_msg_ (error, master, ec, whoami, "Fatal error: Unable to get iocbp for device stream."); 218 go to clean_out; /* that's all we can do... */ 219 end; 220 221 string (prt_ctl.flags) = ""b; /* insure any unimplemented flags are off */ 222 223 if p -> driver_status.rqti_ptr ^= null then do; /* if there is an rqti seg, use it */ 224 225 prt_rqtip = p -> driver_status.rqti_ptr; /* make the based references cleaner */ 226 if prt_rqti.header.header_version ^= rqti_header_version_1 then do; 227 call iodd_msg_ (error, master, error_table_$fatal_error, whoami, 228 "prt rqt info version ^d found (expected ^d)", prt_rqti.header.header_version, 229 rqti_header_version_1); 230 go to clean_out; 231 end; 232 233 prt_ctl.meter = prt_rqti.header.meter; /* do we save meters for this rqt? */ 234 iodd_static.slave_hold = ^(prt_rqti.header.auto_go); 235 /* set the initial hold state as requested */ 236 iodd_static.wakeup_time = max (30, prt_rqti.header.driver_wait_time); 237 /* seconds to wait for a request */ 238 if prt_rqti.header.type_code = 0 then go to set_defaults; 239 /* this is only a header */ 240 else if prt_rqti.header.type_code ^= 1 then do; 241 call iodd_msg_ (error, master, error_table_$fatal_error, whoami, 242 "Wrong rqt info seg type for printer."); 243 go to clean_out; 244 end; 245 246 if prt_rqti.version ^= prt_rqti_version_1 then do; 247 /* see if it is the right version */ 248 call iodd_msg_ (error, master, error_table_$fatal_error, whoami, 249 "Wrong version of prt_rqti. Found ^d (expected ^d)", prt_rqti.version, prt_rqti_version_1); 250 go to clean_out; 251 end; 252 253 if prt_rqti.opr_msg ^= "" then call iodd_msg_ (normal, both, 0, "", "^/^a", prt_rqti.opr_msg); 254 /* give special operator instructions */ 255 256 prt_ctl.phys_page_length = prt_rqti.paper_length; 257 /* get paper data for prtdim */ 258 prt_ctl.phys_line_length = prt_rqti.paper_width; 259 prt_ctl.lines_per_inch = prt_rqti.lines_per_inch; 260 261 prt_ctl.channel_stops (*) = prt_rqti.channel_stops (*); 262 /* get VFU stops for prtdim */ 263 264 prt_ctl.banner_type = prt_rqti.banner_type; /* copy control info to writable storage */ 265 prt_ctl.force_nep = prt_rqti.force_nep; 266 prt_ctl.force_esc = prt_rqti.force_esc; 267 prt_ctl.no_auto_print = prt_rqti.no_auto_print; 268 prt_ctl.banner_bars = prt_rqti.banner_bars; 269 prt_ctl.banner_indent = prt_rqti.banner_indent; 270 prt_ctl.banner_line = prt_rqti.banner_line; 271 end; 272 else do; /* no rqti seg, so set some defaults */ 273 prt_ctl.meter = "0"b; /* don't keep any meters */ 274 iodd_static.slave_hold = "1"b; /* be sure to ask for a start command */ 275 iodd_static.wakeup_time = 30; /* check every 30 seconds */ 276 set_defaults: /* set up the default paper data */ 277 prt_ctl.phys_page_length = 66; /* 11 inch paper at 6 lpi is 66 lines */ 278 prt_ctl.phys_line_length = 132; /* assume the non-standard printer paper */ 279 prt_ctl.lines_per_inch = 6; /* normal for good readibility */ 280 281 string (prt_ctl.channel_stops) = "0"b; /* no slew stops are defined */ 282 283 prt_ctl.force_nep = "0"b; /* let user have his way */ 284 prt_ctl.force_esc = "0"b; 285 prt_ctl.no_auto_print = "0"b; /* print without requesting operator attn */ 286 prt_ctl.banner_type = 1; /* use normal head/tail sheets */ 287 prt_ctl.banner_bars = 0; /* means nothing for now */ 288 prt_ctl.banner_indent = 0; /* again */ 289 prt_ctl.banner_line = 1; /* again */ 290 end; 291 292 293 /* Now set up the DIM with the paper and channel stop data */ 294 295 call set_paper_info (slave, ec); 296 if ec ^= 0 then go to clean_out; /* message was printed by proc */ 297 298 call ios_$order (p -> driver_status.dev_out_stream, "channel_stops", addr (prt_ctl.channel_stops), io_stat); 299 if st.code ^= 0 then do; 300 call iodd_msg_ (error, master, st.code, whoami, "Fatal error: Unable to perform channel_stops order."); 301 go to clean_out; /* fatal error */ 302 end; 303 304 call get_spooling_data_$initial (sip, opt, ec); 305 if opt = "det" | ec ^= 0 then do; /* actually both tests are the same */ 306 call iodd_msg_ (normal, master, 0, "", "The spool driver is terminating."); 307 go to clean_out; 308 end; 309 310 p -> driver_status.attached = "1"b; 311 p -> driver_status.ready = "1"b; 312 p -> driver_status.busy = "0"b; 313 p -> driver_status.request_pending = (36)"0"b; 314 p -> driver_status.elem_size = 9; /* output is in characters - 9 bits each */ 315 p -> driver_status.message_type = 1; /* we only want dprint requests */ 316 p -> driver_status.bit_rate_est = 0; /* no rate defined yet */ 317 p -> driver_status.defer_time_limit = 0; /* make operator specify */ 318 319 iodd_static.slave_hold = "1"b; /* ask for a command */ 320 321 nl_vt_ff = NL || VT || FF; /* vert carriage control */ 322 space_ht_bs = SP || HT || BS; /* horiz carriage control */ 323 324 if prt_ctl.phys_line_length > 132 then /* this is probably an error */ 325 call iodd_msg_ (error, master, 0, "", 326 "^/Warning: Current line length is ^d. The target device may only allow 132.", 327 prt_ctl.phys_line_length); 328 329 call date_time_ (clock (), date_string); /* get set for ready message */ 330 call iodd_msg_ (normal, both, 0, "", "^/Spool driver ready at ^16a^/", date_string); 331 332 call iodd_listen_ (stat_p); 333 334 clean_out: 335 call ios_$detach (iodd_static.dev_io_stream, "", "", io_stat); 336 return; 337 338 /* */ 339 340 /* This entry is called by iodd_listen_ when a request for the spool driver has been received from the coordinator 341* Validation is done here for correct and expected dprint request format. This module calls output_request_, giving it 342* the element size and stream name to use, and output_request_ checks user's access to data. The stream to be used was 343* set for this driver module in the init entry. The print_banner argument to output_request_ defines the procedure that 344* must be called before and after each dprint request is processed (each copy) to open or close the file on the ANSI tape 345**/ 346 347 request: 348 entry (); 349 350 p = iodd_static.driver_ptr; /* make it general although it will always be the same */ 351 p2 = addr (p -> driver_status.descriptor); 352 dmp = addr (p -> driver_status.message); /* get ptr to message */ 353 prt_ctl_ptr = p -> driver_status.dev_ctl_ptr; /* get current ctl structure */ 354 355 no_restart_label = kill_driver; /* in case of error from higher block */ 356 357 if spool_static_$norestart = 1 then do; /* something bad happened */ 358 kill_driver: 359 call iodd_msg_ (error, master, 0, "", "Spool driver is logging out."); 360 iodd_static.current_devices = 0; /* disable the go cmd */ 361 iodd_static.runout_requests = "1"b; 362 iodd_static.logout_pending = "1"b; /* ready for auto logout */ 363 p -> driver_status.attached = "0"b; /* disable the ready cmd */ 364 p -> driver_status.ready = "0"b; /* don't ask for another request */ 365 iodd_static.step = "0"b; /* disable step mode */ 366 iodd_static.master_hold = "0"b; 367 iodd_static.slave_hold = "0"b; 368 return; 369 end; 370 371 if dmp -> queue_msg_hdr.hdr_version ^= queue_msg_hdr_version_1 then do; 372 /* trouble */ 373 call iodd_msg_ (log, both, 0, "", "Invalid message header. Cannot read request ^d.^d.", 374 p2 -> request_descriptor.seq_id, p2 -> request_descriptor.q); 375 p2 -> request_descriptor.keep_in_queue = "1"b; 376 /* save for conversion later */ 377 go to be_nice; 378 end; 379 if dmp -> queue_msg_hdr.message_type ^= p -> driver_status.message_type then do; 380 call iodd_msg_ (log, both, 0, "", /* log the error */ 381 "Incorrect message type for this driver.^/Request ^d.^d for ^a (segment ^a) not processed.", 382 p2 -> request_descriptor.seq_id, p2 -> request_descriptor.q, 383 p2 -> request_descriptor.mseg_message_info_copy.sender_id, 384 dmp -> queue_msg_hdr.ename); 385 p2 -> request_descriptor.cancelled = "1"b; /* don't want this back */ 386 be_nice: 387 p2 -> request_descriptor.dont_delete = "1"b; /* save the user's data */ 388 p2 -> request_descriptor.finished = "1"b; /* mark it done */ 389 return; /* it wasn't for us after all */ 390 end; 391 if dprint_msg.version ^= dprint_msg_version_3 & dprint_msg.version ^= dprint_msg_version_4 392 & dprint_msg.version ^= dprint_msg_version_5 then do; 393 /* other trouble? */ 394 call iodd_msg_ (log, both, 0, "", 395 "Wrong message version found.^/Request ^d.^d for ^a (segment ^a) not processed", 396 p2 -> request_descriptor.seq_id, p2 -> request_descriptor.q, 397 p2 -> request_descriptor.mseg_message_info_copy.sender_id, 398 dmp -> queue_msg_hdr.ename); 399 p2 -> request_descriptor.keep_in_queue = "1"b; 400 go to be_nice; 401 end; 402 if dprint_msg.line_lth > prt_ctl.phys_line_length then do; 403 /* platten wide enough */ 404 call iodd_msg_ (log, both, 0, "", 405 "Request ^d.^d for ^a (segment ^a) deferred.^/Requires a device with line length of ^d.", 406 p2 -> request_descriptor.seq_id, p2 -> request_descriptor.q, 407 p2 -> request_descriptor.mseg_message_info_copy.sender_id, 408 dmp -> queue_msg_hdr.ename, dprint_msg.line_lth); 409 p2 -> request_descriptor.keep_in_queue = "1"b; 410 /* defer it */ 411 go to be_nice; 412 end; 413 414 iodd_static.quit_during_request = "0"b; /* start clean */ 415 416 call output_request_ (stream, p -> driver_status.elem_size, stat_p, print_banner, rcode); 417 if rcode ^= 0 then iodd_static.slave_hold = "1"b; /* ask for a command */ 418 419 if spool_static_$norestart = 1 then go to kill_driver; 420 /* in case something happened */ 421 422 423 /* Now check the limits */ 424 425 sip = static_sip; /* set the auto ref ptr */ 426 427 if sip -> spooling_info.line_limit ^= 0 then do; 428 if sip -> spooling_info.spooling_line_count >= sip -> spooling_info.line_limit then 429 sip -> spooling_info.spool_line_limit_sw = 1; 430 end; 431 if sip -> spooling_info.file_limit ^= 0 then do; 432 if sip -> spooling_info.spooling_file_count >= sip -> spooling_info.file_limit then 433 sip -> spooling_info.spool_file_limit_sw = 1; 434 end; 435 436 opt = ""; /* clear the operator option string */ 437 438 if sip -> spooling_info.spool_file_limit_sw = 1 | sip -> spooling_info.spool_line_limit_sw = 1 then 439 call get_spooling_data_$renew_limits (sip, opt, ec); 440 441 442 /* Now close the file according to operators instructions */ 443 444 if opt = "det" then do; 445 call ios_$detach (stream, "", "", io_stat); 446 go to kill_driver; /* drop this for ever */ 447 end; 448 449 return; 450 451 /* */ 452 453 print_banner: 454 entry (a_stream, banner_type, data_ptr, code); 455 456 dcl a_stream char (*); /* stream to write banners on. we can ignore it here */ 457 /* because it is equal to "stream" from output_request_ call */ 458 459 dcl banner_type fixed bin; /* banner_type of banner to be written */ 460 /* 1 = header banner */ 461 /* 2 = tail banner */ 462 /* 3 = error message */ 463 464 dcl data_ptr ptr; /* pointer to output request data or */ 465 /* to char(256) varying string error msg */ 466 dcl code fixed bin (35); /* error code */ 467 dcl error_msg char (256) var based (data_ptr); 468 469 p = iodd_static.driver_ptr; /* get driver_status pointer */ 470 prt_ctl_ptr = p -> driver_status.dev_ctl_ptr; /* and control structure */ 471 dmp = addr (p -> driver_status.message); /* get pointer to message */ 472 ordatap = data_ptr; /* set default ptr for output_request_data */ 473 474 if spool_static_$norestart = 1 then /* got to stop */ 475 go to no_restart_label; /* make it a clean kill! */ 476 477 on command_question 478 begin; /* handles tape_ansi_ querries */ 479 sip = static_sip; 480 call spooling_question_handler_ (sip, ec); 481 /* answer the question */ 482 if ec ^= 0 then do; 483 call iodd_msg_ (error, master, ec, whoami, "Unrecoverable error, reinit the driver."); 484 iodd_static.master_hold = "1"b; 485 p -> driver_status.busy = "0"b; /* try the same request again */ 486 signal resume; 487 end; 488 end; 489 490 491 /* Call to attach thru tape_ansi_, head sheet comming up */ 492 493 sip = static_sip; /* make spooling info references easy */ 494 495 496 if banner_type = header then do; 497 498 /* Heading banner for printer wanted */ 499 500 if spool_static_$file_attch = 1 then /* check if some file attached and/or open already */ 501 call ios_$order (stream, "file_close", null (), io_stat); 502 /* call to close ansi tape file */ 503 504 call ios_$order (stream, "file_open", null (), io_stat); 505 /* call to open ansi tape file */ 506 if st.code ^= 0 then do; /* have to terminate */ 507 call iodd_msg_ (error, master, st.code, whoami, "Unable to open tape file."); 508 code = st.code; /* spooling_dim_order_ has taken tape down */ 509 call ios_$order (stream, "print_tally", null (), io_stat); 510 spool_static_$norestart = 1; /* want driver to logout or start new fileset */ 511 return; 512 end; 513 514 spool_static_$file_attch = 1; /* a ansi tape file attached and open */ 515 if spool_static_$debug = 1 then call ioa_ ("spool_driver_: ANSI file opened."); 516 517 call ios_$order (stream, "reset", null (), io_stat); 518 /* get modes to a known format */ 519 call ios_$order (stream, "inside_page", null (), io_stat); 520 /* and page position */ 521 522 if st.code ^= 0 then do; /* trouble trying to write: give up */ 523 code = st.code; 524 call ios_$order (stream, "file_close", addr (demount_tape), io_stat); 525 /* close and drop tape */ 526 spool_static_$norestart = 1; 527 return; 528 end; 529 530 call head_sheet_$print_head_sheet (p -> driver_status.dev_out_iocbp, prt_ctl_ptr, data_ptr, code); 531 532 call ios_$order (stream, "get_count", addr (counts_data), io_stat); 533 /* get count of lines for spooling tallies */ 534 sip -> spooling_info.spooling_line_count = 535 sip -> spooling_info.spooling_line_count + counts_data.line_count; 536 /* line count for head sheet */ 537 538 call ios_$order (stream, "end_of_page", null (), io_stat); 539 /* get ready for user data */ 540 call ios_$order (stream, "reset", null (), io_stat); 541 /* don't charge for advertizing */ 542 543 call set_line_mode; /* set indentation and line length before the first label */ 544 call set_page_labels (stream, ec); 545 546 call ios_$write (stream, addr (FF), 0, 1, i, io_stat); 547 /* start a fresh page and print any labels */ 548 549 call set_user_output_modes; /* only now can we set the page length */ 550 return; 551 end; 552 553 554 if banner_type = trailer then do; 555 556 /* A tail sheet banner is wanted */ 557 558 if iodd_static.test_entry then /* be able to set a reasonable pace */ 559 if time > 1 then call timer_manager_$sleep (time, "11"b); 560 /* simulate device */ 561 562 call ios_$order (stream, "get_count", addr (counts_data), io_stat); 563 /* save request line count */ 564 sip -> spooling_info.spooling_line_count = 565 sip -> spooling_info.spooling_line_count + counts_data.line_count; 566 567 call ios_$order (stream, "end_of_page", null (), io_stat); 568 /* used to be bottom inside page */ 569 call ios_$order (stream, "reset", null (), io_stat); 570 /* Don't use user's modes for tailsheet */ 571 call ios_$order (stream, "outside_page", null (), io_stat); 572 /* top outside page for tail sheet */ 573 574 call tail_sheet_$print_tail_sheet (p -> driver_status.dev_out_iocbp, prt_ctl_ptr, data_ptr, code); 575 576 call ios_$order (stream, "get_count", addr (counts_data), io_stat); 577 578 sip -> spooling_info.spooling_line_count = 579 sip -> spooling_info.spooling_line_count + counts_data.line_count; 580 581 sip -> spooling_info.spooling_file_count = sip -> spooling_info.spooling_file_count + 1; 582 583 call ios_$order (stream, "file_close", null (), io_stat); 584 585 if spool_static_$debug = 1 then call ioa_ ("spool_driver_: tape file closed."); 586 spool_static_$file_attch = 0; /* turn off file open indicator */ 587 return; 588 end; 589 590 591 if banner_type = err_msg then do; 592 593 /* Put out an error message */ 594 595 call ios_$changemode (stream, "default", omode, io_stat); 596 /* use known modes for errors */ 597 call ios_$write (stream, data_ptr, 4, length (error_msg), net, io_stat); 598 /* skip the first 4 chars(length) */ 599 call ios_$changemode (stream, omode, "", io_stat); 600 /* put it back for more output */ 601 code = 0; /* don't cause trouble during recovery */ 602 return; 603 end; 604 605 606 /* All other banner types are undefined */ 607 608 code = error_table_$action_not_performed; 609 610 return; 611 612 /* */ 613 614 command: 615 entry (source, state, arg_list_p, c_code); 616 617 dcl source fixed bin; /* 1 = master console, 2 = slave */ 618 dcl state fixed bin; /* 0 = not quite ready to handle a request */ 619 /* 1 = drivers are ready */ 620 /* 2 = command entered after a quit */ 621 dcl arg_list_p ptr; /* ptr to structure returned by parse_command_ */ 622 dcl c_code fixed bin (35); /* error code: zero if command handled correctly */ 623 dcl save_code fixed bin (35); /* saved value of c_code when called */ 624 /* error_table_ code for bad syntax or unknown command */ 625 626 dcl 1 arg_list aligned based (arg_list_p), /* parse_command_ structure */ 627 2 max_tokens fixed bin, /* space allocated, do not change */ 628 2 n_tokens fixed bin, /* number of tokens from command line (including cmd) */ 629 2 command char (64) var, /* the first token is the command */ 630 2 arg (n_tokens - 1) char (64) var; /* the other tokens are args to the command */ 631 632 dcl new_pl fixed bin; /* temp for setting the phys page length */ 633 dcl new_ll fixed bin; /* temp for the new phys line length */ 634 dcl new_lpi fixed bin; /* and for the new lines per inch value */ 635 dcl not bit (1); 636 dcl value char (32); /* temporary char string */ 637 638 639 on conversion 640 begin; /* handler for conversion errors */ 641 call iodd_msg_ (normal, source, 0, "", "Argument conversion error. Try again."); 642 go to cmd_error; 643 end; 644 645 save_code = c_code; /* save the called value */ 646 p = iodd_static.driver_ptr; /* make this ready for command use */ 647 prt_ctl_ptr = p -> driver_status.dev_ctl_ptr; 648 c_code, ec = 0; /* say we handled it for now */ 649 650 651 if command = "help" then do; 652 call iodd_msg_ (normal, source, 0, "", "^/** Commands for the spool driver **^/"); 653 call iodd_msg_ (normal, source, 0, "", "banner_bars [] single | double | none"); 654 call iodd_msg_ (normal, source, 0, "", "banner_type [] standard | brief | none"); 655 call iodd_msg_ (normal, source, 0, "", 656 "paper_info [] [-ll ] [-pl ] [-lpi <6 or 8>]"); 657 call iodd_msg_ (normal, source, 0, "", 658 "prt_control [] [^]KEY ... (KEYs: force_nep, force_esc, autoprint)"); 659 call iodd_msg_ (normal, source, 0, "", "sample_hs []"); 660 call iodd_msg_ (normal, source, 0, "", "single"); 661 if test_entry then call iodd_msg_ (normal, source, 0, "", "time []"); 662 call iodd_msg_ (normal, source, 0, "", "debug_on"); 663 call iodd_msg_ (normal, source, 0, "", "debug_off"); 664 go to end_cmd; 665 end; 666 667 if command = "debug_on" then do; 668 if ^iodd_static.test_entry then go to cmd_error; 669 spool_static_$debug = 1; 670 go to end_cmd; 671 end; 672 673 if command = "debug_off" then do; 674 if ^iodd_static.test_entry then go to cmd_error; 675 spool_static_$debug = 0; 676 go to end_cmd; 677 end; 678 679 if command = "time" then 680 if ^iodd_static.test_entry then do; /* refuse to recognize if not testing */ 681 ec = save_code; 682 go to end_cmd; 683 end; 684 else do; 685 if n_tokens > 1 then 686 time = convert (time, arg (1)); 687 else time = 1; /* return to the default..full speed */ 688 go to end_cmd; 689 end; 690 691 if command = "banner_bars" | command = "bannerbars" then do; 692 if arg_list.n_tokens > 1 then /* some arg given */ 693 if p -> driver_status.device_id = arg (1) then 694 i = 2; /* minor device, args can start at number 2 */ 695 else i = 1; /* first arg was a value */ 696 else i = 1; /* no args at all */ 697 if arg_list.n_tokens = i | arg (i) = "-print" then do; 698 /* give value */ 699 if prt_ctl.banner_bars = 0 then opr_msg = "double"; 700 else if prt_ctl.banner_bars = 1 then opr_msg = "single"; 701 else if prt_ctl.banner_bars = 2 then opr_msg = "none"; 702 else opr_msg = "Undefined value"; 703 call iodd_msg_ (normal, source, 0, "", "Current value is: ^a", opr_msg); 704 go to end_cmd; 705 end; 706 if arg (i) = "double" then prt_ctl.banner_bars = 0; 707 else if arg (i) = "single" then prt_ctl.banner_bars = 1; 708 else if arg (i) = "none" then prt_ctl.banner_bars = 2; 709 else do; 710 call iodd_msg_ (normal, source, 0, "", "Undefined argument ^a. Use single, double or none.", arg (1)) 711 ; 712 go to cmd_error; 713 end; 714 715 go to end_cmd; 716 end; 717 718 if command = "banner_type" | command = "bannertype" then do; 719 if arg_list.n_tokens > 1 then /* some arg given */ 720 if p -> driver_status.device_id = arg (1) then 721 i = 2; /* minor device, args can start at number 2 */ 722 else i = 1; /* possibly first arg was a value */ 723 else i = 1; /* no args at all */ 724 if n_tokens = i | arg (i) = "-print" then do;/* give the values */ 725 if prt_ctl.banner_type = 0 then opr_msg = "none"; 726 else if prt_ctl.banner_type = 1 then opr_msg = "standard"; 727 else if prt_ctl.banner_type = 2 then opr_msg = "brief"; 728 else opr_msg = "Undefined value"; 729 call iodd_msg_ (normal, source, 0, "", "Current value is: ^a", opr_msg); 730 go to end_cmd; 731 end; 732 733 if arg (i) = "standard" then prt_ctl.banner_type = 1; 734 else if arg (i) = "none" then prt_ctl.banner_type = 0; 735 else if arg (i) = "brief" then prt_ctl.banner_type = 2; 736 else do; 737 call iodd_msg_ (normal, source, 0, "", "Banner type ^a is not defined."); 738 go to cmd_error; 739 end; 740 741 go to end_cmd; 742 end; 743 744 if command = "single" then do; /* operator wants to single space FF and VT */ 745 if iodd_static.request_in_progress then do; 746 call ios_$changemode (p -> driver_status.dev_out_stream, "single.", omode, io_stat); 747 /* set mode */ 748 call output_request_$set_single_copy ();/* avoid same problem if another copy requested */ 749 end; 750 else call iodd_msg_ (normal, source, 0, "", "No current request."); 751 go to end_cmd; 752 end; 753 754 if command = "paper_info" | command = "paperinfo" then do; 755 if arg_list.n_tokens > 1 then /* some arg given */ 756 if p -> driver_status.device_id = arg (1) then 757 i = 2; /* minor device, args can start at number 2 */ 758 else i = 1; /* possibly first arg was a value */ 759 else i = 1; /* no args at all */ 760 if n_tokens = i | arg (i) = "-print" then do; 761 call iodd_msg_ (normal, source, 0, "", 762 "Physical paper width: ^d characters ^/Physical paper length: ^d lines (at ^d lines per inch)", 763 prt_ctl.phys_line_length, prt_ctl.phys_page_length, prt_ctl.lines_per_inch); 764 go to end_cmd; 765 end; 766 if mod ((n_tokens - i), 2) = 1 then do; 767 call iodd_msg_ (normal, source, 0, "", 768 "The paper_info command must have an even number of arguments."); 769 go to cmd_error; /* make him do it right */ 770 end; 771 772 new_ll = prt_ctl.phys_line_length; /* record the old values as the default */ 773 new_pl = prt_ctl.phys_page_length; 774 new_lpi = prt_ctl.lines_per_inch; 775 776 do i = i to n_tokens - 1 by 2; /* check the arg pairs */ 777 if arg (i) = "-ll" then new_ll = convert (new_ll, arg (i + 1)); 778 else if arg (i) = "-pl" then new_pl = convert (new_pl, arg (i + 1)); 779 else if arg (i) = "-lpi" then new_lpi = convert (new_lpi, arg (i + 1)); 780 else do; /* bad control arg */ 781 call iodd_msg_ (normal, source, 0, "", "Invalid control argument: ^a", arg (i)); 782 go to cmd_error; 783 end; 784 end; 785 if new_ll < 10 | new_ll > 200 then do; /* check the range */ 786 call iodd_msg_ (normal, source, 0, "", "Line length range is 10 to 200."); 787 go to cmd_error; 788 end; 789 790 if ^(new_lpi = 6 | new_lpi = 8) then do; 791 call iodd_msg_ (normal, source, 0, "", "Lines per inch must be 6 or 8."); 792 go to cmd_error; 793 end; 794 if new_pl < 10 then do; 795 call iodd_msg_ (normal, source, 0, "", "Minimum paper length is 10 lines."); 796 go to cmd_error; 797 end; 798 if new_pl > 127 then do; 799 call iodd_msg_ (normal, source, 0, "", "Maximum paper length is 127 lines."); 800 go to cmd_error; 801 end; 802 803 prt_ctl.phys_line_length = new_ll; 804 prt_ctl.phys_page_length = new_pl; 805 prt_ctl.lines_per_inch = new_lpi; 806 807 call iodd_msg_ (normal, source, 0, "", "Changing to: ll ^d, pl ^d at ^d lines per inch.", 808 prt_ctl.phys_line_length, prt_ctl.phys_page_length, prt_ctl.lines_per_inch); 809 810 call set_paper_info (source, ec); 811 812 go to end_cmd; 813 end; 814 815 if command = "prt_control" | command = "prtcontrol" then do; 816 if arg_list.n_tokens > 1 then /* some arg given */ 817 if p -> driver_status.device_id = arg (1) then 818 i = 2; /* minor device, args can start at number 2 */ 819 else i = 1; /* possibly first arg was a value */ 820 else i = 1; /* no args at all */ 821 if n_tokens = i | arg (i) = "-print" then do;/* give the values */ 822 call iodd_msg_ (normal, source, 0, "", "Values are: ^[^^^]force_nep, ^[^^^]force_esc", 823 ^prt_ctl.force_nep, ^prt_ctl.force_esc); 824 end; 825 else do; 826 do i = i to n_tokens - 1; /* look at each argument */ 827 not = (substr (arg (i), 1, 1) = "^"); 828 /* was first char a "^" */ 829 if not then 830 value = substr (arg (i), 2); 831 else value = arg (i); 832 if value = "force_nep" | value = "forcenep" then prt_ctl.force_nep = ^not; 833 else if value = "force_esc" | value = "forceesc" then prt_ctl.force_esc = ^not; 834 else call iodd_msg_ (normal, source, 0, "", "Undefined argument: ^a", arg (i)); 835 end; 836 end; 837 go to end_cmd; 838 end; 839 840 if command = "sample_hs" | command = "samplehs" then do; 841 if arg_list.n_tokens > 1 then /* some arg given */ 842 if p -> driver_status.device_id = arg (1) then 843 i = 2; /* minor device, args can start at number 2 */ 844 else i = 1; /* possibly first arg was a value */ 845 else i = 1; /* no args at all */ 846 847 if spool_static_$file_attch = 1 then /* check if some file attached and/or open already */ 848 call ios_$order (stream, "file_close", null (), io_stat); 849 /* call to close ansi tape file */ 850 851 call ios_$order (stream, "file_open", null (), io_stat); 852 /* call to open ansi tape file */ 853 if st.code ^= 0 then do; /* have to terminate */ 854 call iodd_msg_ (error, master, st.code, whoami, "Unable to open tape file."); 855 go to cmd_error; 856 end; 857 spool_static_$file_attch = 1; /* a ansi tape file attached and open */ 858 859 call ios_$order (p -> driver_status.dev_out_stream, "reset", null, io_stat); 860 /* clear everything */ 861 call ios_$order (p -> driver_status.dev_out_stream, "inside_page", null, io_stat); 862 863 call write_sample_prt_banner_ ("head_sheet", p -> driver_status.dev_out_iocbp, prt_ctl_ptr, ec); 864 865 call ios_$order (p -> driver_status.dev_out_stream, "end_of_page", null, io_stat); 866 call ios_$order (p -> driver_status.dev_out_stream, "runout", null, io_stat); 867 /* be sure it prints */ 868 869 call ios_$order (stream, "file_close", null, io_stat); 870 spool_static_$file_attch = 0; 871 872 go to end_cmd; 873 end; 874 875 /* If we come past here, this command is illegal. So make a clean return without changing anything. */ 876 877 c_code = save_code; /* restore the original value */ 878 return; 879 880 end_cmd: 881 c_code = ec; /* pass back any defined errors */ 882 return; 883 884 cmd_error: 885 c_code = error_table_$action_not_performed; /* cause a resetread */ 886 return; 887 888 /* */ 889 890 default_handler: 891 entry (cond_ptr); 892 893 dcl cond_ptr ptr; /* pointer to the condition info structure */ 894 895 dcl condition char (32); /* fixed string for the call */ 896 897 dcl 1 cond_info aligned based (cond_ptr), /* this is the level one declaration */ 1 1 /* BEGIN INCLUDE FILE ... cond_info.incl.pl1 1 2* coded by M. Weaver 12 July 1973 */ 1 3 1 4 2 mcptr ptr, /* ptr to machine conditions at time of fault */ 1 5 2 version fixed bin, /* version of this structure (now=1) */ 1 6 2 condition_name char(32) var, /* name of condition */ 1 7 2 infoptr ptr, /* ptr to software info structure */ 1 8 2 wcptr ptr, /* ptr to wall crossing machine conditions */ 1 9 2 loc_ptr ptr, /* ptr to location where condition occurred */ 1 10 2 flags aligned, 1 11 3 crawlout bit(1) unal, /* = "1"b if condition occurred in inner ring */ 1 12 3 pad1 bit(35) unal, 1 13 2 pad_word bit(36) aligned, 1 14 2 user_loc_ptr ptr, /* ptr to last non-support loc before condition */ 1 15 2 pad (4) bit(36) aligned; 1 16 1 17 /* END INCLUDE FILE ... cond_info.incl.pl1 */ 898 899 900 condition = condition_name; 901 902 if iodd_static.request_in_progress then /* try to avoid mistakes */ 903 call output_request_$error_during_request (condition); 904 /* take it away */ 905 906 return; /* output_request_ should not return, but.... */ 907 908 /* */ 909 910 set_user_output_modes: 911 procedure (); 912 913 dcl nm char (128) var; 914 dcl om char (128) aligned; 915 dcl i fixed bin; 916 dcl v char (12) var; 917 918 nm = rtrim (ordata.output_mode); /* zero length if blank */ 919 if length (nm) > 0 then nm = nm || ","; /* separate from new modes */ 920 if dprint_msg.esc | prt_ctl.force_esc then nm = nm || "esc,"; 921 if dprint_msg.control.nep | prt_ctl.force_nep then nm = nm || "noskip,"; 922 if dprint_msg.control.single then nm = nm || "single,"; 923 if dprint_msg.control.non_edited then nm = nm || "non_edited,"; 924 if dprint_msg.control.truncate then nm = nm || "truncate,"; 925 if dprint_msg.page_lth > 1 then do; 926 v = convert_binary_integer_$decimal_string (dprint_msg.page_lth); 927 nm = nm || "pl" || v || ","; 928 end; 929 i = length (nm); 930 if i > 0 then do; 931 ordata.output_mode = nm; /* save and put in fixed string */ 932 substr (ordata.output_mode, i, 1) = " "; 933 call ios_$changemode (stream, ordata.output_mode, om, io_stat); 934 if st.code ^= 0 then ordata.output_mode = "";/* record mode only if set */ 935 end; 936 937 return; 938 939 940 set_line_mode: 941 entry; 942 943 ordata.output_mode, nm = ""; /* clear the string */ 944 if dprint_msg.line_lth > 1 then do; 945 v = convert_binary_integer_$decimal_string (dprint_msg.line_lth); 946 nm = nm || "ll" || v || ","; 947 end; 948 if dprint_msg.lmargin > 1 then do; 949 v = convert_binary_integer_$decimal_string (dprint_msg.lmargin); 950 nm = nm || "in" || v || ","; 951 end; 952 i = length (nm); 953 if i > 0 then do; 954 ordata.output_mode = nm; /* save and put in fixed string */ 955 substr (ordata.output_mode, i, 1) = " "; /* make the end of the string clean */ 956 call ios_$changemode (stream, ordata.output_mode, om, io_stat); 957 if st.code ^= 0 then ordata.output_mode = "";/* record mode only if set */ 958 end; 959 960 end set_user_output_modes; 961 962 /* */ 963 964 /* Establish top and bottom page label printing on the stream */ 965 966 set_page_labels: 967 procedure (stream, ec); 968 969 dcl stream char (*) aligned; /* stream to order labels on */ 970 dcl ec fixed bin (35); /* error code ... for the future */ 971 dcl temp_label char (136); /* temporary for cleaning the label */ 972 dcl translate builtin; 973 dcl 1 page_labels aligned, /* structure for the order call */ 974 2 top_label char (136), 975 2 bottom_label char (136); 976 dcl len fixed bin; 977 dcl ind fixed bin; 978 dcl field fixed bin; /* print field for centering */ 979 dcl set_labels bit (1); /* will be set if there are labels */ 980 981 ec = 0; /* start clean */ 982 set_labels = "0"b; 983 984 page_labels.top_label, page_labels.bottom_label = " "; 985 /* set leading blanks */ 986 987 if dprint_msg.line_lth < 1 then 988 field = prt_ctl.phys_line_length; /* check printable field */ 989 else field = dprint_msg.line_lth; /* believe what user asked for */ 990 991 if dprint_msg.lmargin > 0 then do; 992 field = field - dprint_msg.lmargin; /* shorten by indentation */ 993 ind = dprint_msg.lmargin; 994 end; 995 else ind = 1; /* be sure we start in col 1 */ 996 997 temp_label = translate (dprint_msg.top_label, " ", nl_vt_ff); 998 /* remove naughty characters */ 999 if verify (temp_label, space_ht_bs) > 0 then do; /* anything other than white space? */ 1000 set_labels = "1"b; /* we will have to make the order call */ 1001 len = length (temp_label) + 1 - verify (reverse (temp_label), " "); 1002 /* how long is the label */ 1003 if (field > len) & dprint_msg.control.center_top_label then do; 1004 len = divide (field - len, 2, 17, 0) + ind; 1005 /* calculate the starting position */ 1006 substr (page_labels.top_label, len) = temp_label; 1007 /* drop it in the right position */ 1008 end; 1009 else page_labels.top_label = temp_label; /* put it in as given (almost) */ 1010 end; 1011 1012 temp_label = translate (dprint_msg.bottom_label, " ", nl_vt_ff); 1013 /* do it again for the bottom label */ 1014 if verify (temp_label, space_ht_bs) > 0 then do; 1015 set_labels = "1"b; 1016 len = length (temp_label) + 1 - verify (reverse (temp_label), " "); 1017 if (field > len) & dprint_msg.control.center_bottom_label then do; 1018 len = divide (field - len, 2, 17, 0) + ind; 1019 substr (page_labels.bottom_label, len) = temp_label; 1020 end; 1021 else page_labels.bottom_label = temp_label; 1022 end; 1023 if set_labels then do; /* only make the call if we need to */ 1024 call ios_$order (stream, "page_labels", addr (page_labels), io_stat); 1025 ec = st.code; /* for the future */ 1026 end; 1027 1028 return; 1029 1030 end set_page_labels; 1031 1032 /* */ 1033 1034 set_paper_info: 1035 procedure (source, code); 1036 1037 dcl code fixed bin (35); 1038 dcl source fixed bin; 1039 1040 code = 0; 1041 1042 call ios_$order (p -> driver_status.dev_out_stream, "paper_info", addr (prt_ctl.paper_info), io_stat); 1043 if st.code ^= 0 then do; 1044 call iodd_msg_ (normal, source, st.code, whoami, "Unable to perform paper_info order."); 1045 code = st.code; 1046 return; 1047 end; 1048 1049 call iodd_msg_ (normal, source, 0, "", 1050 "^/Tape will be formatted for ^d lines per physical page, at ^d lines/inch.^/", prt_ctl.phys_page_length, 1051 prt_ctl.lines_per_inch); 1052 1053 return; 1054 1055 end set_paper_info; 1056 /* begin include file - access_audit_user_info.incl.pl1 */ 2 2 2 3 /* 85-01-21 EJ Sharpe - changed (min max)_auth to auth range */ 2 4 /* 85-01-07 EJ Sharpe - added min_authorization */ 2 5 /* 84-10-09 EJ Sharpe - created */ 2 6 2 7 /* The structure defined here is passed to the access_audit_ 2 8*entrypoints which deal with proxy users: 2 9**/ 2 10 2 11 dcl audit_user_info_ptr pointer; 2 12 2 13 dcl 1 audit_user_info based (audit_user_info_ptr) aligned, 2 14 2 version char (8), 2 15 2 user_id char (32), 2 16 2 ring fixed bin (3) uns unal, 2 17 2 pad bit (33) unal, 2 18 2 process_id bit (36) aligned, 2 19 2 authorization bit (72) aligned, 2 20 2 authorization_range (2) bit (72) aligned, 2 21 2 audit_flags bit (36) aligned; 2 22 2 23 dcl audit_user_info_version_1 char (8) init ("adtusrv1") 2 24 internal static options (constant); 2 25 2 26 /* end include file - access_audit_user_info.incl.pl1 */ 1056 1057 /* BEGIN INCLUDE FILE ... dprint_msg.incl.pl1 */ 3 2 /* Modified: November 1983 by C. Marker Added no_separator. */ 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(87-05-10,Gilcrease), approve(87-05-13,MCR7686), 3 6* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 3 7* Add line_nbrs bit for line-numbered printouts, version 4. 3 8* 2) change(88-02-05,Farley), approve(88-02-05,PBF7686), audit(88-02-05,GWMay), 3 9* install(88-02-05,MR12.2-1022): 3 10* Corrected alignment of line_nbrs, was aligned s/b unaligned.. 3 11* 3) change(88-08-23,Farley), approve(88-09-16,MCR7911), 3 12* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 3 13* Increased size of forms field to 64 characters (was only 24), which 3 14* updates the version to 5. 3 15* END HISTORY COMMENTS */ 3 16 3 17 3 18 dcl dmp ptr; /* ptr to message */ 3 19 3 20 dcl 1 dprint_msg based (dmp) aligned, /* structure of a IO daemon print or punch request */ 3 21 2 header like queue_msg_hdr, /* header for all standard queue messages */ 3 22 2 version fixed bin, /* version of the dprint_msg used */ 3 23 2 copies fixed bin, /* number of copies user requested */ 3 24 2 bit_count fixed bin (35), /* the bitcount of the segment at request time */ 3 25 2 output_module fixed bin, /* 1=print, 2=7punch, 3= mcc, 4=raw */ 3 26 2 control, /* control flags. */ 3 27 3 nep bit (1) unal, /* TRUE if printing over perforations */ 3 28 3 single bit (1) unal, /* TRUE if ignore FF and VT */ 3 29 3 non_edited bit (1) unal, /* TRUE if printing in non-edited mode */ 3 30 3 truncate bit (1) unal, /* TRUE if truncating lines at line length */ 3 31 3 esc bit (1) unal, /* TRUE if text escapes are to be processed */ 3 32 3 center_top_label bit (1) unal, /* TRUE if top label to be centered */ 3 33 3 center_bottom_label bit (1) unal, /* TRUE if bottom label to be centered */ 3 34 3 no_separator bit(1) unal, /* TRUE if the inner head a tail sheets of multiple copies are to be suppressed. */ 3 35 3 line_nbrs bit (1) unal, /* TRUE if line numbers wanted */ 3 36 3 padding bit (27) unal, 3 37 2 lmargin fixed bin, /* indent from the left */ 3 38 2 line_lth fixed bin, /* logical line length */ 3 39 2 page_lth fixed bin, /* logical page length */ 3 40 2 heading_lth fixed bin, /* number of chars in heading */ 3 41 2 top_label_lth fixed bin, /* number of chars in the top label */ 3 42 2 bottom_label_lth fixed bin, /* number of chars in bottom label */ 3 43 2 chan_stop_path_lth fixed bin, /* number of chars in channel stop pathname */ 3 44 2 forms_name_lth fixed bin, /* number of chars in forms name */ 3 45 2 future_fb_values (7) fixed bin, /* make future versions possible */ 3 46 2 forms char (24), /* name of special forms, or blank */ 3 47 2 destination char (24), /* routing for output */ 3 48 2 heading char (head_max_lth refer (dprint_msg.heading_lth)), /* heading on page 1 */ 3 49 2 top_label char (label_max_lth refer (dprint_msg.top_label_lth)), /* top page heading for each page */ 3 50 2 bottom_label char (label_max_lth refer (dprint_msg.bottom_label_lth)), /* bottom page heading */ 3 51 2 chan_stop_path char (path_max_lth refer (dprint_msg.chan_stop_path_lth)), /* path of rqti seg with channel stops */ 3 52 2 forms_name char (forms_max_lth refer (dprint_msg.forms_name_lth)); /* forms name string */ 3 53 3 54 3 55 dcl ( 3 56 head_max_lth init (64), /* allocation size for heading */ 3 57 label_max_lth init (136), /* allocation size for label fields */ 3 58 path_max_lth init (168), /* allocation size for pathname fields */ 3 59 forms_max_lth init (64) /* allocation size for forms name string */ 3 60 ) fixed bin int static options (constant); 3 61 3 62 dcl ( 3 63 dprint_msg_version_3 init (3), 3 64 dprint_msg_version_4 init (4), 3 65 dprint_msg_version_5 init (5) /* current version */ 3 66 ) fixed bin int static options (constant); 3 67 3 68 /* END INCLUDE FILE ... dprint_msg.incl.pl1 */ 1057 1058 /* BEGIN INCLUDE FILE...driver_status.incl.pl1 */ 4 2 4 3 4 4 4 5 /****^ HISTORY COMMENTS: 4 6* 1) change(88-01-27,Brunelle), approve(), audit(), install(): 4 7* Ancient History 4 8* Coded by Robert S. Coren August 1973 4 9* Modified by J. Whitmore to structure data for the Access Isolation Mechanism 4 10* Modified by J. C. Whitmore, 5/78, for IO Daemon extensions 4 11* Modified by J. C. Whitmore, 8/79, to add the generic_type variable 4 12* 2) change(88-08-19,Brunelle), approve(88-08-19,MCR7911), 4 13* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 4 14* Upgraded for version 5 iod tables. Changed the minor_args ftom string to 4 15* text_offset. Changed acct_ptr to acct_entry. Added have_accounting bit 4 16* to denote accounting ^= nothing. 4 17* END HISTORY COMMENTS */ 4 18 4 19 4 20 /* status data for a logical device driver */ 4 21 4 22 /* format: style4 */ 4 23 4 24 dcl driver_status_ptr ptr; 4 25 dcl 1 driver_status aligned based (driver_status_ptr), 4 26 2 req_type_label char (32), /* string to describe the request type */ 4 27 2 dev_name_label char (32), /* string to describe the device */ 4 28 2 device_id char (32), /* minor device name used by this logical driver */ 4 29 2 device_class_id char (32), /* device class name used by this logical driver */ 4 30 2 coord_chan fixed bin (71), /* ipc event channel for signals to coord. */ 4 31 2 driver_chan fixed bin (71), /* ipc event channel for signals from coord. */ 4 32 2 last_wake_time fixed bin (71), /* time last wakeup sent to coord */ 4 33 2 request_pending bit (36), /* locking word for communication with coord */ 4 34 /* 0 = ready for a request */ 4 35 /* driver pid = don't bug me */ 4 36 /* coord pid = got a request */ 4 37 2 status_flags, 4 38 3 attached bit (1) unal, /* minor device is attached for i/o */ 4 39 3 busy bit (1) unal, /* driver doing request..tell coord when done */ 4 40 3 ready bit (1) unal, /* driver is ready to handle requests */ 4 41 3 acknowledge bit (1) unal, /* coordinator must reply to all wakeups */ 4 42 3 have_accounting bit (1) unal, /* ON if accounting ^= nothing */ 4 43 3 pad bit (31) unal, 4 44 2 list_index fixed bin, /* index of this driver in the driver ptr list */ 4 45 2 dev_index fixed bin, /* index in iod_device_tab of this minor device */ 4 46 2 maj_index fixed bin, /* index in iod_device_tab of the corresponding major device */ 4 47 2 dev_class_index fixed bin, /* index of device_class entry */ 4 48 2 minor_args unaligned like text_offset, /* descriptive string for this minor device */ 4 49 2 min_banner bit (72) aligned, /* min banner access class for marking output */ 4 50 2 acct_entry entry (char (*), char (*), ptr, fixed bin (35)) variable, /* entry variable to accounting procedure */ 4 51 /* for this logical driver */ 4 52 2 rqti_ptr ptr, /* pointer to the request type info seg */ 4 53 2 dev_out_iocbp ptr, /* iocb pointer for dev_out_stream */ 4 54 2 dev_in_iocbp ptr, /* iocb pointer for dev_in_stream */ 4 55 2 dev_out_stream char (32), /* output stream for minor device */ 4 56 2 dev_in_stream char (32), /* input stream for minor device */ 4 57 2 elem_size fixed bin, /* element size for the stream */ 4 58 2 message_type fixed bin, /* expected format of user request */ 4 59 2 form_wait_time fixed bin (71), /* average time needed to write ctl term msg */ 4 60 2 forms_validation_ptr ptr, /* forms validation data */ 4 61 2 dev_ptr1 ptr, /* another one */ 4 62 2 dev_fb1 fixed bin, /* a spare fixed bin variable for the driver */ 4 63 2 dev_fb2 fixed bin, /* and another */ 4 64 2 dev_fb3 fixed bin, /* and another */ 4 65 2 dev_fb4 fixed bin, /* and the last spare fixed bin */ 4 66 2 dev_fb71 fixed bin (71), /* a spare fixed bin 71 variable */ 4 67 2 dev_ctl_ptr ptr, /* pointer to control structure for this device */ 4 68 2 bit_rate_est fixed bin (35), /* output rate estimate - bits per second */ 4 69 2 defer_time_limit fixed bin (35), /* max time allowed for a request - in seconds (0 = no limit) */ 4 70 2 generic_type char (32), /* generic type of this minor device */ 4 71 2 status_pad (2) fixed bin (35), /* save some room for later */ 4 72 2 descriptor like request_descriptor, /* copy of request descriptor */ 4 73 2 desc_pad (13) fixed bin, 4 74 2 message fixed bin; /* place-holder for copy of request message */ 4 75 4 76 4 77 /* END INCLUDE FILE...driver_status.incl.pl1 */ 1058 1059 /* BEGIN INCLUDE FILE ... iod_tables_hdr.incl.pl1 */ 5 2 5 3 5 4 5 5 /****^ HISTORY COMMENTS: 5 6* 1) change(88-01-27,Brunelle), approve(), audit(), install(): 5 7* Ancient History 5 8* Created by J. Stern, 1/20/75 5 9* Modified by J. C. Whitmore April 1978 for enhancements 5 10* Modified by J. C. Whitmore, 10/78, for version 3 iod_tables format. 5 11* Modified by E. N. Kittlitz, 6/81, for version 4 iod_tables with expanded 5 12* q_group_tab 5 13* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 5 14* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 5 15* Change version number to reflect changes in q_group_tab and 5 16* iod_device_tab for laser printer support. Added font tables. 5 17* END HISTORY COMMENTS */ 5 18 5 19 5 20 /* format: style4 */ 5 21 5 22 dcl ithp ptr; /* ptr to io daemon dables and it's header */ 5 23 dcl 1 iod_tables_hdr aligned based (ithp), /* header of data segment compiled by iod_table_compiler */ 5 24 2 version char (8), /* version of this structure */ 5 25 2 date_time_compiled fixed bin (71), 5 26 2 grace_time fixed bin (71), /* grace time before deleting finished segment */ 5 27 2 max_queues fixed bin (17), /* default number of priority queues per queue group */ 5 28 2 line_tab_offset fixed bin (18), /* offset of line id table */ 5 29 2 device_tab_offset fixed bin (18), /* offset of device table */ 5 30 2 minor_device_tab_offset fixed bin (18), /* offset of minor device table */ 5 31 2 dev_class_tab_offset fixed bin (18), /* offset of device class table */ 5 32 2 q_group_tab_offset fixed bin (18), /* offset of queue group table */ 5 33 2 forms_info_tab_offset fixed bin (18), /* offset of forms info tables */ 5 34 2 text_strings_offset fixed bin (18), 5 35 2 start_of_tables fixed bin; /* beginning of above tables, MUST start on even word boundry */ 5 36 5 37 /* Defines common text block to store virtually all text in the I/O daemon tables */ 5 38 dcl text_strings_ptr ptr; 5 39 dcl 1 text_strings aligned based (text_strings_ptr), 5 40 2 length fixed bin, 5 41 2 chars char (1 refer (text_strings.length)) unaligned; 5 42 5 43 /* this defines text offsets used to locate i/o daemon tables strings in 5 44* the text_strings structure */ 5 45 dcl 1 text_offset based, 5 46 2 first_char fixed bin (18) unsigned unaligned, 5 47 2 total_chars fixed bin (18) unsigned unaligned; 5 48 5 49 dcl IODT_VERSION_5 char (8) int static options (constant) init ("IODT0005"); /* current version number */ 5 50 5 51 5 52 /* END INCLUDE FILE ... iod_tables_hdr.incl.pl1 */ 1059 1060 /* BEGIN INCLUDE FILE...iodd_static.incl.pl1 */ 6 2 6 3 6 4 /****^ HISTORY COMMENTS: 6 5* 1) change(85-02-14,Homan), approve(87-04-06,MCR7656), 6 6* audit(87-06-13,Beattie), install(87-08-06,MR12.1-1068): 6 7* Add support for logout_on_hangup option. 6 8* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 6 9* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 6 10* Add head/tail_sheet entry variables and paper_type variable. 6 11* END HISTORY COMMENTS */ 6 12 6 13 /* format: style4 */ 6 14 6 15 dcl stat_p int static ptr; 6 16 6 17 dcl 1 iodd_static based (stat_p) aligned, 6 18 6 19 /* The first part is set only once for a device driver */ 6 20 6 21 2 ithp ptr, /* pointer to iod tables header */ 6 22 2 ltp ptr, /* pointer to line table */ 6 23 2 idtp ptr, /* pointer to device tab */ 6 24 2 mdtp ptr, /* pointer to minor device table */ 6 25 2 qgtp ptr, /* pointer to q_group table */ 6 26 2 dev_class_ptr ptr, /* pointer to device class table */ 6 27 2 text_strings_ptr ptr, /* pointer to iod tables text strings */ 6 28 2 driver_list_ptr ptr, /* pointer to list of driver status seg pointers */ 6 29 2 chan_list_ptr ptr, /* pointer to list of event channels for blocking */ 6 30 2 sys_dir_ptr ptr, /* ptr to 168 char string defining sys_dir */ 6 31 2 coord_proc_id bit (36), /* process id of coordinator for wakeups */ 6 32 2 driver_proc_id bit (36), /* process id of driver for locking */ 6 33 2 re_init_label label, /* where to go after "re_init" or "slave_logout" */ 6 34 2 no_coord_label label, /* where to go for a no_coord condition */ 6 35 2 log_stream char (32), /* stream name used for log output */ 6 36 2 master_input char (32), /* master console input stream for commands */ 6 37 2 master_output char (32), /* master console output stream for messages */ 6 38 2 master_out ptr, /* master output iocbp */ 6 39 2 master_in ptr, /* master input iocbp */ 6 40 2 log_iocbp ptr, /* log output iocbp */ 6 41 2 error_io ptr, /* error i/o iocbp */ 6 42 2 dev_io_stream char (32), /* stream used to attach the major device */ 6 43 2 dev_in_stream char (32), /* input stream if different from dev_io_stream */ 6 44 2 dev_out_stream char (32), /* output stream if different from dev_io_stream */ 6 45 2 device_dim char (32), /* dim which drives the major device */ 6 46 2 attach_name char (32), /* channel or dial id for attaching major device */ 6 47 2 attach_type fixed bin, /* what previous is: 1 = iom, 2 = tty, 3 = dial, 4 = variable line */ 6 48 2 dev_dial_id char (8), /* non null if device is to be dialed to driver */ 6 49 2 line_tab_idx fixed bin, /* for attach type 4, this is the entry index, else 0 */ 6 50 2 dial_ev_chan fixed bin (71), /* IPC chan for dial control */ 6 51 2 major_device char (32), /* name of the major device */ 6 52 2 major_args unaligned like text_offset, /* descriptive string for the major device */ 6 53 2 coord_cmd_chan fixed bin (71), /* IPC chan to send commands to coord through coord_comm.ms */ 6 54 2 cmd_ack_chan fixed bin (71), /* IPC chan for coord to return command status code */ 6 55 2 timer_chan fixed bin (71), /* IPC chan for unblocking if nothing happens */ 6 56 2 io_daemon_version char (8), /* current version number of the io daemon driver */ 6 57 2 extra_static (8) fixed bin (35), /* unused space - non_dynamic */ 6 58 2 dummy_ptr ptr, /* a dummy pointer for the driver module */ 6 59 6 60 /* driver module entrypoints are defined by the following entry variables */ 6 61 6 62 2 driver_init entry variable options (variable), 6 63 2 driver_request entry variable options (variable), 6 64 2 driver_command entry variable options (variable), 6 65 2 driver_default_handler entry variable options (variable), 6 66 6 67 /* entrypoints for head/tail_sheet_ entries */ 6 68 2 print_head_sheet entry (ptr, ptr, ptr, fixed bin (35)) variable, 6 69 2 print_head_separator entry (ptr, ptr, char (*), fixed bin (35)) variable, 6 70 2 print_tail_sheet entry (ptr, ptr, ptr, fixed bin (35)) variable, 6 71 6 72 2 paper_type fixed bin, /* type of paper being used */ 6 73 /* 1 = single sheet */ 6 74 /* 2 = continuous forms */ 6 75 6 76 /* The remainder of the data may be dynamic during the device driver's existence */ 6 77 6 78 2 extra_dynamic (14) fixed bin (35), /* unused space - dynamic */ 6 79 2 auto_logout_interval fixed bin, /* minutes to wait for inactivity logout */ 6 80 2 requests_til_cmd fixed bin, /* number of requests to go before returning to cmd level */ 6 81 2 assigned_devices fixed bin, /* number of minor devices assigned to major device */ 6 82 2 current_devices fixed bin, /* number of devices currently active in process */ 6 83 2 output_device char (32), /* name of minor device currently in use */ 6 84 2 wakeup_time fixed bin (71), /* time interval between timer wakeups */ 6 85 2 auto_start_delay fixed bin (71), /* time to wait before performing an auto-start after quit */ 6 86 2 driver_ptr ptr, /* pointer to driver status seg currently in use */ 6 87 2 segptr ptr, /* ptr to current user segment being processed */ 6 88 2 flags, /* control flags */ 6 89 3 initialized bit (1) unal, /* all driver data bases are initialized */ 6 90 3 test_entry bit (1) unal, /* driver test entry was called */ 6 91 3 request_in_progress bit (1) unal, /* driver executing a request */ 6 92 3 recursion_flag bit (1) unal, /* recursive unclaimed signal */ 6 93 3 no_coord_flag bit (1) unal, /* process is ready to accept a no_coord signal */ 6 94 3 logout_pending bit (1) unal, /* logout after all pending requests are done */ 6 95 3 master_hold bit (1) unal, /* master_hold at command level */ 6 96 3 slave_hold bit (1) unal, /* slave hold at command level */ 6 97 3 step bit (1) unal, /* run in step mode */ 6 98 3 quit_during_request bit (1) unal, /* a quit occured, don't wait for wakeup */ 6 99 3 runout_requests bit (1) unal, /* hold after all pending requests are done */ 6 100 3 re_init_in_progress bit (1) unal, /* driver processing a re_init signal */ 6 101 3 quit_signaled bit (1) unal, /* set to "1"b by quit handler for anyone who is curious */ 6 102 3 auto_logout_pending bit (1) unal, /* inactivity limit exceeded, logout after next wakeup */ 6 103 3 logout_on_hangup bit (1) unal, /* logout instead of reinit if set */ 6 104 3 pad bit (21) unal, /* unused space */ 6 105 2 slave, /* slave control device data (ctl term or remote reader) */ 6 106 3 slave_input char (32), /* slave input stream name */ 6 107 3 slave_output char (32), /* slave output stream name */ 6 108 3 slave_pad fixed bin, /* allocation breakage */ 6 109 3 slave_in ptr, /* slave input iocbp */ 6 110 3 slave_out ptr, /* slave output iocbp */ 6 111 3 slave_ev_chan fixed bin (71), /* event channel the slave device blocks on */ 6 112 3 active bit (1) unal, /* on if there is a slave */ 6 113 3 accept_input bit (1) unal, /* on if commands may come from the slave */ 6 114 3 allow_quits bit (1) unal, /* on if we allow slave to send quits */ 6 115 3 print_errors bit (1) unal, /* on if errors will be sent to the slave */ 6 116 3 log_msg bit (1) unal, /* on if log messages are to be sent to the slave */ 6 117 3 priv1 bit (1) unal, /* driver_module defined slave privileges */ 6 118 3 priv2 bit (1) unal, 6 119 3 priv3 bit (1) unal, 6 120 3 echo_cmd bit (1) unal, /* on if each slave cmd should be written back */ 6 121 3 slave_bit_pad bit (27) unal, /* unused space */ 6 122 2 ctl_term, /* control terminal data */ 6 123 3 ctl_attach_name char (32), /* dial id, tty chan, or mrd_ device */ 6 124 3 ctl_attach_type fixed bin, /* attach name meaning: 1=line, 2=dial, 3=mrd_source */ 6 125 3 ctl_pad fixed bin, /* allocation breakage */ 6 126 3 ctl_dial_chan fixed bin (71), /* ipc event channel for dial comm */ 6 127 3 ctl_input char (32), /* ctl input stream name */ 6 128 3 ctl_output char (32), /* ctl output stream name */ 6 129 3 ctl_io char (32), /* ctl i/o stream name */ 6 130 3 ctl_dev_dim char (32), /* ctl_io attached with this dim */ 6 131 3 ctl_ev_chan fixed bin (71), /* IPC event chan ctl term blocks on */ 6 132 3 ctl_device char (32), /* ctl terminal device name */ 6 133 3 form_type char (16), /* format type if printing forms */ 6 134 3 attached bit (1) unal, /* ctl term attached to process */ 6 135 3 forms bit (1) unal, /* on if printing forms */ 6 136 3 pad bit (34) unal, 6 137 2 admin_ec_name char (32), /* name of the ec to use with the "x" command */ 6 138 2 expansion_space (100) fixed bin; /* reserved space...use at your own risk */ 6 139 6 140 /* END INCLUDE FILE ... iodd_static.incl.pl1 */ 1060 1061 /* BEGIN INCLUDE FILE . . . mseg_message_info.incl.pl1 BIM 1984-10-10 */ 7 2 /* format: style3,idind30 */ 7 3 7 4 /* structure returned when message is read from a message segment */ 7 5 7 6 7 7 dcl mseg_message_info_ptr pointer; 7 8 7 9 dcl 1 mseg_message_info based (mseg_message_info_ptr) aligned, 7 10 2 version char (8) aligned, 7 11 2 message_code fixed bin, 7 12 2 control_flags unaligned, 7 13 3 own bit (1), 7 14 3 delete bit (1), 7 15 3 pad bit (34), 7 16 2 ms_ptr ptr, /* pointer to message */ 7 17 2 ms_len fixed bin (24), /* length of message in bits */ 7 18 2 ms_id bit (72), /* unique ID of message */ 7 19 /* input in some cases */ 7 20 2 ms_access_class bit (72), /* message access class */ 7 21 2 sender_id char (32) unaligned,/* process-group ID of sender */ 7 22 2 sender_process_id bit (36) aligned, /* if nonzero, process that sent */ 7 23 2 sender_level fixed bin, /* validation level of sender */ 7 24 2 sender_authorization bit (72), /* access authorization of message sender */ 7 25 2 sender_max_authorization bit (72), /* max authorization of sending process */ 7 26 2 sender_audit bit (36) aligned; /* audit flags */ 7 27 7 28 declare MSEG_MESSAGE_INFO_V1 char (8) aligned init ("msegmi01") int static options (constant); 7 29 7 30 declare ( 7 31 MSEG_READ_FIRST init (1), 7 32 MSEG_READ_LAST init (2), 7 33 MSEG_READ_SPECIFIED init (3), 7 34 MSEG_READ_BEFORE_SPECIFIED init (4), 7 35 MSEG_READ_AFTER_SPECIFIED init (5)) 7 36 fixed bin int static options (constant); 7 37 7 38 declare (MSEG_READ_OWN init ("1"b), 7 39 MSEG_READ_DELETE init ("01"b) 7 40 ) bit (36) aligned internal static options (constant); 7 41 7 42 /* END INCLUDE FILE . . . mseg_message_info.incl.pl1 */ 1061 1062 /* BEGIN INCLUDE FILE ... output_request_data.incl.pl1 */ 8 2 8 3 /* Modified by R. McDonald May 1980 to include page charges (UNCA) */ 8 4 /* Modified by C. Marker October 1983 added no_separator */ 8 5 8 6 8 7 /****^ HISTORY COMMENTS: 8 8* 1) change(87-05-10,Gilcrease), approve(87-05-13,MCR7686), 8 9* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 8 10* Add the line_nbrs bit for line-numbered output. 8 11* 2) change(88-08-19,Brunelle), approve(88-08-19,MCR7911), 8 12* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 8 13* Added single_sheet bit to denote if continuous paper. 8 14* END HISTORY COMMENTS */ 8 15 8 16 8 17 dcl 1 ordata based (ordatap) aligned, 8 18 2 dpmp ptr, /* Ptr to dprint_msg */ 8 19 2 requestor char (32), /* Person.Proj.tag requesting */ 8 20 2 full_path char (168), /* source of the output */ 8 21 2 queue fixed bin, /* Queue requested. */ 8 22 2 copies fixed bin, /* Copies requested. */ 8 23 2 copy_no fixed bin, /* Number this copy */ 8 24 2 request_no fixed bin (35), /* Number request assigned by coord */ 8 25 2 restart_no fixed bin (35), /* old number of restarted request (0 = not restarted) */ 8 26 2 request_type char (32), /* Name of device class wanted. */ 8 27 2 access_class_string char (280), /* Access class - size limit for two printer lines */ 8 28 2 punsw fixed bin, /* 0 = print, 1= punch */ 8 29 2 delete fixed bin, /* 1= delete, 0= don't */ 8 30 2 device_name char (32), /* Name of physical device used */ 8 31 2 output_mode char (128), /* user's mode string for ios_$changemode */ 8 32 2 time_start_request fixed bin (71), /* Clock time when picked request */ 8 33 2 date_time_start_request char (24), /* .. in chars too */ 8 34 2 line_count fixed bin (24), /* Line count returned by DIM */ 8 35 2 page_count fixed bin, /* Page count returned by DIM */ 8 36 2 cpu_time fixed bin (71), /* Total CPU usage while printing */ 8 37 2 real_time fixed bin (71), /* Total realtime while printing */ 8 38 2 page_waits fixed bin, /* Total page-waits while printing */ 8 39 2 pre_pages fixed bin, /* Total pre-pages (???) .. */ 8 40 2 bit_count fixed bin (24), /* Number of bits transmitted. */ 8 41 2 charge float bin, /* What the thing cost. */ 8 42 2 control_flags, 8 43 3 continued bit (1) unal, /* request started by one driver and given to another */ 8 44 3 restarted bit (1) unal, /* request is restarted */ 8 45 3 separator bit (1) unal, /* used to determine necessity of a separator page */ 8 46 3 notify bit (1) unal, /* if should confirm to user */ 8 47 3 saved bit (1) unal, /* request was suspended by operator, we'll save it */ 8 48 3 priority_request bit (1) unal, /* operator said run now!! */ 8 49 3 no_separator bit (1) unal, /* suppress inner head and tail sheets when printing multiple copies */ 8 50 3 line_nbrs bit (1) unal, /* if line-numbered output requested */ 8 51 3 single_sheet bit (1) unal, /* ON if single_sheet output */ 8 52 3 padding bit (27) unal, /* not used */ 8 53 2 contd_no fixed bin (35), /* old number of continued request (0 = not continued) */ 8 54 2 total_charge float bin, /* total charge for all copies */ 8 55 2 price_per_n_lines float bin, /* line price rate used to compute charge */ 8 56 2 n_lines_for_price fixed bin, /* number of lines price is based on */ 8 57 2 charge_queue fixed bin, /* base charge rate on this queue */ 8 58 2 price_per_n_pages float bin, /* page charge rate used to compute charge */ 8 59 2 n_pages_for_price fixed bin, /* number of pages price is based on */ 8 60 2 rs_number fixed bin (9) unsigned unaligned, /* rate_structure number used */ 8 61 2 rs_unavailable bit (1) unaligned, /* 1=>couldn't read SAT */ 8 62 2 no_accounting bit (1) unaligned, /* 1=>accounting:nothing in iod_tables */ 8 63 2 pad_bits bit (25) unaligned, 8 64 2 line_nbr fixed bin (35), /* current line number */ 8 65 2 pad_space (6) fixed bin (35); /* save some room to grow */ 8 66 8 67 dcl ordatap ptr; /* Ptr to above structure */ 8 68 8 69 dcl 1 REQUEST like ordata aligned; /* If wanted, a place to put the above thing */ 8 70 8 71 /* END INCLUDE FILE ... output_request_data.incl.pl1 */ 1062 1063 /* BEGIN INCLUDE FILE ... prt_ctl.incl.pl1 */ 9 2 9 3 9 4 /****^ HISTORY COMMENTS: 9 5* 1) change(88-02-23,Brunelle), approve(88-08-31,MCR7911), 9 6* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 9 7* Ancient History 9 8* Modified: 11 December 1981 by G. Palter to add force_ctl_char 9 9* Modified: November 1983 by C. Marker to add force_nsep 9 10* 2) change(88-02-23,Brunelle), approve(88-08-31,MCR7911), 9 11* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 9 12* Literals for banner type and banner bars type added. 9 13* END HISTORY COMMENTS */ 9 14 9 15 9 16 /* format: style4 */ 9 17 9 18 /* This structure is used by the IO Daemon to define the printer control functions */ 9 19 9 20 dcl prt_ctl_ptr ptr; 9 21 9 22 dcl 1 prt_ctl aligned based (prt_ctl_ptr), /* printer control values */ 9 23 2 flags, 9 24 3 force_nep bit (1) unal, /* set noskip for the user */ 9 25 3 force_esc bit (1) unal, /* set escape processing for the user */ 9 26 3 no_auto_print bit (1) unal, /* ask for a cmd before each request is printed */ 9 27 3 meter bit (1) unal, /* meter printer functions */ 9 28 3 force_ctl_char bit (1) unal, /* set ctl_char mode for the user */ 9 29 3 force_nsep bit (1) unal, /* supress printing of inner head and tail sheets for multiple copies */ 9 30 3 ctl_pad bit (30) unal, /* default for future values */ 9 31 2 banner_type fixed bin, /* 0 = no banners */ 9 32 /* 1 = normal head/tail sheets */ 9 33 /* 2 = brief head/tail sheets */ 9 34 /* 3 to 10 RESERVED */ 9 35 2 banner_bars fixed bin, /* 0 = normal overprinted separator bars */ 9 36 /* 1 = single print line bars (no overprint) */ 9 37 /* 2 = suppress the separator bars (no separator) */ 9 38 2 banner_indent fixed bin, /* how far to indent the banner (future) */ 9 39 2 banner_line fixed bin, /* what line to start the banner on (future) */ 9 40 9 41 2 paper_info, 9 42 3 phys_page_length fixed bin, 9 43 3 phys_line_length fixed bin, 9 44 3 lines_per_inch fixed bin, 9 45 2 channel_stops (256) bit (16) unal, /* logical stops for slew to channel */ 9 46 2 prt_ctl_pad (10) fixed bin; /* for future additions */ 9 47 9 48 /* constants for prt_ctl.banner_type */ 9 49 dcl (NO_BANNERS init (0), 9 50 NORMAL_BANNERS init (1), 9 51 BRIEF_BANNERS init (2)) fixed bin int static options (constant); 9 52 9 53 /* constants for prt_ctl.banner_bars */ 9 54 dcl (NORMAL_BANNER_BARS init (0), 9 55 SINGLE_BANNER_BARS init (1), 9 56 NO_BANNER_BARS init (2)) fixed bin int static options (constant); 9 57 9 58 /* END INCLUDE FILE ... prt_ctl.incl.pl1 */ 1063 1064 /* Begin include file ...... prt_order_info.incl.pl1 */ 10 2 /* Created 3/15/77 by Noel I. Morris */ 10 3 10 4 dcl orderp ptr; /* pointer to order info structure */ 10 5 10 6 dcl 1 counts based (orderp) aligned, /* structure used in "get_count" order */ 10 7 2 line fixed bin, /* line number */ 10 8 2 page_length fixed bin, /* length of page */ 10 9 2 lmarg fixed bin, /* left margin indentation */ 10 10 2 rmarg fixed bin, /* line length */ 10 11 2 line_count fixed bin, /* count of lines printed */ 10 12 2 page_count fixed bin; /* count of pages printed */ 10 13 10 14 dcl 1 position_data based (orderp) aligned, /* structure for "get_position" & "set_position" orders */ 10 15 2 line_number fixed bin (35), /* current line on the page */ 10 16 2 page_number fixed bin (35), /* current page number */ 10 17 2 total_lines fixed bin (35), /* lines printed since reset */ 10 18 2 total_chars fixed bin (35), /* chars processed since reset */ 10 19 2 pad(4) fixed bin; /* for the future */ 10 20 10 21 dcl 1 page_labels based (orderp) aligned, /* structure used in "page_labels" order */ 10 22 2 top_label char (136), /* label for top of page */ 10 23 2 bottom_label char (136); /* label for bottom of page */ 10 24 10 25 dcl channel_stops (256) bit (16) based (orderp) unal; /* structure used in "channel_stops" order */ 10 26 10 27 dcl 1 paper_info based (orderp) aligned, /* structure used in "paper_info" order */ 10 28 2 phys_page_length fixed bin, /* physical page length */ 10 29 2 phys_line_length fixed bin, /* physical line length */ 10 30 2 lines_per_inch fixed bin; /* lines per inch spacing */ 10 31 10 32 dcl ret_error_count fixed bin based (orderp); /* variable used for "get_error_count" order */ 10 33 10 34 /* End of include file ...... prt_order_info.incl.pl1 */ 1064 1065 /* BEGIN INCLUDE FILE ... prt_rqti.incl.pl1 */ 11 2 /* Modified: 30 November 1981 by G. Palter to add force_ctl_char mode */ 11 3 /* Modified: November 1983 by C. Marker to add force_nsep */ 11 4 12 1 /* BEGIN INCLUDE FILE ..... rqti_header.incl.pl1 ..... */ 12 2 12 3 12 4 dcl 1 rqti_header aligned based, /* header for a request type info seg */ 12 5 2 time_created fixed bin (71), /* clock time when table was translated */ 12 6 2 header_version fixed bin, /* version number of the header alone */ 12 7 2 type_code fixed bin, /* 0 = header only */ 12 8 /* 1 = printer generic type */ 12 9 /* 2 = punch generic type */ 12 10 /* 3 = tape generic type */ 12 11 2 rqti_switches, 12 12 (3 meter bit (1), /* meter this request type */ 12 13 3 auto_go bit (1), /* driver should not request a go command */ 12 14 3 rqti_sw_pad bit (34)) unal, /* room to grow */ 12 15 2 driver_wait_time fixed bin, /* seconds to wait, before asking coord for service */ 12 16 2 header_pad (10) fixed bin; /* leave 10 words for future generations */ 12 17 12 18 dcl rqti_header_version_1 fixed bin int static options (constant) init (1); 12 19 12 20 12 21 /* END INCLUDE FILE ..... rqti_header.incl.pl1 .... */ 11 5 11 6 11 7 dcl prt_rqtip ptr; 11 8 11 9 dcl 1 prt_rqti aligned based (prt_rqtip), 11 10 11 11 2 header like rqti_header, /* use a common header */ 11 12 11 13 2 version fixed bin, /* version of the prt_rqti portion */ 11 14 2 opr_msg char (256), /* operator message */ 11 15 2 banner_type fixed bin, /* 0 = no banners */ 11 16 /* 1 = normal head/tail sheets */ 11 17 /* 2 = RESERVED (brief banners) */ 11 18 2 banner_bars fixed bin, /* how separator bars should be printed */ 11 19 2 banner_indent fixed bin, /* how far to indent the banner */ 11 20 2 banner_line fixed bin, /* what line to start the banner on */ 11 21 2 prt_flags, 11 22 (3 no_auto_print bit (1), /* TRUE if we want commands for each request */ 11 23 3 force_nep bit (1), /* TRUE if we set noskip regardless */ 11 24 3 force_esc bit (1), /* TRUE if we assume escapes in text */ 11 25 3 force_ctl_char bit (1), /* TRUE if we pass control characters regardless */ 11 26 3 force_nsep bit (1), /* TRUE if inner head and tail sheets of multiple copies are to be supressed */ 11 27 3 prt_ctl_pad bit (31)) unal, 11 28 11 29 2 default_bit_modes, /* rqt defaults for dprint */ 11 30 (3 non_edited bit (1), /* TRUE if not removing control chars */ 11 31 3 esc bit (1), /* TRUE if slew escapes are to be processed */ 11 32 3 single bit (1), /* TRUE if VT and FF are to be ignored */ 11 33 3 truncate bit (1), /* TRUE if truncating lines at line length */ 11 34 3 center_top_label bit (1), /* TRUE if centering top label */ 11 35 3 center_bottom_label bit (1), /* TRUE if centering bottom label */ 11 36 3 no_endpage bit (1), /* TRUE if printing over perforations (one big page) */ 11 37 3 mode_bit_pad bit (29)) unal, /* room to grow */ 11 38 2 default_position_modes, /* these are the length modes */ 11 39 3 indent fixed bin, /* columns to indent from the left */ 11 40 3 line_length fixed bin, /* print positions starting from col 1 */ 11 41 3 page_length fixed bin, /* number of lines before auto skip to top */ 11 42 3 mode_pad (10) fixed bin, /* more room to grow */ 11 43 11 44 2 rqt_pad (28) fixed bin, /* pad to 128 words */ 11 45 11 46 2 lfi, 11 47 3 paper_info, /* physical paper info */ 11 48 4 paper_length fixed bin, /* max lines to perf */ 11 49 4 paper_width fixed bin, /* max print positions */ 11 50 4 lines_per_inch fixed bin, /* normally 6 or 8 */ 11 51 3 lfi_pad (5) fixed bin, /* pad to even */ 11 52 3 channel_stops (256) bit (16) unal; /* channel stops for slews */ 11 53 11 54 dcl prt_rqti_version_1 fixed bin int static options (constant) init (1); 11 55 11 56 11 57 /* END INCLUDE FILE .... prt_rqti.incl.pl1 */ 1065 1066 /* BEGIN INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 13 2 13 3 /* This is the message header used for standard system queue messages, namely: 13 4* IO daemon requests, absentee requests, retrieval requests. 13 5**/ 13 6 13 7 /* Written by Jerry Whitmore, Spring 1978. 13 8* Modified by T. Casey, November 1978, to add values for state. 13 9* Modified by R. Kovalcik, June 1982, defer_until_process_terminataion 13 10**/ 13 11 13 12 dcl 1 queue_msg_hdr based aligned, /* standard header for all system queue messages */ 13 13 2 msg_time fixed bin (71), /* date and time of request */ 13 14 2 hdr_version fixed bin, /* version of this declaration */ 13 15 2 dirname char (168), /* directory name */ 13 16 2 ename char (32), /* entry name of file requested */ 13 17 2 message_type fixed bin, /* message format descriptor */ 13 18 /* 0 = absentee request */ 13 19 /* 1 = print request */ 13 20 /* 2 = punch request */ 13 21 /* 3 = tape request */ 13 22 /* 4 = retrieval request */ 13 23 2 bit_flags, 13 24 3 delete_sw bit (1) unal, /* delete file when done */ 13 25 3 notify bit (1) unal, /* user wants to be notified */ 13 26 3 defer_until_process_termination bit (1) unal, /* don't process request until process terminates */ 13 27 3 padding bit (33) unal, 13 28 2 state fixed bin, /* stage of processing after being queued: 13 29* 0 = initial unprocessed state, 1 = deferred, 13 30* 2 = in state transition, 3 = eligible, 4 = running, 13 31* 5 = bumped, 6 = deferred_until_process_termination */ 13 32 2 orig_queue fixed bin, /* queue the request was submitted to */ 13 33 2 std_length fixed bin, /* length of std msg for this type */ 13 34 2 dupt_lock bit (36) aligned, /* lock word for defer until process termination */ 13 35 2 hdr_pad (3) fixed bin; 13 36 13 37 dcl queue_msg_hdr_version_1 fixed bin int static options (constant) init (1); /* current version of the header */ 13 38 13 39 /* Values for queue_msg_hdr.state */ 13 40 13 41 dcl STATE_UNPROCESSED fixed bin int static options (constant) init (0); 13 42 dcl STATE_DEFERRED fixed bin int static options (constant) init (1); 13 43 dcl STATE_TRANSITION fixed bin int static options (constant) init (2); 13 44 dcl STATE_ELIGIBLE fixed bin int static options (constant) init (3); 13 45 dcl STATE_RUNNING fixed bin int static options (constant) init (4); 13 46 dcl STATE_BUMPED fixed bin int static options (constant) init (5); 13 47 dcl STATE_DUPT fixed bin int static options (constant) init (6); 13 48 13 49 /* END INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 1066 1067 /* BEGIN INCLUDE FILE...request_descriptor.incl.pl1 */ 14 2 14 3 /* Descriptor associated with an I/O daemon request */ 14 4 /* Coded August 1973 by Robert S. Coren */ 14 5 /* Modified by J. C. Whitmore, 5/78, to extend driver_data to 7 words */ 14 6 /* Modified by C. Marker, 2/23/85, changed to use mseg_message_info */ 14 7 14 8 dcl 1 request_descriptor based aligned, 14 9 2 mseg_message_info_copy like mseg_message_info, 14 10 2 seq_id fixed bin(35), /* sequential number assigned by coordinator */ 14 11 2 q fixed bin, /* priority queue in which request was submitted */ 14 12 2 contd_seq_id fixed bin(35), /* if nonzero, this is previous seq_id of continued request */ 14 13 2 prev_seq_id fixed bin(35), /* if nonzero, this is previous seq_id of restarted request */ 14 14 2 dev_class_index fixed bin, /* index of device_class entry */ 14 15 2 spare_fb fixed bin (17) unal, /* save half a word for later */ 14 16 2 charge_q fixed bin (17) unal, /* priority to use for charging */ 14 17 2 time_done fixed bin(71), /* clock time when request was completed */ 14 18 2 prev_done fixed bin(18), /* descriptor threaded ahead of this one in saved list */ 14 19 2 next_done fixed bin(18), /* " " behind " " " */ 14 20 2 driver_data bit(252), /* driver maintained data */ 14 21 2 flags, 14 22 (3 continued, /* unfinished by one driver and given to another */ 14 23 3 finished, 14 24 3 restarted, 14 25 3 cancelled, 14 26 3 dont_delete, 14 27 3 saved, /* not to be freed */ 14 28 3 keep_in_queue, /* keep request in queue */ 14 29 3 series_restart, /* this request is part of restarted series */ 14 30 3 priority_request) bit (1) unal, /* this request was given extra priority */ 14 31 3 pad bit(27) unal, 14 32 2 next_pending fixed bin(18); /* thread to next pending descriptor */ 14 33 14 34 /* END INCLUDE FILE...request_descriptor.incl.pl1 */ 1067 1068 /* BEGIN INCLUDE FILE ... spooling_info.incl.pl1 */ 15 2 /* Spooling IO Module control structure. Created 11/4/74 by Janice Phillipps */ 15 3 /* Modified 1/25/78 by J. C. Whitmore during spool driver update */ 15 4 15 5 dcl sip ptr; /* pointer to spooling info structure */ 15 6 15 7 dcl 1 spooling_info based (sip) aligned, /* spooling info structure */ 15 8 2 version fixed bin, /* version of structure */ 15 9 2 pad1 fixed bin, /* space broken for ptr allocation */ 15 10 2 iocbp ptr, /* ptr to io control block used by tape_ansi_ */ 15 11 2 switch_name char (32), /* name of io switch attached to tape_ansi_ */ 15 12 2 nvols fixed bin, /* number of tape volumes requested */ 15 13 2 density char (4), 15 14 2 block_lnth char (4), 15 15 2 volids (3) char (6), /* array of tape volume ids */ 15 16 2 filesetid char (6), /* name of current ansi file set */ 15 17 2 comment char (64), /* comment to operator at mount */ 15 18 2 phys_line_length fixed bin, 15 19 2 phys_page_length fixed bin, 15 20 2 filenumber fixed bin, /* number of current file on tape */ 15 21 2 static_number char (6) aligned, 15 22 2 flgs, 15 23 3 fst_call bit (1) unaligned, /* indicates first time thru attach code */ 15 24 3 lst_call bit (1) unaligned, /* indicates spooling tape will be detached */ 15 25 3 io_sw bit (1) unaligned, /* = "1"b if ring in tape */ 15 26 3 vol_mount bit (1) unaligned, 15 27 3 pad1 bit (32) unaligned, 15 28 2 spooling_limits, 15 29 3 spool_file_limit_sw fixed bin, /* = 1 when reached specified spooling file limit */ 15 30 3 spool_line_limit_sw fixed bin, /* = 1 when reached specifid spooling line limit */ 15 31 3 file_limit fixed bin (35), /* count of files to spool until */ 15 32 3 line_limit fixed bin (35), /* count of lines to spool until */ 15 33 2 spooling_file_count fixed bin (35), /* count of files spooled so far */ 15 34 2 spooling_line_count fixed bin (35); /* count of lines spooled so far */ 15 35 15 36 dcl spooling_info_version_4 fixed bin int static init (4) options (constant); 15 37 15 38 15 39 /* END INCLUDE FILE ... spooling_info.incl.pl1 */ 1068 1069 1070 end spool_driver_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/28/88 1232.3 spool_driver_.pl1 >special_ldd>install>MR12.2-1199>spool_driver_.pl1 898 1 05/06/74 1741.0 cond_info.incl.pl1 >ldd>include>cond_info.incl.pl1 1056 2 02/12/85 1429.5 access_audit_user_info.incl.pl1 >ldd>include>access_audit_user_info.incl.pl1 1057 3 10/28/88 1227.6 dprint_msg.incl.pl1 >special_ldd>install>MR12.2-1199>dprint_msg.incl.pl1 1058 4 10/28/88 1226.9 driver_status.incl.pl1 >special_ldd>install>MR12.2-1199>driver_status.incl.pl1 1059 5 10/28/88 1227.4 iod_tables_hdr.incl.pl1 >special_ldd>install>MR12.2-1199>iod_tables_hdr.incl.pl1 1060 6 10/28/88 1227.2 iodd_static.incl.pl1 >special_ldd>install>MR12.2-1199>iodd_static.incl.pl1 1061 7 01/10/85 2002.8 mseg_message_info.incl.pl1 >ldd>include>mseg_message_info.incl.pl1 1062 8 10/28/88 1226.4 output_request_data.incl.pl1 >special_ldd>install>MR12.2-1199>output_request_data.incl.pl1 1063 9 10/28/88 1227.1 prt_ctl.incl.pl1 >special_ldd>install>MR12.2-1199>prt_ctl.incl.pl1 1064 10 09/28/78 1359.8 prt_order_info.incl.pl1 >ldd>include>prt_order_info.incl.pl1 1065 11 07/27/84 2039.1 prt_rqti.incl.pl1 >ldd>include>prt_rqti.incl.pl1 11-5 12 02/23/78 1629.0 rqti_header.incl.pl1 >ldd>include>rqti_header.incl.pl1 1066 13 08/31/82 1636.3 queue_msg_hdr.incl.pl1 >ldd>include>queue_msg_hdr.incl.pl1 1067 14 03/15/85 0953.1 request_descriptor.incl.pl1 >ldd>include>request_descriptor.incl.pl1 1068 15 02/23/78 1619.8 spooling_info.incl.pl1 >ldd>include>spooling_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. BS constant char(1) initial packed unaligned dcl 100 ref 322 FF 000000 constant char(1) initial packed unaligned dcl 107 set ref 321 546 546 HT constant char(1) initial packed unaligned dcl 102 ref 322 NL constant char(1) initial packed unaligned dcl 104 ref 321 SP constant char(1) initial packed unaligned dcl 101 ref 322 VT constant char(1) initial packed unaligned dcl 106 ref 321 a_stream parameter char packed unaligned dcl 456 ref 453 addr builtin function dcl 53 ref 148 185 186 191 191 192 193 298 298 299 300 351 352 471 506 507 508 522 523 524 524 532 532 546 546 562 562 576 576 853 854 934 957 1024 1024 1025 1042 1042 1043 1044 1045 arg 23 based varying char(64) array level 2 dcl 626 set ref 685 692 697 706 707 708 710* 719 724 733 734 735 755 760 777 777 778 778 779 779 781* 816 821 827 829 831 834* 841 arg_list based structure level 1 dcl 626 arg_list_p parameter pointer dcl 621 ref 614 651 667 673 679 685 685 691 691 692 692 697 697 706 707 708 710 718 718 719 719 724 724 733 734 735 744 754 754 755 755 760 760 766 776 777 777 778 778 779 779 781 815 815 816 816 821 821 826 827 829 831 834 840 840 841 841 arg_p parameter pointer dcl 144 ref 141 146 assigned_devices 265 based fixed bin(17,0) level 2 dcl 6-17 ref 158 attach_name 136 based char(32) level 2 dcl 6-17 set ref 184* 186* attach_type 146 based fixed bin(17,0) level 2 dcl 6-17 ref 151 attached 436 based bit(1) level 3 in structure "iodd_static" packed packed unaligned dcl 6-17 in procedure "spool_driver_" ref 164 attached 47 based bit(1) level 3 in structure "driver_status" packed packed unaligned dcl 4-25 in procedure "spool_driver_" set ref 310* 363* auto_go 4(01) based bit(1) level 4 packed packed unaligned dcl 11-9 ref 234 banner_bars 2 based fixed bin(17,0) level 2 in structure "prt_ctl" dcl 9-22 in procedure "spool_driver_" set ref 268* 287* 699 700 701 706* 707* 708* banner_bars 122 based fixed bin(17,0) level 2 in structure "prt_rqti" dcl 11-9 in procedure "spool_driver_" ref 268 banner_indent 3 based fixed bin(17,0) level 2 in structure "prt_ctl" dcl 9-22 in procedure "spool_driver_" set ref 269* 288* banner_indent 123 based fixed bin(17,0) level 2 in structure "prt_rqti" dcl 11-9 in procedure "spool_driver_" ref 269 banner_line 4 based fixed bin(17,0) level 2 in structure "prt_ctl" dcl 9-22 in procedure "spool_driver_" set ref 270* 289* banner_line 124 based fixed bin(17,0) level 2 in structure "prt_rqti" dcl 11-9 in procedure "spool_driver_" ref 270 banner_type parameter fixed bin(17,0) dcl 459 in procedure "spool_driver_" ref 453 496 554 591 banner_type 1 based fixed bin(17,0) level 2 in structure "prt_ctl" dcl 9-22 in procedure "spool_driver_" set ref 264* 286* 725 726 727 733* 734* 735* banner_type 121 based fixed bin(17,0) level 2 in structure "prt_rqti" dcl 11-9 in procedure "spool_driver_" ref 264 bit_rate_est 132 based fixed bin(35,0) level 2 dcl 4-25 set ref 316* both 000103 constant fixed bin(17,0) initial dcl 71 set ref 253* 330* 373* 380* 394* 404* bottom_label based char level 2 in structure "dprint_msg" dcl 3-20 in procedure "spool_driver_" ref 1012 bottom_label 42 000500 automatic char(136) level 2 in structure "page_labels" dcl 973 in procedure "set_page_labels" set ref 984* 1019* 1021* bottom_label_lth 110 based fixed bin(17,0) level 2 dcl 3-20 ref 1012 busy 47(01) based bit(1) level 3 packed packed unaligned dcl 4-25 set ref 312* 485* c_code parameter fixed bin(35,0) dcl 622 set ref 614 645 648* 877* 880* 884* cancelled 53(03) based bit(1) level 3 packed packed unaligned dcl 14-8 set ref 385* center_bottom_label 102(06) based bit(1) level 3 packed packed unaligned dcl 3-20 ref 1017 center_top_label 102(05) based bit(1) level 3 packed packed unaligned dcl 3-20 ref 1003 channel_stops 10 based bit(16) array level 2 in structure "prt_ctl" packed packed unaligned dcl 9-22 in procedure "spool_driver_" set ref 261* 281* 298 298 channel_stops 210 based bit(16) array level 3 in structure "prt_rqti" packed packed unaligned dcl 11-9 in procedure "spool_driver_" ref 261 cleanup 000100 stack reference condition dcl 55 ref 207 clock builtin function dcl 53 ref 329 329 code parameter fixed bin(35,0) dcl 1037 in procedure "set_paper_info" set ref 1034 1040* 1045* code based fixed bin(35,0) level 2 in structure "st" dcl 94 in procedure "spool_driver_" set ref 185 186* 192 193* 299 300* 506 507* 508 522 523 853 854* 934 957 1025 1043 1044* 1045 code parameter fixed bin(35,0) dcl 466 in procedure "spool_driver_" set ref 453 508* 523* 530* 574* 601* 608* command 2 based varying char(64) level 2 dcl 626 ref 651 667 673 679 691 691 718 718 744 754 754 815 815 840 840 command_question 000106 stack reference condition dcl 55 ref 477 cond_info based structure level 1 dcl 897 cond_ptr parameter pointer dcl 893 ref 890 900 condition 000270 automatic char(32) packed unaligned dcl 895 set ref 900* 902* condition_name 3 based varying char(32) level 2 dcl 897 ref 900 control 102 based structure level 2 dcl 3-20 conversion 000114 stack reference condition dcl 55 ref 639 convert builtin function dcl 53 ref 685 777 778 779 convert_binary_integer_$decimal_string 000260 constant entry external dcl 118 ref 926 945 949 counts based structure level 1 dcl 10-6 counts_data 000242 automatic structure level 1 unaligned dcl 82 set ref 532 532 562 562 576 576 ctl_term 344 based structure level 2 dcl 6-17 current_devices 266 based fixed bin(17,0) level 2 dcl 6-17 set ref 360* data_ptr parameter pointer dcl 464 set ref 453 472 530* 574* 597* 597 597 date_string 000122 automatic char(24) packed unaligned dcl 57 set ref 329* 330* date_time_ 000262 constant entry external dcl 119 ref 329 defer_time_limit 133 based fixed bin(35,0) level 2 dcl 4-25 set ref 317* demount_tape 000115 constant fixed bin(17,0) initial dcl 78 set ref 524 524 descriptor 146 based structure level 2 dcl 4-25 set ref 351 dev_ctl_ptr 130 based pointer level 2 dcl 4-25 set ref 148* 353 470 647 dev_in_stream 106 based char(32) level 2 dcl 6-17 set ref 182* dev_io_stream 76 based char(32) level 2 dcl 6-17 set ref 179* 211* 334* dev_out_iocbp 66 based pointer level 2 dcl 4-25 set ref 215* 530* 574* 863* dev_out_stream 72 based char(32) level 2 dcl 4-25 set ref 181* 215* 298* 746* 859* 861* 865* 866* 1042* device_dim 126 based char(32) level 2 dcl 6-17 set ref 177* 184* device_id 20 based char(32) level 2 dcl 4-25 ref 692 719 755 816 841 divide builtin function dcl 53 ref 1004 1018 dmp 000300 automatic pointer dcl 3-18 set ref 352* 371 379 380 391 391 391 394 402 404 404 471* 920 921 922 923 924 925 926 944 945 948 949 987 989 991 992 993 997 1003 1012 1017 dont_delete 53(04) based bit(1) level 3 packed packed unaligned dcl 14-8 set ref 386* dprint_msg based structure level 1 dcl 3-20 dprint_msg_version_3 constant fixed bin(17,0) initial dcl 3-62 ref 391 dprint_msg_version_4 constant fixed bin(17,0) initial dcl 3-62 ref 391 dprint_msg_version_5 constant fixed bin(17,0) initial dcl 3-62 ref 391 driver_ptr 304 based pointer level 2 dcl 6-17 ref 147 350 469 646 driver_status based structure level 1 dcl 4-25 driver_wait_time 5 based fixed bin(17,0) level 3 dcl 11-9 ref 236 ec parameter fixed bin(35,0) dcl 970 in procedure "set_page_labels" set ref 966 981* 1025* ec 000130 automatic fixed bin(35,0) dcl 57 in procedure "spool_driver_" set ref 215* 216 217* 295* 296 304* 305 438* 480* 482 483* 544* 648* 681* 810* 863* 880 elem_size 112 based fixed bin(17,0) level 2 dcl 4-25 set ref 314* 416* ename 55 based char(32) level 2 dcl 13-12 set ref 380* 394* 404* err_msg constant fixed bin(17,0) initial dcl 77 ref 591 error 000110 constant fixed bin(17,0) initial dcl 74 set ref 153* 159* 165* 186* 193* 200* 217* 227* 241* 248* 300* 324* 358* 483* 507* 854* error_msg based varying char(256) dcl 467 ref 597 597 error_table_$action_not_performed 000254 external static fixed bin(35,0) dcl 115 ref 608 884 error_table_$fatal_error 000252 external static fixed bin(35,0) dcl 114 set ref 153* 159* 165* 227* 241* 248* esc 102(04) based bit(1) level 3 packed packed unaligned dcl 3-20 ref 920 field 000606 automatic fixed bin(17,0) dcl 978 set ref 987* 989* 992* 992 1003 1004 1017 1018 file_limit 57 based fixed bin(35,0) level 3 dcl 15-7 ref 431 432 finished 53(01) based bit(1) level 3 packed packed unaligned dcl 14-8 set ref 388* flags 53 based structure level 2 in structure "request_descriptor" dcl 14-8 in procedure "spool_driver_" flags based structure level 2 in structure "prt_ctl" dcl 9-22 in procedure "spool_driver_" set ref 221* flags 310 based structure level 2 in structure "iodd_static" dcl 6-17 in procedure "spool_driver_" force_esc 0(01) based bit(1) level 3 in structure "prt_ctl" packed packed unaligned dcl 9-22 in procedure "spool_driver_" set ref 266* 284* 822 833* 920 force_esc 125(02) based bit(1) level 3 in structure "prt_rqti" packed packed unaligned dcl 11-9 in procedure "spool_driver_" ref 266 force_nep based bit(1) level 3 in structure "prt_ctl" packed packed unaligned dcl 9-22 in procedure "spool_driver_" set ref 265* 283* 822 832* 921 force_nep 125(01) based bit(1) level 3 in structure "prt_rqti" packed packed unaligned dcl 11-9 in procedure "spool_driver_" ref 265 get_spooling_data_$initial 000266 constant entry external dcl 121 ref 304 get_spooling_data_$renew_limits 000264 constant entry external dcl 120 ref 438 hdr_version 2 based fixed bin(17,0) level 2 dcl 13-12 ref 371 head_sheet_$print_head_sheet 000270 constant entry external dcl 122 ref 530 header constant fixed bin(17,0) initial dcl 75 in procedure "spool_driver_" ref 496 header based structure level 2 in structure "prt_rqti" dcl 11-9 in procedure "spool_driver_" header_version 2 based fixed bin(17,0) level 3 dcl 11-9 set ref 226 227* heading_lth 106 based fixed bin(17,0) level 2 dcl 3-20 ref 997 1012 i 000423 automatic fixed bin(17,0) dcl 915 in procedure "set_user_output_modes" set ref 929* 930 932 952* 953 955 i 000131 automatic fixed bin(17,0) dcl 57 in procedure "spool_driver_" set ref 546* 692* 695* 696* 697 697 706 707 708 719* 722* 723* 724 724 733 734 735 755* 758* 759* 760 760 766 776* 776* 777 777 778 778 779 779 781* 816* 819* 820* 821 821 826* 826* 827 829 831 834* 841* 844* 845* ind 000605 automatic fixed bin(17,0) dcl 977 set ref 993* 995* 1004 1018 io_stat 000136 automatic bit(72) dcl 57 set ref 184* 185 186 191* 192 193 210* 211* 298* 299 300 334* 445* 500* 504* 506 507 508 509* 517* 519* 522 523 524* 532* 538* 540* 546* 562* 567* 569* 571* 576* 583* 595* 597* 599* 746* 847* 851* 853 854 859* 861* 865* 866* 869* 933* 934 956* 957 1024* 1025 1042* 1043 1044 1045 ioa_ 000272 constant entry external dcl 123 ref 209 515 585 iodd_listen_ 000274 constant entry external dcl 124 ref 332 iodd_msg_ 000276 constant entry external dcl 125 ref 153 159 165 186 193 200 217 227 241 248 253 300 306 324 330 358 373 380 394 404 483 507 641 652 653 654 655 657 659 660 661 662 663 703 710 729 737 750 761 767 781 786 791 795 799 807 822 834 854 1044 1049 iodd_static based structure level 1 dcl 6-17 ios_$attach 000300 constant entry external dcl 126 ref 184 ios_$changemode 000302 constant entry external dcl 127 ref 595 599 746 933 956 ios_$detach 000304 constant entry external dcl 128 ref 211 334 445 ios_$order 000306 constant entry external dcl 129 ref 191 210 298 500 504 509 517 519 524 532 538 540 562 567 569 571 576 583 847 851 859 861 865 866 869 1024 1042 ios_$write 000310 constant entry external dcl 130 ref 546 597 iox_$find_iocb 000256 constant entry external dcl 117 ref 215 keep_in_queue 53(06) based bit(1) level 3 packed packed unaligned dcl 14-8 set ref 375* 399* 409* len 000604 automatic fixed bin(17,0) dcl 976 set ref 1001* 1003 1004* 1004 1006 1016* 1017 1018* 1018 1019 length builtin function dcl 53 ref 597 597 919 929 952 1001 1016 lfi 200 based structure level 2 dcl 11-9 line_count 4 000242 automatic fixed bin(17,0) level 2 dcl 82 set ref 534 564 578 line_limit 60 based fixed bin(35,0) level 3 dcl 15-7 ref 427 428 line_lth 104 based fixed bin(17,0) level 2 dcl 3-20 set ref 402 404* 944 945* 987 989 lines_per_inch 7 based fixed bin(17,0) level 3 in structure "prt_ctl" dcl 9-22 in procedure "spool_driver_" set ref 259* 279* 761* 774 805* 807* 1049* lines_per_inch 202 based fixed bin(17,0) level 4 in structure "prt_rqti" dcl 11-9 in procedure "spool_driver_" ref 259 lmargin 103 based fixed bin(17,0) level 2 dcl 3-20 set ref 948 949* 991 992 993 log 000103 constant fixed bin(17,0) initial dcl 72 set ref 373* 380* 394* 404* logout_pending 310(05) based bit(1) level 3 packed packed unaligned dcl 6-17 set ref 362* master 000115 constant fixed bin(17,0) initial dcl 69 set ref 153* 159* 165* 186* 193* 200* 217* 227* 241* 248* 300* 306* 324* 358* 483* 507* 854* master_hold 310(06) based bit(1) level 3 packed packed unaligned dcl 6-17 set ref 366* 484* max builtin function dcl 53 ref 236 message 240 based fixed bin(17,0) level 2 dcl 4-25 set ref 352 471 message_type 65 based fixed bin(17,0) level 2 in structure "queue_msg_hdr" dcl 13-12 in procedure "spool_driver_" ref 379 message_type 113 based fixed bin(17,0) level 2 in structure "driver_status" dcl 4-25 in procedure "spool_driver_" set ref 315* 379 meter 4 based bit(1) level 4 in structure "prt_rqti" packed packed unaligned dcl 11-9 in procedure "spool_driver_" ref 233 meter 0(03) based bit(1) level 3 in structure "prt_ctl" packed packed unaligned dcl 9-22 in procedure "spool_driver_" set ref 233* 273* mod builtin function dcl 53 ref 766 mseg_message_info based structure level 1 dcl 7-9 mseg_message_info_copy based structure level 2 dcl 14-8 n_tokens 1 based fixed bin(17,0) level 2 dcl 626 ref 685 692 697 719 724 755 760 766 776 816 821 826 841 nep 102 based bit(1) level 3 packed packed unaligned dcl 3-20 ref 921 net 000132 automatic fixed bin(17,0) dcl 57 set ref 597* new_ll 000255 automatic fixed bin(17,0) dcl 633 set ref 772* 777* 777 785 785 803 new_lpi 000256 automatic fixed bin(17,0) dcl 634 set ref 774* 779* 779 790 790 805 new_pl 000254 automatic fixed bin(17,0) dcl 632 set ref 773* 778* 778 794 798 804 nl_vt_ff 000237 internal static char(3) packed unaligned dcl 99 set ref 321* 997 1012 nm 000322 automatic varying char(128) dcl 913 set ref 918* 919 919* 919 920* 920 921* 921 922* 922 923* 923 924* 924 927* 927 929 931 943* 946* 946 950* 950 952 954 no_auto_print 0(02) based bit(1) level 3 in structure "prt_ctl" packed packed unaligned dcl 9-22 in procedure "spool_driver_" set ref 267* 285* no_auto_print 125 based bit(1) level 3 in structure "prt_rqti" packed packed unaligned dcl 11-9 in procedure "spool_driver_" ref 267 no_restart_label 000232 internal static label variable dcl 92 set ref 355* 474 non_edited 102(02) based bit(1) level 3 packed packed unaligned dcl 3-20 ref 923 normal 000115 constant fixed bin(17,0) initial dcl 73 set ref 253* 306* 330* 641* 652* 653* 654* 655* 657* 659* 660* 661* 662* 663* 703* 710* 729* 737* 750* 761* 767* 781* 786* 791* 795* 799* 807* 822* 834* 1044* 1049* not 000257 automatic bit(1) packed unaligned dcl 635 set ref 827* 829 832 833 null builtin function dcl 53 ref 210 210 223 500 500 504 504 509 509 517 517 519 519 538 538 540 540 567 567 569 569 571 571 583 583 847 847 851 851 859 859 861 861 865 865 866 866 869 869 om 000363 automatic char(128) dcl 914 set ref 933* 956* omode 000140 automatic char(256) dcl 65 set ref 595* 599* 746* opr_msg 21 based char(256) level 2 dcl 11-9 set ref 253 253* 699* 700* 701* 702* 703* 725* 726* 727* 728* 729* opt 000133 automatic char(3) packed unaligned dcl 57 set ref 304* 305 436* 438* 444 ordata based structure level 1 dcl 8-17 ordatap 000302 automatic pointer dcl 8-67 set ref 472* 918 931 932 933 934 943 954 955 956 957 output_mode 221 based char(128) level 2 dcl 8-17 set ref 918 931* 932* 933* 934* 943* 954* 955* 956* 957* output_request_ 000312 constant entry external dcl 131 ref 416 output_request_$error_during_request 000314 constant entry external dcl 132 ref 902 output_request_$set_single_copy 000316 constant entry external dcl 133 ref 748 p 000226 internal static pointer dcl 90 set ref 147* 148 181 215 215 223 225 298 310 311 312 313 314 315 316 317 350* 351 352 353 363 364 379 416 469* 470 471 485 530 574 646* 647 692 719 746 755 816 841 859 861 863 865 866 1042 p2 000240 automatic pointer dcl 66 set ref 351* 373 373 375 380 380 380 385 386 388 394 394 394 399 404 404 404 409 page_labels 000500 automatic structure level 1 dcl 973 set ref 1024 1024 page_lth 105 based fixed bin(17,0) level 2 dcl 3-20 set ref 925 926* paper_info 5 based structure level 2 in structure "prt_ctl" dcl 9-22 in procedure "spool_driver_" set ref 1042 1042 paper_info 200 based structure level 3 in structure "prt_rqti" dcl 11-9 in procedure "spool_driver_" paper_length 200 based fixed bin(17,0) level 4 dcl 11-9 ref 256 paper_width 201 based fixed bin(17,0) level 4 dcl 11-9 ref 258 phys_line_length 6 based fixed bin(17,0) level 3 dcl 9-22 set ref 258* 278* 324 324* 402 761* 772 803* 807* 987 phys_page_length 5 based fixed bin(17,0) level 3 dcl 9-22 set ref 256* 276* 761* 773 804* 807* 1049* prt_ctl based structure level 1 dcl 9-22 prt_ctl_ptr 000304 automatic pointer dcl 9-20 set ref 148* 221 233 256 258 259 261 264 265 266 267 268 269 270 273 276 278 279 281 283 284 285 286 287 288 289 298 298 324 324 353* 402 470* 530* 574* 647* 699 700 701 706 707 708 725 726 727 733 734 735 761 761 761 772 773 774 803 804 805 807 807 807 822 822 832 833 863* 920 921 987 1042 1042 1049 1049 prt_flags 125 based structure level 2 dcl 11-9 prt_rqti based structure level 1 dcl 11-9 prt_rqti_version_1 000115 constant fixed bin(17,0) initial dcl 11-54 set ref 246 248* prt_rqtip 000306 automatic pointer dcl 11-7 set ref 225* 226 227 233 234 236 238 240 246 248 253 253 256 258 259 261 264 265 266 267 268 269 270 699 700 701 702 703 725 726 727 728 729 q 33 based fixed bin(17,0) level 2 dcl 14-8 set ref 373* 380* 394* 404* queue_msg_hdr based structure level 1 dcl 13-12 queue_msg_hdr_version_1 constant fixed bin(17,0) initial dcl 13-37 ref 371 quit_during_request 310(09) based bit(1) level 3 packed packed unaligned dcl 6-17 set ref 414* rcode 000134 automatic fixed bin(35,0) dcl 57 set ref 416* 417 ready 47(02) based bit(1) level 3 packed packed unaligned dcl 4-25 set ref 311* 364* request_descriptor based structure level 1 dcl 14-8 request_in_progress 310(02) based bit(1) level 3 packed packed unaligned dcl 6-17 ref 745 902 request_pending 46 based bit(36) level 2 dcl 4-25 set ref 313* resume 000000 stack reference condition dcl 55 ref 486 reverse builtin function dcl 53 ref 1001 1016 rqti_header based structure level 1 dcl 12-4 rqti_header_version_1 000115 constant fixed bin(17,0) initial dcl 12-18 set ref 226 227* rqti_ptr 64 based pointer level 2 dcl 4-25 ref 223 225 rqti_switches 4 based structure level 3 dcl 11-9 rtrim builtin function dcl 53 ref 918 runout_requests 310(10) based bit(1) level 3 packed packed unaligned dcl 6-17 set ref 361* save_code 000253 automatic fixed bin(35,0) dcl 623 set ref 645* 681 877 sender_id 13 based char(32) level 3 packed packed unaligned dcl 14-8 set ref 380* 394* 404* seq_id 32 based fixed bin(35,0) level 2 dcl 14-8 set ref 373* 380* 394* 404* set_labels 000607 automatic bit(1) packed unaligned dcl 979 set ref 982* 1000* 1015* 1023 single 102(01) based bit(1) level 3 packed packed unaligned dcl 3-20 ref 922 sip 000310 automatic pointer dcl 15-5 set ref 197* 199 304* 425* 427 428 428 428 431 432 432 432 438 438 438* 479* 480* 493* 534 534 564 564 578 578 581 581 siptr 000250 automatic pointer level 2 dcl 84 set ref 197 slave constant fixed bin(17,0) initial dcl 70 set ref 295* slave_hold 310(07) based bit(1) level 3 packed packed unaligned dcl 6-17 set ref 234* 274* 319* 367* 417* source parameter fixed bin(17,0) dcl 617 in procedure "spool_driver_" set ref 614 641* 652* 653* 654* 655* 657* 659* 660* 661* 662* 663* 703* 710* 729* 737* 750* 761* 767* 781* 786* 791* 795* 799* 807* 810* 822* 834* source parameter fixed bin(17,0) dcl 1038 in procedure "set_paper_info" set ref 1034 1044* 1049* space_ht_bs 000236 internal static char(3) packed unaligned dcl 98 set ref 322* 999 1014 spool_file_limit_sw 55 based fixed bin(17,0) level 3 dcl 15-7 set ref 432* 438 spool_line_limit_sw 56 based fixed bin(17,0) level 3 dcl 15-7 set ref 428* 438 spool_static_$debug 000246 external static fixed bin(17,0) dcl 111 set ref 170* 209 515 585 669* 675* spool_static_$file_attch 000244 external static fixed bin(17,0) dcl 110 set ref 174* 500 514* 586* 847 857* 870* spool_static_$norestart 000242 external static fixed bin(17,0) dcl 109 set ref 173* 357 419 474 510* 526* spool_static_$tally_printed 000250 external static fixed bin(17,0) dcl 112 set ref 175* 210 spooling_data 000250 automatic structure level 1 dcl 84 set ref 191 191 spooling_file_count 61 based fixed bin(35,0) level 2 dcl 15-7 set ref 432 581* 581 spooling_info based structure level 1 dcl 15-7 spooling_info_version_4 constant fixed bin(17,0) initial dcl 15-36 ref 199 spooling_limits 55 based structure level 2 dcl 15-7 spooling_line_count 62 based fixed bin(35,0) level 2 dcl 15-7 set ref 428 534* 534 564* 564 578* 578 spooling_question_handler_ 000320 constant entry external dcl 134 ref 480 st based structure level 1 dcl 94 stat_p 000240 internal static pointer dcl 6-15 set ref 146* 147 151 158 164 170 177 179 182 184 184 186 211 234 236 274 275 319 332* 334 350 360 361 362 365 366 367 414 416* 417 469 484 558 646 661 668 674 679 745 902 state parameter fixed bin(17,0) dcl 618 ref 614 static_ctl 000010 internal static structure level 1 dcl 80 set ref 148 static_sip 000224 internal static pointer initial dcl 89 set ref 197* 425 479 493 status_flags 47 based structure level 2 dcl 4-25 step 310(08) based bit(1) level 3 packed packed unaligned dcl 6-17 set ref 365* stream parameter char dcl 969 in procedure "set_page_labels" set ref 966 1024* stream 000214 internal static char(32) dcl 88 in procedure "spool_driver_" set ref 179* 181 184* 191* 210* 416* 445* 500* 504* 509* 517* 519* 524* 532* 538* 540* 544* 546* 562* 567* 569* 571* 576* 583* 595* 597* 599* 847* 851* 869* 933* 956* string builtin function dcl 53 set ref 221* 281* substr builtin function dcl 53 set ref 827 829 932* 955* 1006* 1019* tail_sheet_$print_tail_sheet 000322 constant entry external dcl 135 ref 574 temp_label 000436 automatic char(136) packed unaligned dcl 971 set ref 997* 999 1001 1001 1006 1009 1012* 1014 1016 1016 1019 1021 test_entry 310(01) based bit(1) level 3 packed packed unaligned dcl 6-17 ref 170 558 661 668 674 679 text_offset based structure level 1 packed packed unaligned dcl 5-45 time 000230 internal static fixed bin(71,0) initial dcl 91 set ref 558 558* 685* 685 687* timer_manager_$sleep 000324 constant entry external dcl 136 ref 558 top_label based char level 2 in structure "dprint_msg" dcl 3-20 in procedure "spool_driver_" ref 997 top_label 000500 automatic char(136) level 2 in structure "page_labels" dcl 973 in procedure "set_page_labels" set ref 984* 1006* 1009* top_label_lth 107 based fixed bin(17,0) level 2 dcl 3-20 ref 997 1012 trailer constant fixed bin(17,0) initial dcl 76 ref 554 translate builtin function dcl 972 ref 997 1012 truncate 102(03) based bit(1) level 3 packed packed unaligned dcl 3-20 ref 924 type_code 3 based fixed bin(17,0) level 3 dcl 11-9 ref 238 240 v 000424 automatic varying char(12) dcl 916 set ref 926* 927 945* 946 949* 950 value 000260 automatic char(32) packed unaligned dcl 636 set ref 829* 831* 832 832 833 833 verify builtin function dcl 53 ref 999 1001 1014 1016 version 76 based fixed bin(17,0) level 2 in structure "dprint_msg" dcl 3-20 in procedure "spool_driver_" ref 391 391 391 version 20 based fixed bin(17,0) level 2 in structure "prt_rqti" dcl 11-9 in procedure "spool_driver_" set ref 246 248* version based fixed bin(17,0) level 2 in structure "spooling_info" dcl 15-7 in procedure "spool_driver_" ref 199 wakeup_time 300 based fixed bin(71,0) level 2 dcl 6-17 set ref 236* 275* whoami 000001 constant char(24) initial packed unaligned dcl 68 set ref 153* 159* 165* 186* 193* 200* 217* 227* 241* 248* 300* 483* 507* 854* 1044* write_sample_prt_banner_ 000326 constant entry external dcl 137 ref 863 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BRIEF_BANNERS internal static fixed bin(17,0) initial dcl 9-49 IODT_VERSION_5 internal static char(8) initial packed unaligned dcl 5-49 MSEG_MESSAGE_INFO_V1 internal static char(8) initial dcl 7-28 MSEG_READ_AFTER_SPECIFIED internal static fixed bin(17,0) initial dcl 7-30 MSEG_READ_BEFORE_SPECIFIED internal static fixed bin(17,0) initial dcl 7-30 MSEG_READ_DELETE internal static bit(36) initial dcl 7-38 MSEG_READ_FIRST internal static fixed bin(17,0) initial dcl 7-30 MSEG_READ_LAST internal static fixed bin(17,0) initial dcl 7-30 MSEG_READ_OWN internal static bit(36) initial dcl 7-38 MSEG_READ_SPECIFIED internal static fixed bin(17,0) initial dcl 7-30 NORMAL_BANNERS internal static fixed bin(17,0) initial dcl 9-49 NORMAL_BANNER_BARS internal static fixed bin(17,0) initial dcl 9-54 NO_BANNERS internal static fixed bin(17,0) initial dcl 9-49 NO_BANNER_BARS internal static fixed bin(17,0) initial dcl 9-54 REQUEST automatic structure level 1 dcl 8-69 SINGLE_BANNER_BARS internal static fixed bin(17,0) initial dcl 9-54 STATE_BUMPED internal static fixed bin(17,0) initial dcl 13-46 STATE_DEFERRED internal static fixed bin(17,0) initial dcl 13-42 STATE_DUPT internal static fixed bin(17,0) initial dcl 13-47 STATE_ELIGIBLE internal static fixed bin(17,0) initial dcl 13-44 STATE_RUNNING internal static fixed bin(17,0) initial dcl 13-45 STATE_TRANSITION internal static fixed bin(17,0) initial dcl 13-43 STATE_UNPROCESSED internal static fixed bin(17,0) initial dcl 13-41 audit_user_info based structure level 1 dcl 2-13 audit_user_info_ptr automatic pointer dcl 2-11 audit_user_info_version_1 internal static char(8) initial packed unaligned dcl 2-23 channel_stops based bit(16) array packed unaligned dcl 10-25 driver_status_ptr automatic pointer dcl 4-24 forms_max_lth internal static fixed bin(17,0) initial dcl 3-55 head_max_lth internal static fixed bin(17,0) initial dcl 3-55 iod_tables_hdr based structure level 1 dcl 5-23 ithp automatic pointer dcl 5-22 label_max_lth internal static fixed bin(17,0) initial dcl 3-55 mseg_message_info_ptr automatic pointer dcl 7-7 orderp automatic pointer dcl 10-4 page_labels based structure level 1 dcl 10-21 paper_info based structure level 1 dcl 10-27 path_max_lth internal static fixed bin(17,0) initial dcl 3-55 position_data based structure level 1 dcl 10-14 ret_error_count based fixed bin(17,0) dcl 10-32 text_strings based structure level 1 dcl 5-39 text_strings_ptr automatic pointer dcl 5-38 NAMES DECLARED BY EXPLICIT CONTEXT. be_nice 003465 constant label dcl 386 ref 377 400 411 clean_out 003201 constant label dcl 334 ref 194 201 218 230 243 250 296 301 307 cmd_error 010647 constant label dcl 884 ref 642 668 674 712 738 769 782 787 792 796 800 855 command 005453 constant entry external dcl 614 default_handler 010656 constant entry external dcl 890 end_cmd 010643 constant label dcl 880 set ref 664 670 676 682 688 704 715 730 741 751 764 812 837 872 init 001417 constant entry external dcl 141 kill_driver 003255 constant label dcl 358 ref 355 419 446 print_banner 004023 constant entry external dcl 453 ref 416 416 request 003230 constant entry external dcl 347 set_defaults 002600 constant label dcl 276 set ref 238 set_line_mode 011202 constant entry internal dcl 940 ref 543 set_page_labels 011422 constant entry internal dcl 966 ref 544 set_paper_info 011730 constant entry internal dcl 1034 ref 295 810 set_user_output_modes 010710 constant entry internal dcl 910 ref 549 spool_driver_ 001406 constant entry external dcl 48 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 12562 13112 12127 12572 Length 14056 12127 330 727 432 232 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME spool_driver_ 924 external procedure is an external procedure. on unit on line 207 98 on unit on unit on line 477 108 on unit on unit on line 639 98 on unit set_user_output_modes internal procedure shares stack frame of external procedure spool_driver_. set_page_labels internal procedure shares stack frame of external procedure spool_driver_. set_paper_info internal procedure shares stack frame of external procedure spool_driver_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 static_ctl spool_driver_ 000214 stream spool_driver_ 000224 static_sip spool_driver_ 000226 p spool_driver_ 000230 time spool_driver_ 000232 no_restart_label spool_driver_ 000236 space_ht_bs spool_driver_ 000237 nl_vt_ff spool_driver_ 000240 stat_p spool_driver_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME spool_driver_ 000122 date_string spool_driver_ 000130 ec spool_driver_ 000131 i spool_driver_ 000132 net spool_driver_ 000133 opt spool_driver_ 000134 rcode spool_driver_ 000136 io_stat spool_driver_ 000140 omode spool_driver_ 000240 p2 spool_driver_ 000242 counts_data spool_driver_ 000250 spooling_data spool_driver_ 000253 save_code spool_driver_ 000254 new_pl spool_driver_ 000255 new_ll spool_driver_ 000256 new_lpi spool_driver_ 000257 not spool_driver_ 000260 value spool_driver_ 000270 condition spool_driver_ 000300 dmp spool_driver_ 000302 ordatap spool_driver_ 000304 prt_ctl_ptr spool_driver_ 000306 prt_rqtip spool_driver_ 000310 sip spool_driver_ 000322 nm set_user_output_modes 000363 om set_user_output_modes 000423 i set_user_output_modes 000424 v set_user_output_modes 000436 temp_label set_page_labels 000500 page_labels set_page_labels 000604 len set_page_labels 000605 ind set_page_labels 000606 field set_page_labels 000607 set_labels set_page_labels THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac tra_ext_1 tra_ext_2 mdfx1 signal_op enable_op shorten_stack ext_entry ext_entry_desc int_entry set_chars_eis verify_eis any_to_any_truncate_ translate_3 clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_binary_integer_$decimal_string date_time_ get_spooling_data_$initial get_spooling_data_$renew_limits head_sheet_$print_head_sheet ioa_ iodd_listen_ iodd_msg_ ios_$attach ios_$changemode ios_$detach ios_$order ios_$write iox_$find_iocb output_request_ output_request_$error_during_request output_request_$set_single_copy spooling_question_handler_ tail_sheet_$print_tail_sheet timer_manager_$sleep write_sample_prt_banner_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$fatal_error spool_static_$debug spool_static_$file_attch spool_static_$norestart spool_static_$tally_printed LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 48 001405 51 001413 141 001414 146 001424 147 001431 148 001433 151 001437 153 001443 155 001475 158 001476 159 001501 161 001533 164 001534 165 001537 167 001571 170 001572 173 001576 174 001577 175 001600 177 001601 179 001604 181 001612 182 001615 184 001620 185 001646 186 001652 188 001711 191 001712 192 001746 193 001752 194 002005 197 002006 199 002012 200 002015 201 002050 207 002051 209 002065 210 002106 211 002144 212 002172 215 002173 216 002215 217 002217 218 002252 221 002253 223 002254 225 002262 226 002264 227 002267 230 002327 233 002330 234 002335 236 002346 238 002355 240 002357 241 002361 243 002413 246 002414 248 002417 250 002457 253 002460 256 002522 258 002526 259 002530 261 002532 264 002541 265 002543 266 002550 267 002555 268 002562 269 002564 270 002566 271 002570 273 002571 274 002573 275 002576 276 002600 278 002603 279 002605 281 002607 283 002613 284 002615 285 002617 286 002621 287 002623 288 002624 289 002625 295 002626 296 002630 298 002632 299 002667 300 002673 301 002726 304 002727 305 002750 306 002756 307 003012 310 003013 311 003017 312 003021 313 003023 314 003024 315 003026 316 003030 317 003031 319 003032 321 003035 322 003043 324 003051 329 003113 330 003132 332 003172 334 003201 336 003226 347 003227 350 003235 351 003241 352 003243 353 003245 355 003247 357 003252 358 003255 360 003311 361 003314 362 003316 363 003320 364 003323 365 003325 366 003327 367 003331 368 003333 371 003334 373 003337 375 003401 377 003404 379 003405 380 003410 385 003462 386 003465 388 003470 389 003472 391 003473 394 003502 399 003554 400 003557 402 003560 404 003563 409 003640 411 003643 414 003644 416 003647 417 003703 419 003711 425 003715 427 003717 428 003722 431 003726 432 003730 436 003734 438 003736 444 003764 445 003770 446 004014 449 004015 453 004016 469 004036 470 004042 471 004044 472 004046 474 004052 477 004060 479 004074 480 004077 482 004107 483 004112 484 004145 485 004151 486 004154 488 004157 493 004160 496 004163 500 004167 504 004224 506 004260 507 004264 508 004317 509 004322 510 004355 511 004360 514 004361 515 004364 517 004402 519 004433 522 004467 523 004471 524 004473 526 004526 527 004531 530 004532 532 004551 534 004604 538 004611 540 004645 543 004676 544 004677 546 004714 549 004754 550 004755 554 004756 558 004760 562 005002 564 005035 567 005042 569 005076 571 005127 574 005162 576 005201 578 005234 581 005241 583 005245 585 005300 586 005317 587 005321 591 005322 595 005324 597 005352 599 005413 601 005440 602 005442 608 005443 610 005445 614 005446 639 005460 641 005474 642 005531 645 005534 646 005537 647 005543 648 005545 651 005547 652 005556 653 005611 654 005646 655 005703 657 005740 659 005775 660 006035 661 006071 662 006132 663 006166 664 006225 667 006226 668 006233 669 006237 670 006241 673 006242 674 006247 675 006253 676 006254 679 006255 681 006266 682 006267 685 006270 687 006304 688 006306 691 006307 692 006321 695 006334 696 006337 697 006341 699 006355 700 006364 701 006373 702 006402 703 006406 704 006450 706 006451 707 006460 708 006470 710 006500 712 006541 715 006542 718 006543 719 006555 722 006570 723 006573 724 006575 725 006611 726 006620 727 006627 728 006636 729 006642 730 006704 733 006705 734 006715 735 006724 737 006734 738 006767 741 006770 744 006771 745 006776 746 007002 748 007031 749 007036 750 007037 751 007075 754 007076 755 007110 758 007123 759 007126 760 007130 761 007141 764 007205 766 007206 767 007214 769 007247 772 007250 773 007252 774 007254 776 007256 777 007267 778 007313 779 007331 781 007347 782 007412 784 007413 785 007416 786 007423 787 007460 790 007461 791 007466 792 007523 794 007524 795 007527 796 007564 798 007565 799 007567 800 007624 803 007625 804 007630 805 007632 807 007634 810 007702 812 007713 815 007714 816 007726 819 007741 820 007744 821 007746 822 007757 824 010032 826 010033 827 010043 829 010055 831 010072 832 010100 833 010116 834 010135 835 010203 837 010205 840 010206 841 010220 844 010233 845 010236 847 010240 851 010275 853 010331 854 010335 855 010370 857 010371 859 010374 861 010425 863 010462 865 010514 866 010551 869 010603 870 010636 872 010640 877 010641 878 010642 880 010643 882 010646 884 010647 886 010653 890 010654 900 010663 902 010672 906 010707 910 010710 918 010711 919 010732 920 010743 921 010764 922 011004 923 011021 924 011036 925 011053 926 011056 927 011067 928 011133 929 011134 930 011136 931 011137 932 011144 933 011147 934 011173 937 011201 940 011202 943 011203 944 011210 945 011214 946 011225 947 011271 948 011272 949 011276 950 011307 951 011353 952 011354 953 011356 954 011357 955 011364 956 011367 957 011413 960 011421 966 011422 981 011433 982 011435 984 011436 987 011444 989 011454 991 011455 992 011457 993 011461 994 011463 995 011464 997 011466 999 011510 1000 011520 1001 011522 1003 011537 1004 011544 1006 011551 1008 011561 1009 011562 1012 011565 1014 011613 1015 011622 1016 011624 1017 011641 1018 011646 1019 011653 1020 011663 1021 011664 1023 011667 1024 011671 1025 011724 1028 011727 1034 011730 1040 011732 1042 011733 1043 011770 1044 011774 1045 012030 1046 012033 1049 012034 1053 012100 ----------------------------------------------------------- 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