COMPILATION LISTING OF SEGMENT write_control_form_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/28/88 1335.6 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 /* format: style4 */ 13 14 write_control_form_: proc (a_type, a_stream, a_ordatap, a_code); 15 16 /* This is the program which acts as a transfer vector for printing control 17* forms of different formats based on the a_type argument. The a_stream is 18* passed on to the actual program which knows the format to be used. 19* 20* The "write_sample_form_" entry generates a dummy set of data to pass on 21* to the form writing program to check alignment. */ 22 23 /* Originally coded in March 1975 by J. C. Whitmore */ 24 /* Modified in Dec 1975 by J. C. Whitmore for new ordata structure info */ 25 /* Modified in April 1976 by J. C. Whitmore to correct the declaration of iodd_ to named ext static */ 26 /* Modified in August 1977 by J. C. Whitmore to special case the form names "head_sheet" and "tail_sheet" */ 27 /* Modified in March 1978 by J. C. Whitmore for new dprint_msg format and new ordata info */ 28 /* Modified by J. C. Whitmore, 8/78, for new output_request_data info */ 29 /* Modified by J. C. Whitmore, 8/79, to add write_sample_prt_banner_ entry */ 30 /* Modified by R. McDonald May 1980 to include page charges for printing. (UNCA) */ 31 /* Modified by E. N. Kittlitz June 1981 for UNCA page charges */ 32 33 34 /****^ HISTORY COMMENTS: 35* 1) change(87-05-10,Gilcrease), approve(87-05-13,MCR7686), 36* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 37* Updated dprint_msg to version 4. 38* 2) change(88-02-18,Brunelle), approve(88-09-16,MCR7911), 39* audit(88-10-20,Wallman), install(88-10-28,MR12.2-1199): 40* Added $init entrypoint to take ptr to iodd_static so we can use the 41* head/tail sheet entry variables store there. Change code to use entry 42* variables in iodd_static if available. 43* 3) change(88-08-30,Farley), approve(88-09-16,MCR7911), 44* audit(88-10-20,Wallman), install(88-10-28,MR12.2-1199): 45* Updated to use version 5 dprint_msg. 46* END HISTORY COMMENTS */ 47 48 49 /* External Procedures & Variables */ 50 51 dcl cu_$ptr_call entry options (variable); 52 dcl error_table_$action_not_performed fixed bin (35) ext static; 53 dcl ioa_$ioa_stream entry options (variable); 54 dcl ioa_$rsnnl entry options (variable); 55 dcl iodd_$ ext static; /* so we can find the ref dir of make seg */ 56 dcl hcs_$make_ptr entry (ptr, char (*), char (*), ptr, fixed bin (35)); 57 dcl iox_$look_iocb entry (char (*), ptr, fixed bin (35)); 58 59 /* Parameters */ 60 61 dcl a_code fixed bin (35) parameter; /* error code */ 62 dcl a_iocbp ptr parameter; /* user-supplied iocb to output on */ 63 dcl a_ordatap ptr parameter; /* user-supplied output request data to use */ 64 dcl a_prt_ctl_ptr ptr parameter; /* user-supplied printer control info ptr */ 65 dcl a_static_ptr ptr parameter; /* ptr to iodd_static */ 66 dcl a_stream char (*) parameter; /* user-supplied stream to output on */ 67 dcl a_type char (*) parameter; /* user-supplied type of control form to output */ 68 69 /* Automatic */ 70 71 dcl copies_left fixed bin; /* number of copies computed for control form output */ 72 dcl dest char (36); /* for output */ 73 dcl head char (64); /* for output */ 74 dcl iocbp ptr; /* iocb ptr to output on. */ 75 /* if user passed stream name, we will locate the ptr */ 76 dcl iodd_static_ptr ptr int static init (null ()); /* ptr to drivers iodd_static */ 77 dcl l fixed bin; 78 dcl last_type char (32) int static init (""); 79 dcl len fixed bin; 80 dcl oprmsg char (256); 81 dcl prt_ctl_ptr ptr; /* prt_ctl ptr to use */ 82 /* if user didn't pass one, define as null */ 83 dcl proc_name char (32); 84 dcl proc_ptr ptr int static init (null); 85 dcl searched bit (1); 86 87 dcl 1 request aligned int static like ordata; /* the rest of the daemon info */ 88 89 90 /* write_control_form_: proc (a_type, a_stream, a_ordatap, a_code); Main entry */ 91 92 ordatap = a_ordatap; /* copy the input data pointer */ 93 prt_ctl_ptr = null; 94 95 /* locate the iocb for the given stream */ 96 call iox_$look_iocb (a_stream, iocbp, a_code); 97 if a_code ^= 0 then 98 return; 99 100 common_write: a_code = 0; /* this is common to both entries */ 101 102 if a_type = "undefined" then do; /* so we can bypass, if desired */ 103 a_code = error_table_$action_not_performed; 104 return; 105 end; 106 if a_type = "std_ctl_msg" then do; /* this is the default for the normal ctl term */ 107 if ordata.separator then do; /* one message per separator bar */ 108 copies_left = ordata.copies - ordata.copy_no + 1; /* number we will print */ 109 dmp = ordata.dpmp; /* get the pointer to the dprint message */ 110 head = dprint_msg.heading; 111 if substr (head, 1, 5) = " for " then /* see if dprint added something */ 112 head = substr (head, 6); /* if so get rid of it */ 113 if head ^= "" then call ioa_$rsnnl ("(for ""^a"" ", oprmsg, l, head); 114 else do; 115 l = 1; /* no heading, get ready for a dest msg */ 116 oprmsg = "("; 117 end; 118 dest = dprint_msg.destination; 119 if dest ^= "" then call ioa_$rsnnl ("^vaat ""^a"")", oprmsg, l, (l), substr (oprmsg, 1, l), dest); 120 else if l = 1 then oprmsg = ""; /* no head or dest case */ 121 else substr (oprmsg, l, 1) = ")"; /* heading only case */ 122 123 call ioa_$rsnnl ("Request ^d ^a q^d: ^a^/^2x^[(^d copies) ^;^s^]^[priority ^d ^;^s^]from ^a ^a", 124 oprmsg, l, ordata.request_no, ordata.request_type, ordata.queue, ordata.full_path, 125 (copies_left > 1), copies_left, ordata.priority_request, ordata.charge_queue, 126 ordata.requestor, (oprmsg)); 127 128 call ioa_$ioa_stream (a_stream, "^a", oprmsg); 129 end; 130 return; 131 end; 132 if a_type = "head_sheet" then do; 133 call iodd_static_ptr -> iodd_static.print_head_sheet (iocbp, prt_ctl_ptr, ordatap, a_code); 134 return; 135 end; 136 if a_type = "tail_sheet" then do; 137 call iodd_static_ptr -> iodd_static.print_tail_sheet (iocbp, prt_ctl_ptr, ordatap, a_code); 138 return; 139 end; 140 if a_type = "separator" then do; 141 call iodd_static_ptr -> iodd_static.print_head_separator (iocbp, prt_ctl_ptr, "separator", a_code); 142 return; 143 end; 144 145 /* otherwise we will have to search for the module to call....must be in search path */ 146 147 searched = "0"b; /* havn't searched for the proc name */ 148 if last_type ^= a_type then do; /* try for some efficiency */ 149 150 find: call ioa_$rsnnl ("write_^a_", proc_name, len, a_type); /* format to "write_type_" as module name */ 151 152 call hcs_$make_ptr (addr (iodd_$), proc_name, proc_name, proc_ptr, a_code); 153 if a_code ^= 0 then do; /* this is bad */ 154 last_type = ""; /* have to set the ptr after re-compile */ 155 return; 156 end; 157 last_type = a_type; /* so we don't do this too often */ 158 searched = "1"b; /* we have tried searching */ 159 160 end; 161 162 call cu_$ptr_call (proc_ptr, a_stream, ordatap, a_code); 163 if a_code ^= 0 then if ^searched then go to find; /* possibly an error on the old pointer */ 164 165 return; /* let the caller handle the error if any */ 166 167 168 169 170 write_sample_prt_banner_: entry (a_type, a_iocbp, a_prt_ctl_ptr, a_code); 171 172 /* this entry is used to print sample head_sheets and tail_sheets */ 173 174 if a_type ^= "head_sheet" & a_type ^= "tail_sheet" then do; 175 not_done: a_code = error_table_$action_not_performed; 176 return; 177 end; 178 179 iocbp = a_iocbp; 180 if iocbp = null then go to not_done; 181 prt_ctl_ptr = a_prt_ctl_ptr; 182 183 go to sample_common; 184 185 186 write_sample_form_: entry (a_type, a_stream, a_code); 187 188 dcl init bit (1) int static init ("0"b); /* initialization flag to avoid extra work */ 189 dcl (addr, string, null, substr) builtin; 190 dcl clock_ entry () returns (fixed bin (71)); 191 dcl date_time_ entry (fixed bin (71), char (*) aligned); 192 dcl alloc_dmp ptr int static init (null); 193 194 /* locate the iocb for the given stream */ 195 call iox_$look_iocb (a_stream, iocbp, a_code); 196 if a_code ^= 0 then 197 return; 198 prt_ctl_ptr = null; 199 200 sample_common: 201 202 ordatap = addr (request); /* we want the dummy data */ 203 if alloc_dmp = null then /* need a copy of dprint_msg too */ 204 allocate dprint_msg set (alloc_dmp); 205 206 if ^init then do; /* first time we set these values */ 207 208 request.dpmp = alloc_dmp; /* ptr to dummy message */ 209 request.requestor = "Username.Project.x"; 210 request.full_path = ">user_dir_dir>Project_name>Username>segment_name"; 211 request.queue = 3; 212 request.charge_queue = 1; /* charge at rate for queue 1 */ 213 request.copies = 4; 214 request.copy_no = 1; 215 request.request_no = 999999; /* highest possible request for a driver */ 216 request.restart_no = 888888; /* previous number which was restarted */ 217 request.request_type = "request_type_name"; /* Hope this is general enough */ 218 request.access_class_string = "-AIM--Field-, Category 2, Category 4"; 219 request.punsw = 0; 220 request.delete = 1; 221 request.device_name = "device_name"; 222 request.output_mode = "single,noskip,non_edited,ll132,pl60,in10."; 223 request.line_count = 4600; 224 request.page_count = 78; 225 request.cpu_time = 1000000; /* 1 million microseconds */ 226 request.real_time = 20000000; /* 20 million microseconds */ 227 request.page_waits = 3687; 228 request.pre_pages = 2017; 229 request.bit_count = 224745; 230 request.charge = 9.20; /* $9.20 should be large enough */ 231 request.price_per_n_lines = 2.00; /* try for $2.00 per 1000 lines */ 232 request.n_lines_for_price = 1000; /* this is the per 1000 part */ 233 request.price_per_n_pages = 8.00; /* try for $8.00 per 1000 pages */ 234 request.n_pages_for_price = 1000; /* this is the per 1000 part */ 235 request.total_charge = 9.20; 236 request.notify = "1"b; 237 request.continued = "0"b; 238 request.restarted = "1"b; /* this will show a restarted request - if needed */ 239 request.separator = "1"b; /* indicates a message should be printed */ 240 request.saved = "1"b; /* say we suspended request */ 241 request.priority_request = "1"b; /* this one was high priority */ 242 request.contd_no = 0; /* not a continued request */ 243 244 245 /* now for the actual dprint message */ 246 247 248 dmp = alloc_dmp; /* copy the ptr for auto based reference */ 249 250 dprint_msg.msg_time = clock_ (); /* just a legal value */ 251 dprint_msg.dirname = ">user_dir_dir>Project_name>Username"; 252 dprint_msg.ename = "segment_name"; 253 dprint_msg.hdr_version = queue_msg_hdr_version_1; 254 dprint_msg.state = 0; 255 dprint_msg.orig_queue = 3; 256 string (dprint_msg.bit_flags) = ""b; 257 dprint_msg.version = dprint_msg_version_5; 258 dprint_msg.message_type = 1; /* we are assuming a print request */ 259 dprint_msg.copies = 4; 260 dprint_msg.delete_sw = "1"b; 261 dprint_msg.notify = "1"b; 262 dprint_msg.heading_lth = head_max_lth; 263 dprint_msg.top_label_lth = label_max_lth; 264 dprint_msg.bottom_label_lth = label_max_lth; 265 dprint_msg.chan_stop_path_lth = 0; 266 dprint_msg.heading = "-HEAD-BANNER-WITH-NO-BLANKS-WHICH-CAN-GO-ON-FOR-64-CHARS-------*"; 267 dprint_msg.output_module = 1; 268 string (dprint_msg.control) = (36)"1"b; 269 dprint_msg.destination = "SAMPLE---DESTINATION"; 270 dprint_msg.forms = ""; 271 dprint_msg.forms_name_lth = 0; 272 dprint_msg.lmargin = 10; 273 dprint_msg.line_lth = 132; 274 dprint_msg.page_lth = 60; 275 dprint_msg.top_label = (3)"This will appear at the top and bottom of each page. "; 276 dprint_msg.bottom_label = dprint_msg.top_label; 277 278 init = "1"b; /* lets not do this again!! */ 279 280 end; 281 282 request.time_start_request = clock_ (); 283 call date_time_ (request.time_start_request, request.date_time_start_request); 284 285 go to common_write; 286 287 /* entrypoint to save ptr to the drivers iodd_static structure */ 288 289 init: entry (a_static_ptr); 290 291 iodd_static_ptr = a_static_ptr; 292 return; 293 /* BEGIN INCLUDE FILE ... dprint_msg.incl.pl1 */ 1 2 /* Modified: November 1983 by C. Marker Added no_separator. */ 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(87-05-10,Gilcrease), approve(87-05-13,MCR7686), 1 6* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 1 7* Add line_nbrs bit for line-numbered printouts, version 4. 1 8* 2) change(88-02-05,Farley), approve(88-02-05,PBF7686), audit(88-02-05,GWMay), 1 9* install(88-02-05,MR12.2-1022): 1 10* Corrected alignment of line_nbrs, was aligned s/b unaligned.. 1 11* 3) change(88-08-23,Farley), approve(88-09-16,MCR7911), 1 12* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 1 13* Increased size of forms field to 64 characters (was only 24), which 1 14* updates the version to 5. 1 15* END HISTORY COMMENTS */ 1 16 1 17 1 18 dcl dmp ptr; /* ptr to message */ 1 19 1 20 dcl 1 dprint_msg based (dmp) aligned, /* structure of a IO daemon print or punch request */ 1 21 2 header like queue_msg_hdr, /* header for all standard queue messages */ 1 22 2 version fixed bin, /* version of the dprint_msg used */ 1 23 2 copies fixed bin, /* number of copies user requested */ 1 24 2 bit_count fixed bin (35), /* the bitcount of the segment at request time */ 1 25 2 output_module fixed bin, /* 1=print, 2=7punch, 3= mcc, 4=raw */ 1 26 2 control, /* control flags. */ 1 27 3 nep bit (1) unal, /* TRUE if printing over perforations */ 1 28 3 single bit (1) unal, /* TRUE if ignore FF and VT */ 1 29 3 non_edited bit (1) unal, /* TRUE if printing in non-edited mode */ 1 30 3 truncate bit (1) unal, /* TRUE if truncating lines at line length */ 1 31 3 esc bit (1) unal, /* TRUE if text escapes are to be processed */ 1 32 3 center_top_label bit (1) unal, /* TRUE if top label to be centered */ 1 33 3 center_bottom_label bit (1) unal, /* TRUE if bottom label to be centered */ 1 34 3 no_separator bit(1) unal, /* TRUE if the inner head a tail sheets of multiple copies are to be suppressed. */ 1 35 3 line_nbrs bit (1) unal, /* TRUE if line numbers wanted */ 1 36 3 padding bit (27) unal, 1 37 2 lmargin fixed bin, /* indent from the left */ 1 38 2 line_lth fixed bin, /* logical line length */ 1 39 2 page_lth fixed bin, /* logical page length */ 1 40 2 heading_lth fixed bin, /* number of chars in heading */ 1 41 2 top_label_lth fixed bin, /* number of chars in the top label */ 1 42 2 bottom_label_lth fixed bin, /* number of chars in bottom label */ 1 43 2 chan_stop_path_lth fixed bin, /* number of chars in channel stop pathname */ 1 44 2 forms_name_lth fixed bin, /* number of chars in forms name */ 1 45 2 future_fb_values (7) fixed bin, /* make future versions possible */ 1 46 2 forms char (24), /* name of special forms, or blank */ 1 47 2 destination char (24), /* routing for output */ 1 48 2 heading char (head_max_lth refer (dprint_msg.heading_lth)), /* heading on page 1 */ 1 49 2 top_label char (label_max_lth refer (dprint_msg.top_label_lth)), /* top page heading for each page */ 1 50 2 bottom_label char (label_max_lth refer (dprint_msg.bottom_label_lth)), /* bottom page heading */ 1 51 2 chan_stop_path char (path_max_lth refer (dprint_msg.chan_stop_path_lth)), /* path of rqti seg with channel stops */ 1 52 2 forms_name char (forms_max_lth refer (dprint_msg.forms_name_lth)); /* forms name string */ 1 53 1 54 1 55 dcl ( 1 56 head_max_lth init (64), /* allocation size for heading */ 1 57 label_max_lth init (136), /* allocation size for label fields */ 1 58 path_max_lth init (168), /* allocation size for pathname fields */ 1 59 forms_max_lth init (64) /* allocation size for forms name string */ 1 60 ) fixed bin int static options (constant); 1 61 1 62 dcl ( 1 63 dprint_msg_version_3 init (3), 1 64 dprint_msg_version_4 init (4), 1 65 dprint_msg_version_5 init (5) /* current version */ 1 66 ) fixed bin int static options (constant); 1 67 1 68 /* END INCLUDE FILE ... dprint_msg.incl.pl1 */ 293 294 /* BEGIN INCLUDE FILE ... iod_tables_hdr.incl.pl1 */ 2 2 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(88-01-27,Brunelle), approve(), audit(), install(): 2 7* Ancient History 2 8* Created by J. Stern, 1/20/75 2 9* Modified by J. C. Whitmore April 1978 for enhancements 2 10* Modified by J. C. Whitmore, 10/78, for version 3 iod_tables format. 2 11* Modified by E. N. Kittlitz, 6/81, for version 4 iod_tables with expanded 2 12* q_group_tab 2 13* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 2 14* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 2 15* Change version number to reflect changes in q_group_tab and 2 16* iod_device_tab for laser printer support. Added font tables. 2 17* END HISTORY COMMENTS */ 2 18 2 19 2 20 /* format: style4 */ 2 21 2 22 dcl ithp ptr; /* ptr to io daemon dables and it's header */ 2 23 dcl 1 iod_tables_hdr aligned based (ithp), /* header of data segment compiled by iod_table_compiler */ 2 24 2 version char (8), /* version of this structure */ 2 25 2 date_time_compiled fixed bin (71), 2 26 2 grace_time fixed bin (71), /* grace time before deleting finished segment */ 2 27 2 max_queues fixed bin (17), /* default number of priority queues per queue group */ 2 28 2 line_tab_offset fixed bin (18), /* offset of line id table */ 2 29 2 device_tab_offset fixed bin (18), /* offset of device table */ 2 30 2 minor_device_tab_offset fixed bin (18), /* offset of minor device table */ 2 31 2 dev_class_tab_offset fixed bin (18), /* offset of device class table */ 2 32 2 q_group_tab_offset fixed bin (18), /* offset of queue group table */ 2 33 2 forms_info_tab_offset fixed bin (18), /* offset of forms info tables */ 2 34 2 text_strings_offset fixed bin (18), 2 35 2 start_of_tables fixed bin; /* beginning of above tables, MUST start on even word boundry */ 2 36 2 37 /* Defines common text block to store virtually all text in the I/O daemon tables */ 2 38 dcl text_strings_ptr ptr; 2 39 dcl 1 text_strings aligned based (text_strings_ptr), 2 40 2 length fixed bin, 2 41 2 chars char (1 refer (text_strings.length)) unaligned; 2 42 2 43 /* this defines text offsets used to locate i/o daemon tables strings in 2 44* the text_strings structure */ 2 45 dcl 1 text_offset based, 2 46 2 first_char fixed bin (18) unsigned unaligned, 2 47 2 total_chars fixed bin (18) unsigned unaligned; 2 48 2 49 dcl IODT_VERSION_5 char (8) int static options (constant) init ("IODT0005"); /* current version number */ 2 50 2 51 2 52 /* END INCLUDE FILE ... iod_tables_hdr.incl.pl1 */ 294 295 /* BEGIN INCLUDE FILE...iodd_static.incl.pl1 */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(85-02-14,Homan), approve(87-04-06,MCR7656), 3 6* audit(87-06-13,Beattie), install(87-08-06,MR12.1-1068): 3 7* Add support for logout_on_hangup option. 3 8* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 3 9* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 3 10* Add head/tail_sheet entry variables and paper_type variable. 3 11* END HISTORY COMMENTS */ 3 12 3 13 /* format: style4 */ 3 14 3 15 dcl stat_p int static ptr; 3 16 3 17 dcl 1 iodd_static based (stat_p) aligned, 3 18 3 19 /* The first part is set only once for a device driver */ 3 20 3 21 2 ithp ptr, /* pointer to iod tables header */ 3 22 2 ltp ptr, /* pointer to line table */ 3 23 2 idtp ptr, /* pointer to device tab */ 3 24 2 mdtp ptr, /* pointer to minor device table */ 3 25 2 qgtp ptr, /* pointer to q_group table */ 3 26 2 dev_class_ptr ptr, /* pointer to device class table */ 3 27 2 text_strings_ptr ptr, /* pointer to iod tables text strings */ 3 28 2 driver_list_ptr ptr, /* pointer to list of driver status seg pointers */ 3 29 2 chan_list_ptr ptr, /* pointer to list of event channels for blocking */ 3 30 2 sys_dir_ptr ptr, /* ptr to 168 char string defining sys_dir */ 3 31 2 coord_proc_id bit (36), /* process id of coordinator for wakeups */ 3 32 2 driver_proc_id bit (36), /* process id of driver for locking */ 3 33 2 re_init_label label, /* where to go after "re_init" or "slave_logout" */ 3 34 2 no_coord_label label, /* where to go for a no_coord condition */ 3 35 2 log_stream char (32), /* stream name used for log output */ 3 36 2 master_input char (32), /* master console input stream for commands */ 3 37 2 master_output char (32), /* master console output stream for messages */ 3 38 2 master_out ptr, /* master output iocbp */ 3 39 2 master_in ptr, /* master input iocbp */ 3 40 2 log_iocbp ptr, /* log output iocbp */ 3 41 2 error_io ptr, /* error i/o iocbp */ 3 42 2 dev_io_stream char (32), /* stream used to attach the major device */ 3 43 2 dev_in_stream char (32), /* input stream if different from dev_io_stream */ 3 44 2 dev_out_stream char (32), /* output stream if different from dev_io_stream */ 3 45 2 device_dim char (32), /* dim which drives the major device */ 3 46 2 attach_name char (32), /* channel or dial id for attaching major device */ 3 47 2 attach_type fixed bin, /* what previous is: 1 = iom, 2 = tty, 3 = dial, 4 = variable line */ 3 48 2 dev_dial_id char (8), /* non null if device is to be dialed to driver */ 3 49 2 line_tab_idx fixed bin, /* for attach type 4, this is the entry index, else 0 */ 3 50 2 dial_ev_chan fixed bin (71), /* IPC chan for dial control */ 3 51 2 major_device char (32), /* name of the major device */ 3 52 2 major_args unaligned like text_offset, /* descriptive string for the major device */ 3 53 2 coord_cmd_chan fixed bin (71), /* IPC chan to send commands to coord through coord_comm.ms */ 3 54 2 cmd_ack_chan fixed bin (71), /* IPC chan for coord to return command status code */ 3 55 2 timer_chan fixed bin (71), /* IPC chan for unblocking if nothing happens */ 3 56 2 io_daemon_version char (8), /* current version number of the io daemon driver */ 3 57 2 extra_static (8) fixed bin (35), /* unused space - non_dynamic */ 3 58 2 dummy_ptr ptr, /* a dummy pointer for the driver module */ 3 59 3 60 /* driver module entrypoints are defined by the following entry variables */ 3 61 3 62 2 driver_init entry variable options (variable), 3 63 2 driver_request entry variable options (variable), 3 64 2 driver_command entry variable options (variable), 3 65 2 driver_default_handler entry variable options (variable), 3 66 3 67 /* entrypoints for head/tail_sheet_ entries */ 3 68 2 print_head_sheet entry (ptr, ptr, ptr, fixed bin (35)) variable, 3 69 2 print_head_separator entry (ptr, ptr, char (*), fixed bin (35)) variable, 3 70 2 print_tail_sheet entry (ptr, ptr, ptr, fixed bin (35)) variable, 3 71 3 72 2 paper_type fixed bin, /* type of paper being used */ 3 73 /* 1 = single sheet */ 3 74 /* 2 = continuous forms */ 3 75 3 76 /* The remainder of the data may be dynamic during the device driver's existence */ 3 77 3 78 2 extra_dynamic (14) fixed bin (35), /* unused space - dynamic */ 3 79 2 auto_logout_interval fixed bin, /* minutes to wait for inactivity logout */ 3 80 2 requests_til_cmd fixed bin, /* number of requests to go before returning to cmd level */ 3 81 2 assigned_devices fixed bin, /* number of minor devices assigned to major device */ 3 82 2 current_devices fixed bin, /* number of devices currently active in process */ 3 83 2 output_device char (32), /* name of minor device currently in use */ 3 84 2 wakeup_time fixed bin (71), /* time interval between timer wakeups */ 3 85 2 auto_start_delay fixed bin (71), /* time to wait before performing an auto-start after quit */ 3 86 2 driver_ptr ptr, /* pointer to driver status seg currently in use */ 3 87 2 segptr ptr, /* ptr to current user segment being processed */ 3 88 2 flags, /* control flags */ 3 89 3 initialized bit (1) unal, /* all driver data bases are initialized */ 3 90 3 test_entry bit (1) unal, /* driver test entry was called */ 3 91 3 request_in_progress bit (1) unal, /* driver executing a request */ 3 92 3 recursion_flag bit (1) unal, /* recursive unclaimed signal */ 3 93 3 no_coord_flag bit (1) unal, /* process is ready to accept a no_coord signal */ 3 94 3 logout_pending bit (1) unal, /* logout after all pending requests are done */ 3 95 3 master_hold bit (1) unal, /* master_hold at command level */ 3 96 3 slave_hold bit (1) unal, /* slave hold at command level */ 3 97 3 step bit (1) unal, /* run in step mode */ 3 98 3 quit_during_request bit (1) unal, /* a quit occured, don't wait for wakeup */ 3 99 3 runout_requests bit (1) unal, /* hold after all pending requests are done */ 3 100 3 re_init_in_progress bit (1) unal, /* driver processing a re_init signal */ 3 101 3 quit_signaled bit (1) unal, /* set to "1"b by quit handler for anyone who is curious */ 3 102 3 auto_logout_pending bit (1) unal, /* inactivity limit exceeded, logout after next wakeup */ 3 103 3 logout_on_hangup bit (1) unal, /* logout instead of reinit if set */ 3 104 3 pad bit (21) unal, /* unused space */ 3 105 2 slave, /* slave control device data (ctl term or remote reader) */ 3 106 3 slave_input char (32), /* slave input stream name */ 3 107 3 slave_output char (32), /* slave output stream name */ 3 108 3 slave_pad fixed bin, /* allocation breakage */ 3 109 3 slave_in ptr, /* slave input iocbp */ 3 110 3 slave_out ptr, /* slave output iocbp */ 3 111 3 slave_ev_chan fixed bin (71), /* event channel the slave device blocks on */ 3 112 3 active bit (1) unal, /* on if there is a slave */ 3 113 3 accept_input bit (1) unal, /* on if commands may come from the slave */ 3 114 3 allow_quits bit (1) unal, /* on if we allow slave to send quits */ 3 115 3 print_errors bit (1) unal, /* on if errors will be sent to the slave */ 3 116 3 log_msg bit (1) unal, /* on if log messages are to be sent to the slave */ 3 117 3 priv1 bit (1) unal, /* driver_module defined slave privileges */ 3 118 3 priv2 bit (1) unal, 3 119 3 priv3 bit (1) unal, 3 120 3 echo_cmd bit (1) unal, /* on if each slave cmd should be written back */ 3 121 3 slave_bit_pad bit (27) unal, /* unused space */ 3 122 2 ctl_term, /* control terminal data */ 3 123 3 ctl_attach_name char (32), /* dial id, tty chan, or mrd_ device */ 3 124 3 ctl_attach_type fixed bin, /* attach name meaning: 1=line, 2=dial, 3=mrd_source */ 3 125 3 ctl_pad fixed bin, /* allocation breakage */ 3 126 3 ctl_dial_chan fixed bin (71), /* ipc event channel for dial comm */ 3 127 3 ctl_input char (32), /* ctl input stream name */ 3 128 3 ctl_output char (32), /* ctl output stream name */ 3 129 3 ctl_io char (32), /* ctl i/o stream name */ 3 130 3 ctl_dev_dim char (32), /* ctl_io attached with this dim */ 3 131 3 ctl_ev_chan fixed bin (71), /* IPC event chan ctl term blocks on */ 3 132 3 ctl_device char (32), /* ctl terminal device name */ 3 133 3 form_type char (16), /* format type if printing forms */ 3 134 3 attached bit (1) unal, /* ctl term attached to process */ 3 135 3 forms bit (1) unal, /* on if printing forms */ 3 136 3 pad bit (34) unal, 3 137 2 admin_ec_name char (32), /* name of the ec to use with the "x" command */ 3 138 2 expansion_space (100) fixed bin; /* reserved space...use at your own risk */ 3 139 3 140 /* END INCLUDE FILE ... iodd_static.incl.pl1 */ 295 296 /* BEGIN INCLUDE FILE ... output_request_data.incl.pl1 */ 4 2 4 3 /* Modified by R. McDonald May 1980 to include page charges (UNCA) */ 4 4 /* Modified by C. Marker October 1983 added no_separator */ 4 5 4 6 4 7 /****^ HISTORY COMMENTS: 4 8* 1) change(87-05-10,Gilcrease), approve(87-05-13,MCR7686), 4 9* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 4 10* Add the line_nbrs bit for line-numbered output. 4 11* 2) change(88-08-19,Brunelle), approve(88-08-19,MCR7911), 4 12* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 4 13* Added single_sheet bit to denote if continuous paper. 4 14* END HISTORY COMMENTS */ 4 15 4 16 4 17 dcl 1 ordata based (ordatap) aligned, 4 18 2 dpmp ptr, /* Ptr to dprint_msg */ 4 19 2 requestor char (32), /* Person.Proj.tag requesting */ 4 20 2 full_path char (168), /* source of the output */ 4 21 2 queue fixed bin, /* Queue requested. */ 4 22 2 copies fixed bin, /* Copies requested. */ 4 23 2 copy_no fixed bin, /* Number this copy */ 4 24 2 request_no fixed bin (35), /* Number request assigned by coord */ 4 25 2 restart_no fixed bin (35), /* old number of restarted request (0 = not restarted) */ 4 26 2 request_type char (32), /* Name of device class wanted. */ 4 27 2 access_class_string char (280), /* Access class - size limit for two printer lines */ 4 28 2 punsw fixed bin, /* 0 = print, 1= punch */ 4 29 2 delete fixed bin, /* 1= delete, 0= don't */ 4 30 2 device_name char (32), /* Name of physical device used */ 4 31 2 output_mode char (128), /* user's mode string for ios_$changemode */ 4 32 2 time_start_request fixed bin (71), /* Clock time when picked request */ 4 33 2 date_time_start_request char (24), /* .. in chars too */ 4 34 2 line_count fixed bin (24), /* Line count returned by DIM */ 4 35 2 page_count fixed bin, /* Page count returned by DIM */ 4 36 2 cpu_time fixed bin (71), /* Total CPU usage while printing */ 4 37 2 real_time fixed bin (71), /* Total realtime while printing */ 4 38 2 page_waits fixed bin, /* Total page-waits while printing */ 4 39 2 pre_pages fixed bin, /* Total pre-pages (???) .. */ 4 40 2 bit_count fixed bin (24), /* Number of bits transmitted. */ 4 41 2 charge float bin, /* What the thing cost. */ 4 42 2 control_flags, 4 43 3 continued bit (1) unal, /* request started by one driver and given to another */ 4 44 3 restarted bit (1) unal, /* request is restarted */ 4 45 3 separator bit (1) unal, /* used to determine necessity of a separator page */ 4 46 3 notify bit (1) unal, /* if should confirm to user */ 4 47 3 saved bit (1) unal, /* request was suspended by operator, we'll save it */ 4 48 3 priority_request bit (1) unal, /* operator said run now!! */ 4 49 3 no_separator bit (1) unal, /* suppress inner head and tail sheets when printing multiple copies */ 4 50 3 line_nbrs bit (1) unal, /* if line-numbered output requested */ 4 51 3 single_sheet bit (1) unal, /* ON if single_sheet output */ 4 52 3 padding bit (27) unal, /* not used */ 4 53 2 contd_no fixed bin (35), /* old number of continued request (0 = not continued) */ 4 54 2 total_charge float bin, /* total charge for all copies */ 4 55 2 price_per_n_lines float bin, /* line price rate used to compute charge */ 4 56 2 n_lines_for_price fixed bin, /* number of lines price is based on */ 4 57 2 charge_queue fixed bin, /* base charge rate on this queue */ 4 58 2 price_per_n_pages float bin, /* page charge rate used to compute charge */ 4 59 2 n_pages_for_price fixed bin, /* number of pages price is based on */ 4 60 2 rs_number fixed bin (9) unsigned unaligned, /* rate_structure number used */ 4 61 2 rs_unavailable bit (1) unaligned, /* 1=>couldn't read SAT */ 4 62 2 no_accounting bit (1) unaligned, /* 1=>accounting:nothing in iod_tables */ 4 63 2 pad_bits bit (25) unaligned, 4 64 2 line_nbr fixed bin (35), /* current line number */ 4 65 2 pad_space (6) fixed bin (35); /* save some room to grow */ 4 66 4 67 dcl ordatap ptr; /* Ptr to above structure */ 4 68 4 69 dcl 1 REQUEST like ordata aligned; /* If wanted, a place to put the above thing */ 4 70 4 71 /* END INCLUDE FILE ... output_request_data.incl.pl1 */ 296 297 /* BEGIN INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 5 2 5 3 /* This is the message header used for standard system queue messages, namely: 5 4* IO daemon requests, absentee requests, retrieval requests. 5 5**/ 5 6 5 7 /* Written by Jerry Whitmore, Spring 1978. 5 8* Modified by T. Casey, November 1978, to add values for state. 5 9* Modified by R. Kovalcik, June 1982, defer_until_process_terminataion 5 10**/ 5 11 5 12 dcl 1 queue_msg_hdr based aligned, /* standard header for all system queue messages */ 5 13 2 msg_time fixed bin (71), /* date and time of request */ 5 14 2 hdr_version fixed bin, /* version of this declaration */ 5 15 2 dirname char (168), /* directory name */ 5 16 2 ename char (32), /* entry name of file requested */ 5 17 2 message_type fixed bin, /* message format descriptor */ 5 18 /* 0 = absentee request */ 5 19 /* 1 = print request */ 5 20 /* 2 = punch request */ 5 21 /* 3 = tape request */ 5 22 /* 4 = retrieval request */ 5 23 2 bit_flags, 5 24 3 delete_sw bit (1) unal, /* delete file when done */ 5 25 3 notify bit (1) unal, /* user wants to be notified */ 5 26 3 defer_until_process_termination bit (1) unal, /* don't process request until process terminates */ 5 27 3 padding bit (33) unal, 5 28 2 state fixed bin, /* stage of processing after being queued: 5 29* 0 = initial unprocessed state, 1 = deferred, 5 30* 2 = in state transition, 3 = eligible, 4 = running, 5 31* 5 = bumped, 6 = deferred_until_process_termination */ 5 32 2 orig_queue fixed bin, /* queue the request was submitted to */ 5 33 2 std_length fixed bin, /* length of std msg for this type */ 5 34 2 dupt_lock bit (36) aligned, /* lock word for defer until process termination */ 5 35 2 hdr_pad (3) fixed bin; 5 36 5 37 dcl queue_msg_hdr_version_1 fixed bin int static options (constant) init (1); /* current version of the header */ 5 38 5 39 /* Values for queue_msg_hdr.state */ 5 40 5 41 dcl STATE_UNPROCESSED fixed bin int static options (constant) init (0); 5 42 dcl STATE_DEFERRED fixed bin int static options (constant) init (1); 5 43 dcl STATE_TRANSITION fixed bin int static options (constant) init (2); 5 44 dcl STATE_ELIGIBLE fixed bin int static options (constant) init (3); 5 45 dcl STATE_RUNNING fixed bin int static options (constant) init (4); 5 46 dcl STATE_BUMPED fixed bin int static options (constant) init (5); 5 47 dcl STATE_DUPT fixed bin int static options (constant) init (6); 5 48 5 49 /* END INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 297 298 299 end write_control_form_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/28/88 1232.4 write_control_form_.pl1 >special_ldd>install>MR12.2-1199>write_control_form_.pl1 293 1 10/28/88 1227.6 dprint_msg.incl.pl1 >special_ldd>install>MR12.2-1199>dprint_msg.incl.pl1 294 2 10/28/88 1227.4 iod_tables_hdr.incl.pl1 >special_ldd>install>MR12.2-1199>iod_tables_hdr.incl.pl1 295 3 10/28/88 1227.2 iodd_static.incl.pl1 >special_ldd>install>MR12.2-1199>iodd_static.incl.pl1 296 4 10/28/88 1226.4 output_request_data.incl.pl1 >special_ldd>install>MR12.2-1199>output_request_data.incl.pl1 297 5 08/31/82 1636.3 queue_msg_hdr.incl.pl1 >ldd>include>queue_msg_hdr.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. a_code parameter fixed bin(35,0) dcl 61 set ref 14 96* 97 100* 103* 133* 137* 141* 152* 153 162* 163 170 175* 186 195* 196 a_iocbp parameter pointer dcl 62 ref 170 179 a_ordatap parameter pointer dcl 63 ref 14 92 a_prt_ctl_ptr parameter pointer dcl 64 ref 170 181 a_static_ptr parameter pointer dcl 65 ref 289 291 a_stream parameter char packed unaligned dcl 66 set ref 14 96* 128* 162* 186 195* a_type parameter char packed unaligned dcl 67 set ref 14 102 106 132 136 140 148 150* 157 170 174 174 186 access_class_string 101 000024 internal static char(280) level 2 dcl 87 set ref 218* addr builtin function dcl 189 ref 152 152 200 alloc_dmp 000352 internal static pointer initial dcl 192 set ref 203 203* 208 248 bit_count 302 000024 internal static fixed bin(24,0) level 2 dcl 87 set ref 229* bit_flags 66 based structure level 3 dcl 1-20 set ref 256* bottom_label based char level 2 dcl 1-20 set ref 276* bottom_label_lth 110 based fixed bin(17,0) level 2 dcl 1-20 set ref 203* 264* 276 chan_stop_path_lth 111 based fixed bin(17,0) level 2 dcl 1-20 set ref 203* 265* charge 303 000024 internal static float bin(27) level 2 dcl 87 set ref 230* charge_queue 311 000024 internal static fixed bin(17,0) level 2 in structure "request" dcl 87 in procedure "write_control_form_" set ref 212* charge_queue 311 based fixed bin(17,0) level 2 in structure "ordata" dcl 4-17 in procedure "write_control_form_" set ref 123* clock_ 000372 constant entry external dcl 190 ref 250 282 contd_no 305 000024 internal static fixed bin(35,0) level 2 dcl 87 set ref 242* continued 304 000024 internal static bit(1) level 3 packed packed unaligned dcl 87 set ref 237* control 102 based structure level 2 dcl 1-20 set ref 268* control_flags 304 000024 internal static structure level 2 in structure "request" dcl 87 in procedure "write_control_form_" control_flags 304 based structure level 2 in structure "ordata" dcl 4-17 in procedure "write_control_form_" copies 65 000024 internal static fixed bin(17,0) level 2 in structure "request" dcl 87 in procedure "write_control_form_" set ref 213* copies 77 based fixed bin(17,0) level 2 in structure "dprint_msg" dcl 1-20 in procedure "write_control_form_" set ref 259* copies 65 based fixed bin(17,0) level 2 in structure "ordata" dcl 4-17 in procedure "write_control_form_" ref 108 copies_left 000100 automatic fixed bin(17,0) dcl 71 set ref 108* 123 123* copy_no 66 based fixed bin(17,0) level 2 in structure "ordata" dcl 4-17 in procedure "write_control_form_" ref 108 copy_no 66 000024 internal static fixed bin(17,0) level 2 in structure "request" dcl 87 in procedure "write_control_form_" set ref 214* cpu_time 274 000024 internal static fixed bin(71,0) level 2 dcl 87 set ref 225* cu_$ptr_call 000354 constant entry external dcl 51 ref 162 date_time_ 000374 constant entry external dcl 191 ref 283 date_time_start_request 264 000024 internal static char(24) level 2 dcl 87 set ref 283* delete 210 000024 internal static fixed bin(17,0) level 2 dcl 87 set ref 220* delete_sw 66 based bit(1) level 4 packed packed unaligned dcl 1-20 set ref 260* dest 000101 automatic char(36) packed unaligned dcl 72 set ref 118* 119 119* destination 130 based char(24) level 2 dcl 1-20 set ref 118 269* device_name 211 000024 internal static char(32) level 2 dcl 87 set ref 221* dirname 3 based char(168) level 3 dcl 1-20 set ref 251* dmp 000252 automatic pointer dcl 1-18 set ref 109* 110 118 248* 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 276 dpmp 000024 internal static pointer level 2 in structure "request" dcl 87 in procedure "write_control_form_" set ref 208* dpmp based pointer level 2 in structure "ordata" dcl 4-17 in procedure "write_control_form_" ref 109 dprint_msg based structure level 1 dcl 1-20 set ref 203 dprint_msg_version_5 constant fixed bin(17,0) initial dcl 1-62 ref 257 ename 55 based char(32) level 3 dcl 1-20 set ref 252* error_table_$action_not_performed 000356 external static fixed bin(35,0) dcl 52 ref 103 175 forms 122 based char(24) level 2 dcl 1-20 set ref 270* forms_max_lth constant fixed bin(17,0) initial dcl 1-55 ref 203 203 forms_name_lth 112 based fixed bin(17,0) level 2 dcl 1-20 set ref 203* 271* full_path 12 000024 internal static char(168) level 2 in structure "request" dcl 87 in procedure "write_control_form_" set ref 210* full_path 12 based char(168) level 2 in structure "ordata" dcl 4-17 in procedure "write_control_form_" set ref 123* hcs_$make_ptr 000366 constant entry external dcl 56 ref 152 hdr_version 2 based fixed bin(17,0) level 3 dcl 1-20 set ref 253* head 000112 automatic char(64) packed unaligned dcl 73 set ref 110* 111 111* 111 113 113* head_max_lth constant fixed bin(17,0) initial dcl 1-55 ref 203 203 262 header based structure level 2 dcl 1-20 heading 136 based char level 2 dcl 1-20 set ref 110 266* heading_lth 106 based fixed bin(17,0) level 2 dcl 1-20 set ref 110 203* 262* 266 275 276 276 init 000350 internal static bit(1) initial packed unaligned dcl 188 set ref 206 278* ioa_$ioa_stream 000360 constant entry external dcl 53 ref 128 ioa_$rsnnl 000362 constant entry external dcl 54 ref 113 119 123 150 iocbp 000132 automatic pointer dcl 74 set ref 96* 133* 137* 141* 179* 180 195* iodd_$ 000364 external static fixed bin(17,0) dcl 55 set ref 152 152 iodd_static based structure level 1 dcl 3-17 iodd_static_ptr 000010 internal static pointer initial dcl 76 set ref 133 137 141 291* iox_$look_iocb 000370 constant entry external dcl 57 ref 96 195 l 000134 automatic fixed bin(17,0) dcl 77 set ref 113* 115* 119* 119 119 119 120 121 123* label_max_lth constant fixed bin(17,0) initial dcl 1-55 ref 203 203 203 203 263 264 last_type 000012 internal static char(32) initial packed unaligned dcl 78 set ref 148 154* 157* len 000135 automatic fixed bin(17,0) dcl 79 set ref 150* line_count 272 000024 internal static fixed bin(24,0) level 2 dcl 87 set ref 223* line_lth 104 based fixed bin(17,0) level 2 dcl 1-20 set ref 273* lmargin 103 based fixed bin(17,0) level 2 dcl 1-20 set ref 272* message_type 65 based fixed bin(17,0) level 3 dcl 1-20 set ref 258* msg_time based fixed bin(71,0) level 3 dcl 1-20 set ref 250* n_lines_for_price 310 000024 internal static fixed bin(17,0) level 2 dcl 87 set ref 232* n_pages_for_price 313 000024 internal static fixed bin(17,0) level 2 dcl 87 set ref 234* notify 66(01) based bit(1) level 4 in structure "dprint_msg" packed packed unaligned dcl 1-20 in procedure "write_control_form_" set ref 261* notify 304(03) 000024 internal static bit(1) level 3 in structure "request" packed packed unaligned dcl 87 in procedure "write_control_form_" set ref 236* null builtin function dcl 189 ref 93 180 198 203 oprmsg 000136 automatic char(256) packed unaligned dcl 80 set ref 113* 116* 119* 119 119 120* 121* 123* 123 128* ordata based structure level 1 dcl 4-17 ordatap 000254 automatic pointer dcl 4-67 set ref 92* 107 108 108 109 123 123 123 123 123 123 123 133* 137* 162* 200* orig_queue 70 based fixed bin(17,0) level 3 dcl 1-20 set ref 255* output_mode 221 000024 internal static char(128) level 2 dcl 87 set ref 222* output_module 101 based fixed bin(17,0) level 2 dcl 1-20 set ref 267* page_count 273 000024 internal static fixed bin(17,0) level 2 dcl 87 set ref 224* page_lth 105 based fixed bin(17,0) level 2 dcl 1-20 set ref 274* page_waits 300 000024 internal static fixed bin(17,0) level 2 dcl 87 set ref 227* path_max_lth constant fixed bin(17,0) initial dcl 1-55 ref 203 203 pre_pages 301 000024 internal static fixed bin(17,0) level 2 dcl 87 set ref 228* price_per_n_lines 307 000024 internal static float bin(27) level 2 dcl 87 set ref 231* price_per_n_pages 312 000024 internal static float bin(27) level 2 dcl 87 set ref 233* print_head_separator 234 based entry variable level 2 dcl 3-17 ref 141 print_head_sheet 230 based entry variable level 2 dcl 3-17 ref 133 print_tail_sheet 240 based entry variable level 2 dcl 3-17 ref 137 priority_request 304(05) 000024 internal static bit(1) level 3 in structure "request" packed packed unaligned dcl 87 in procedure "write_control_form_" set ref 241* priority_request 304(05) based bit(1) level 3 in structure "ordata" packed packed unaligned dcl 4-17 in procedure "write_control_form_" set ref 123* proc_name 000240 automatic char(32) packed unaligned dcl 83 set ref 150* 152* 152* proc_ptr 000022 internal static pointer initial dcl 84 set ref 152* 162* prt_ctl_ptr 000236 automatic pointer dcl 81 set ref 93* 133* 137* 141* 181* 198* punsw 207 000024 internal static fixed bin(17,0) level 2 dcl 87 set ref 219* queue 64 000024 internal static fixed bin(17,0) level 2 in structure "request" dcl 87 in procedure "write_control_form_" set ref 211* queue 64 based fixed bin(17,0) level 2 in structure "ordata" dcl 4-17 in procedure "write_control_form_" set ref 123* queue_msg_hdr based structure level 1 dcl 5-12 queue_msg_hdr_version_1 constant fixed bin(17,0) initial dcl 5-37 ref 253 real_time 276 000024 internal static fixed bin(71,0) level 2 dcl 87 set ref 226* request 000024 internal static structure level 1 dcl 87 set ref 200 request_no 67 000024 internal static fixed bin(35,0) level 2 in structure "request" dcl 87 in procedure "write_control_form_" set ref 215* request_no 67 based fixed bin(35,0) level 2 in structure "ordata" dcl 4-17 in procedure "write_control_form_" set ref 123* request_type 71 based char(32) level 2 in structure "ordata" dcl 4-17 in procedure "write_control_form_" set ref 123* request_type 71 000024 internal static char(32) level 2 in structure "request" dcl 87 in procedure "write_control_form_" set ref 217* requestor 2 based char(32) level 2 in structure "ordata" dcl 4-17 in procedure "write_control_form_" set ref 123* requestor 2 000024 internal static char(32) level 2 in structure "request" dcl 87 in procedure "write_control_form_" set ref 209* restart_no 70 000024 internal static fixed bin(35,0) level 2 dcl 87 set ref 216* restarted 304(01) 000024 internal static bit(1) level 3 packed packed unaligned dcl 87 set ref 238* saved 304(04) 000024 internal static bit(1) level 3 packed packed unaligned dcl 87 set ref 240* searched 000250 automatic bit(1) packed unaligned dcl 85 set ref 147* 158* 163 separator 304(02) based bit(1) level 3 in structure "ordata" packed packed unaligned dcl 4-17 in procedure "write_control_form_" ref 107 separator 304(02) 000024 internal static bit(1) level 3 in structure "request" packed packed unaligned dcl 87 in procedure "write_control_form_" set ref 239* state 67 based fixed bin(17,0) level 3 dcl 1-20 set ref 254* string builtin function dcl 189 set ref 256* 268* substr builtin function dcl 189 set ref 111 111 119 119 121* text_offset based structure level 1 packed packed unaligned dcl 2-45 time_start_request 262 000024 internal static fixed bin(71,0) level 2 dcl 87 set ref 282* 283* top_label based char level 2 dcl 1-20 set ref 275* 276 top_label_lth 107 based fixed bin(17,0) level 2 dcl 1-20 set ref 203* 263* 275 276 276 total_charge 306 000024 internal static float bin(27) level 2 dcl 87 set ref 235* version 76 based fixed bin(17,0) level 2 dcl 1-20 set ref 257* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. IODT_VERSION_5 internal static char(8) initial packed unaligned dcl 2-49 REQUEST automatic structure level 1 dcl 4-69 STATE_BUMPED internal static fixed bin(17,0) initial dcl 5-46 STATE_DEFERRED internal static fixed bin(17,0) initial dcl 5-42 STATE_DUPT internal static fixed bin(17,0) initial dcl 5-47 STATE_ELIGIBLE internal static fixed bin(17,0) initial dcl 5-44 STATE_RUNNING internal static fixed bin(17,0) initial dcl 5-45 STATE_TRANSITION internal static fixed bin(17,0) initial dcl 5-43 STATE_UNPROCESSED internal static fixed bin(17,0) initial dcl 5-41 dprint_msg_version_3 internal static fixed bin(17,0) initial dcl 1-62 dprint_msg_version_4 internal static fixed bin(17,0) initial dcl 1-62 iod_tables_hdr based structure level 1 dcl 2-23 ithp automatic pointer dcl 2-22 stat_p internal static pointer dcl 3-15 text_strings based structure level 1 dcl 2-39 text_strings_ptr automatic pointer dcl 2-38 NAMES DECLARED BY EXPLICIT CONTEXT. common_write 000367 constant label dcl 100 ref 285 find 001037 constant label dcl 150 ref 163 init 001662 constant entry external dcl 289 not_done 001231 constant label dcl 175 ref 180 sample_common 001326 constant label dcl 200 set ref 183 write_control_form_ 000315 constant entry external dcl 14 write_sample_form_ 001254 constant entry external dcl 186 write_sample_prt_banner_ 001200 constant entry external dcl 170 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2056 2454 1700 2066 Length 3020 1700 376 330 156 344 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME write_control_form_ 359 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 iodd_static_ptr write_control_form_ 000012 last_type write_control_form_ 000022 proc_ptr write_control_form_ 000024 request write_control_form_ 000350 init write_control_form_ 000352 alloc_dmp write_control_form_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME write_control_form_ 000100 copies_left write_control_form_ 000101 dest write_control_form_ 000112 head write_control_form_ 000132 iocbp write_control_form_ 000134 l write_control_form_ 000135 len write_control_form_ 000136 oprmsg write_control_form_ 000236 prt_ctl_ptr write_control_form_ 000240 proc_name write_control_form_ 000250 searched write_control_form_ 000252 dmp write_control_form_ 000254 ordatap write_control_form_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a alloc_char_temp call_ent_var_desc call_ent_var call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry ext_entry_desc alloc_storage THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. clock_ cu_$ptr_call date_time_ hcs_$make_ptr ioa_$ioa_stream ioa_$rsnnl iox_$look_iocb THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed iodd_$ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 000310 92 000340 93 000343 96 000345 97 000365 100 000367 102 000370 103 000377 104 000402 106 000403 107 000407 108 000413 109 000417 110 000421 111 000425 113 000434 115 000473 116 000475 118 000500 119 000504 120 000561 121 000571 123 000574 128 000676 130 000723 132 000724 133 000730 134 000746 136 000747 137 000753 138 000771 140 000772 141 000776 142 001030 147 001031 148 001032 150 001037 152 001072 153 001122 154 001124 155 001130 157 001131 158 001140 162 001142 163 001166 165 001172 170 001173 174 001216 175 001231 176 001234 179 001235 180 001240 181 001244 183 001247 186 001250 195 001277 196 001322 198 001324 200 001326 203 001331 206 001376 208 001400 209 001402 210 001405 211 001410 212 001412 213 001414 214 001416 215 001420 216 001422 217 001424 218 001427 219 001432 220 001433 221 001435 222 001440 223 001443 224 001445 225 001447 226 001451 227 001453 228 001455 229 001457 230 001461 231 001463 232 001465 233 001467 234 001471 235 001473 236 001475 237 001477 238 001501 239 001503 240 001505 241 001507 242 001511 248 001512 250 001513 251 001521 252 001525 253 001530 254 001532 255 001533 256 001535 257 001536 258 001540 259 001542 260 001544 261 001546 262 001550 263 001552 264 001554 265 001555 266 001556 267 001562 268 001564 269 001566 270 001571 271 001574 272 001575 273 001577 274 001601 275 001603 276 001613 278 001630 282 001633 283 001641 285 001656 289 001657 291 001667 292 001674 ----------------------------------------------------------- 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