COMPILATION LISTING OF SEGMENT dprint_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/28/88 1330.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 13 14 /* format: style4,delnl,insnl,^ifthendo */ 15 16 /* format: off */ 17 18 dprint_: proc (dirname, ename, dpap, ec); 19 20 /* The dprint_ subroutine accepts a segment name and an argument structure and formats a message for 21* the IO.SysDaemon. The message is placed in the specified queue of the specified request type. 22* 23* THVV 7/72 */ 24 25 26 /****^ HISTORY COMMENTS: 27* 1) change(73-04-01,Coren), approve(), audit(), install(): 28* (Polished by R. S. Coren 4/73) 29* Modified for use with I/O daemon coordinator and device classes, October 1973, 30* * by Robert S. Coren 31* Modified by J. Stern, 2/14/75 32* Modified by J. C. Whitmore, 4/78, for new dprint_msg structure and enhancements 33* Modified: 10 April 1981 by G. Palter to accept request type names > 8 characters in length 34* Modified: by G. C. Dixon, 1/82, remove limit on max copies allowed. 35* Modified: by R. Kovalcik, 6/82, to add defer_until_process_termination (version 7). 36* Modified+ by C. Marker November 1983 to add no_separator 37* 2) change(86-01-17,Gilcrease), approve(86-01-17,MCR7319), 38* audit(86-01-24,RBarstad), install(86-02-03,MR12.0-1012): 39* Added the request_id entry point to return the message identifier 40* of the request being enqueued SCP 6296. 41* 3) change(87-02-15,Gilcrease), approve(87-03-26,MCR7645), 42* audit(87-03-26,Blair), install(87-04-03,MR12.1-1021): 43* Initialize queue-entry count in queue_contents entry. 44* 4) change(87-05-10,Gilcrease), approve(87-05-13,MCR7686), 45* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 46* Implement line-numbered printouts. 47* 5) change(88-08-25,Farley), approve(88-09-16,MCR7911), 48* audit(88-10-25,Wallman), install(88-10-28,MR12.2-1199): 49* Updated to use version 5 dprint_msg and version 10 dprint_arg. 50* END HISTORY COMMENTS */ 51 52 /* format: on */ 53 54 dcl dirname char (*), /* directory where segment resides */ 55 ename char (*), /* entry name of segment */ 56 requestid fixed bin (71), /* output, message identifier, request_id entry */ 57 ec fixed bin (35); /* status code */ 58 59 dcl sysdir char (168) aligned int static init (">daemon_dir_dir>io_daemon_dir"), 60 sys_msg_seg char (32) aligned, 61 mess_id bit (72) aligned based (addr (mess_idx)), 62 mess_idx fixed bin (71); 63 64 dcl return_request_id bit (1); 65 dcl rqt_name char (24); 66 dcl generic_type char (32); 67 dcl rqt_generic_type char (32); 68 dcl default_q fixed bin; 69 dcl max_q fixed bin; 70 71 dcl area_space area (1000) based (areap); 72 dcl areap ptr int static init (null); 73 74 dcl queue_pic pic "9"; /* for converting queue number to char */ 75 76 dcl error_table_$request_not_recognized ext fixed bin (35); 77 dcl error_table_$invalid_lock_reset ext fixed bin (35); 78 dcl error_table_$locked_by_this_process ext fixed bin (35); 79 80 dcl clock_ entry returns (fixed bin (71)); 81 dcl get_system_free_area_ entry (ptr); 82 dcl iod_info_$generic_type entry (char (*), char (*), fixed bin (35)); 83 dcl iod_info_$queue_data entry (char (*), fixed bin, fixed bin, fixed bin (35)); 84 dcl message_segment_$add_file 85 entry (char (*) aligned, char (*) aligned, ptr, fixed bin, bit (*) aligned, fixed bin (35)); 86 dcl message_segment_$get_message_count_file entry (char (*) aligned, char (*) aligned, fixed bin, fixed bin (35)); 87 dcl set_lock_$lock entry (bit (36) aligned, fixed bin, fixed bin (35)); 88 89 dcl (null, addr, bit, substr, string, length, rtrim, currentsize) builtin; 90 91 dcl cleanup condition; 92 1 1 /* BEGIN INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 1 2 1 3 /* This is the message header used for standard system queue messages, namely: 1 4* IO daemon requests, absentee requests, retrieval requests. 1 5**/ 1 6 1 7 /* Written by Jerry Whitmore, Spring 1978. 1 8* Modified by T. Casey, November 1978, to add values for state. 1 9* Modified by R. Kovalcik, June 1982, defer_until_process_terminataion 1 10**/ 1 11 1 12 dcl 1 queue_msg_hdr based aligned, /* standard header for all system queue messages */ 1 13 2 msg_time fixed bin (71), /* date and time of request */ 1 14 2 hdr_version fixed bin, /* version of this declaration */ 1 15 2 dirname char (168), /* directory name */ 1 16 2 ename char (32), /* entry name of file requested */ 1 17 2 message_type fixed bin, /* message format descriptor */ 1 18 /* 0 = absentee request */ 1 19 /* 1 = print request */ 1 20 /* 2 = punch request */ 1 21 /* 3 = tape request */ 1 22 /* 4 = retrieval request */ 1 23 2 bit_flags, 1 24 3 delete_sw bit (1) unal, /* delete file when done */ 1 25 3 notify bit (1) unal, /* user wants to be notified */ 1 26 3 defer_until_process_termination bit (1) unal, /* don't process request until process terminates */ 1 27 3 padding bit (33) unal, 1 28 2 state fixed bin, /* stage of processing after being queued: 1 29* 0 = initial unprocessed state, 1 = deferred, 1 30* 2 = in state transition, 3 = eligible, 4 = running, 1 31* 5 = bumped, 6 = deferred_until_process_termination */ 1 32 2 orig_queue fixed bin, /* queue the request was submitted to */ 1 33 2 std_length fixed bin, /* length of std msg for this type */ 1 34 2 dupt_lock bit (36) aligned, /* lock word for defer until process termination */ 1 35 2 hdr_pad (3) fixed bin; 1 36 1 37 dcl queue_msg_hdr_version_1 fixed bin int static options (constant) init (1); /* current version of the header */ 1 38 1 39 /* Values for queue_msg_hdr.state */ 1 40 1 41 dcl STATE_UNPROCESSED fixed bin int static options (constant) init (0); 1 42 dcl STATE_DEFERRED fixed bin int static options (constant) init (1); 1 43 dcl STATE_TRANSITION fixed bin int static options (constant) init (2); 1 44 dcl STATE_ELIGIBLE fixed bin int static options (constant) init (3); 1 45 dcl STATE_RUNNING fixed bin int static options (constant) init (4); 1 46 dcl STATE_BUMPED fixed bin int static options (constant) init (5); 1 47 dcl STATE_DUPT fixed bin int static options (constant) init (6); 1 48 1 49 /* END INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 93 2 1 /* BEGIN INCLUDE FILE ... dprint_msg.incl.pl1 */ 2 2 /* Modified: November 1983 by C. Marker Added no_separator. */ 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(87-05-10,Gilcrease), approve(87-05-13,MCR7686), 2 6* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 2 7* Add line_nbrs bit for line-numbered printouts, version 4. 2 8* 2) change(88-02-05,Farley), approve(88-02-05,PBF7686), audit(88-02-05,GWMay), 2 9* install(88-02-05,MR12.2-1022): 2 10* Corrected alignment of line_nbrs, was aligned s/b unaligned.. 2 11* 3) change(88-08-23,Farley), approve(88-09-16,MCR7911), 2 12* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 2 13* Increased size of forms field to 64 characters (was only 24), which 2 14* updates the version to 5. 2 15* END HISTORY COMMENTS */ 2 16 2 17 2 18 dcl dmp ptr; /* ptr to message */ 2 19 2 20 dcl 1 dprint_msg based (dmp) aligned, /* structure of a IO daemon print or punch request */ 2 21 2 header like queue_msg_hdr, /* header for all standard queue messages */ 2 22 2 version fixed bin, /* version of the dprint_msg used */ 2 23 2 copies fixed bin, /* number of copies user requested */ 2 24 2 bit_count fixed bin (35), /* the bitcount of the segment at request time */ 2 25 2 output_module fixed bin, /* 1=print, 2=7punch, 3= mcc, 4=raw */ 2 26 2 control, /* control flags. */ 2 27 3 nep bit (1) unal, /* TRUE if printing over perforations */ 2 28 3 single bit (1) unal, /* TRUE if ignore FF and VT */ 2 29 3 non_edited bit (1) unal, /* TRUE if printing in non-edited mode */ 2 30 3 truncate bit (1) unal, /* TRUE if truncating lines at line length */ 2 31 3 esc bit (1) unal, /* TRUE if text escapes are to be processed */ 2 32 3 center_top_label bit (1) unal, /* TRUE if top label to be centered */ 2 33 3 center_bottom_label bit (1) unal, /* TRUE if bottom label to be centered */ 2 34 3 no_separator bit(1) unal, /* TRUE if the inner head a tail sheets of multiple copies are to be suppressed. */ 2 35 3 line_nbrs bit (1) unal, /* TRUE if line numbers wanted */ 2 36 3 padding bit (27) unal, 2 37 2 lmargin fixed bin, /* indent from the left */ 2 38 2 line_lth fixed bin, /* logical line length */ 2 39 2 page_lth fixed bin, /* logical page length */ 2 40 2 heading_lth fixed bin, /* number of chars in heading */ 2 41 2 top_label_lth fixed bin, /* number of chars in the top label */ 2 42 2 bottom_label_lth fixed bin, /* number of chars in bottom label */ 2 43 2 chan_stop_path_lth fixed bin, /* number of chars in channel stop pathname */ 2 44 2 forms_name_lth fixed bin, /* number of chars in forms name */ 2 45 2 future_fb_values (7) fixed bin, /* make future versions possible */ 2 46 2 forms char (24), /* name of special forms, or blank */ 2 47 2 destination char (24), /* routing for output */ 2 48 2 heading char (head_max_lth refer (dprint_msg.heading_lth)), /* heading on page 1 */ 2 49 2 top_label char (label_max_lth refer (dprint_msg.top_label_lth)), /* top page heading for each page */ 2 50 2 bottom_label char (label_max_lth refer (dprint_msg.bottom_label_lth)), /* bottom page heading */ 2 51 2 chan_stop_path char (path_max_lth refer (dprint_msg.chan_stop_path_lth)), /* path of rqti seg with channel stops */ 2 52 2 forms_name char (forms_max_lth refer (dprint_msg.forms_name_lth)); /* forms name string */ 2 53 2 54 2 55 dcl ( 2 56 head_max_lth init (64), /* allocation size for heading */ 2 57 label_max_lth init (136), /* allocation size for label fields */ 2 58 path_max_lth init (168), /* allocation size for pathname fields */ 2 59 forms_max_lth init (64) /* allocation size for forms name string */ 2 60 ) fixed bin int static options (constant); 2 61 2 62 dcl ( 2 63 dprint_msg_version_3 init (3), 2 64 dprint_msg_version_4 init (4), 2 65 dprint_msg_version_5 init (5) /* current version */ 2 66 ) fixed bin int static options (constant); 2 67 2 68 /* END INCLUDE FILE ... dprint_msg.incl.pl1 */ 94 3 1 /* BEGIN INCLUDE FILE ... dprint_arg.incl.pl1 */ 3 2 /* Modified 11/13/74 by Noel I. Morris */ 3 3 /* Modified: 10 April 1981 by G. Palter for version 6 structure -- longer request type names */ 3 4 /* Modified: 30 April 1982 by R. Kovalcik for version 7 structure -- defer_until_process_terminataion */ 3 5 /* Modified: November 1983 by C. Marker for version 8 structure -- no_separator */ 3 6 3 7 /****^ HISTORY COMMENTS: 3 8* 1) change(87-05-10,Gilcrease), approve(87-05-13,MCR7686), 3 9* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 3 10* Add line_nbrs bit for line-numbered printouts, version 9. 3 11* 2) change(88-02-05,Farley), approve(88-02-05,PBF7686), audit(88-02-05,GWMay), 3 12* install(88-02-05,MR12.2-1022): 3 13* Corrected alignment of line_nbrs, was aligned s/b unaligned.. 3 14* 3) change(88-08-29,Farley), approve(88-09-16,MCR7911), 3 15* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 3 16* Created a new 64 character forms_name variable, which supersedes the old 3 17* char 24 form_name variable, version 10. 3 18* END HISTORY COMMENTS */ 3 19 3 20 3 21 dcl dpap ptr; /* ptr to argument structure */ 3 22 dcl 1 dprint_arg_buf aligned like dprint_arg; /* Automatic storage for arg. */ 3 23 3 24 dcl 1 dprint_arg based (dpap) aligned, /* argument structure */ 3 25 2 version fixed bin, /* version number of dcl - current version is 9 */ 3 26 2 copies fixed bin, /* number of copies wanted */ 3 27 2 delete fixed bin, /* 1=delete after print */ 3 28 2 queue fixed bin, /* print queue */ 3 29 2 pt_pch fixed bin, /* 1=print, 2=punch */ 3 30 2 notify fixed bin, /* 1 = notify user when done */ 3 31 2 heading char (64), /* first page heading */ 3 32 2 output_module fixed bin, /* 1=print, 2=7punch, 3=mcc, 4=raw, 5=plotter */ 3 33 2 dest char (12), /* version 5 made this a pad - see destination below */ 3 34 /* limit of version 1 structure */ 3 35 2 carriage_control, /* Carriage control flags. */ 3 36 3 nep bit (1) unal, /* TRUE if print trhu perf. */ 3 37 3 single bit (1) unal, /* TRUE if ignore FF and VT */ 3 38 3 non_edited bit (1) unal, /* TRUE if printing in non-edited mode */ 3 39 3 truncate bit (1) unal, /* TRUE if truncating lines at line length */ 3 40 3 center_top_label bit (1) unal, /* TRUE if top label to be centered */ 3 41 3 center_bottom_label bit (1) unal, /* TRUE if bottom label to be centered */ 3 42 3 esc bit (1) unal, /* version 5 TRUE if text escapes are to be processed */ 3 43 3 no_separator bit (1) unal, /* version 8 TRUE if the inner head and tail sheets are to be suppressed. */ 3 44 3 line_nbrs bit (1) unal, /* version 9, line numbers */ 3 45 3 padding bit (27) unal, 3 46 2 pad (30) fixed bin, 3 47 2 forms char (8), /* version 5 made this a pad - see form_name below */ 3 48 2 lmargin fixed bin, /* left margin */ 3 49 2 line_lth fixed bin, /* max line lth */ 3 50 /* limit of version 2 structure */ 3 51 2 class char (8), /* version 6 made this a pad - see request_type below */ 3 52 2 page_lth fixed bin, /* Paper length arg */ 3 53 /* limit of version 3 structure */ 3 54 2 top_label char (136), /* top-of-page label */ 3 55 2 bottom_label char (136), /* bottom-of-page label */ 3 56 /* limit of version 4 structure */ 3 57 2 bit_count fixed bin (35), /* segment bit count */ 3 58 2 form_name char (24), /* name of special forms needed - moved from forms */ 3 59 /* version 10 made this a pad - see forms_name below */ 3 60 2 destination char (24), /* the long destination - moved from dest */ 3 61 2 chan_stop_path char (168), /* path of user channel stops - future */ 3 62 /* limit of version 5 structure */ 3 63 2 request_type character (24) unaligned, /* request type for the request */ 3 64 /* limit of version 6 structure */ 3 65 2 defer_until_process_termination fixed bin, /* 1 = don't process request until requesting process terminates */ 3 66 2 forms_name char (64) unal; /* name of special forms needed - moved from form_name */ 3 67 /* limit of version 10 structure */ 3 68 3 69 dcl dprint_arg_version_1 fixed bin int static options (constant) init (1); 3 70 dcl dprint_arg_version_2 fixed bin int static options (constant) init (2); 3 71 dcl dprint_arg_version_3 fixed bin int static options (constant) init (3); 3 72 dcl dprint_arg_version_4 fixed bin int static options (constant) init (4); 3 73 dcl dprint_arg_version_5 fixed bin int static options (constant) init (5); 3 74 dcl dprint_arg_version_6 fixed bin int static options (constant) init (6); 3 75 dcl dprint_arg_version_7 fixed bin int static options (constant) init (7); 3 76 dcl dprint_arg_version_8 fixed bin int static options (constant) init (8); 3 77 dcl dprint_arg_version_9 fixed bin int static options (constant) init (9); 3 78 dcl dprint_arg_version_10 fixed bin int static options (constant) init (10); 3 79 /* current version */ 3 80 3 81 dcl ( 3 82 DP_PRINT init (1), 3 83 DP_PUNCH init (2), 3 84 DP_PLOT init (3) 3 85 ) fixed bin static options (constant); /* for dprint_arg.pt_pch */ 3 86 3 87 /* END INCLUDE FILE ... dprint_arg.incl.pl1 */ 95 96 97 return_request_id = "0"b; /* main entry */ 98 go to dprint_join; 99 100 request_id: 101 entry (dirname, ename, dpap, requestid, ec); 102 103 return_request_id = "1"b; 104 105 dprint_join: 106 if areap = null 107 then call get_system_free_area_ (areap); /* get an area for the dprint message */ 108 109 allocate dprint_msg in (area_space) set (dmp); 110 on cleanup free dmp -> dprint_msg in (area_space); 111 112 dprint_msg.dirname = dirname; /* make up the default message */ 113 dprint_msg.ename = ename; 114 dprint_msg.hdr_version = queue_msg_hdr_version_1; 115 dprint_msg.version = dprint_msg_version_5; 116 dprint_msg.msg_time = clock_ (); 117 if return_request_id 118 then requestid = dprint_msg.msg_time; 119 dprint_msg.message_type = 1; 120 dprint_msg.copies = 1; 121 string (dprint_msg.bit_flags) = "0"b; 122 dprint_msg.state = 0; /* Daemon has not seen this yet */ 123 dprint_msg.dupt_lock = "0"b; 124 string (dprint_msg.control) = "0"b; 125 dprint_msg.output_module = 1; 126 dprint_msg.lmargin = 0; 127 dprint_msg.line_lth = 0; 128 dprint_msg.page_lth = 0; 129 dprint_msg.forms = ""; 130 dprint_msg.destination = ""; 131 dprint_msg.heading_lth = 0; 132 dprint_msg.top_label_lth = 0; 133 dprint_msg.bottom_label_lth = 0; 134 dprint_msg.chan_stop_path_lth = 0; 135 dprint_msg.orig_queue = 0; /* no queue yet, request the default */ 136 rqt_name = "printer"; /* assume the default request type for now */ 137 generic_type = "printer"; /* assume the default generic type for the request type */ 138 139 if dpap = null 140 then go to send; /* if no args, send the default message */ 141 142 if dprint_arg.pt_pch = DP_PRINT 143 then do; /* this is a print request, make sure */ 144 if dprint_arg.output_module ^= 1 145 then do; 146 ec = error_table_$request_not_recognized; 147 go to free; 148 end; 149 end; 150 151 else if dprint_arg.pt_pch = DP_PUNCH 152 then do; /* this is a punch request, check format code */ 153 rqt_name = "punch"; /* the default request type is punch */ 154 generic_type = "punch"; /* the generic type is punch */ 155 if dprint_arg.output_module < 2 | dprint_arg.output_module > 4 156 then do; /* known format? */ 157 ec = error_table_$request_not_recognized; 158 go to free; 159 end; 160 end; 161 162 else if dprint_arg.pt_pch = DP_PLOT 163 then do; /* this is a plotter request. Make sure the */ 164 rqt_name = "plotter"; /* default request type and generic type are set */ 165 generic_type = "plotter"; /* to plotter. Only one output mode is supported. */ 166 if dprint_arg.output_module ^= 5 167 then do; 168 ec = error_table_$request_not_recognized; 169 go to free; 170 end; 171 end; 172 173 else do; /* this is bad news */ 174 ec = error_table_$request_not_recognized; 175 go to free; 176 end; 177 dprint_msg.orig_queue = dprint_arg.queue; 178 dprint_msg.message_type = dprint_arg.pt_pch; 179 dprint_msg.heading_lth = length (rtrim (dprint_arg.heading)); 180 /* make the string the right length */ 181 dprint_msg.heading = dprint_arg.heading; 182 dprint_msg.output_module = dprint_arg.output_module; 183 dprint_msg.delete_sw = (dprint_arg.delete = 1); 184 dprint_msg.copies = dprint_arg.copies; 185 if dprint_arg.version < dprint_arg_version_5 186 then /* use a different variable after version 5 */ 187 dprint_msg.destination = dprint_arg.dest; 188 else dprint_msg.destination = dprint_arg.destination; 189 190 if dprint_arg.version = dprint_arg_version_1 191 then go to send; /* limit of version 1 data */ 192 dprint_msg.nep = dprint_arg.nep; 193 dprint_msg.single = dprint_arg.single; 194 dprint_msg.non_edited = dprint_arg.non_edited; 195 dprint_msg.truncate = dprint_arg.truncate; 196 dprint_msg.center_top_label = dprint_arg.center_top_label; 197 dprint_msg.center_bottom_label = dprint_arg.center_bottom_label; 198 if dprint_arg.version < dprint_arg_version_5 199 then dprint_msg.forms_name = dprint_arg.forms; /* forms location changed with version 5 */ 200 else if dprint_arg.version < dprint_arg_version_10 201 then dprint_msg.forms_name = dprint_arg.form_name;/* forms location changed with version 10 */ 202 else dprint_msg.forms_name = dprint_arg.forms_name; 203 /* new forms location */ 204 dprint_msg.forms_name_lth = length (rtrim (dprint_msg.forms_name)); 205 /* make the string the right length */ 206 dprint_msg.lmargin = dprint_arg.lmargin; 207 dprint_msg.line_lth = dprint_arg.line_lth; 208 dprint_msg.notify = (dprint_arg.notify = 1); 209 210 if dprint_arg.version = dprint_arg_version_2 211 then go to send; /* limit of version 2 data */ 212 dprint_msg.page_lth = dprint_arg.page_lth; 213 214 if (dprint_arg.version < dprint_arg_version_6) 215 then /* before version 6: use 8 character request type */ 216 if dprint_arg.class ^= "" 217 then rqt_name = dprint_arg.class; 218 else ; 219 else if (dprint_arg.request_type ^= "") 220 then /* version 6 and beyond: use long request type name */ 221 rqt_name = dprint_arg.request_type; 222 223 if dprint_arg.version = dprint_arg_version_3 224 then go to send; /* limit of version 3 data */ 225 dprint_msg.top_label_lth = length (rtrim (dprint_arg.top_label)); 226 dprint_msg.bottom_label_lth = length (rtrim (dprint_arg.bottom_label)); 227 dprint_msg.top_label = dprint_arg.top_label; 228 dprint_msg.bottom_label = dprint_arg.bottom_label; 229 230 if dprint_arg.version = dprint_arg_version_4 231 then go to send; /* limit of version 4 data */ 232 dprint_msg.bit_count = dprint_arg.bit_count; 233 dprint_msg.esc = dprint_arg.esc; 234 dprint_msg.chan_stop_path_lth = length (rtrim (dprint_arg.chan_stop_path)); 235 dprint_msg.chan_stop_path = dprint_arg.chan_stop_path; 236 237 if dprint_arg.version < dprint_arg_version_7 238 then go to send; /* limit of version 6 data */ 239 dprint_msg.defer_until_process_termination = (dprint_arg.defer_until_process_termination = 1); 240 /* see if we want "defer_until_process_termination */ 241 if dprint_msg.defer_until_process_termination 242 then do; /* if we request deferal until process termination, 243* then we must set up a lock */ 244 call set_lock_$lock (dprint_msg.dupt_lock, 1, ec); 245 if ec ^= 0 246 then if (ec = error_table_$invalid_lock_reset) | (ec = error_table_$locked_by_this_process) 247 then ec = 0; /* if it's an OK error, zero it */ 248 else go to free; /* else, go barf */ 249 else ; 250 end; 251 if dprint_arg.version = dprint_arg_version_7 252 then go to send; /* limit version 7 data */ 253 dprint_msg.no_separator = dprint_arg.no_separator; 254 255 if dprint_arg.version = dprint_arg_version_8 256 then go to send; /* limit version 8 */ 257 dprint_msg.line_nbrs = dprint_arg.line_nbrs; 258 259 send: 260 call iod_info_$generic_type (rqt_name, rqt_generic_type, ec); 261 if ec ^= 0 262 then go to free; 263 264 if rqt_generic_type ^= generic_type 265 then do; /* be sure we have the right type of request */ 266 ec = error_table_$request_not_recognized; 267 go to free; 268 end; 269 270 if dprint_msg.copies < 1 271 then dprint_msg.copies = 1; /* check for consistency */ 272 273 if dprint_msg.orig_queue < 1 274 then do; /* do we want the default queue? */ 275 call iod_info_$queue_data (rqt_name, default_q, max_q, ec); 276 if ec ^= 0 277 then go to free; 278 dprint_msg.orig_queue = default_q; 279 if dpap ^= null 280 then dprint_arg.queue = default_q; /* tell caller number of default queue */ 281 end; 282 283 queue_pic = dprint_msg.orig_queue; /* convert to a character string */ 284 sys_msg_seg = rtrim (rqt_name) || "_" || queue_pic || ".ms"; 285 /* make message seg name */ 286 287 call message_segment_$add_file (sysdir, sys_msg_seg, dmp, currentsize (dprint_msg) * 36, mess_id, ec); 288 free: 289 free dmp -> dprint_msg in (area_space); 290 return; 291 292 /* */ 293 294 qfull: 295 entry (qq, count, ec1, a_rqt_name); 296 297 dcl a_rqt_name char (8); 298 dcl (qq, count) fixed bin, 299 ec1 fixed bin (35); 300 301 call queue_contents (a_rqt_name, qq, count, ec1); /* invoke the new, modern entry */ 302 return; 303 304 305 /* Returns number of request already present in a particular queue of the specified request type */ 306 307 queue_contents: 308 entry (a_request_type, a_queue, a_count, ec2); 309 310 dcl a_request_type character (*); 311 dcl (a_queue, a_count) fixed binary; 312 dcl ec2 fixed binary (35); 313 314 if a_request_type = "" 315 then rqt_name = "printer"; 316 else rqt_name = a_request_type; 317 a_count = 0; /* Initialize queue entries count */ 318 319 if a_queue < 1 320 then do; /* if the default queue is requested, find it */ 321 call iod_info_$queue_data (rqt_name, default_q, max_q, ec2); 322 if ec2 ^= 0 323 then return; 324 a_queue = default_q; 325 end; 326 else if a_queue > 4 327 then do; /* illegal value? */ 328 ec2 = error_table_$request_not_recognized; 329 return; 330 end; 331 332 queue_pic = a_queue; /* convert queue number to char */ 333 sys_msg_seg = rtrim (rqt_name) || "_" || queue_pic || ".ms"; 334 335 call message_segment_$get_message_count_file (sysdir, sys_msg_seg, a_count, ec2); 336 return; 337 338 /* */ 339 340 access_check: 341 entry (dirname, ename, a_rqt_name, del_acc, read_acc, stat_acc, ret_accname, ec3); 342 343 dcl del_acc bit (1) aligned; 344 dcl read_acc bit (1) aligned; 345 dcl stat_acc bit (1) aligned; 346 dcl ret_accname char (*); 347 dcl ec3 fixed binary (35); 348 349 call check_daemon_access (dirname, ename, a_rqt_name, del_acc, read_acc, stat_acc, ret_accname, ec3); 350 /* invoke the new, modern entry */ 351 return; 352 353 354 /* This entry is used to find out if the I/O daemon 355* * process that will perform this request will have sufficient access to do so. 356* * del_acc will be set to "0"b if the segment cannot be deleted. read_acc 357* * will be set to "0"b if the driver for the specified request_type does not have 358* * "r" access on the segment. stat_acc will be set to "0"b if the driver does 359* * not have "s" access on the containing directory. 360**/ 361 362 /* Entry added Dec. 28, 1973 by Robert S. Coren */ 363 /* Modified: 10 April 1981 by G. Palter */ 364 365 check_daemon_access: 366 entry (dirname, ename, a_request_type2, del_acc, read_acc, stat_acc, ret_accname, ec3); 367 368 dcl a_request_type2 character (*); 369 dcl cu_$level_get entry returns (fixed bin); 370 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 371 dcl hcs_$get_user_effmode entry (char (*), char (*), char (*), fixed bin, fixed bin (5), fixed bin (35)); 372 dcl iod_info_$driver_access_name entry (char (*), char (32), fixed bin (35)); 373 dcl hcs_$get_link_target entry (char (*), char (*), char (*), char (*), fixed bin (35)); 374 375 dcl dir char (168); 376 dcl ent char (168); 377 dcl dirdir char (168); 378 dcl dirent char (32); 379 dcl accname char (32); 380 dcl level fixed bin; 381 dcl mode fixed bin (5); 382 dcl bit5 bit (5); /* Inserted to avoid compiler error. */ 383 384 dcl df_print_name char (32) int static init (""); /* driver access name for default print request type */ 385 dcl df_punch_name char (32) int static init (""); /* driver access name for default punch request type */ 386 387 stat_acc, read_acc, del_acc = "0"b; 388 ec3 = 0; 389 rqt_name = a_request_type2; 390 391 if rqt_name = "printer" 392 then do; 393 if df_print_name = "" 394 then do; 395 call iod_info_$driver_access_name ("printer", df_print_name, ec3); 396 if ec3 ^= 0 397 then return; 398 end; 399 accname = df_print_name; 400 end; 401 402 else if rqt_name = "punch" 403 then do; 404 if df_punch_name = "" 405 then do; 406 call iod_info_$driver_access_name ("punch", df_punch_name, ec3); 407 if ec3 ^= 0 408 then return; 409 end; 410 accname = df_punch_name; 411 end; 412 413 else do; 414 call iod_info_$driver_access_name (rqt_name, accname, ec3); 415 if ec3 ^= 0 416 then return; 417 end; 418 419 ret_accname = accname; /* group id of driver process reading segment */ 420 421 level = cu_$level_get (); 422 423 /* Determine true pathname of target segment */ 424 425 call hcs_$get_link_target (dirname, ename, dir, ent, ec3); 426 if ec3 ^= 0 427 then return; 428 429 call hcs_$get_user_effmode (dir, ent, accname, level, mode, ec3); 430 /* get driver's access to seg */ 431 if ec3 ^= 0 432 then return; 433 434 /* read access is second bit */ 435 436 read_acc = substr (bit (mode, 5), 2, 1); 437 438 /* separate off directory name to check for modify (also status) */ 439 440 call expand_pathname_ (dir, dirdir, dirent, ec3); 441 if ec3 ^= 0 442 then return; 443 444 call hcs_$get_user_effmode (dirdir, dirent, accname, level, mode, ec3); 445 /* get driver's access to directory */ 446 if ec3 ^= 0 447 then return; 448 449 stat_acc = substr (bit (mode, 5), 2, 1); 450 451 call hcs_$get_user_effmode (dirdir, dirent, "IO.SysDaemon.*", 452 /* see if IO Coord can delete the seg */ 453 level, mode, ec3); 454 if ec3 ^= 0 455 then return; 456 457 bit5 = bit (mode, 5); 458 del_acc = substr (bit5, 2, 1) & substr (bit5, 4, 1); 459 return; 460 461 /* */ 462 463 /* Set the system directory used to find the queues to permit testing of new version of I/O daemon tables and software */ 464 465 test: 466 entry (test_dir); 467 468 dcl test_dir char (*); 469 dcl iod_info_$test entry (char (*)); 470 471 sysdir = test_dir; 472 df_print_name, df_punch_name = ""; 473 call iod_info_$test (test_dir); 474 return; 475 476 end dprint_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/28/88 1230.1 dprint_.pl1 >special_ldd>install>MR12.2-1199>dprint_.pl1 93 1 08/31/82 1636.3 queue_msg_hdr.incl.pl1 >ldd>include>queue_msg_hdr.incl.pl1 94 2 10/28/88 1227.6 dprint_msg.incl.pl1 >special_ldd>install>MR12.2-1199>dprint_msg.incl.pl1 95 3 10/28/88 1227.7 dprint_arg.incl.pl1 >special_ldd>install>MR12.2-1199>dprint_arg.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. DP_PLOT constant fixed bin(17,0) initial dcl 3-81 ref 162 DP_PRINT constant fixed bin(17,0) initial dcl 3-81 ref 142 DP_PUNCH constant fixed bin(17,0) initial dcl 3-81 ref 151 a_count parameter fixed bin(17,0) dcl 311 set ref 307 317* 335* a_queue parameter fixed bin(17,0) dcl 311 set ref 307 319 324* 326 332 a_request_type parameter char packed unaligned dcl 310 ref 307 314 316 a_request_type2 parameter char packed unaligned dcl 368 ref 365 389 a_rqt_name parameter char(8) packed unaligned dcl 297 set ref 294 301* 340 349* accname 000362 automatic char(32) packed unaligned dcl 379 set ref 399* 410* 414* 419 429* 444* addr builtin function dcl 89 ref 287 area_space based area(1000) dcl 71 ref 109 110 288 areap 000062 internal static pointer initial dcl 72 set ref 105 105* 109 110 288 bit builtin function dcl 89 ref 436 449 457 bit5 000374 automatic bit(5) packed unaligned dcl 382 set ref 457* 458 458 bit_count 204 based fixed bin(35,0) level 2 in structure "dprint_arg" dcl 3-24 in procedure "dprint_" ref 232 bit_count 100 based fixed bin(35,0) level 2 in structure "dprint_msg" dcl 2-20 in procedure "dprint_" set ref 232* bit_flags 66 based structure level 3 dcl 2-20 set ref 121* bottom_label 142 based char(136) level 2 in structure "dprint_arg" dcl 3-24 in procedure "dprint_" ref 226 228 bottom_label based char level 2 in structure "dprint_msg" dcl 2-20 in procedure "dprint_" set ref 228* bottom_label_lth 110 based fixed bin(17,0) level 2 dcl 2-20 set ref 109* 110 133* 198 200 202 204 226* 228 235 287 288 carriage_control 32 based structure level 2 dcl 3-24 center_bottom_label 102(06) based bit(1) level 3 in structure "dprint_msg" packed packed unaligned dcl 2-20 in procedure "dprint_" set ref 197* center_bottom_label 32(05) based bit(1) level 3 in structure "dprint_arg" packed packed unaligned dcl 3-24 in procedure "dprint_" ref 197 center_top_label 32(04) based bit(1) level 3 in structure "dprint_arg" packed packed unaligned dcl 3-24 in procedure "dprint_" ref 196 center_top_label 102(05) based bit(1) level 3 in structure "dprint_msg" packed packed unaligned dcl 2-20 in procedure "dprint_" set ref 196* chan_stop_path based char level 2 in structure "dprint_msg" dcl 2-20 in procedure "dprint_" set ref 235* chan_stop_path 221 based char(168) level 2 in structure "dprint_arg" dcl 3-24 in procedure "dprint_" ref 234 235 chan_stop_path_lth 111 based fixed bin(17,0) level 2 dcl 2-20 set ref 109* 110 134* 198 200 202 204 234* 235 287 288 class 75 based char(8) level 2 dcl 3-24 ref 214 214 cleanup 000144 stack reference condition dcl 91 ref 110 clock_ 000112 constant entry external dcl 80 ref 116 control 102 based structure level 2 dcl 2-20 set ref 124* copies 1 based fixed bin(17,0) level 2 in structure "dprint_arg" dcl 3-24 in procedure "dprint_" ref 184 copies 77 based fixed bin(17,0) level 2 in structure "dprint_msg" dcl 2-20 in procedure "dprint_" set ref 120* 184* 270 270* count parameter fixed bin(17,0) dcl 298 set ref 294 301* cu_$level_get 000130 constant entry external dcl 369 ref 421 currentsize builtin function dcl 89 ref 287 default_q 000141 automatic fixed bin(17,0) dcl 68 set ref 275* 278 279 321* 324 defer_until_process_termination 66(02) based bit(1) level 4 in structure "dprint_msg" packed packed unaligned dcl 2-20 in procedure "dprint_" set ref 239* 241 defer_until_process_termination 301 based fixed bin(17,0) level 2 in structure "dprint_arg" dcl 3-24 in procedure "dprint_" ref 239 del_acc parameter bit(1) dcl 343 set ref 340 349* 365 387* 458* delete 2 based fixed bin(17,0) level 2 dcl 3-24 ref 183 delete_sw 66 based bit(1) level 4 packed packed unaligned dcl 2-20 set ref 183* dest 27 based char(12) level 2 dcl 3-24 ref 185 destination 130 based char(24) level 2 in structure "dprint_msg" dcl 2-20 in procedure "dprint_" set ref 130* 185* 188* destination 213 based char(24) level 2 in structure "dprint_arg" dcl 3-24 in procedure "dprint_" ref 188 df_print_name 000064 internal static char(32) initial packed unaligned dcl 384 set ref 393 395* 399 472* df_punch_name 000074 internal static char(32) initial packed unaligned dcl 385 set ref 404 406* 410 472* dir 000154 automatic char(168) packed unaligned dcl 375 set ref 425* 429* 440* dirdir 000300 automatic char(168) packed unaligned dcl 377 set ref 440* 444* 451* dirent 000352 automatic char(32) packed unaligned dcl 378 set ref 440* 444* 451* dirname 3 based char(168) level 3 in structure "dprint_msg" dcl 2-20 in procedure "dprint_" set ref 112* dirname parameter char packed unaligned dcl 54 in procedure "dprint_" set ref 18 100 112 340 349* 365 425* dmp 000152 automatic pointer dcl 2-18 set ref 109* 110 112 113 114 115 116 117 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 177 178 179 181 182 183 184 185 188 192 193 194 195 196 197 198 200 202 204 204 206 207 208 212 225 226 227 228 232 233 234 235 239 241 244 253 257 270 270 273 278 283 287* 287 288 dpap parameter pointer dcl 3-21 ref 18 100 139 142 144 151 155 155 162 166 177 178 179 181 182 183 184 185 185 188 190 192 193 194 195 196 197 198 198 200 200 202 206 207 208 210 212 214 214 214 219 219 223 225 226 227 228 230 232 233 234 235 237 239 251 253 255 257 279 279 dprint_arg based structure level 1 dcl 3-24 dprint_arg_version_1 constant fixed bin(17,0) initial dcl 3-69 ref 190 dprint_arg_version_10 constant fixed bin(17,0) initial dcl 3-78 ref 200 dprint_arg_version_2 constant fixed bin(17,0) initial dcl 3-70 ref 210 dprint_arg_version_3 constant fixed bin(17,0) initial dcl 3-71 ref 223 dprint_arg_version_4 constant fixed bin(17,0) initial dcl 3-72 ref 230 dprint_arg_version_5 constant fixed bin(17,0) initial dcl 3-73 ref 185 198 dprint_arg_version_6 constant fixed bin(17,0) initial dcl 3-74 ref 214 dprint_arg_version_7 constant fixed bin(17,0) initial dcl 3-75 ref 237 251 dprint_arg_version_8 constant fixed bin(17,0) initial dcl 3-76 ref 255 dprint_msg based structure level 1 dcl 2-20 set ref 109 110 287 288 dprint_msg_version_5 constant fixed bin(17,0) initial dcl 2-62 ref 115 dupt_lock 72 based bit(36) level 3 dcl 2-20 set ref 123* 244* ec parameter fixed bin(35,0) dcl 54 set ref 18 100 146* 157* 168* 174* 244* 245 245 245 245* 259* 261 266* 275* 276 287* ec1 parameter fixed bin(35,0) dcl 298 set ref 294 301* ec2 parameter fixed bin(35,0) dcl 312 set ref 307 321* 322 328* 335* ec3 parameter fixed bin(35,0) dcl 347 set ref 340 349* 365 388* 395* 396 406* 407 414* 415 425* 426 429* 431 440* 441 444* 446 451* 454 ename parameter char packed unaligned dcl 54 in procedure "dprint_" set ref 18 100 113 340 349* 365 425* ename 55 based char(32) level 3 in structure "dprint_msg" dcl 2-20 in procedure "dprint_" set ref 113* ent 000226 automatic char(168) packed unaligned dcl 376 set ref 425* 429* error_table_$invalid_lock_reset 000106 external static fixed bin(35,0) dcl 77 ref 245 error_table_$locked_by_this_process 000110 external static fixed bin(35,0) dcl 78 ref 245 error_table_$request_not_recognized 000104 external static fixed bin(35,0) dcl 76 ref 146 157 168 174 266 328 esc 102(04) based bit(1) level 3 in structure "dprint_msg" packed packed unaligned dcl 2-20 in procedure "dprint_" set ref 233* esc 32(06) based bit(1) level 3 in structure "dprint_arg" packed packed unaligned dcl 3-24 in procedure "dprint_" ref 233 expand_pathname_ 000132 constant entry external dcl 370 ref 440 form_name 205 based char(24) level 2 dcl 3-24 ref 200 forms 122 based char(24) level 2 in structure "dprint_msg" dcl 2-20 in procedure "dprint_" set ref 129* forms 71 based char(8) level 2 in structure "dprint_arg" dcl 3-24 in procedure "dprint_" ref 198 forms_max_lth constant fixed bin(17,0) initial dcl 2-55 ref 109 109 forms_name 302 based char(64) level 2 in structure "dprint_arg" packed packed unaligned dcl 3-24 in procedure "dprint_" ref 202 forms_name based char level 2 in structure "dprint_msg" dcl 2-20 in procedure "dprint_" set ref 198* 200* 202* 204 forms_name_lth 112 based fixed bin(17,0) level 2 dcl 2-20 set ref 109* 110 198 200 202 204* 204 287 288 generic_type 000121 automatic char(32) packed unaligned dcl 66 set ref 137* 154* 165* 264 get_system_free_area_ 000114 constant entry external dcl 81 ref 105 hcs_$get_link_target 000140 constant entry external dcl 373 ref 425 hcs_$get_user_effmode 000134 constant entry external dcl 371 ref 429 444 451 hdr_version 2 based fixed bin(17,0) level 3 dcl 2-20 set ref 114* head_max_lth constant fixed bin(17,0) initial dcl 2-55 ref 109 109 header based structure level 2 dcl 2-20 heading 6 based char(64) level 2 in structure "dprint_arg" dcl 3-24 in procedure "dprint_" ref 179 181 heading 136 based char level 2 in structure "dprint_msg" dcl 2-20 in procedure "dprint_" set ref 181* heading_lth 106 based fixed bin(17,0) level 2 dcl 2-20 set ref 109* 110 131* 179* 181 198 200 202 204 227 228 235 287 288 iod_info_$driver_access_name 000136 constant entry external dcl 372 ref 395 406 414 iod_info_$generic_type 000116 constant entry external dcl 82 ref 259 iod_info_$queue_data 000120 constant entry external dcl 83 ref 275 321 iod_info_$test 000142 constant entry external dcl 469 ref 473 label_max_lth constant fixed bin(17,0) initial dcl 2-55 ref 109 109 109 109 length builtin function dcl 89 ref 179 204 225 226 234 level 000372 automatic fixed bin(17,0) dcl 380 set ref 421* 429* 444* 451* line_lth 74 based fixed bin(17,0) level 2 in structure "dprint_arg" dcl 3-24 in procedure "dprint_" ref 207 line_lth 104 based fixed bin(17,0) level 2 in structure "dprint_msg" dcl 2-20 in procedure "dprint_" set ref 127* 207* line_nbrs 32(08) based bit(1) level 3 in structure "dprint_arg" packed packed unaligned dcl 3-24 in procedure "dprint_" ref 257 line_nbrs 102(08) based bit(1) level 3 in structure "dprint_msg" packed packed unaligned dcl 2-20 in procedure "dprint_" set ref 257* lmargin 103 based fixed bin(17,0) level 2 in structure "dprint_msg" dcl 2-20 in procedure "dprint_" set ref 126* 206* lmargin 73 based fixed bin(17,0) level 2 in structure "dprint_arg" dcl 3-24 in procedure "dprint_" ref 206 max_q 000142 automatic fixed bin(17,0) dcl 69 set ref 275* 321* mess_id based bit(72) dcl 59 set ref 287* mess_idx 000110 automatic fixed bin(71,0) dcl 59 set ref 287 message_segment_$add_file 000122 constant entry external dcl 84 ref 287 message_segment_$get_message_count_file 000124 constant entry external dcl 86 ref 335 message_type 65 based fixed bin(17,0) level 3 dcl 2-20 set ref 119* 178* mode 000373 automatic fixed bin(5,0) dcl 381 set ref 429* 436 444* 449 451* 457 msg_time based fixed bin(71,0) level 3 dcl 2-20 set ref 116* 117 nep 102 based bit(1) level 3 in structure "dprint_msg" packed packed unaligned dcl 2-20 in procedure "dprint_" set ref 192* nep 32 based bit(1) level 3 in structure "dprint_arg" packed packed unaligned dcl 3-24 in procedure "dprint_" ref 192 no_separator 32(07) based bit(1) level 3 in structure "dprint_arg" packed packed unaligned dcl 3-24 in procedure "dprint_" ref 253 no_separator 102(07) based bit(1) level 3 in structure "dprint_msg" packed packed unaligned dcl 2-20 in procedure "dprint_" set ref 253* non_edited 32(02) based bit(1) level 3 in structure "dprint_arg" packed packed unaligned dcl 3-24 in procedure "dprint_" ref 194 non_edited 102(02) based bit(1) level 3 in structure "dprint_msg" packed packed unaligned dcl 2-20 in procedure "dprint_" set ref 194* notify 66(01) based bit(1) level 4 in structure "dprint_msg" packed packed unaligned dcl 2-20 in procedure "dprint_" set ref 208* notify 5 based fixed bin(17,0) level 2 in structure "dprint_arg" dcl 3-24 in procedure "dprint_" ref 208 null builtin function dcl 89 ref 105 139 279 orig_queue 70 based fixed bin(17,0) level 3 dcl 2-20 set ref 135* 177* 273 278* 283 output_module 101 based fixed bin(17,0) level 2 in structure "dprint_msg" dcl 2-20 in procedure "dprint_" set ref 125* 182* output_module 26 based fixed bin(17,0) level 2 in structure "dprint_arg" dcl 3-24 in procedure "dprint_" ref 144 155 155 166 182 page_lth 77 based fixed bin(17,0) level 2 in structure "dprint_arg" dcl 3-24 in procedure "dprint_" ref 212 page_lth 105 based fixed bin(17,0) level 2 in structure "dprint_msg" dcl 2-20 in procedure "dprint_" set ref 128* 212* path_max_lth constant fixed bin(17,0) initial dcl 2-55 ref 109 109 pt_pch 4 based fixed bin(17,0) level 2 dcl 3-24 ref 142 151 162 178 qq parameter fixed bin(17,0) dcl 298 set ref 294 301* queue 3 based fixed bin(17,0) level 2 dcl 3-24 set ref 177 279* queue_msg_hdr based structure level 1 dcl 1-12 queue_msg_hdr_version_1 constant fixed bin(17,0) initial dcl 1-37 ref 114 queue_pic 000143 automatic picture(1) packed unaligned dcl 74 set ref 283* 284 332* 333 read_acc parameter bit(1) dcl 344 set ref 340 349* 365 387* 436* request_type 273 based char(24) level 2 packed packed unaligned dcl 3-24 ref 219 219 requestid parameter fixed bin(71,0) dcl 54 set ref 100 117* ret_accname parameter char packed unaligned dcl 346 set ref 340 349* 365 419* return_request_id 000112 automatic bit(1) packed unaligned dcl 64 set ref 97* 103* 117 rqt_generic_type 000131 automatic char(32) packed unaligned dcl 67 set ref 259* 264 rqt_name 000113 automatic char(24) packed unaligned dcl 65 set ref 136* 153* 164* 214* 219* 259* 275* 284 314* 316* 321* 333 389* 391 402 414* rtrim builtin function dcl 89 ref 179 204 225 226 234 284 333 set_lock_$lock 000126 constant entry external dcl 87 ref 244 single 102(01) based bit(1) level 3 in structure "dprint_msg" packed packed unaligned dcl 2-20 in procedure "dprint_" set ref 193* single 32(01) based bit(1) level 3 in structure "dprint_arg" packed packed unaligned dcl 3-24 in procedure "dprint_" ref 193 stat_acc parameter bit(1) dcl 345 set ref 340 349* 365 387* 449* state 67 based fixed bin(17,0) level 3 dcl 2-20 set ref 122* string builtin function dcl 89 set ref 121* 124* substr builtin function dcl 89 ref 436 449 458 458 sys_msg_seg 000100 automatic char(32) dcl 59 set ref 284* 287* 333* 335* sysdir 000010 internal static char(168) initial dcl 59 set ref 287* 335* 471* test_dir parameter char packed unaligned dcl 468 set ref 465 471 473* top_label based char level 2 in structure "dprint_msg" dcl 2-20 in procedure "dprint_" set ref 227* top_label 100 based char(136) level 2 in structure "dprint_arg" dcl 3-24 in procedure "dprint_" ref 225 227 top_label_lth 107 based fixed bin(17,0) level 2 dcl 2-20 set ref 109* 110 132* 198 200 202 204 225* 227 228 235 287 288 truncate 32(03) based bit(1) level 3 in structure "dprint_arg" packed packed unaligned dcl 3-24 in procedure "dprint_" ref 195 truncate 102(03) based bit(1) level 3 in structure "dprint_msg" packed packed unaligned dcl 2-20 in procedure "dprint_" set ref 195* version based fixed bin(17,0) level 2 in structure "dprint_arg" dcl 3-24 in procedure "dprint_" ref 185 190 198 200 210 214 223 230 237 251 255 version 76 based fixed bin(17,0) level 2 in structure "dprint_msg" dcl 2-20 in procedure "dprint_" set ref 115* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. STATE_BUMPED internal static fixed bin(17,0) initial dcl 1-46 STATE_DEFERRED internal static fixed bin(17,0) initial dcl 1-42 STATE_DUPT internal static fixed bin(17,0) initial dcl 1-47 STATE_ELIGIBLE internal static fixed bin(17,0) initial dcl 1-44 STATE_RUNNING internal static fixed bin(17,0) initial dcl 1-45 STATE_TRANSITION internal static fixed bin(17,0) initial dcl 1-43 STATE_UNPROCESSED internal static fixed bin(17,0) initial dcl 1-41 dprint_arg_buf automatic structure level 1 dcl 3-22 dprint_arg_version_9 internal static fixed bin(17,0) initial dcl 3-77 dprint_msg_version_3 internal static fixed bin(17,0) initial dcl 2-62 dprint_msg_version_4 internal static fixed bin(17,0) initial dcl 2-62 NAMES DECLARED BY EXPLICIT CONTEXT. access_check 001763 constant entry external dcl 340 check_daemon_access 002067 constant entry external dcl 365 ref 349 dprint_ 000045 constant entry external dcl 18 dprint_join 000124 constant label dcl 105 ref 98 free 001445 constant label dcl 288 ref 147 158 169 175 245 261 267 276 qfull 001506 constant entry external dcl 294 queue_contents 001550 constant entry external dcl 307 ref 301 request_id 000077 constant entry external dcl 100 send 001170 constant label dcl 259 ref 139 190 210 223 230 237 251 255 test 002571 constant entry external dcl 465 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3140 3304 2635 3150 Length 3610 2635 144 270 302 74 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dprint_ 376 external procedure is an external procedure. on unit on line 110 68 on unit STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 sysdir dprint_ 000062 areap dprint_ 000064 df_print_name dprint_ 000074 df_punch_name dprint_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dprint_ 000100 sys_msg_seg dprint_ 000110 mess_idx dprint_ 000112 return_request_id dprint_ 000113 rqt_name dprint_ 000121 generic_type dprint_ 000131 rqt_generic_type dprint_ 000141 default_q dprint_ 000142 max_q dprint_ 000143 queue_pic dprint_ 000152 dmp dprint_ 000154 dir dprint_ 000226 ent dprint_ 000300 dirdir dprint_ 000352 dirent dprint_ 000362 accname dprint_ 000372 level dprint_ 000373 mode dprint_ 000374 bit5 dprint_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp cat_realloc_chars call_ext_in_desc call_ext_out_desc call_ext_out return_mac enable_op shorten_stack ext_entry ext_entry_desc int_entry op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. clock_ cu_$level_get expand_pathname_ get_system_free_area_ hcs_$get_link_target hcs_$get_user_effmode iod_info_$driver_access_name iod_info_$generic_type iod_info_$queue_data iod_info_$test message_segment_$add_file message_segment_$get_message_count_file set_lock_$lock THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$invalid_lock_reset error_table_$locked_by_this_process error_table_$request_not_recognized LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000040 97 000070 98 000071 100 000072 103 000122 105 000124 109 000137 110 000201 112 000252 113 000261 114 000266 115 000270 116 000272 117 000301 119 000306 120 000311 121 000312 122 000313 123 000314 124 000315 125 000316 126 000317 127 000320 128 000321 129 000322 130 000325 131 000330 132 000331 133 000332 134 000333 135 000334 136 000335 137 000340 139 000343 142 000350 144 000355 146 000360 147 000363 149 000364 151 000365 153 000367 154 000372 155 000375 157 000402 158 000405 160 000406 162 000407 164 000411 165 000414 166 000417 168 000422 169 000425 171 000426 174 000427 175 000432 177 000433 178 000441 179 000443 181 000455 182 000460 183 000462 184 000470 185 000472 188 000501 190 000504 192 000507 193 000513 194 000517 195 000523 196 000527 197 000534 198 000541 200 000574 202 000627 204 000657 206 000716 207 000720 208 000722 210 000731 212 000734 214 000736 218 000752 219 000753 223 000762 225 000765 226 000777 227 001011 228 001021 230 001036 232 001041 233 001043 234 001050 235 001062 237 001105 239 001110 241 001117 244 001122 245 001137 251 001147 253 001154 255 001162 257 001164 259 001170 261 001211 264 001213 266 001217 267 001222 270 001223 273 001231 275 001234 276 001260 278 001262 279 001265 283 001276 284 001306 287 001355 288 001445 290 001500 294 001501 301 001516 302 001542 307 001543 314 001563 316 001576 317 001601 319 001602 321 001605 322 001631 324 001634 325 001636 326 001637 328 001641 329 001644 332 001645 333 001656 335 001725 336 001753 340 001754 349 002013 351 002057 365 002060 387 002121 388 002125 389 002126 391 002133 393 002137 395 002144 396 002166 399 002171 400 002175 402 002176 404 002202 406 002207 407 002231 410 002234 411 002240 414 002241 415 002262 419 002265 421 002272 425 002301 426 002333 429 002336 431 002372 436 002375 440 002405 441 002431 444 002434 446 002470 449 002473 451 002503 454 002544 457 002547 458 002554 459 002565 465 002566 471 002604 472 002613 473 002621 474 002632 ----------------------------------------------------------- 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