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.8 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 16 /****^ HISTORY COMMENTS: 17* 1) change(86-05-02,Elhard), approve(86-05-02,MCR7391), 18* audit(86-07-18,DGHowe), install(86-11-20,MR12.0-1222): 19* Modified to call object_lib_$initiate to check if a file is an object 20* segment or MSF instead of calling object_info_. 21* 2) change(88-10-24,Brunelle), approve(88-10-24,MCR7911), 22* audit(88-10-25,Wallman), install(88-10-28,MR12.2-1199): 23* Dprint_arg_version_7 removed from declaration in program because now 24* defined in dprint_arg include file. 25* END HISTORY COMMENTS */ 26 27 28 /* dprint and dpunch commands: request the I/O daemon to print or punch a segment */ 29 30 /* Initially coded in April 1969 by V. Voydock */ 31 /* Modified on February 12, 1970 at 5:50 P. M. by V. Voydock */ 32 /* Modified by Nate Adleman on December 20, 1969 at 1123 to add the no_questions entry which does not ask the user 33* any questions */ 34 /* Modified for punching by M A Padlipsky April 1970 */ 35 /* Modified by M. Weaver 22 April 1970--added test_init1 entry for on-line testing */ 36 /* Modified by E. Stone 10/21/70 to add the call to com_query_ */ 37 /* Modified by Dennis Capps 11/02/71 to change the call to com_query_ to a call to command_query_ */ 38 /* Modified by M. Weaver 15 January 1971 22:30 */ 39 /* Modified by Paul Green on January 23, l971 to clean up the incredible mess, and to add the number_of_copies feature */ 40 /* Modified April 1973 by R. S. Coren to interface through dprint_ using message segments, and to add the -destination 41* and -queue control arguments */ 42 /* Modified October 1973 by Robert S. Coren to accept -device_class control argument and handle submission errors more 43* cleanly */ 44 /* Modified by J. Stern 3/11/75 to add -request_type control arg */ 45 /* Bug with -bf at end of line fixed 12/8/75 Steve Herbst */ 46 /* Changed not to query in most error cases 10/18/76 S. Herbst */ 47 /* Modified by J. C. Whitmore, 5/78, for new dprint_arg structure during Daemon upgrade, bug fixes and removal of -dvc */ 48 /* Modified to reject object segments by S. Herbst, 10/25/78 */ 49 /* Modified to allow object segments to be punched, but not printed 02/03/79 W. Olin Sibert */ 50 /* Modified: 8 March 1981 by G. Palter to ignore error_table_$no_s_permission, accept "-ind" for "-indent" and do some 51* minor cleanup of the code */ 52 /* Modified: 10 April 1981 by G. Palter to allow request type names longer than 8 characters */ 53 /* Modified: 8 September 1981 by G. Palter to accept -forms control argument */ 54 /* Modified: June 1982 by R. Kovalcik to accept -defer_until_process_termination */ 55 /* Modified: 84-11-01 by EJ Sharpe for new mdc_$get_lv_access arglist, also 56* create internal dprint_arg_version_7 constant since include 57* file has been upgraded to version 8 */ 58 59 dprint: 60 dp: procedure () options (variable); 61 62 63 dcl count fixed bin; /* number of segs already queued by this invocation */ 64 dcl indx fixed bin; 65 dcl lng fixed bin; 66 dcl lcnt fixed bin; /* number of realready quests already queued */ 67 dcl nargs fixed bin; 68 dcl i fixed bin; 69 dcl queue fixed bin; 70 dcl mode bit (36) aligned; 71 dcl pub_bit bit (1) aligned; /* Public flag returned from mdc_$get_lv_access */ 72 dcl code fixed bin (35); 73 dcl bc fixed bin (24); /* for bit count of MSF component */ 74 dcl fcbp ptr; 75 dcl dum ptr; /* dummy pointer arg */ 76 77 dcl max_queues fixed bin int static options (constant) init (4); 78 dcl MAX_PAGE_WIDTH fixed bin int static options (constant) init (136); /* For prt300, etc. */ 79 dcl io_coord char (16) int static options (constant) init ("IO.SysDaemon"); 80 81 dcl (addr, index, length, max, null, substr, fixed, rtrim, string) builtin; 82 83 dcl cleanup condition; 84 85 dcl punching initial ("0"b) bit (1); /* punch or print? */ 86 dcl no_questions initial ("0"b) bit (1); /* mainly for use by daemons */ 87 88 dcl control_arg bit (1); /* last arg was a control arg */ 89 dcl some_path bit (1); /* some pathname in command line */ 90 dcl brief bit (1); /* for brief option */ 91 dcl top_lbl_sw bit (1); 92 dcl bottom_lbl_sw bit (1); 93 dcl access_lbl_sw bit (1); 94 95 dcl (del_acc, r_acc) bit (1) aligned; 96 dcl s_acc bit (1) aligned; 97 98 dcl access_class bit (72) aligned; 99 dcl access_label char (136); 100 101 dcl accname character (32); 102 dcl generic_type char (32); 103 dcl rqt_gen_type char (32); 104 dcl last_arg char (32); 105 106 dcl argptr ptr; 107 dcl seg_ptr ptr; 108 dcl based_arg char (lng) based (argptr) unaligned; 109 dcl arg char (32) aligned; 110 dcl ans char (12) varying; 111 112 dcl question char (132); 113 dcl quest_len fixed bin; 114 115 dcl dname char (168); /* directory in which segment to be printed lies */ 116 dcl ename char (32); /* entry name of segment to be printed */ 117 dcl lvname char (32); 118 dcl suf char (1) aligned; 119 dcl id char (6) aligned; 120 121 dcl (error_table_$lock_wait_time_exceeded, error_table_$dirseg, error_table_$no_s_permission, error_table_$noentry, 122 error_table_$nostars, error_table_$moderr, error_table_$badopt, error_table_$notalloc, error_table_$id_not_found, 123 error_table_$zero_length_seg) 124 fixed binary (35) external; 125 126 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin); 127 dcl dprint_ entry (char (*), char (*), ptr, fixed bin (35)); 128 dcl dprint_$check_daemon_access entry (character (*), character (*), character (*), bit (1) aligned, bit (1) aligned, 129 bit (1) aligned, character (*), fixed binary (35)); 130 dcl dprint_$queue_contents entry (character (*), fixed binary, fixed binary, fixed binary (35)); 131 dcl check_star_name_$entry entry (char (*), fixed bin (35)); 132 dcl cu_$arg_ptr ext entry (fixed bin, ptr, fixed bin, fixed bin (35)); 133 dcl cu_$arg_count entry (fixed bin, fixed binary (35)); 134 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 135 dcl (com_err_, com_err_$suppress_name) entry options (variable); 136 dcl ioa_ entry options (variable); 137 dcl ioa_$ioa_stream entry options (variable); 138 dcl ioa_$rsnnl entry options (variable); 139 dcl command_query_ entry options (variable); 140 dcl hcs_$status_long entry (char (*), char (*), fixed bin (1), ptr, ptr, fixed bin (35)); 141 dcl hcs_$get_access_class entry (char (*), char (*), bit (72) aligned, fixed bin (35)); 142 dcl convert_authorization_$to_string entry (bit (72) aligned, char (*), fixed bin (35)); 143 dcl mdc_$find_lvname entry (bit (36), char (*), fixed bin (35)); 144 dcl mdc_$get_lv_access entry (char (*), fixed bin (3), bit (36) aligned, bit (1) aligned, fixed bin (35)); 145 dcl iod_info_$generic_type entry (char (*), char (32), fixed bin (35)); 146 dcl msf_manager_$open entry (char (*), char (*), ptr, fixed bin (35)); 147 dcl msf_manager_$close entry (ptr); 148 dcl msf_manager_$get_ptr entry (ptr, fixed bin, bit (1), ptr, fixed bin (24), fixed bin (35)); 149 150 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 151 dcl object_lib_$initiate entry (char (*), char (*), char (*), bit (1), ptr, fixed bin (24), bit (1), fixed bin (35)); 152 1 1 /* BEGIN INCLUDE FILE ... dprint_arg.incl.pl1 */ 1 2 /* Modified 11/13/74 by Noel I. Morris */ 1 3 /* Modified: 10 April 1981 by G. Palter for version 6 structure -- longer request type names */ 1 4 /* Modified: 30 April 1982 by R. Kovalcik for version 7 structure -- defer_until_process_terminataion */ 1 5 /* Modified: November 1983 by C. Marker for version 8 structure -- no_separator */ 1 6 1 7 /****^ HISTORY COMMENTS: 1 8* 1) change(87-05-10,Gilcrease), approve(87-05-13,MCR7686), 1 9* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 1 10* Add line_nbrs bit for line-numbered printouts, version 9. 1 11* 2) change(88-02-05,Farley), approve(88-02-05,PBF7686), audit(88-02-05,GWMay), 1 12* install(88-02-05,MR12.2-1022): 1 13* Corrected alignment of line_nbrs, was aligned s/b unaligned.. 1 14* 3) change(88-08-29,Farley), approve(88-09-16,MCR7911), 1 15* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 1 16* Created a new 64 character forms_name variable, which supersedes the old 1 17* char 24 form_name variable, version 10. 1 18* END HISTORY COMMENTS */ 1 19 1 20 1 21 dcl dpap ptr; /* ptr to argument structure */ 1 22 dcl 1 dprint_arg_buf aligned like dprint_arg; /* Automatic storage for arg. */ 1 23 1 24 dcl 1 dprint_arg based (dpap) aligned, /* argument structure */ 1 25 2 version fixed bin, /* version number of dcl - current version is 9 */ 1 26 2 copies fixed bin, /* number of copies wanted */ 1 27 2 delete fixed bin, /* 1=delete after print */ 1 28 2 queue fixed bin, /* print queue */ 1 29 2 pt_pch fixed bin, /* 1=print, 2=punch */ 1 30 2 notify fixed bin, /* 1 = notify user when done */ 1 31 2 heading char (64), /* first page heading */ 1 32 2 output_module fixed bin, /* 1=print, 2=7punch, 3=mcc, 4=raw, 5=plotter */ 1 33 2 dest char (12), /* version 5 made this a pad - see destination below */ 1 34 /* limit of version 1 structure */ 1 35 2 carriage_control, /* Carriage control flags. */ 1 36 3 nep bit (1) unal, /* TRUE if print trhu perf. */ 1 37 3 single bit (1) unal, /* TRUE if ignore FF and VT */ 1 38 3 non_edited bit (1) unal, /* TRUE if printing in non-edited mode */ 1 39 3 truncate bit (1) unal, /* TRUE if truncating lines at line length */ 1 40 3 center_top_label bit (1) unal, /* TRUE if top label to be centered */ 1 41 3 center_bottom_label bit (1) unal, /* TRUE if bottom label to be centered */ 1 42 3 esc bit (1) unal, /* version 5 TRUE if text escapes are to be processed */ 1 43 3 no_separator bit (1) unal, /* version 8 TRUE if the inner head and tail sheets are to be suppressed. */ 1 44 3 line_nbrs bit (1) unal, /* version 9, line numbers */ 1 45 3 padding bit (27) unal, 1 46 2 pad (30) fixed bin, 1 47 2 forms char (8), /* version 5 made this a pad - see form_name below */ 1 48 2 lmargin fixed bin, /* left margin */ 1 49 2 line_lth fixed bin, /* max line lth */ 1 50 /* limit of version 2 structure */ 1 51 2 class char (8), /* version 6 made this a pad - see request_type below */ 1 52 2 page_lth fixed bin, /* Paper length arg */ 1 53 /* limit of version 3 structure */ 1 54 2 top_label char (136), /* top-of-page label */ 1 55 2 bottom_label char (136), /* bottom-of-page label */ 1 56 /* limit of version 4 structure */ 1 57 2 bit_count fixed bin (35), /* segment bit count */ 1 58 2 form_name char (24), /* name of special forms needed - moved from forms */ 1 59 /* version 10 made this a pad - see forms_name below */ 1 60 2 destination char (24), /* the long destination - moved from dest */ 1 61 2 chan_stop_path char (168), /* path of user channel stops - future */ 1 62 /* limit of version 5 structure */ 1 63 2 request_type character (24) unaligned, /* request type for the request */ 1 64 /* limit of version 6 structure */ 1 65 2 defer_until_process_termination fixed bin, /* 1 = don't process request until requesting process terminates */ 1 66 2 forms_name char (64) unal; /* name of special forms needed - moved from form_name */ 1 67 /* limit of version 10 structure */ 1 68 1 69 dcl dprint_arg_version_1 fixed bin int static options (constant) init (1); 1 70 dcl dprint_arg_version_2 fixed bin int static options (constant) init (2); 1 71 dcl dprint_arg_version_3 fixed bin int static options (constant) init (3); 1 72 dcl dprint_arg_version_4 fixed bin int static options (constant) init (4); 1 73 dcl dprint_arg_version_5 fixed bin int static options (constant) init (5); 1 74 dcl dprint_arg_version_6 fixed bin int static options (constant) init (6); 1 75 dcl dprint_arg_version_7 fixed bin int static options (constant) init (7); 1 76 dcl dprint_arg_version_8 fixed bin int static options (constant) init (8); 1 77 dcl dprint_arg_version_9 fixed bin int static options (constant) init (9); 1 78 dcl dprint_arg_version_10 fixed bin int static options (constant) init (10); 1 79 /* current version */ 1 80 1 81 dcl ( 1 82 DP_PRINT init (1), 1 83 DP_PUNCH init (2), 1 84 DP_PLOT init (3) 1 85 ) fixed bin static options (constant); /* for dprint_arg.pt_pch */ 1 86 1 87 /* END INCLUDE FILE ... dprint_arg.incl.pl1 */ 153 154 2 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 2 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 2 3 /* version number changed to 4, 08/10/78 WOS */ 2 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 2 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 2 6 2 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 2 8 2 version fixed bin, /* version of this structure - must be set, see below */ 2 9 2 switches aligned, /* various bit switch values */ 2 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 2 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 2 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 2 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 2 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 2 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 2 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 2 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 2 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 2 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 2 20 2 21 /* Limit of data defined for version 2 */ 2 22 2 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 2 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 2 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 2 26 /* minimum of 30 seconds required for repeat */ 2 27 /* otherwise, no repeat will occur */ 2 28 /* Limit of data defined for version 4 */ 2 29 2 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 2 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 2 32 2 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 2 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 2 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 2 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 2 37 2 38 /* END INCLUDE FILE query_info.incl.pl1 */ 155 156 3 1 declare /* Structure returned by hcs_$status_long */ 3 2 3 3 1 branch_status aligned, /* automatic: hcs_$status uses a pointer */ 3 4 3 5 2 type bit(2) unaligned, /* type of entry: link, segment, dir */ 3 6 2 number_names bit(16) unaligned, /* unused by directory_status_ */ 3 7 2 names_rel_pointer bit(18) unaligned, /* unused by directory_status_ */ 3 8 2 date_time_modified bit(36) unaligned, /* date time modified */ 3 9 2 date_time_used bit(36) unaligned, /* date time entry used */ 3 10 2 mode bit(5) unaligned, /* effective access of caller */ 3 11 2 raw_mode bit(5) unaligned, 3 12 2 pad1 bit(8) unaligned, 3 13 2 records bit(18) unaligned, /* number of records in use */ 3 14 2 date_time_dumped bit(36) unaligned, /* date time last dumped */ 3 15 2 date_time_entry_modified bit(36) unaligned, /* date time entry modified */ 3 16 2 lvid bit(36) unaligned, /* logical volume id */ 3 17 2 current_length bit(12) unaligned, /* number of blocks currently allocated */ 3 18 2 bit_count bit(24) unaligned, /* bit count of entry */ 3 19 2 pad3 bit(8) unaligned, 3 20 2 copy_switch bit(1) unaligned, /* the copy switch */ 3 21 2 tpd bit(1) unaligned, /* transparent to paging device */ 3 22 2 mdir bit(1) unaligned, /* master directory switch */ 3 23 2 damaged_switch bit (1) unaligned, /* true if contents damaged */ 3 24 2 synchronized_switch bit (1) unaligned, /* true if a DM synchronized file */ 3 25 2 pad4 bit(5) unaligned, 3 26 2 ring_brackets (0:2) bit(6) unaligned, /* branch ring brackets */ 3 27 2 unique_id bit(36) unaligned, /* entry unique id */ 3 28 3 29 3 30 /* The types of each class of branch */ 3 31 segment_type bit(2) aligned internal static initial ("01"b), 3 32 directory_type bit(2) aligned internal static initial ("10"b), 3 33 msf_type bit(2) aligned internal static initial ("10"b), /* will eventually be different */ 3 34 link_type bit(2) aligned internal static initial ("00"b); 3 35 3 36 157 158 159 /* dprint: dp: procedure () options (variable); */ 160 161 queue = 0; /* we want the default queue */ 162 go to start_1; 163 164 165 no_questions: 166 entry () options (variable); 167 no_questions = "1"b; 168 queue = 0; /* want the default queue */ 169 go to start_1; 170 171 172 dp1: entry () options (variable); 173 queue = 1; 174 go to start_1; 175 176 dp2: entry () options (variable); 177 queue = 2; 178 go to start_1; 179 180 dpunch: 181 dpn: entry () options (variable); 182 punching = "1"b; 183 queue = 0; /* again the default queue */ 184 go to start_1; 185 186 dpn1: entry () options (variable); 187 punching = "1"b; 188 queue = 1; 189 go to start_1; 190 191 dpn2: entry () options (variable); 192 punching = "1"b; 193 queue = 2; 194 195 196 start_1: call init_variables; /* get everything set up */ 197 198 if punching then do; 199 dprint_arg.pt_pch = 2; /* indicate to dprint_ that its a punch request */ 200 dprint_arg.output_module = 3; /* assume mcc format as a default */ 201 generic_type, 202 dprint_arg.request_type = "punch"; 203 id = "dpunch"; 204 end; 205 else do; 206 dprint_arg.pt_pch = 1; /* otherwise this is a print request */ 207 dprint_arg.output_module = 1; 208 generic_type, 209 dprint_arg.request_type = "printer"; 210 id = "dprint"; 211 end; 212 213 214 on cleanup begin; 215 if fcbp ^= null then call msf_manager_$close (fcbp); 216 end; 217 218 call cu_$arg_count (nargs, code); /* check if called as a command also */ 219 if code ^= 0 then do; 220 call com_err_ (code, id); 221 return; 222 end; 223 224 do indx = 1 to nargs; 225 call cu_$arg_ptr (indx, argptr, lng, code); /* get args, one at a time */ 226 arg = based_arg; /* copy into temp for option testing */ 227 228 if index (based_arg, "-") = 1 then call process_control_arg; 229 else do; /* Process path name */ 230 some_path = "1"b; 231 control_arg = "0"b; /* seen a pathname since last control arg */ 232 call expand_pathname_ (based_arg, dname, ename, code); 233 if code ^= 0 then do; 234 call com_err_ (code, id, "^a", based_arg); 235 go to no_request; 236 end; 237 else do; 238 call check_star_name_$entry (ename, code); 239 if code ^= 0 then do; 240 if code <= 2 then /* a legal star name */ 241 code = error_table_$nostars; 242 call com_err_ (code, id, "^a^[>^]^a", dname, (dname ^= ">"), ename); 243 go to no_request; 244 end; 245 else do; 246 /* See if file to be printed exists */ 247 call hcs_$status_long (dname, ename, 1, addr (branch_status), null, code); 248 if (code ^= 0) & (code ^= error_table_$no_s_permission) then do; 249 call com_err_ (code, id, "^a^[>^]^a", dname, (dname ^= ">"), ename); 250 no_request: call com_err_$suppress_name (0, id, "Request not submitted."); 251 end; 252 else do; 253 254 /* Make sure it's not an object segment. */ 255 256 if ^punching then do; 257 call object_lib_$initiate (dname, ename, "", "1"b, seg_ptr, (0), (""b), code); 258 if seg_ptr ^= null then do; 259 call hcs_$terminate_noname (seg_ptr, (0)); /* we're done with it */ 260 call com_err_ (0, id, "^a^[>^]^a is an object segment.", 261 dname, (dname ^= ">"), ename); 262 go to no_request; 263 end; 264 end; 265 266 /* Check that user has access, length nonzero, public volume */ 267 268 if ^substr (branch_status.mode, 2, 1) then do; /* check "r" access */ 269 code = error_table_$moderr; 270 CALL_COM: call com_err_ (code, id, "^a^[>^]^a", dname, (dname ^= ">"), ename); 271 go to no_request; 272 end; 273 274 dprint_arg.bit_count = 0; /* start with no length */ 275 276 if branch_status.type = directory_type then do; /* directory or MSF */ 277 if branch_status.bit_count = "0"b then do; /* a directory */ 278 code = error_table_$dirseg; 279 go to CALL_COM; 280 end; 281 282 /* For the MSF case, get the total bit count of the file */ 283 284 call msf_manager_$open (dname, ename, fcbp, code); 285 if code ^= 0 then go to CALL_COM; 286 287 do i = 0 to fixed (branch_status.bit_count, 17, 0) - 1; 288 bc = 0; 289 call msf_manager_$get_ptr (fcbp, i, "0"b, dum, bc, code); 290 if code ^= 0 then go to CALL_COM; 291 dprint_arg.bit_count = dprint_arg.bit_count + bc; /* add the bit count */ 292 end; 293 294 call msf_manager_$close (fcbp); 295 fcbp = null; 296 end; 297 else dprint_arg.bit_count = fixed (branch_status.bit_count, 24); 298 299 if dprint_arg.bit_count = 0 then do; 300 code = error_table_$zero_length_seg; 301 go to CALL_COM; 302 end; 303 304 /* Check that the volume is public. */ 305 call mdc_$find_lvname (branch_status.lvid, lvname, code); 306 if code ^= 0 then go to CALL_COM; 307 call mdc_$get_lv_access (lvname, 1, mode, pub_bit, code); 308 if code ^= 0 then go to CALL_COM; /* The daemon driver won't mount it */ 309 if ^pub_bit then do; 310 call com_err_ (0, id, "^a^[>^]^a is not on a public volume.", 311 dname, (dname ^= ">"), ename); 312 go to no_request; 313 end; 314 315 /* find out if daemon has access to the segment. If not, warn the user */ 316 317 call dprint_$check_daemon_access (dname, ename, dprint_arg.request_type, del_acc, 318 r_acc, s_acc, accname, code); 319 if code ^= 0 then /* We couldn't figure it out. */ 320 call com_err_ (0, id, "Warning: Unable to check IO daemon access to ^a^[>^]^a", 321 dname, (dname ^= ">"), ename); 322 else do; 323 if ^r_acc then do; 324 call com_err_ (0, id, "^a requires r access to ^a^[>^]^a", 325 accname, dname, (dname ^= ">"), ename); 326 go to no_request; 327 end; 328 if ^s_acc then 329 call ask ("^a does not have status access on ^a^s"); 330 if ^del_acc & (dprint_arg.delete ^= 0) then 331 call com_err_ (0, "Warning", "^a has insufficient access to delete ^a^[>^]^a", 332 io_coord, dname, (dname ^= ">"), ename); /* this is info only */ 333 end; 334 335 QUEUE_IT: if access_lbl_sw then call make_access_lbl; 336 dprint_arg.queue = queue; /* want default or from -q arg */ 337 code = 0; 338 call dprint_ (dname, ename, dpap, code); 339 if code ^= 0 then do; 340 call com_err_ (code, id, "Queue ^d for request type ^a", 341 dprint_arg.queue, dprint_arg.request_type); 342 if code = error_table_$lock_wait_time_exceeded then do; /* Queue locked */ 343 if no_questions then go to next_arg; /* If he won't answer questions, skip it. */ 344 query_info.status_code = code; 345 call command_query_ (addr (query_info), ans, id, "Do you wish to try again?"); 346 if ans = "yes" then go to QUEUE_IT; 347 end; 348 349 else if code = error_table_$noentry then 350 call ioa_$ioa_stream ("error_output", 351 "Request type or queue argument is probably invalid."); 352 353 else if code = error_table_$notalloc then 354 call ioa_$ioa_stream ("error_output", "Queue is full at present."); 355 go to no_request; 356 end; 357 358 else count = count + 1; 359 end; 360 end; 361 end; 362 end; 363 next_arg: end; 364 365 if count > 0 | ^some_path then call print_counts; 366 if some_path then if control_arg then call com_err_ (0, id, 367 "Warning: Control arguments following last pathname are ignored."); 368 369 RETURN: return; 370 371 /* ===================================================== */ 372 373 process_control_arg: proc; 374 375 if arg = "-bf" | arg = "-brief" then do; /* Check for brief option */ 376 brief = "1"b; 377 return; /* allow -bf at end of line */ 378 end; 379 380 control_arg = "1"b; /* must be an option if it has "-" */ 381 382 if arg = "-dl" | arg = "-delete" | arg = "-d" then /* Check for "print and delete" */ 383 dprint_arg.delete = 1; 384 else if arg = "-he" | arg = "-header" | arg = "-h" then do; /* Check for heading option */ 385 call get_parameter; 386 dprint_arg.heading = " for " || based_arg; 387 end; 388 else if arg = "-ds" | arg = "-destination" then do; /* Check for destination */ 389 call get_parameter; 390 dprint_arg.destination = based_arg; 391 end; 392 else if arg = "-rqt" | arg = "-request_type" then do; 393 if count > 0 then call print_counts; 394 call get_parameter; 395 call iod_info_$generic_type (based_arg, rqt_gen_type, code); 396 if code ^= 0 then 397 if code = error_table_$id_not_found then do; 398 call com_err_ (0, id, "Unknown request type. ^a", based_arg); 399 go to RETURN; 400 end; 401 else call com_err_ (0, id, "Warning -- Unable to check request type ^a.", based_arg); 402 else if rqt_gen_type ^= generic_type then do; 403 call com_err_ (0, id, "Request type ^a is not of generic type ^a.", based_arg, generic_type); 404 go to RETURN; 405 end; 406 else if length (rtrim (based_arg)) > length (dprint_arg.request_type) then do; 407 call com_err_ (0, id, "Request type name ""^a"" must be ^d characters or less in length.", 408 based_arg, length (dprint_arg.request_type)); 409 go to RETURN; 410 end; 411 else dprint_arg.request_type = based_arg; 412 end; 413 else if arg = "-cp" | arg = "-copy" then do; /* Check for number of copies */ 414 call get_parameter; 415 dprint_arg.copies = cv_dec_check_ (based_arg, code); 416 if code ^= 0 | dprint_arg.copies < 1 then do; 417 call com_err_ (0, id, "Invalid copy request ^a", based_arg); 418 go to RETURN; 419 end; 420 else if dprint_arg.copies > 4 then do; 421 dprint_arg.copies = 4; 422 call com_err_ (0, id, "Too many copies specified; 4 will be supplied."); 423 end; 424 end; 425 else if arg = "-nt" | arg = "-notify" then /* Check for "notify me when printed" */ 426 dprint_arg.notify = 1; 427 else if arg = "-q" | arg = "-queue" then do; /* Check for queue number */ 428 if count > 0 then call print_counts; 429 call get_parameter; 430 queue = cv_dec_check_ (based_arg, code); 431 if code ^= 0 | queue < 1 | queue > max_queues then do; /* dprint_ makes the real check */ 432 call com_err_ (0, id, "Invalid queue number ^a", based_arg); 433 go to RETURN; 434 end; 435 end; 436 else if arg = "-dupt" | arg = "-defer_until_process_termination" then /* Check for "don't process request until requesting process terminates" */ 437 dprint_arg.defer_until_process_termination = 1; 438 else if ^punching then do; /* If printing, lots of new interesting args. */ 439 if arg = "-nep" | arg = "-no_endpage" then do; 440 dprint_arg.nep = "1"b; 441 go to NL_OPT; /* no_label implied */ 442 end; 443 else if arg = "-ned" | arg = "-non_edited" then 444 dprint_arg.non_edited = "1"b; 445 else if arg = "-tc" | arg = "-truncate" then 446 dprint_arg.truncate = "1"b; 447 else if arg = "-ll" | arg = "-line_length" then do; 448 call get_parameter; 449 dprint_arg.line_lth = cv_dec_check_ (based_arg, code); 450 if code ^= 0 | dprint_arg.line_lth < 1 then do; 451 call com_err_ (0, id, "Invalid line length ^a", based_arg); 452 go to RETURN; 453 end; 454 if dprint_arg.line_lth > MAX_PAGE_WIDTH then 455 call com_err_ (0, "Warning", "Specified line length is greater then normal printer maximum."); 456 end; 457 else if arg = "-in" | arg = "-ind" | arg = "-indent" then do; 458 call get_parameter; 459 dprint_arg.lmargin = cv_dec_check_ (based_arg, code); 460 if code ^= 0 | dprint_arg.lmargin < 0 | dprint_arg.lmargin > MAX_PAGE_WIDTH then do; 461 call com_err_ (0, id, "Invalid indentation ^a", based_arg); 462 go to RETURN; 463 end; 464 end; 465 else if arg = "-sg" | arg = "-single" then 466 dprint_arg.single = "1"b; 467 else if arg = "-pl" | arg = "-page_length" then do; 468 call get_parameter; 469 dprint_arg.page_lth = cv_dec_check_ (based_arg, code); 470 if code ^= 0 | dprint_arg.page_lth < 1 then do; 471 call com_err_ (0, id, "Invalid page length ^a", based_arg); 472 go to RETURN; 473 end; 474 end; 475 else if arg = "-lbl" | arg = "-label" then do; 476 call get_parameter; 477 if dprint_arg.nep then do; 478 skip_labels: call com_err_ (0, id, "Warning: Labels are ignored with -no_endpage."); 479 return; 480 end; 481 dprint_arg.top_label, 482 dprint_arg.bottom_label = based_arg; 483 access_lbl_sw = "0"b; /* don't try to add access labels */ 484 top_lbl_sw, bottom_lbl_sw = "1"b; /* this is like giving both */ 485 dprint_arg.center_top_label, 486 dprint_arg.center_bottom_label = "0"b; /* only center access labels */ 487 end; 488 else if arg = "-tlbl" | arg = "-top_label" then do; 489 call get_parameter; 490 if dprint_arg.nep then go to skip_labels; 491 dprint_arg.top_label = based_arg; 492 if bottom_lbl_sw then access_lbl_sw = "0"b; /* when both cancel access labels */ 493 top_lbl_sw = "1"b; 494 dprint_arg.center_top_label = "0"b; /* in case this was set from last path */ 495 end; 496 else if arg = "-blbl" | arg = "-bottom_label" then do; 497 call get_parameter; 498 if dprint_arg.nep then go to skip_labels; 499 dprint_arg.bottom_label = based_arg; 500 if top_lbl_sw then access_lbl_sw = "0"b; /* when both cancel access labels */ 501 bottom_lbl_sw = "1"b; 502 dprint_arg.center_bottom_label = "0"b; /* only for access labels */ 503 end; 504 else if arg = "-albl" | arg = "-access_label" then do; 505 if dprint_arg.nep then go to skip_labels; 506 access_lbl_sw = "1"b; 507 top_lbl_sw, bottom_lbl_sw = "0"b; 508 end; 509 else if arg = "-nlbl" | arg = "-no_label" then do; 510 NL_OPT: access_lbl_sw = "0"b; 511 top_lbl_sw, bottom_lbl_sw = "0"b; 512 dprint_arg.center_top_label, dprint_arg.center_bottom_label = "0"b; 513 dprint_arg.top_label, dprint_arg.bottom_label = ""; 514 end; 515 else if arg = "-forms" then do; 516 call get_parameter; 517 if length (rtrim (based_arg)) > length (dprint_arg.form_name) then do; 518 call com_err_ (0, id, "Forms specification ""^a"" must be ^d characters or less in length.", 519 based_arg, length (dprint_arg.form_name)); 520 go to RETURN; 521 end; 522 dprint_arg.form_name = based_arg; 523 end; 524 else do; /* Bad dprint option */ 525 BAD_OPT: call com_err_ (error_table_$badopt, id, " ^a ", based_arg); 526 go to RETURN; 527 end; 528 end; /* of print-only */ 529 else if punching then do; /* punch args only for dpunch */ 530 if arg = "-mcc" then 531 dprint_arg.output_module = 3; 532 else if arg = "-raw" then 533 dprint_arg.output_module = 4; 534 else if arg = "-7p" | arg = "-7punch" then 535 dprint_arg.output_module = 2; 536 else go to BAD_OPT; /* Bad dpunch option */ 537 end; 538 539 end process_control_arg; 540 541 print_counts: proc; 542 543 if ^brief then do; 544 dprint_arg.queue = queue; /* use the queue we would have requested */ 545 /* find out how many requests have already been queued */ 546 call dprint_$queue_contents (dprint_arg.request_type, dprint_arg.queue, lcnt, code); 547 if code ^= 0 then 548 call com_err_ (code, id, "Cannot get count for request type ^a, queue ^d", 549 dprint_arg.request_type, dprint_arg.queue); 550 551 else if count = 0 then do; 552 if lcnt = 1 then suf = ""; else suf = "s"; 553 call ioa_ ("^d request^a in ^a queue ^d", lcnt, suf, dprint_arg.request_type, dprint_arg.queue); 554 end; 555 else do; 556 if count = 1 then suf = ""; else suf = "s"; 557 call ioa_ ("^d request^a signalled, ^d already in ^a queue ^d", count, suf, max (0, lcnt - count), 558 dprint_arg.request_type, dprint_arg.queue); 559 count = 0; 560 end; 561 562 end; 563 564 end print_counts; 565 566 ask: proc (format); 567 568 dcl format char (*); 569 570 if no_questions then go to next_arg; 571 call ioa_$rsnnl (format, question, quest_len, accname, dname, ename); 572 query_info.status_code = code; 573 call command_query_ (addr (query_info), ans, id, "^a. Do you still wish request? ", question); 574 if substr (ans, 1, 3) ^= "yes" then go to next_arg; 575 go to QUEUE_IT; /* User wants request anyway */ 576 577 end ask; 578 579 make_access_lbl: proc; 580 581 access_label = ""; 582 call hcs_$get_access_class (dname, ename, access_class, code); 583 if code ^= 0 then go to CALL_COM; 584 call convert_authorization_$to_string (access_class, access_label, code); 585 if ^top_lbl_sw then do; 586 dprint_arg.top_label = access_label; 587 dprint_arg.center_top_label = "1"b; 588 end; 589 if ^bottom_lbl_sw then do; 590 dprint_arg.bottom_label = access_label; 591 dprint_arg.center_bottom_label = "1"b; 592 end; 593 end make_access_lbl; 594 595 596 597 598 get_parameter: proc; 599 600 last_arg = arg; 601 indx = indx + 1; 602 call cu_$arg_ptr (indx, argptr, lng, code); 603 if code ^= 0 then do; 604 call com_err_ (0, id, "No value specified for ^a.", last_arg); 605 go to RETURN; 606 end; 607 608 end get_parameter; 609 610 init_variables: proc; 611 612 fcbp = null; /* no MSF's open yet */ 613 count = 0; /* number of requests already signalled */ 614 615 query_info.yes_or_no_sw = "1"b; /* only want yes or no on queries */ 616 617 control_arg = "0"b; 618 some_path = "0"b; 619 brief = "0"b; 620 top_lbl_sw = "0"b; 621 bottom_lbl_sw = "0"b; 622 access_lbl_sw = "1"b; /* we want access labels by default if not blank */ 623 624 dpap = addr (dprint_arg_buf); /* initialize template dprint args */ 625 dprint_arg.version = dprint_arg_version_7; 626 dprint_arg.queue = queue; /* initialize the queue as requested */ 627 dprint_arg.notify = 0; /* establish some default values */ 628 dprint_arg.copies = 1; 629 dprint_arg.delete = 0; 630 dprint_arg.dest = ""; /* be sure the old fields are set */ 631 dprint_arg.forms = ""; 632 dprint_arg.heading = ""; 633 string (dprint_arg.carriage_control) = "0"b; 634 dprint_arg.lmargin = 0; 635 dprint_arg.line_lth = 0; 636 dprint_arg.page_lth = 0; 637 dprint_arg.top_label = ""; 638 dprint_arg.bottom_label = ""; 639 dprint_arg.chan_stop_path = ""; 640 dprint_arg.destination = ""; /* just be sure this is clear */ 641 dprint_arg.form_name = ""; /* and this too */ 642 dprint_arg.defer_until_process_termination = 0; 643 644 end init_variables; 645 646 end dprint; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/28/88 1257.4 dprint.pl1 >special_ldd>install>MR12.2-1199>dprint.pl1 153 1 10/28/88 1227.7 dprint_arg.incl.pl1 >special_ldd>install>MR12.2-1199>dprint_arg.incl.pl1 155 2 03/11/83 1204.3 query_info.incl.pl1 >ldd>include>query_info.incl.pl1 157 3 11/22/82 0955.6 branch_status.incl.pl1 >ldd>include>branch_status.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. MAX_PAGE_WIDTH constant fixed bin(17,0) initial dcl 78 ref 454 460 access_class 000142 automatic bit(72) dcl 98 set ref 582* 584* access_label 000144 automatic char(136) packed unaligned dcl 99 set ref 581* 584* 586 590 access_lbl_sw 000135 automatic bit(1) packed unaligned dcl 93 set ref 335 483* 492* 500* 506* 510* 622* accname 000206 automatic char(32) packed unaligned dcl 101 set ref 317* 324* 571* addr builtin function dcl 81 ref 247 247 345 345 573 573 624 ans 000262 automatic varying char(12) dcl 110 set ref 345* 346 573* 574 answer_iocbp 6 000752 automatic pointer initial level 2 dcl 2-7 set ref 2-7* arg 000252 automatic char(32) dcl 109 set ref 226* 375 375 382 382 382 384 384 384 388 388 392 392 413 413 425 425 427 427 436 436 439 439 443 443 445 445 447 447 457 457 457 465 465 467 467 475 475 488 488 496 496 504 504 509 509 515 530 532 534 534 600 argptr 000246 automatic pointer dcl 106 set ref 225* 226 228 232 234 386 390 395 398 401 403 406 407 411 415 417 430 432 449 451 459 461 469 471 481 491 499 517 518 522 525 602* based_arg based char packed unaligned dcl 108 set ref 226 228 232* 234* 386 390 395* 398* 401* 403* 406 407* 411 415* 417* 430* 432* 449* 451* 459* 461* 469* 471* 481 491 499 517 518* 522 525* bc 000112 automatic fixed bin(24,0) dcl 73 set ref 288* 289* 291 bit_count 204 based fixed bin(35,0) level 2 in structure "dprint_arg" dcl 1-24 in procedure "dp" set ref 274* 291* 291 297* 299 bit_count 7(12) 000767 automatic bit(24) level 2 in structure "branch_status" packed packed unaligned dcl 3-1 in procedure "dp" set ref 277 287 297 bottom_label 142 based char(136) level 2 dcl 1-24 set ref 481* 499* 513* 590* 638* bottom_lbl_sw 000134 automatic bit(1) packed unaligned dcl 92 set ref 484* 492 501* 507* 511* 589 621* branch_status 000767 automatic structure level 1 dcl 3-1 set ref 247 247 brief 000132 automatic bit(1) packed unaligned dcl 90 set ref 376* 543 619* carriage_control 32 based structure level 2 dcl 1-24 set ref 633* center_bottom_label 32(05) based bit(1) level 3 packed packed unaligned dcl 1-24 set ref 485* 502* 512* 591* center_top_label 32(04) based bit(1) level 3 packed packed unaligned dcl 1-24 set ref 485* 494* 512* 587* chan_stop_path 221 based char(168) level 2 dcl 1-24 set ref 639* check_star_name_$entry 000044 constant entry external dcl 131 ref 238 cleanup 000120 stack reference condition dcl 83 ref 214 code 000111 automatic fixed bin(35,0) dcl 72 set ref 218* 219 220* 225* 232* 233 234* 238* 239 240 240* 242* 247* 248 248 249* 257* 269* 270* 278* 284* 285 289* 290 300* 305* 306 307* 308 317* 319 337* 338* 339 340* 342 344 349 353 395* 396 396 415* 416 430* 431 449* 450 459* 460 469* 470 546* 547 547* 572 582* 583 584* 602* 603 com_err_ 000054 constant entry external dcl 135 ref 220 234 242 249 260 270 310 319 324 330 340 366 398 401 403 407 417 422 432 451 454 461 471 478 518 525 547 604 com_err_$suppress_name 000056 constant entry external dcl 135 ref 250 command_query_ 000066 constant entry external dcl 139 ref 345 573 control_arg 000130 automatic bit(1) packed unaligned dcl 88 set ref 231* 366 380* 617* convert_authorization_$to_string 000074 constant entry external dcl 142 ref 584 copies 1 based fixed bin(17,0) level 2 dcl 1-24 set ref 415* 416 420 421* 628* count 000100 automatic fixed bin(17,0) dcl 63 set ref 358* 358 365 393 428 551 556 557* 557 557 559* 613* cp_escape_control 1(02) 000752 automatic bit(2) initial level 3 packed packed unaligned dcl 2-7 set ref 2-7* cu_$arg_count 000050 constant entry external dcl 133 ref 218 cu_$arg_ptr 000046 constant entry external dcl 132 ref 225 602 cv_dec_check_ 000034 constant entry external dcl 126 ref 415 430 449 459 469 defer_until_process_termination 301 based fixed bin(17,0) level 2 dcl 1-24 set ref 436* 642* del_acc 000136 automatic bit(1) dcl 95 set ref 317* 330 delete 2 based fixed bin(17,0) level 2 dcl 1-24 set ref 330 382* 629* dest 27 based char(12) level 2 dcl 1-24 set ref 630* destination 213 based char(24) level 2 dcl 1-24 set ref 390* 640* directory_type constant bit(2) initial dcl 3-1 ref 276 dname 000330 automatic char(168) packed unaligned dcl 115 set ref 232* 242* 242 247* 249* 249 257* 260* 260 270* 270 284* 310* 310 317* 319* 319 324* 324 330* 330 338* 571* 582* dpap 000426 automatic pointer dcl 1-21 set ref 199 200 201 206 207 208 274 291 291 297 299 317 330 336 338* 340 340 382 386 390 406 407 407 411 415 416 420 421 425 436 440 443 445 449 450 454 459 460 460 465 469 470 477 481 481 485 485 490 491 494 498 499 502 505 512 512 513 513 517 518 518 522 530 532 534 544 546 546 547 547 553 553 557 557 586 587 590 591 624* 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 dprint_ 000036 constant entry external dcl 127 ref 338 dprint_$check_daemon_access 000040 constant entry external dcl 128 ref 317 dprint_$queue_contents 000042 constant entry external dcl 130 ref 546 dprint_arg based structure level 1 dcl 1-24 dprint_arg_buf 000430 automatic structure level 1 dcl 1-22 set ref 624 dprint_arg_version_7 constant fixed bin(17,0) initial dcl 1-75 ref 625 dum 000116 automatic pointer dcl 75 set ref 289* ename 000402 automatic char(32) packed unaligned dcl 116 set ref 232* 238* 242* 247* 249* 257* 260* 270* 284* 310* 317* 319* 324* 330* 338* 571* 582* error_table_$badopt 000024 external static fixed bin(35,0) dcl 121 set ref 525* error_table_$dirseg 000012 external static fixed bin(35,0) dcl 121 ref 278 error_table_$id_not_found 000030 external static fixed bin(35,0) dcl 121 ref 396 error_table_$lock_wait_time_exceeded 000010 external static fixed bin(35,0) dcl 121 ref 342 error_table_$moderr 000022 external static fixed bin(35,0) dcl 121 ref 269 error_table_$no_s_permission 000014 external static fixed bin(35,0) dcl 121 ref 248 error_table_$noentry 000016 external static fixed bin(35,0) dcl 121 ref 349 error_table_$nostars 000020 external static fixed bin(35,0) dcl 121 ref 240 error_table_$notalloc 000026 external static fixed bin(35,0) dcl 121 ref 353 error_table_$zero_length_seg 000032 external static fixed bin(35,0) dcl 121 ref 300 expand_pathname_ 000052 constant entry external dcl 134 ref 232 explanation_len 14 000752 automatic fixed bin(21,0) initial level 2 dcl 2-7 set ref 2-7* explanation_ptr 12 000752 automatic pointer initial level 2 dcl 2-7 set ref 2-7* fcbp 000114 automatic pointer dcl 74 set ref 215 215* 284* 289* 294* 295* 612* fixed builtin function dcl 81 ref 287 297 form_name 205 based char(24) level 2 dcl 1-24 set ref 517 518 518 522* 641* format parameter char packed unaligned dcl 568 set ref 566 571* forms 71 based char(8) level 2 dcl 1-24 set ref 631* generic_type 000216 automatic char(32) packed unaligned dcl 102 set ref 201* 208* 402 403* hcs_$get_access_class 000072 constant entry external dcl 141 ref 582 hcs_$status_long 000070 constant entry external dcl 140 ref 247 hcs_$terminate_noname 000112 constant entry external dcl 150 ref 259 heading 6 based char(64) level 2 dcl 1-24 set ref 386* 632* i 000105 automatic fixed bin(17,0) dcl 68 set ref 287* 289* id 000424 automatic char(6) dcl 119 set ref 203* 210* 220* 234* 242* 249* 250* 260* 270* 310* 319* 324* 340* 345* 366* 398* 401* 403* 407* 417* 422* 432* 451* 461* 471* 478* 518* 525* 547* 573* 604* index builtin function dcl 81 ref 228 indx 000101 automatic fixed bin(17,0) dcl 64 set ref 224* 225* 601* 601 602* io_coord 000000 constant char(16) initial packed unaligned dcl 79 set ref 330* ioa_ 000060 constant entry external dcl 136 ref 553 557 ioa_$ioa_stream 000062 constant entry external dcl 137 ref 349 353 ioa_$rsnnl 000064 constant entry external dcl 138 ref 571 iod_info_$generic_type 000102 constant entry external dcl 145 ref 395 last_arg 000236 automatic char(32) packed unaligned dcl 104 set ref 600* 604* lcnt 000103 automatic fixed bin(17,0) dcl 66 set ref 546* 552 553* 557 557 length builtin function dcl 81 ref 406 406 407 407 517 517 518 518 line_lth 74 based fixed bin(17,0) level 2 dcl 1-24 set ref 449* 450 454 635* literal_sw 1(05) 000752 automatic bit(1) initial level 3 packed packed unaligned dcl 2-7 set ref 2-7* lmargin 73 based fixed bin(17,0) level 2 dcl 1-24 set ref 459* 460 460 634* lng 000102 automatic fixed bin(17,0) dcl 65 set ref 225* 226 228 232 232 234 234 386 390 395 395 398 398 401 401 403 403 406 407 407 411 415 415 417 417 430 430 432 432 449 449 451 451 459 459 461 461 469 469 471 471 481 491 499 517 518 518 522 525 525 602* lvid 6 000767 automatic bit(36) level 2 packed packed unaligned dcl 3-1 set ref 305* lvname 000412 automatic char(32) packed unaligned dcl 117 set ref 305* 307* max builtin function dcl 81 ref 557 557 max_queues constant fixed bin(17,0) initial dcl 77 ref 431 mdc_$find_lvname 000076 constant entry external dcl 143 ref 305 mdc_$get_lv_access 000100 constant entry external dcl 144 ref 307 mode 000107 automatic bit(36) dcl 70 in procedure "dp" set ref 307* mode 3 000767 automatic bit(5) level 2 in structure "branch_status" packed packed unaligned dcl 3-1 in procedure "dp" set ref 268 msf_manager_$close 000106 constant entry external dcl 147 ref 215 294 msf_manager_$get_ptr 000110 constant entry external dcl 148 ref 289 msf_manager_$open 000104 constant entry external dcl 146 ref 284 nargs 000104 automatic fixed bin(17,0) dcl 67 set ref 218* 224 nep 32 based bit(1) level 3 packed packed unaligned dcl 1-24 set ref 440* 477 490 498 505 no_questions 000127 automatic bit(1) initial packed unaligned dcl 86 set ref 86* 167* 343 570 non_edited 32(02) based bit(1) level 3 packed packed unaligned dcl 1-24 set ref 443* notify 5 based fixed bin(17,0) level 2 dcl 1-24 set ref 425* 627* null builtin function dcl 81 ref 247 247 258 295 2-7 2-7 2-7 215 612 object_lib_$initiate 000114 constant entry external dcl 151 ref 257 output_module 26 based fixed bin(17,0) level 2 dcl 1-24 set ref 200* 207* 530* 532* 534* padding 1(07) 000752 automatic bit(29) initial level 3 packed packed unaligned dcl 2-7 set ref 2-7* page_lth 77 based fixed bin(17,0) level 2 dcl 1-24 set ref 469* 470 636* prompt_after_explanation 1(06) 000752 automatic bit(1) initial level 3 packed packed unaligned dcl 2-7 set ref 2-7* pt_pch 4 based fixed bin(17,0) level 2 dcl 1-24 set ref 199* 206* pub_bit 000110 automatic bit(1) dcl 71 set ref 307* 309 punching 000126 automatic bit(1) initial packed unaligned dcl 85 set ref 85* 182* 187* 192* 198 256 438 529 query_code 3 000752 automatic fixed bin(35,0) initial level 2 dcl 2-7 set ref 2-7* query_info 000752 automatic structure level 1 dcl 2-7 set ref 345 345 573 573 quest_len 000327 automatic fixed bin(17,0) dcl 113 set ref 571* question 000266 automatic char(132) packed unaligned dcl 112 set ref 571* 573* question_iocbp 4 000752 automatic pointer initial level 2 dcl 2-7 set ref 2-7* queue 000106 automatic fixed bin(17,0) dcl 69 in procedure "dp" set ref 161* 168* 173* 177* 183* 188* 193* 336 430* 431 431 544 626 queue 3 based fixed bin(17,0) level 2 in structure "dprint_arg" dcl 1-24 in procedure "dp" set ref 336* 340* 544* 546* 547* 553* 557* 626* r_acc 000137 automatic bit(1) dcl 95 set ref 317* 323 repeat_time 10 000752 automatic fixed bin(71,0) initial level 2 dcl 2-7 set ref 2-7* request_type 273 based char(24) level 2 packed packed unaligned dcl 1-24 set ref 201* 208* 317* 340* 406 407 407 411* 546* 547* 553* 557* rqt_gen_type 000226 automatic char(32) packed unaligned dcl 103 set ref 395* 402 rtrim builtin function dcl 81 ref 406 517 s_acc 000140 automatic bit(1) dcl 96 set ref 317* 328 seg_ptr 000250 automatic pointer dcl 107 set ref 257* 258 259* single 32(01) based bit(1) level 3 packed packed unaligned dcl 1-24 set ref 465* some_path 000131 automatic bit(1) packed unaligned dcl 89 set ref 230* 365 366 618* status_code 2 000752 automatic fixed bin(35,0) initial level 2 dcl 2-7 set ref 344* 2-7* 572* string builtin function dcl 81 set ref 633* substr builtin function dcl 81 ref 268 574 suf 000422 automatic char(1) dcl 118 set ref 552* 552* 553* 556* 556* 557* suppress_name_sw 1(01) 000752 automatic bit(1) initial level 3 packed packed unaligned dcl 2-7 set ref 2-7* suppress_spacing 1(04) 000752 automatic bit(1) initial level 3 packed packed unaligned dcl 2-7 set ref 2-7* switches 1 000752 automatic structure level 2 dcl 2-7 top_label 100 based char(136) level 2 dcl 1-24 set ref 481* 491* 513* 586* 637* top_lbl_sw 000133 automatic bit(1) packed unaligned dcl 91 set ref 484* 493* 500 507* 511* 585 620* truncate 32(03) based bit(1) level 3 packed packed unaligned dcl 1-24 set ref 445* type 000767 automatic bit(2) level 2 packed packed unaligned dcl 3-1 set ref 276 version based fixed bin(17,0) level 2 dcl 1-24 set ref 625* yes_or_no_sw 1 000752 automatic bit(1) initial level 3 packed packed unaligned dcl 2-7 set ref 2-7* 615* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. DP_PLOT internal static fixed bin(17,0) initial dcl 1-81 DP_PRINT internal static fixed bin(17,0) initial dcl 1-81 DP_PUNCH internal static fixed bin(17,0) initial dcl 1-81 dprint_arg_version_1 internal static fixed bin(17,0) initial dcl 1-69 dprint_arg_version_10 internal static fixed bin(17,0) initial dcl 1-78 dprint_arg_version_2 internal static fixed bin(17,0) initial dcl 1-70 dprint_arg_version_3 internal static fixed bin(17,0) initial dcl 1-71 dprint_arg_version_4 internal static fixed bin(17,0) initial dcl 1-72 dprint_arg_version_5 internal static fixed bin(17,0) initial dcl 1-73 dprint_arg_version_6 internal static fixed bin(17,0) initial dcl 1-74 dprint_arg_version_8 internal static fixed bin(17,0) initial dcl 1-76 dprint_arg_version_9 internal static fixed bin(17,0) initial dcl 1-77 link_type internal static bit(2) initial dcl 3-1 msf_type internal static bit(2) initial dcl 3-1 query_info_version_3 internal static fixed bin(17,0) initial dcl 2-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 2-34 query_info_version_5 internal static fixed bin(17,0) initial dcl 2-35 query_info_version_6 internal static fixed bin(17,0) initial dcl 2-36 segment_type internal static bit(2) initial dcl 3-1 NAMES DECLARED BY EXPLICIT CONTEXT. BAD_OPT 004764 constant label dcl 525 ref 534 CALL_COM 002005 constant label dcl 270 ref 279 285 290 301 306 308 583 NL_OPT 004654 constant label dcl 510 ref 441 QUEUE_IT 002630 constant label dcl 335 ref 346 575 RETURN 003106 constant label dcl 369 ref 399 404 409 418 433 452 462 472 520 526 605 ask 005275 constant entry internal dcl 566 ref 328 dp 000770 constant entry external dcl 59 dp1 001024 constant entry external dcl 172 dp2 001036 constant entry external dcl 176 dpn 001050 constant entry external dcl 180 dpn1 001073 constant entry external dcl 186 dpn2 001107 constant entry external dcl 191 dprint 001000 constant entry external dcl 59 dpunch 001060 constant entry external dcl 180 get_parameter 005510 constant entry internal dcl 598 ref 385 389 394 414 429 448 458 468 476 489 497 516 init_variables 005567 constant entry internal dcl 610 ref 196 make_access_lbl 005413 constant entry internal dcl 579 ref 335 next_arg 003046 constant label dcl 363 ref 343 570 574 no_questions 001011 constant entry external dcl 165 no_request 001606 constant label dcl 250 ref 235 243 262 271 312 326 355 print_counts 005055 constant entry internal dcl 541 ref 365 393 428 process_control_arg 003107 constant entry internal dcl 373 ref 228 skip_labels 004463 constant label dcl 478 ref 490 498 505 start_1 001121 constant label dcl 196 ref 162 169 174 178 184 189 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6364 6502 5675 6374 Length 7046 5675 116 327 466 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dp 884 external procedure is an external procedure. on unit on line 214 68 on unit process_control_arg internal procedure shares stack frame of external procedure dp. print_counts internal procedure shares stack frame of external procedure dp. ask internal procedure shares stack frame of external procedure dp. make_access_lbl internal procedure shares stack frame of external procedure dp. get_parameter internal procedure shares stack frame of external procedure dp. init_variables internal procedure shares stack frame of external procedure dp. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dp 000100 count dp 000101 indx dp 000102 lng dp 000103 lcnt dp 000104 nargs dp 000105 i dp 000106 queue dp 000107 mode dp 000110 pub_bit dp 000111 code dp 000112 bc dp 000114 fcbp dp 000116 dum dp 000126 punching dp 000127 no_questions dp 000130 control_arg dp 000131 some_path dp 000132 brief dp 000133 top_lbl_sw dp 000134 bottom_lbl_sw dp 000135 access_lbl_sw dp 000136 del_acc dp 000137 r_acc dp 000140 s_acc dp 000142 access_class dp 000144 access_label dp 000206 accname dp 000216 generic_type dp 000226 rqt_gen_type dp 000236 last_arg dp 000246 argptr dp 000250 seg_ptr dp 000252 arg dp 000262 ans dp 000266 question dp 000327 quest_len dp 000330 dname dp 000402 ename dp 000412 lvname dp 000422 suf dp 000424 id dp 000426 dpap dp 000430 dprint_arg_buf dp 000752 query_info dp 000767 branch_status dp THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_char_temp call_ext_out_desc call_ext_out return_mac enable_op shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_star_name_$entry com_err_ com_err_$suppress_name command_query_ convert_authorization_$to_string cu_$arg_count cu_$arg_ptr cv_dec_check_ dprint_ dprint_$check_daemon_access dprint_$queue_contents expand_pathname_ hcs_$get_access_class hcs_$status_long hcs_$terminate_noname ioa_ ioa_$ioa_stream ioa_$rsnnl iod_info_$generic_type mdc_$find_lvname mdc_$get_lv_access msf_manager_$close msf_manager_$get_ptr msf_manager_$open object_lib_$initiate THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$dirseg error_table_$id_not_found error_table_$lock_wait_time_exceeded error_table_$moderr error_table_$no_s_permission error_table_$noentry error_table_$nostars error_table_$notalloc error_table_$zero_length_seg LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 85 000733 86 000734 2 7 000735 59 000767 161 001006 162 001007 165 001010 167 001017 168 001021 169 001022 172 001023 173 001032 174 001034 176 001035 177 001044 178 001046 180 001047 182 001066 183 001070 184 001071 186 001072 187 001101 188 001103 189 001105 191 001106 192 001115 193 001117 196 001121 198 001122 199 001124 200 001127 201 001131 203 001137 204 001141 206 001142 207 001145 208 001146 210 001154 214 001156 215 001172 216 001205 218 001206 219 001217 220 001221 221 001236 224 001237 225 001247 226 001264 228 001271 230 001305 231 001307 232 001310 233 001340 234 001342 235 001374 238 001375 239 001412 240 001414 242 001421 243 001470 247 001471 248 001533 249 001540 250 001606 251 001636 256 001637 257 001641 258 001712 259 001716 260 001730 262 001776 268 001777 269 002002 270 002005 271 002054 274 002055 276 002057 277 002063 278 002066 279 002071 284 002072 285 002117 287 002121 288 002131 289 002132 290 002155 291 002157 292 002164 294 002166 295 002175 296 002177 297 002200 299 002203 300 002206 301 002211 305 002212 306 002233 307 002235 308 002270 309 002272 310 002275 312 002343 317 002344 319 002407 323 002460 324 002463 326 002534 328 002535 330 002546 335 002630 336 002633 337 002636 338 002637 339 002664 340 002666 342 002723 343 002727 344 002731 345 002732 346 002763 347 002770 349 002771 353 003017 355 003044 358 003045 363 003046 365 003050 366 003055 369 003106 373 003107 375 003110 376 003120 377 003122 380 003123 382 003125 384 003145 385 003161 386 003162 387 003201 388 003203 389 003213 390 003214 391 003222 392 003223 393 003233 394 003236 395 003237 396 003263 398 003270 399 003323 401 003324 402 003360 403 003364 404 003424 406 003425 407 003442 409 003503 411 003504 412 003510 413 003511 414 003521 415 003522 416 003547 417 003555 418 003614 420 003615 421 003617 422 003621 424 003646 425 003647 427 003663 428 003673 429 003676 430 003677 431 003723 432 003732 433 003771 435 003772 436 003773 438 004007 439 004011 440 004021 441 004024 443 004025 445 004041 447 004055 448 004065 449 004066 450 004113 451 004121 452 004160 454 004161 456 004212 457 004213 458 004227 459 004230 460 004255 461 004264 462 004323 464 004324 465 004325 467 004341 468 004351 469 004352 470 004377 471 004405 472 004444 474 004445 475 004446 476 004456 477 004457 478 004463 479 004510 481 004511 483 004525 484 004527 485 004532 487 004536 488 004537 489 004547 490 004550 491 004554 492 004561 493 004564 494 004566 495 004570 496 004571 497 004601 498 004602 499 004606 500 004613 501 004616 502 004620 503 004622 504 004623 505 004633 506 004637 507 004641 508 004643 509 004644 510 004654 511 004655 512 004657 513 004664 514 004672 515 004673 516 004677 517 004700 518 004715 520 004756 522 004757 523 004763 525 004764 526 005016 528 005017 529 005020 530 005021 532 005031 534 005041 539 005054 541 005055 543 005056 544 005060 546 005063 547 005107 551 005147 552 005151 552 005157 553 005161 554 005215 556 005216 556 005223 557 005225 559 005273 564 005274 566 005275 570 005306 571 005310 572 005346 573 005350 574 005406 575 005412 579 005413 581 005414 582 005417 583 005444 584 005446 585 005467 586 005471 587 005475 589 005477 590 005501 591 005505 593 005507 598 005510 600 005511 601 005514 602 005515 603 005532 604 005534 605 005565 608 005566 610 005567 612 005570 613 005572 615 005573 617 005575 618 005576 619 005577 620 005600 621 005601 622 005602 624 005604 625 005606 626 005610 627 005612 628 005613 629 005615 630 005616 631 005621 632 005624 633 005627 634 005630 635 005631 636 005632 637 005633 638 005636 639 005641 640 005644 641 005647 642 005652 644 005653 ----------------------------------------------------------- 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