COMPILATION LISTING OF SEGMENT print_request_types Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/28/88 1341.1 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 print_request_types: 13 prt: proc; 14 15 16 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 17 /* */ 18 /* This command prints a list of request types handled by the IO daemon as determined by */ 19 /* inspecting the "iod_working_tables" segment. For each request type, the associated */ 20 /* driver access name and the generic type are printed. */ 21 /* */ 22 /* Status */ 23 /* */ 24 /* 0) Written by J. Stern, 2/18/75 */ 25 /* 1) Modified by J. C. Whitmore, 6/78, for version 2 iod_tables and general upgrade */ 26 /* 2) Modified by J. C. Whitmore, 10/78, to use version 3 iod_tables */ 27 /* 3) Modified by G. C. Dixon, 12/81 */ 28 /* - make prt work as active function */ 29 /* - interface with eor (ie, display user-defined request type names which eor */ 30 /* allows */ 31 /* - support -print, -punch, -plot to more easily select request types associated */ 32 /* with a given generic type */ 33 /* - sort output by generic type, then by name of target request type, finally by */ 34 /* name of user-defined request type */ 35 /* - change output format to shorten line length and eliminate redundant */ 36 /* information */ 37 /* - allow starname request type names to be given to select by request type name. */ 38 /* 4) Modified: May 3, 1982 by G. C. Dixon - add -user_defined control arg. */ 39 /* 5) Modified: July 1984 by C. Marker so that when print_request_types is used as an */ 40 /* active_function and given a starname, only names matching that starname will be */ 41 /* returned. */ 42 /* */ 43 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 44 45 46 47 /****^ HISTORY COMMENTS: 48* 1) change(88-09-23,Brunelle), approve(88-09-23,MCR7911), 49* audit(88-10-17,Wallman), install(88-10-28,MR12.2-1199): 50* Upgraded to handle Version 5 I/O daemon tables. Added comment in 51* request_type entries to the output display. 52* END HISTORY COMMENTS */ 53 54 55 dcl accname char (32), /* access name */ 56 acc_pers char (22), 57 acc_proj char (9), 58 an_found bit (1), /* ON if desired access name found */ 59 af_sw bit (1), /* ON if invoked as an active function. */ 60 argp ptr, /* ptr to arg */ 61 arglen fixed bin (21), /* length of arg */ 62 arg char (arglen) based (argp), 63 /* command argument */ 64 bfsw bit (1), /* ON for brief option */ 65 code fixed bin (35), /* error code */ 66 comment_string char (300) varying,/* pgms using rqt as default, etc. */ 67 comment_len fixed bin, 68 count fixed bin, 69 gen_type char (32), /* generic type name */ 70 gt_found bit (1), /* ON if desired generic type found */ 71 (i, j) fixed bin, 72 match bit (1), /* ON if access name and/or generic type matched */ 73 (max_acc, max_rqt) fixed bin, 74 nargs fixed bin, 75 nrqt_starnames fixed bin, 76 prev_gen_type char (32), 77 qgt_size fixed bin, 78 ret char (ret_len) varying based (retp), 79 ret_len fixed bin (21), 80 retp ptr, 81 rqt_starnames (20) char (32), 82 rqt_startypes (20) fixed bin, 83 select bit (1), /* ON if selecting a subset of request types */ 84 sysdir char (168), /* directory containing iod_working_tables */ 85 user_defined bit (1); /* ON if -user_defined given. */ 86 87 dcl (addr, after, before, copy, dim, hbound, index, lbound, length, 88 max, null, ptr, rtrim, substr) 89 builtin, 90 cleanup condition; 91 92 dcl absolute_pathname_ entry (char (*), char (*), fixed bin (35)), 93 active_fnc_err_ entry () options (variable), 94 arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)) variable, 95 com_err_ entry () options (variable), 96 check_star_name_$entry entry (char (*), fixed bin (35)), 97 cu_$af_return_arg entry (fixed bin, ptr, fixed bin (21), fixed bin (35)), 98 cu_$af_arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)), 99 cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)), 100 enter_output_request$default_count 101 entry (fixed bin), 102 enter_output_request$list_defaults 103 entry (ptr, ptr, fixed bin (35)), 104 err entry options (variable) variable, 105 get_line_length_$switch entry (ptr, fixed bin (35)) returns (fixed bin), 106 hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, 107 fixed bin (35)), 108 hcs_$terminate_noname entry (ptr, fixed bin (35)), 109 ioa_ entry () options (variable), 110 ll fixed bin, 111 match_star_name_ entry (char (*), char (*), fixed bin (35)), 112 sort_items_$char entry (ptr, fixed bin (24)); 113 114 dcl (FALSE init ("0"b), 115 TRUE init ("1"b)) bit (1) int static options (constant), 116 NL char (1) int static options (constant) init (" 117 "), 118 SP char (1) int static options (constant) init (" "), 119 (error_table_$badopt, 120 error_table_$too_many_names) fixed bin (35) ext static, 121 whoami char (19) int static options (constant) init ("print_request_types"); 122 1 1 /* START OF: eor_defaults.incl.pl1 * * * * * * * * * * * * * * * * */ 1 2 1 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 4 /* */ 1 5 /* This include file declares data items that are returned by the internal entry point, */ 1 6 /* enter_output_request$list_defaults. */ 1 7 /* */ 1 8 /* Status: */ 1 9 /* 0) Created: December 28, 1981 by Gary Dixon */ 1 10 /* */ 1 11 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 12 1 13 dcl 1 eor_defaults aligned based(Peor_defaults), 1 14 2 header, 1 15 3 version fixed bin, 1 16 3 N fixed bin, /* Number of request types for which eor has */ 1 17 /* default control argument settings. */ 1 18 2 request_type (Nrequest_types refer (eor_defaults.N)), 1 19 /* For each request type: */ 1 20 3 name char(24), /* user-defined name for the request type. */ 1 21 3 generic_type char(24), /* generic type (ie, printer, punch, plotter) */ 1 22 3 Sdefault bit(1), /* ON if this is default request type for the */ 1 23 /* generic type. */ 1 24 3 target_request_type_name /* actual request type associated with the */ 1 25 char(24), /* user-defined request type name. */ 1 26 Nrequest_types fixed bin, 1 27 Peor_defaults ptr, 1 28 Veor_defaults_1 fixed bin int static options(constant) init(1); 1 29 1 30 /* END OF: eor_defaults.incl.pl1 * * * * * * * * * * * * * * * * */ 123 124 2 1 /* BEGIN INCLUDE FILE ... iod_tables_hdr.incl.pl1 */ 2 2 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(88-01-27,Brunelle), approve(), audit(), install(): 2 7* Ancient History 2 8* Created by J. Stern, 1/20/75 2 9* Modified by J. C. Whitmore April 1978 for enhancements 2 10* Modified by J. C. Whitmore, 10/78, for version 3 iod_tables format. 2 11* Modified by E. N. Kittlitz, 6/81, for version 4 iod_tables with expanded 2 12* q_group_tab 2 13* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 2 14* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 2 15* Change version number to reflect changes in q_group_tab and 2 16* iod_device_tab for laser printer support. Added font tables. 2 17* END HISTORY COMMENTS */ 2 18 2 19 2 20 /* format: style4 */ 2 21 2 22 dcl ithp ptr; /* ptr to io daemon dables and it's header */ 2 23 dcl 1 iod_tables_hdr aligned based (ithp), /* header of data segment compiled by iod_table_compiler */ 2 24 2 version char (8), /* version of this structure */ 2 25 2 date_time_compiled fixed bin (71), 2 26 2 grace_time fixed bin (71), /* grace time before deleting finished segment */ 2 27 2 max_queues fixed bin (17), /* default number of priority queues per queue group */ 2 28 2 line_tab_offset fixed bin (18), /* offset of line id table */ 2 29 2 device_tab_offset fixed bin (18), /* offset of device table */ 2 30 2 minor_device_tab_offset fixed bin (18), /* offset of minor device table */ 2 31 2 dev_class_tab_offset fixed bin (18), /* offset of device class table */ 2 32 2 q_group_tab_offset fixed bin (18), /* offset of queue group table */ 2 33 2 forms_info_tab_offset fixed bin (18), /* offset of forms info tables */ 2 34 2 text_strings_offset fixed bin (18), 2 35 2 start_of_tables fixed bin; /* beginning of above tables, MUST start on even word boundry */ 2 36 2 37 /* Defines common text block to store virtually all text in the I/O daemon tables */ 2 38 dcl text_strings_ptr ptr; 2 39 dcl 1 text_strings aligned based (text_strings_ptr), 2 40 2 length fixed bin, 2 41 2 chars char (1 refer (text_strings.length)) unaligned; 2 42 2 43 /* this defines text offsets used to locate i/o daemon tables strings in 2 44* the text_strings structure */ 2 45 dcl 1 text_offset based, 2 46 2 first_char fixed bin (18) unsigned unaligned, 2 47 2 total_chars fixed bin (18) unsigned unaligned; 2 48 2 49 dcl IODT_VERSION_5 char (8) int static options (constant) init ("IODT0005"); /* current version number */ 2 50 2 51 2 52 /* END INCLUDE FILE ... iod_tables_hdr.incl.pl1 */ 125 126 127 3 1 /* BEGIN INCLUDE FILE...q_group_tab.incl.pl1 */ 3 2 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(88-01-27,Brunelle), approve(), audit(), install(): 3 7* Ancient History 3 8* Created by J. Stern, December 1974 3 9* Modified by J. Whitmore April 1978 3 10* Modified by R. McDonald May 1980 to include page charges (UNCA) 3 11* Modified by E. N. Kittlitz June 1981 for UNCA changes 3 12* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 3 13* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 3 14* Add forms_validation, default_form and font_dir variables for laser 3 15* printer support. 3 16* END HISTORY COMMENTS */ 3 17 3 18 3 19 /* format: style4 */ 3 20 3 21 dcl qgtp ptr; /* ptr to queue group table */ 3 22 dcl 1 q_group_tab aligned based (qgtp), 3 23 2 n_q_groups fixed bin, /* number of queue groups */ 3 24 2 pad fixed bin, 3 25 2 entries (1 refer (q_group_tab.n_q_groups)) like qgte; /* entries of queue group table */ 3 26 3 27 dcl qgtep ptr; /* queue group table entry pointer */ 3 28 dcl 1 qgte aligned based (qgtep), /* queue group table entry */ 3 29 3 30 /* static info from the parms file */ 3 31 3 32 2 name char (24), /* queue group name */ 3 33 2 comment unaligned like text_offset, /* comment to apply to the request_type */ 3 34 2 driver_id char (32), /* person.project name of drivers for this q group */ 3 35 2 accounting unaligned like text_offset, /* offset to accounting routine pathname, "system" => charge_user_ */ 3 36 2 generic_type char (32), /* generic type of requests in this queue */ 3 37 2 default_generic_queue fixed bin (1), /* 1 if this is default queue for above generic type, else 0 */ 3 38 2 rqti_seg_name char (32), /* name of rqti seg, if required, else blank */ 3 39 2 max_queues fixed bin, /* number of queues for this request type */ 3 40 2 default_queue fixed bin, /* number of the default queue */ 3 41 2 line_charge, /* price names for line charges */ 3 42 3 queue (4) char (32), /* one name for each queue */ 3 43 2 page_charge, /* price names for page charges */ 3 44 3 queue (4) char (32), /* one name for each queue */ 3 45 2 forms_table unaligned like text_offset, /* offset to forms table to apply to this queue group */ 3 46 2 forms_validation unaligned like text_offset, /* offset to name of routine for forms validation */ 3 47 2 default_form unaligned like text_offset, /* offset to default -form string if none given */ 3 48 2 font_dir unaligned like text_offset, /* offset to location of downloadable fonts */ 3 49 2 first_dev_class fixed bin, /* index of first device class entry of queue group */ 3 50 2 last_dev_class fixed bin, /* index of last device class entry of queue group */ 3 51 3 52 /* dynamic info reflecting current status of queues */ 3 53 3 54 2 open fixed bin, /* 1 if queues have been opened, else 0 */ 3 55 2 per_queue_info (4), 3 56 3 last_read bit (72), /* ID of last message read */ 3 57 3 mseg_index fixed bin, /* message segment index */ 3 58 3 pad fixed bin; /* pad to even word boundary */ 3 59 3 60 /* END INCLUDE FILE...q_group_tab.incl.pl1 */ 128 129 130 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 131 /* */ 132 /* initialize control argument defaults */ 133 /* */ 134 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 135 136 bfsw, user_defined = FALSE; 137 an_found, gt_found = TRUE; 138 acc_pers, acc_proj, gen_type = ""; 139 ll = 0; 140 nrqt_starnames = 0; 141 sysdir = ">daemon_dir_dir>io_daemon_dir"; 142 143 144 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 145 /* */ 146 /* See how we were invoked (command/af), and process arguments. */ 147 /* */ 148 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 149 150 call cu_$af_return_arg (nargs, retp, ret_len, code); 151 if code = 0 then do; 152 af_sw = TRUE; 153 arg_ptr = cu_$af_arg_ptr; 154 err = active_fnc_err_; 155 ret = ""; 156 end; 157 else do; 158 af_sw = FALSE; 159 arg_ptr = cu_$arg_ptr; 160 err = com_err_; 161 end; 162 163 do i = 1 to nargs; 164 call arg_ptr (i, argp, arglen, code); 165 if arg = "-bf" | arg = "-brief" 166 then bfsw = TRUE; 167 else if arg = "-an" | arg = "-access_name" then do; 168 i = i + 1; 169 call arg_ptr (i, argp, arglen, code); 170 if code ^= 0 then do; 171 noarg: call err (code, whoami, " 172 ^a requires an operand.", arg); 173 return; 174 end; 175 accname = arg; 176 acc_pers = before (arg, "."); 177 if acc_pers = "*" then 178 acc_pers = ""; 179 acc_proj = before (after (arg, "."), "."); 180 if acc_proj = "*" then 181 acc_proj = ""; 182 an_found = (acc_pers = "") & (acc_proj = ""); 183 end; /* an_found is OFF until we find a match */ 184 185 else if arg = "-gt" | arg = "-gen_type" | /* -gen_type is hold-over from earlier version */ 186 arg = "-generic_type" then do; 187 i = i + 1; 188 call arg_ptr (i, argp, arglen, code); 189 if code ^= 0 then go to noarg; 190 gen_type = arg; 191 gt_found = FALSE; /* gt_found is OFF until we find a match. */ 192 end; 193 else if arg = "-pr" | arg = "-print" then do; 194 gen_type = "printer"; 195 gt_found = FALSE; 196 end; 197 else if arg = "-pch" | arg = "-punch" then do; 198 gen_type = "punch"; 199 gt_found = FALSE; 200 end; 201 else if arg = "-plot" then do; 202 gen_type = "plotter"; 203 gt_found = FALSE; 204 end; 205 else if arg = "-udf" | arg = "-user_defined" then do; 206 user_defined = TRUE; 207 end; 208 else if arg = "-dr" | arg = "-dir" | arg = "-directory" then do; 209 i = i + 1; /* -dir is hold-over from earlier version of code.*/ 210 call arg_ptr (i, argp, arglen, code); 211 if code ^= 0 then go to noarg; 212 call absolute_pathname_ (arg, sysdir, code); /* take apart and put it back together */ 213 if code ^= 0 then do; 214 call err (code, whoami, arg); 215 return; 216 end; 217 end; 218 else if index (arg, "-") ^= 1 then do; 219 nrqt_starnames = nrqt_starnames + 1; 220 if nrqt_starnames > dim (rqt_starnames, 1) then do; 221 call err (error_table_$too_many_names, whoami, "^a 222 Only ^d request type starnames may be given.", arg, dim (rqt_starnames, 1)); 223 return; 224 end; 225 rqt_starnames (nrqt_starnames) = arg; 226 call check_star_name_$entry (arg, code); 227 if 0 <= code & code <= 2 then 228 rqt_startypes (nrqt_starnames) = code; 229 else do; 230 call err (code, whoami, arg); 231 return; 232 end; 233 end; 234 else do; 235 call err (error_table_$badopt, whoami, arg); 236 return; 237 end; 238 end; 239 240 select = ^(an_found & gt_found) | nrqt_starnames > 0; 241 /* selection occurs if any starnames were given */ 242 /* or if -an, -gt, -pr, -pch or -plot were given. */ 243 244 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 245 /* */ 246 /* get a pointer to the queue group table */ 247 /* */ 248 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 249 250 ithp = null; 251 on cleanup begin; 252 call hcs_$terminate_noname (ithp, code); 253 end; 254 call hcs_$initiate (sysdir, "iod_working_tables", "", 0, 1, ithp, code); 255 if ithp = null then do; 256 call err (code, whoami, "^a>iod_working_tables", sysdir); 257 return; 258 end; 259 260 if iod_tables_hdr.version ^= IODT_VERSION_5 then do; 261 call err (0, whoami, "Wrong version number for iod_working_tables."); 262 go to EXIT; 263 end; 264 qgtp = ptr (ithp, iod_tables_hdr.q_group_tab_offset); 265 text_strings_ptr = ptr (ithp, iod_tables_hdr.text_strings_offset); 266 267 268 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 269 /* */ 270 /* Set sizes required for adjustable storage allocated in begin block below. */ 271 /* */ 272 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 273 274 qgt_size = q_group_tab.n_q_groups; /* Number of system-defined request types. */ 275 call enter_output_request$default_count (Nrequest_types); 276 /* Number of user-defined request types (eor */ 277 /* supports user-defined request types). */ 278 279 BLOCK: begin; 280 281 dcl 1 eor_rqts aligned, 282 2 header like eor_defaults.header, 283 2 rqt (Nrequest_types) like eor_defaults.request_type, 284 name char (32), 285 1 q (qgt_size + Nrequest_types) aligned, 286 2 generic_type char (24), 287 2 target_request_type char (24), 288 2 name char (24), 289 2 access_name char (32), 290 2 comment unaligned like text_offset, 291 2 S, 292 ( 3 ignored_by_eor, 293 3 dprint_default, 294 3 dpunch_default, 295 3 dplot_default, 296 3 eor_print_default, 297 3 eor_punch_default, 298 3 eor_plot_default, 299 3 imft_default) bit (1) unal, 300 3 mbz bit (28) unal, 301 1 qb aligned like q based (Pqb), 302 Pqb ptr, 303 1 v aligned, /* Array for sorting entries. */ 304 2 n fixed bin (24), 305 2 p (qgt_size + Nrequest_types) 306 ptr unal; 307 308 309 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 310 /* */ 311 /* get a list of user-defined request types from eor. */ 312 /* */ 313 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 314 315 eor_rqts.version = Veor_defaults_1; 316 eor_rqts.N = Nrequest_types; 317 call enter_output_request$list_defaults (null, addr (eor_rqts), code); 318 if code ^= 0 then do; 319 call err (code, whoami, " 320 Getting user-defined request types known to enter_output_request."); 321 go to EXIT; 322 end; 323 324 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 325 /* */ 326 /* Add user-defined request types at beginning of the q structure. This structure is */ 327 /* used to merge info for user-defined request types and system-defined request types */ 328 /* (from q_group_tab) into a common format. The remainder of prt deals only with this */ 329 /* common format structure (the q structure). */ 330 /* */ 331 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 332 333 count = 0; 334 do i = 1 to Nrequest_types; 335 count = count + 1; 336 Pqb = addr (q (count)); 337 qb.generic_type = eor_rqts.rqt (i).generic_type; 338 qb.target_request_type = eor_rqts.rqt (i).target_request_type_name; 339 qb.name = eor_rqts.rqt (i).name; 340 341 do j = lbound (q_group_tab.entries, 1) to /* copy access name from target request type */ 342 hbound (q_group_tab.entries, 1) /* into user-defined request type entry. */ 343 while (q_group_tab.entries (j).name ^= qb.target_request_type); 344 end; 345 if j <= hbound (q_group_tab.entries, 1) then do; 346 qb.access_name = q_group_tab.entries (j).driver_id; 347 qb.comment = q_group_tab.entries (j).comment; 348 end; 349 else do; 350 qb.access_name = ""; 351 qb.comment.first_char, qb.comment.total_chars = 0; 352 end; 353 354 qb.S = FALSE; 355 if qb.generic_type = "printer" then 356 qb.S.eor_print_default = eor_rqts.rqt (i).Sdefault; 357 else if qb.generic_type = "punch" then 358 qb.S.eor_punch_default = eor_rqts.rqt (i).Sdefault; 359 else if qb.generic_type = "plotter" then 360 qb.S.eor_plot_default = eor_rqts.rqt (i).Sdefault; 361 end; 362 363 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 364 /* */ 365 /* Copy information from q_group_tab into q structure. */ 366 /* */ 367 /* CASE 1: ^user_defined */ 368 /* Eliminate any system-defined request type whose name duplicates a user-defined */ 369 /* request type (when user-defined request type references the system-defined type as */ 370 /* its target request type). Flag any system-defined request type whose name is */ 371 /* superceded by a user-defined request type (when user-defined request type references */ 372 /* another request type as its target). */ 373 /* */ 374 /* CASE 2: user_defined, ^af_sw */ 375 /* Include only those system-defined request types that are referenced as the target */ 376 /* request type for a user-defined request type. Eliminate duplicates as in case 1. Do */ 377 /* not flag superceded system-defined request types. */ 378 /* */ 379 /* CASE 3: user_defined, af_sw */ 380 /* Do nothing with system-defined request types. */ 381 /* */ 382 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 383 384 if user_defined & af_sw then ; /* CASE 3 */ 385 else do i = lbound (q_group_tab.entries, 1) to 386 hbound (q_group_tab.entries, 1); 387 qgtep = addr (q_group_tab.entries (i)); 388 count = count + 1; 389 Pqb = addr (q (count)); 390 qb.generic_type = substr (qgte.generic_type, 1, length (qb.generic_type)); 391 qb.target_request_type = qgte.name; 392 qb.name = ""; /* system request names have no user-defined name */ 393 qb.access_name = qgte.driver_id; 394 395 qb.comment = qgte.comment; 396 397 qb.S = FALSE; 398 if qgte.default_generic_queue = 1 then 399 if qgte.generic_type = "printer" then 400 qb.S.dprint_default = TRUE; 401 else if qgte.generic_type = "punch" then 402 qb.S.dpunch_default = TRUE; 403 else if qgte.generic_type = "plotter" then 404 qb.S.dplot_default = TRUE; 405 else if qgte.generic_type = "imft" then 406 qb.S.imft_default = TRUE; 407 408 if ^user_defined then do; /* CASE 1 */ 409 do j = 1 to Nrequest_types /* search user-defined request types for one */ 410 while (qgte.name ^= q (j).name); /* having the same name. */ 411 end; 412 if j <= Nrequest_types then 413 if q (j).name = q (j).target_request_type then do; 414 /* user-define type duplicates system type */ 415 q (j).S.dprint_default = qb.S.dprint_default; 416 q (j).S.dpunch_default = qb.S.dpunch_default; 417 q (j).S.dplot_default = qb.S.dplot_default; 418 q (j).S.imft_default = qb.S.imft_default; 419 q (j).name = ""; /* copy attributes from system type entry, make */ 420 count = count - 1; /* user entry look like system type entry */ 421 end; /* and delete the system type entry. */ 422 else 423 qb.S.ignored_by_eor = TRUE; /* flag system type entry as being ignored by */ 424 end; /* cor/eor/lor/mor because of user-defined */ 425 /* request type of same name. */ 426 427 else do; /* CASE 2 */ 428 do j = 1 to Nrequest_types 429 while (qgte.name ^= q (j).target_request_type); 430 end; 431 if j > Nrequest_types then /* system rqt not referenced by any user rqt */ 432 count = count - 1; 433 else if q (j).name = qgte.name then do; /* user rqt has same name as its corresponding */ 434 /* system rqt. */ 435 q (j).S.dprint_default = qb.S.dprint_default; 436 q (j).S.dpunch_default = qb.S.dpunch_default; 437 q (j).S.dplot_default = qb.S.dplot_default; 438 q (j).S.imft_default = qb.S.imft_default; 439 q (j).name = ""; /* copy attributes from system type entry, make */ 440 count = count - 1; /* user entry look like system type entry */ 441 end; 442 end; 443 end; 444 445 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 446 /* */ 447 /* Select entries to be printed. Columns widths of the display are computed as entries */ 448 /* are selected. Selection is made by access name of the IO Daemon process, by generic */ 449 /* type of the request type (printer, punch or plotter), or by comparision with request */ 450 /* type star names. */ 451 /* */ 452 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 453 454 v.n = 0; 455 if bfsw then do; /* Prepare to compute column widths for printed */ 456 max_rqt = 0; /* entries */ 457 max_acc = 0; 458 end; 459 else do; /* If heading given, min column width is limited */ 460 max_rqt = length ("Request type"); /* by size of column headers. */ 461 max_acc = length ("Access name"); 462 end; 463 464 do i = 1 to Nrequest_types, i to count while (^user_defined); 465 Pqb = addr (q (i)); 466 match = TRUE; 467 if select then do; 468 if acc_pers ^= "" then 469 if acc_pers = before (qb.access_name, ".") then 470 an_found = an_found | (acc_proj = ""); 471 else 472 match = FALSE; 473 if acc_proj ^= "" then 474 if acc_proj = before (after (qb.access_name, "."), ".") then 475 an_found = an_found | match; 476 else 477 match = FALSE; 478 if gen_type ^= "" then 479 if gen_type = qb.generic_type then gt_found = TRUE; 480 else match = FALSE; 481 if match & nrqt_starnames > 0 then do; 482 match = FALSE; 483 if qb.name = "" then 484 name = qb.target_request_type; 485 else 486 name = qb.name; 487 do j = 1 to nrqt_starnames while (^match); 488 go to MATCH (rqt_startypes (j)); 489 490 MATCH (0): match = (name = rqt_starnames (j)); 491 go to END_MATCH; 492 493 MATCH (1): call match_star_name_ ((name), rqt_starnames (j), code); 494 match = (code = 0); 495 go to END_MATCH; 496 497 MATCH (2): match = TRUE; 498 END_MATCH: end; 499 end; 500 end; 501 502 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 503 /* */ 504 /* This loop places matching entries into the array of entries to be sorted/displayed. */ 505 /* A loop is used because, for user-defined request types, we want to display the */ 506 /* system-defined target request type, no matter whether it would be normally selected */ 507 /* or not. Execution usually goes through the loop once, or at most twice. */ 508 /* */ 509 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 510 511 do while (match); 512 do j = 1 to v.n while (Pqb ^= v.p (j)); /* Don't put entry in array if it is already there*/ 513 end; 514 if j > v.n then do; 515 v.n = v.n + 1; /* Add entry to the display array. */ 516 v.p (v.n) = Pqb; 517 if qb.name = "" then /* Compute max length of request type and access */ 518 max_rqt = max (max_rqt, length (rtrim (qb.target_request_type))); 519 else /* name display fields. */ 520 max_rqt = max (max_rqt, length (rtrim (qb.name)) + 2, 521 length (rtrim (qb.target_request_type))); 522 max_acc = max (max_acc, length (rtrim (before (qb.access_name, ".*")))); 523 if qb.name ^= "" & ^af_sw then do; /* For user-defined type, insure that */ 524 do j = 1 to count /* system-defined target request type is also */ 525 while (q (j).target_request_type ^= qb.target_request_type | 526 q (j).name ^= ""); /* selected unless it is an active function. */ 527 end; 528 if j <= count then 529 Pqb = addr (q (j)); /* add target to list. */ 530 else 531 match = FALSE; /* no target found. */ 532 end; 533 else 534 match = FALSE; /* system-defined request type. */ 535 end; 536 else 537 match = FALSE; /* entry is already in the array. */ 538 end; 539 end; 540 max_rqt = max_rqt + 3; /* allow 3 chars between columns. */ 541 max_acc = max_acc + 3; 542 543 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 544 /* */ 545 /* Sort the list to be displayed (or returned as AF value). */ 546 /* */ 547 /* If command invocation, then sort first by generic type, then by target request type, */ 548 /* finally by user-defined request type. */ 549 /* */ 550 /* If af invocation, sort by name returned as active function value. */ 551 /* */ 552 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 553 554 if af_sw then do; /* Kludge af sorting by putting name returned */ 555 do i = 1 to v.n; /* in af string into the gen_type field. */ 556 Pqb = v.p (i); 557 if qb.name = "" then 558 qb.generic_type = qb.target_request_type; 559 else 560 qb.generic_type = qb.name; 561 end; 562 if v.n > 1 then do; /* sort if more than 1. */ 563 call sort_items_$char (addr (v), length (qb.generic_type)); 564 end; 565 end; 566 else do; 567 if v.n > 1 then do; /* sort if more than 1. */ 568 call sort_items_$char (addr (v), length (qb.generic_type) + 569 length (qb.target_request_type) + length (qb.name)); 570 end; 571 end; 572 573 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 574 /* */ 575 /* Now display the selected entries, or add them to the AF return string. When */ 576 /* displaying, a separate heading is put out for each generic type, identifying the */ 577 /* generic type and the various output columns. Columns include: (name of) Request */ 578 /* type; Access name; and Comments. The comments indicate which request types are */ 579 /* default for dprint, for dpunch, for dplot and for eor -print, -punch and -plot. Note */ 580 /* that dprint and eor -print may well have different defaults, because eor allows the */ 581 /* user to change the name of his default request type. The comment also indicates any */ 582 /* system-defined request types which are not accessible from cor/eor/lor/mor (because */ 583 /* they have been overridden by a user-defined request type of the same name). */ 584 /* */ 585 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 586 587 prev_gen_type = ""; 588 do i = 1 to v.n; 589 Pqb = v.p (i); 590 if qb.generic_type ^= prev_gen_type then 591 if ^af_sw then do; 592 call ioa_ ("^/^[^;^/^-^]GENERIC TYPE: ^a^[^5s^;^/^va^va^a^/^]", 593 bfsw, qb.generic_type, bfsw, max_rqt, "Request type", 594 max_acc, "Access name", "Comments"); 595 prev_gen_type = qb.generic_type; 596 end; 597 if af_sw then do; 598 ret = ret || rtrim (qb.generic_type); 599 ret = ret || SP; 600 end; 601 else do; 602 comment_string = ""; 603 comment_len = max_rqt + max_acc; 604 if qb.comment.total_chars ^= 0 then 605 call add_to_comment (substr (text_strings.chars, 606 qb.comment.first_char, qb.comment.total_chars) || ";"); 607 if qb.S.dprint_default then 608 call add_to_comment ("default for dprint"); 609 else if qb.S.dpunch_default then 610 call add_to_comment ("default for dpunch"); 611 else if qb.S.dplot_default then 612 call add_to_comment ("default for dplot"); 613 else if qb.S.imft_default then 614 call add_to_comment ("default for eir"); 615 if qb.S.eor_print_default then 616 if comment_string = "" then 617 call add_to_comment ("default for eor -print"); 618 else do; 619 call add_to_comment ("&"); 620 call add_to_comment ("eor -print"); 621 end; 622 else if qb.S.eor_punch_default then 623 if comment_string = "" then 624 call add_to_comment ("default for eor -punch"); 625 else do; 626 call add_to_comment ("&"); 627 call add_to_comment ("eor -punch"); 628 end; 629 630 else if qb.S.eor_plot_default then 631 if comment_string = "" then 632 call add_to_comment ("default for eor -plot"); 633 else do; 634 call add_to_comment ("&"); 635 call add_to_comment ("eor -plot"); 636 end; 637 if qb.S.ignored_by_eor then do; 638 if comment_string ^= "" then do; 639 comment_string = comment_string || ";"; 640 comment_len = comment_len + 1; 641 end; 642 call add_to_comment ("ignored by eor -"); 643 do j = 1 to Nrequest_types 644 while (qb.target_request_type ^= q (j).name); 645 end; 646 call add_to_comment (rtrim (q (j).name)); 647 call add_to_comment ("is a"); 648 call add_to_comment ("user-defined"); 649 call add_to_comment ("name"); 650 call add_to_comment ("on the"); 651 call add_to_comment (rtrim (q (j).target_request_type)); 652 call add_to_comment ("request type"); 653 end; 654 call ioa_ ("^[^va^va^a^;^5s^2x^va^[^vx^a^;^2s^]", 655 qb.name = "", 656 max_rqt, qb.target_request_type, 657 max_acc, before (qb.access_name, ".*"), comment_string, 658 max_rqt - 2, qb.name, 659 comment_string ^= "", max_acc, comment_string); 660 end; 661 end; 662 663 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 664 /* */ 665 /* Emit errors diagnosing selection failures. Handle completion of display or AF return */ 666 /* string (remove trailing SP from AF return string). Terminate the iod_working_tables. */ 667 /* */ 668 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 669 670 if ^an_found then call err (0, whoami, "Access name not found: ^a", accname); 671 if ^gt_found then call err (0, whoami, "Generic type not found: ^a", gen_type); 672 if an_found & gt_found & v.n = 0 & ^af_sw then 673 call err (0, whoami, "No request types meet selection criteria:^[ 674 -access_name ^a^;^s^]^[ 675 -generic_type ^a^;^s^]^[ 676 -user_defined^]^[ 677 request_type name matching:^v( 678 ^a^)", acc_pers ^= "" | acc_proj ^= "", accname, 679 gen_type ^= "", gen_type, 680 user_defined, 681 nrqt_starnames > 0, nrqt_starnames, rqt_starnames); 682 if v.n > 0 then do; 683 if af_sw then /* remove trailing SP from return string. */ 684 ret = substr (ret, 1, length (ret) - 1); 685 else 686 call ioa_ (""); /* throw in an extra blank line */ 687 end; 688 end BLOCK; 689 690 EXIT: call hcs_$terminate_noname (ithp, code); 691 return; 692 693 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 694 695 696 add_to_comment: 697 proc (str); 698 699 dcl str char (*); 700 701 if ll = 0 then do; /* Tailor length of comments to terminal line len */ 702 ll = get_line_length_$switch (null, code); /* Comments too long are folded onto several */ 703 if code ^= 0 then ll = 136; /* lines. */ 704 end; 705 if comment_string = "" then ; 706 else if comment_len + length (SP) + length (str) > ll then do; 707 comment_string = comment_string || NL; 708 comment_string = comment_string || copy (SP, max_rqt + max_acc + 2); 709 comment_len = max_rqt + max_acc + 2; 710 end; 711 else if comment_string ^= "" then do; 712 comment_string = comment_string || SP; 713 comment_len = comment_len + length (SP); 714 end; 715 comment_string = comment_string || str; 716 comment_len = comment_len + length (str); 717 end add_to_comment; 718 719 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 720 721 end print_request_types; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/28/88 1257.4 print_request_types.pl1 >special_ldd>install>MR12.2-1199>print_request_types.pl1 123 1 03/19/82 1647.0 eor_defaults.incl.pl1 >ldd>include>eor_defaults.incl.pl1 125 2 10/28/88 1227.4 iod_tables_hdr.incl.pl1 >special_ldd>install>MR12.2-1199>iod_tables_hdr.incl.pl1 128 3 10/28/88 1227.2 q_group_tab.incl.pl1 >special_ldd>install>MR12.2-1199>q_group_tab.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. FALSE constant bit(1) initial packed unaligned dcl 114 ref 136 158 191 195 199 203 354 397 471 476 480 482 530 533 536 IODT_VERSION_5 000004 constant char(8) initial packed unaligned dcl 2-49 ref 260 N 1 000100 automatic fixed bin(17,0) level 3 dcl 281 set ref 316* NL 005107 constant char(1) initial packed unaligned dcl 114 ref 707 Nrequest_types 000663 automatic fixed bin(17,0) dcl 1-13 set ref 275* 281 281 281 316 334 409 412 428 431 464 643 Pqb 000110 automatic pointer dcl 281 set ref 336* 337 338 339 341 346 347 350 351 351 354 355 355 357 357 359 359 389* 390 390 391 392 393 395 397 398 401 403 405 415 416 417 418 422 435 436 437 438 465* 468 473 478 483 483 485 512 516 517 517 519 519 522 523 524 528* 556* 557 557 557 559 559 563 563 568 568 568 589* 590 592 595 598 604 604 604 607 609 611 613 615 622 630 637 643 654 654 654 654 654 S 33 000110 automatic structure array level 2 in structure "q" dcl 281 in begin block on line 279 S 33 based structure level 2 in structure "qb" dcl 281 in begin block on line 279 set ref 354* 397* SP 005106 constant char(1) initial packed unaligned dcl 114 ref 599 706 708 712 713 Sdefault 16 000100 automatic bit(1) array level 3 dcl 281 set ref 355 357 359 TRUE constant bit(1) initial packed unaligned dcl 114 ref 137 152 165 206 398 401 403 405 422 466 478 497 Veor_defaults_1 constant fixed bin(17,0) initial dcl 1-13 ref 315 absolute_pathname_ 000010 constant entry external dcl 92 ref 212 acc_pers 000110 automatic char(22) packed unaligned dcl 55 set ref 138* 176* 177 177* 182 468 468 672 acc_proj 000116 automatic char(9) packed unaligned dcl 55 set ref 138* 179* 180 180* 182 468 473 473 672 access_name 22 based char(32) level 2 dcl 281 set ref 346* 350* 393* 468 473 522 654 654 accname 000100 automatic char(32) packed unaligned dcl 55 set ref 175* 670* 672* active_fnc_err_ 000012 constant entry external dcl 92 ref 154 addr builtin function dcl 87 ref 317 317 336 387 389 465 528 563 563 568 568 af_sw 000122 automatic bit(1) packed unaligned dcl 55 set ref 152* 158* 384 523 554 590 597 672 683 after builtin function dcl 87 ref 179 473 an_found 000121 automatic bit(1) packed unaligned dcl 55 set ref 137* 182* 240 468* 468 473* 473 670 672 arg based char packed unaligned dcl 55 set ref 165 165 167 167 171* 175 176 179 185 185 185 190 193 193 197 197 201 205 205 208 208 208 212* 214* 218 221* 225 226* 230* 235* arg_ptr 000652 automatic entry variable dcl 92 set ref 153* 159* 164 169 188 210 arglen 000126 automatic fixed bin(21,0) dcl 55 set ref 164* 165 165 167 167 169* 171 171 175 176 179 185 185 185 188* 190 193 193 197 197 201 205 205 208 208 208 210* 212 212 214 214 218 221 221 225 226 226 230 230 235 235 argp 000124 automatic pointer dcl 55 set ref 164* 165 165 167 167 169* 171 175 176 179 185 185 185 188* 190 193 193 197 197 201 205 205 208 208 208 210* 212 214 218 221 225 226 230 235 before builtin function dcl 87 ref 176 179 468 473 522 654 654 bfsw 000127 automatic bit(1) packed unaligned dcl 55 set ref 136* 165* 455 592* 592* chars 1 based char level 2 packed packed unaligned dcl 2-39 ref 604 check_star_name_$entry 000016 constant entry external dcl 92 ref 226 cleanup 000644 stack reference condition dcl 87 ref 251 code 000130 automatic fixed bin(35,0) dcl 55 set ref 150* 151 164* 169* 170 171* 188* 189 210* 211 212* 213 214* 226* 227 227 227 230* 252* 254* 256* 317* 318 319* 493* 494 690* 702* 703 com_err_ 000014 constant entry external dcl 92 ref 160 comment 10 based structure array level 3 in structure "q_group_tab" packed packed unaligned dcl 3-22 in procedure "prt" set ref 347 comment 6 based structure level 2 in structure "qgte" packed packed unaligned dcl 3-28 in procedure "prt" ref 395 comment 32 based structure level 2 in structure "qb" packed packed unaligned dcl 281 in begin block on line 279 set ref 347* 395* comment_len 000245 automatic fixed bin(17,0) dcl 55 set ref 603* 640* 640 706 709* 713* 713 716* 716 comment_string 000131 automatic varying char(300) dcl 55 set ref 602* 615 622 630 638 639* 639 654* 654 654* 705 707* 707 708* 708 711 712* 712 715* 715 copy builtin function dcl 87 ref 708 count 000246 automatic fixed bin(17,0) dcl 55 set ref 333* 335* 335 336 388* 388 389 420* 420 431* 431 440* 440 464 524 528 cu_$af_arg_ptr 000022 constant entry external dcl 92 ref 153 cu_$af_return_arg 000020 constant entry external dcl 92 ref 150 cu_$arg_ptr 000024 constant entry external dcl 92 ref 159 default_generic_queue 30 based fixed bin(1,0) level 2 dcl 3-28 ref 398 dim builtin function dcl 87 ref 220 221 221 dplot_default 33(03) based bit(1) level 3 in structure "qb" packed packed unaligned dcl 281 in begin block on line 279 set ref 403* 417 437 611 dplot_default 33(03) 000110 automatic bit(1) array level 3 in structure "q" packed packed unaligned dcl 281 in begin block on line 279 set ref 417* 437* dprint_default 33(01) based bit(1) level 3 in structure "qb" packed packed unaligned dcl 281 in begin block on line 279 set ref 398* 415 435 607 dprint_default 33(01) 000110 automatic bit(1) array level 3 in structure "q" packed packed unaligned dcl 281 in begin block on line 279 set ref 415* 435* dpunch_default 33(02) 000110 automatic bit(1) array level 3 in structure "q" packed packed unaligned dcl 281 in begin block on line 279 set ref 416* 436* dpunch_default 33(02) based bit(1) level 3 in structure "qb" packed packed unaligned dcl 281 in begin block on line 279 set ref 401* 416 436 609 driver_id 7 based char(32) level 2 in structure "qgte" dcl 3-28 in procedure "prt" ref 393 driver_id 11 based char(32) array level 3 in structure "q_group_tab" dcl 3-22 in procedure "prt" set ref 346 enter_output_request$default_count 000026 constant entry external dcl 92 ref 275 enter_output_request$list_defaults 000030 constant entry external dcl 92 ref 317 entries 2 based structure array level 2 dcl 3-22 set ref 341 341 345 385 385 387 eor_defaults based structure level 1 dcl 1-13 eor_plot_default 33(06) based bit(1) level 3 packed packed unaligned dcl 281 set ref 359* 630 eor_print_default 33(04) based bit(1) level 3 packed packed unaligned dcl 281 set ref 355* 615 eor_punch_default 33(05) based bit(1) level 3 packed packed unaligned dcl 281 set ref 357* 622 eor_rqts 000100 automatic structure level 1 dcl 281 set ref 317 317 err 000656 automatic entry variable dcl 92 set ref 154* 160* 171 214 221 230 235 256 261 319 670 671 672 error_table_$badopt 000046 external static fixed bin(35,0) dcl 114 set ref 235* error_table_$too_many_names 000050 external static fixed bin(35,0) dcl 114 set ref 221* first_char 32 based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 281 set ref 351* 604 gen_type 000247 automatic char(32) packed unaligned dcl 55 set ref 138* 190* 194* 198* 202* 478 478 671* 672 672* generic_type 20 based char(32) level 2 in structure "qgte" dcl 3-28 in procedure "prt" ref 390 398 401 403 405 generic_type based char(24) level 2 in structure "qb" dcl 281 in begin block on line 279 set ref 337* 355 357 359 390* 390 478 557* 559* 563 563 568 590 592* 595 598 generic_type 10 000100 automatic char(24) array level 3 in structure "eor_rqts" dcl 281 in begin block on line 279 set ref 337 get_line_length_$switch 000032 constant entry external dcl 92 ref 702 gt_found 000257 automatic bit(1) packed unaligned dcl 55 set ref 137* 191* 195* 199* 203* 240 478* 671 672 hbound builtin function dcl 87 ref 341 345 385 hcs_$initiate 000034 constant entry external dcl 92 ref 254 hcs_$terminate_noname 000036 constant entry external dcl 92 ref 252 690 header 000100 automatic structure level 2 in structure "eor_rqts" dcl 281 in begin block on line 279 header based structure level 2 in structure "eor_defaults" dcl 1-13 in procedure "prt" i 000260 automatic fixed bin(17,0) dcl 55 set ref 163* 164* 168* 168 169* 187* 187 188* 209* 209 210* 334* 337 338 339 355 357 359* 385* 387* 464* 464* 465* 555* 556* 588* 589* ignored_by_eor 33 based bit(1) level 3 packed packed unaligned dcl 281 set ref 422* 637 imft_default 33(07) 000110 automatic bit(1) array level 3 in structure "q" packed packed unaligned dcl 281 in begin block on line 279 set ref 418* 438* imft_default 33(07) based bit(1) level 3 in structure "qb" packed packed unaligned dcl 281 in begin block on line 279 set ref 405* 418 438 613 index builtin function dcl 87 ref 218 ioa_ 000040 constant entry external dcl 92 ref 592 654 685 iod_tables_hdr based structure level 1 dcl 2-23 ithp 000664 automatic pointer dcl 2-22 set ref 250* 252* 254* 255 260 264 264 265 265 690* j 000261 automatic fixed bin(17,0) dcl 55 set ref 341* 341* 345 346 347 409* 409* 412 412 412 415 416 417 418 419 428* 428* 431 433 435 436 437 438 439 487* 488 490 493* 512* 512* 514 524* 524 524* 528 528 643* 643* 646 646 651 651 lbound builtin function dcl 87 ref 341 385 length builtin function dcl 87 in procedure "prt" ref 390 460 461 517 519 519 522 563 563 568 568 568 683 706 706 713 716 length based fixed bin(17,0) level 2 in structure "text_strings" dcl 2-39 in procedure "prt" ref 604 ll 000662 automatic fixed bin(17,0) dcl 92 set ref 139* 701 702* 703* 706 match 000262 automatic bit(1) packed unaligned dcl 55 set ref 466* 471* 473 476* 480* 481 482* 487 490* 494* 497* 511 530* 533* 536* match_star_name_ 000042 constant entry external dcl 92 ref 493 max builtin function dcl 87 ref 517 519 522 max_acc 000263 automatic fixed bin(17,0) dcl 55 set ref 457* 461* 522* 522 541* 541 592* 603 654* 654* 708 709 max_rqt 000264 automatic fixed bin(17,0) dcl 55 set ref 456* 460* 517* 517 519* 519 540* 540 592* 603 654* 654 708 709 n 000112 automatic fixed bin(24,0) level 2 dcl 281 set ref 454* 512 514 515* 515 516 555 562 567 588 672 682 n_q_groups based fixed bin(17,0) level 2 dcl 3-22 ref 274 341 345 385 name 14 based char(24) level 2 in structure "qb" dcl 281 in begin block on line 279 set ref 339* 392* 483 485 517 519 523 557 559 568 654 654* name 14 000110 automatic char(24) array level 2 in structure "q" dcl 281 in begin block on line 279 set ref 409 412 419* 433 439* 524 643 646 646 name 000100 automatic char(32) packed unaligned dcl 281 in begin block on line 279 set ref 483* 485* 490 493 name 2 based char(24) array level 3 in structure "q_group_tab" dcl 3-22 in procedure "prt" set ref 341 name based char(24) level 2 in structure "qgte" dcl 3-28 in procedure "prt" ref 391 409 428 433 name 2 000100 automatic char(24) array level 3 in structure "eor_rqts" dcl 281 in begin block on line 279 set ref 339 nargs 000265 automatic fixed bin(17,0) dcl 55 set ref 150* 163 nrqt_starnames 000266 automatic fixed bin(17,0) dcl 55 set ref 140* 219* 219 220 225 227 240 481 487 672 672* null builtin function dcl 87 ref 250 255 317 317 702 702 p 1 000112 automatic pointer array level 2 packed packed unaligned dcl 281 set ref 512 516* 556 589 prev_gen_type 000267 automatic char(32) packed unaligned dcl 55 set ref 587* 590 595* ptr builtin function dcl 87 ref 264 265 q 000110 automatic structure array level 1 dcl 281 set ref 336 389 465 528 q_group_tab based structure level 1 dcl 3-22 q_group_tab_offset 13 based fixed bin(18,0) level 2 dcl 2-23 ref 264 qb based structure level 1 dcl 281 qgt_size 000277 automatic fixed bin(17,0) dcl 55 set ref 274* 281 281 qgte based structure level 1 dcl 3-28 qgtep 000672 automatic pointer dcl 3-27 set ref 387* 390 391 393 395 398 398 401 403 405 409 428 433 qgtp 000670 automatic pointer dcl 3-21 set ref 264* 274 341 341 341 345 346 347 385 385 387 request_type 2 based structure array level 2 dcl 1-13 ret based varying char dcl 55 set ref 155* 598* 598 599* 599 683* 683 683 ret_len 000300 automatic fixed bin(21,0) dcl 55 set ref 150* 155 598 599 683 retp 000302 automatic pointer dcl 55 set ref 150* 155 598 598 599 599 683 683 683 rqt 2 000100 automatic structure array level 2 dcl 281 rqt_starnames 000304 automatic char(32) array packed unaligned dcl 55 set ref 220 221 221 225* 490 493* 672* rqt_startypes 000544 automatic fixed bin(17,0) array dcl 55 set ref 227* 488 rtrim builtin function dcl 87 ref 517 519 519 522 598 646 646 651 651 select 000570 automatic bit(1) packed unaligned dcl 55 set ref 240* 467 sort_items_$char 000044 constant entry external dcl 92 ref 563 568 str parameter char packed unaligned dcl 699 ref 696 706 715 716 substr builtin function dcl 87 ref 390 604 683 sysdir 000571 automatic char(168) packed unaligned dcl 55 set ref 141* 212* 254* 256* target_request_type 6 based char(24) level 2 in structure "qb" dcl 281 in begin block on line 279 set ref 338* 341 391* 483 517 519 524 557 568 643 654* target_request_type 6 000110 automatic char(24) array level 2 in structure "q" dcl 281 in begin block on line 279 set ref 412 428 524 651 651 target_request_type_name 17 000100 automatic char(24) array level 3 dcl 281 set ref 338 text_offset based structure level 1 packed packed unaligned dcl 2-45 text_strings based structure level 1 dcl 2-39 text_strings_offset 15 based fixed bin(18,0) level 2 dcl 2-23 ref 265 text_strings_ptr 000666 automatic pointer dcl 2-38 set ref 265* 604 total_chars 32(18) based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 281 set ref 351* 604 604 user_defined 000643 automatic bit(1) packed unaligned dcl 55 set ref 136* 206* 384 408 539 672* v 000112 automatic structure level 1 dcl 281 set ref 563 563 568 568 version 000100 automatic fixed bin(17,0) level 3 in structure "eor_rqts" dcl 281 in begin block on line 279 set ref 315* version based char(8) level 2 in structure "iod_tables_hdr" dcl 2-23 in procedure "prt" ref 260 whoami 000006 constant char(19) initial packed unaligned dcl 114 set ref 171* 214* 221* 230* 235* 256* 261* 319* 670* 671* 672* NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Peor_defaults automatic pointer dcl 1-13 NAMES DECLARED BY EXPLICIT CONTEXT. BLOCK 001651 constant label dcl 279 END_MATCH 002732 constant label dcl 498 ref 491 495 EXIT 004712 constant label dcl 690 ref 262 321 MATCH 000000 constant label array(0:2) dcl 490 ref 488 add_to_comment 004725 constant entry internal dcl 696 ref 604 607 609 611 613 615 619 620 622 626 627 630 634 635 642 646 647 648 649 650 651 652 noarg 000661 constant label dcl 171 ref 189 211 print_request_types 000476 constant entry external dcl 12 prt 000467 constant entry external dcl 12 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5366 5440 5112 5376 Length 5732 5112 52 256 254 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME prt 544 external procedure is an external procedure. on unit on line 251 70 on unit begin block on line 279 286 begin block uses auto adjustable storage. add_to_comment 77 internal procedure is called during a stack extension. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 279 000100 name begin block on line 279 000100 eor_rqts begin block on line 279 000110 q begin block on line 279 000110 Pqb begin block on line 279 000112 v begin block on line 279 prt 000100 accname prt 000110 acc_pers prt 000116 acc_proj prt 000121 an_found prt 000122 af_sw prt 000124 argp prt 000126 arglen prt 000127 bfsw prt 000130 code prt 000131 comment_string prt 000245 comment_len prt 000246 count prt 000247 gen_type prt 000257 gt_found prt 000260 i prt 000261 j prt 000262 match prt 000263 max_acc prt 000264 max_rqt prt 000265 nargs prt 000266 nrqt_starnames prt 000267 prev_gen_type prt 000277 qgt_size prt 000300 ret_len prt 000302 retp prt 000304 rqt_starnames prt 000544 rqt_startypes prt 000570 select prt 000571 sysdir prt 000643 user_defined prt 000652 arg_ptr prt 000656 err prt 000662 ll prt 000663 Nrequest_types prt 000664 ithp prt 000666 text_strings_ptr prt 000670 qgtp prt 000672 qgtep prt THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as r_ne_as alloc_char_temp unpk_to_pk enter_begin_block leave_begin_block call_ent_var_desc call_ent_var call_ext_out_desc call_ext_out call_int_other_desc return_mac tra_ext_1 alloc_auto_adj enable_op shorten_stack ext_entry int_entry int_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absolute_pathname_ active_fnc_err_ check_star_name_$entry com_err_ cu_$af_arg_ptr cu_$af_return_arg cu_$arg_ptr enter_output_request$default_count enter_output_request$list_defaults get_line_length_$switch hcs_$initiate hcs_$terminate_noname ioa_ match_star_name_ sort_items_$char THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$too_many_names LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 12 000466 136 000503 137 000506 138 000511 139 000522 140 000523 141 000524 150 000527 151 000543 152 000545 153 000547 154 000554 155 000557 156 000560 158 000561 159 000562 160 000567 163 000572 164 000601 165 000615 167 000632 168 000642 169 000643 170 000657 171 000661 173 000716 175 000717 176 000724 177 000734 179 000743 180 000766 182 000775 183 001010 185 001011 187 001025 188 001026 189 001042 190 001044 191 001051 192 001052 193 001053 194 001063 195 001066 196 001067 197 001070 198 001100 199 001103 200 001104 201 001105 202 001111 203 001114 204 001115 205 001116 206 001126 207 001130 208 001131 209 001145 210 001146 211 001162 212 001164 213 001210 214 001212 215 001235 217 001236 218 001237 219 001251 220 001252 221 001255 223 001316 225 001317 226 001325 227 001345 230 001354 231 001377 233 001400 235 001401 236 001425 238 001426 240 001430 250 001440 251 001442 252 001456 253 001467 254 001470 255 001537 256 001543 257 001575 260 001576 261 001603 262 001627 264 001630 265 001634 274 001640 275 001642 279 001651 281 001654 315 001676 316 001700 317 001703 318 001722 319 001725 321 001750 333 001753 334 001754 335 001764 336 001765 337 001772 338 002002 339 002006 341 002012 344 002032 345 002034 346 002037 347 002047 348 002052 350 002053 351 002057 354 002063 355 002105 357 002122 359 002137 361 002153 384 002155 385 002163 387 002174 388 002200 389 002201 390 002206 391 002211 392 002214 393 002217 395 002222 397 002224 398 002246 401 002260 403 002267 405 002276 408 002304 409 002307 411 002330 412 002332 415 002347 416 002355 417 002361 418 002365 419 002371 420 002375 421 002377 422 002400 424 002403 428 002404 430 002424 431 002426 433 002434 435 002445 436 002453 437 002457 438 002463 439 002467 440 002473 443 002475 454 002477 455 002500 456 002503 457 002504 458 002505 460 002506 461 002510 464 002512 465 002524 466 002532 467 002534 468 002536 471 002561 473 002562 476 002615 478 002616 480 002631 481 002632 482 002636 483 002637 485 002647 487 002652 488 002664 490 002666 491 002675 493 002676 494 002723 495 002727 497 002730 498 002732 511 002734 512 002737 513 002755 514 002757 515 002762 516 002763 517 002766 519 003010 522 003045 523 003072 524 003100 527 003127 528 003131 530 003141 532 003142 533 003143 535 003144 536 003145 538 003146 539 003147 540 003175 541 003177 554 003200 555 003202 556 003212 557 003214 559 003224 561 003227 562 003231 563 003234 565 003251 567 003252 568 003255 587 003272 588 003276 589 003306 590 003310 592 003316 595 003403 597 003410 598 003412 599 003437 600 003446 602 003447 603 003450 604 003453 607 003506 609 003533 611 003553 613 003576 615 003616 619 003650 620 003663 621 003700 622 003701 626 003732 627 003745 628 003763 630 003764 634 004015 635 004030 637 004045 638 004051 639 004057 640 004066 642 004067 643 004104 645 004126 646 004130 647 004173 648 004207 649 004225 650 004240 651 004253 652 004317 654 004335 660 004456 661 004457 670 004462 671 004514 672 004547 682 004664 683 004666 685 004700 688 004711 690 004712 691 004723 696 004724 701 004740 702 004743 703 004757 705 004764 706 004773 707 005000 708 005007 709 005032 710 005036 711 005037 712 005044 713 005053 715 005054 716 005070 717 005072 ----------------------------------------------------------- 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