COMPILATION LISTING OF SEGMENT cancel_abs_request Compiled by: Multics PL/I Compiler, Release 33a, of May 30, 1990 Compiled at: ACTC Technologies Inc. Compiled on: 08/21/90 1118.7 mdt Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1990 * 4* * * 5* * Copyright, (C) Honeywell Bull Inc., 1987 * 6* * * 7* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 8* * * 9* * Copyright (c) 1972 by Massachusetts Institute of * 10* * Technology and Honeywell Information Systems, Inc. * 11* * * 12* *********************************************************** */ 13 14 /* format: style2 */ 15 16 cancel_abs_request: 17 car: procedure; 18 19 20 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 21 /* */ 22 /* This is a 7 command procedure. It will cancel absentee, IO Daemon (eg, */ 23 /* dprint/dpunch/plot), output (eg, enter_output_request), and retrieval requests from */ 24 /* standard system queues. It will also move absentee requests from one queue to */ 25 /* another or will move IO Daemon or output requests from one queue and request type to */ 26 /* another. */ 27 /* */ 28 /* When the -user (or -admin) control argument is given, cancellations may be done */ 29 /* for another user's requests and moves of another user's requests will use privileged */ 30 /* message segment primitives which will preserve the original sender's identity. */ 31 /* */ 32 33 34 /****^ HISTORY COMMENTS: 35* 1) change(71-09-17,Stone), approve(), audit(), install(): 36* Modified by E. Stone. 37* 2) change(73-02-01,Capps), approve(), audit(), install(): 38* Modified by Dennis Capps to be cleverer about control seg name. 39* 3) change(73-04-17,Coren), approve(), audit(), install(): 40* Modified by Robert Coren to work on io_daemon queues. 41* 4) change(74-09-12,Stern), approve(), audit(), install(): 42* Modified by J. Stern to use message_segment_ "index" entries. 43* 5) change(75-06-24,Stern), approve(), audit(), install(): 44* Modified by J. Stern. 45* 6) change(76-04-15,Herbst), approve(), audit(), install(): 46* Modified by Steve Herbst. 47* 7) change(76-12-28,VanVleck), approve(), audit(), install(): 48* Modified by THVV. 49* 8) change(77-01-05,Vinograd), approve(), audit(), install(): 50* Modified by D. Vinograd to add entries cancel_retrieval_request and 51* test_crr. 52* 9) change(78-05-01,Whitmore), approve(), audit(), install(): 53* Rewritten by J. C. Whitmore to add the move entries and several control 54* args. 55* 10) change(78-12-01,Whitmore), approve(), audit(), install(): 56* Modified to recognize abs queue 0 and foreground queue. 57* 11) change(79-01-01,Whitmore), approve(), audit(), install(): 58* Modified to add as_abs subroutine entry and -sender arg to abs entries. 59* 12) change(80-04-01,Whitmore), approve(), audit(), install(): 60* Modified to warn user when daemon request is running. 61* 13) change(80-09-01,Palter), approve(), audit(), install(): 62* Modified by G. Palter to provide site-settable default absentee queues. 63* 14) change(82-01-01,GDixon), approve(), audit(), install(): 64* Modified by G. Dixon to support eor's user defined request types, and to 65* add -print, -punch, -plot. 66* 15) change(84-07-01,Marker), approve(), audit(), install(): 67* Modified by C. Marker to search all queues by default. 68* 16) change(84-10-11,Margulies), approve(), audit(), install(): 69* Modified by BIM for mseg_message_info 70* 17) change(85-12-13,Lippard), approve(85-12-30,MCR7326), 71* audit(86-10-27,GDixon), install(86-10-28,MR12.0-1200): 72* Modified by Jim Lippard to use send_as_request_ instead of hcs_$wakeup. 73* 18) change(87-07-07,GDixon), approve(87-07-07,MCR7741), 74* audit(87-07-07,Hartogs), install(87-08-04,MR12.1-1055): 75* Include user_abs_attributes.incl.pl1 as part of splitting 76* abs_message_format.incl.pl1. 77* 19) change(87-07-16,Lippard), approve(87-11-04,MCR7762), 78* audit(87-11-04,Fawcett), install(87-11-30,MR12.2-1006): 79* Modified to stop munging sender_id. 80* 20) change(90-06-20,Huen), approve(90-06-20,MCR8179), audit(90-07-17,Itani), 81* install(90-08-21,MR12.4-1025): 82* IO_Daemons_79: Change cancel_output_request and cancel_daemon_request 83* so that if a request is already running to not delete it from the queue. 84* END HISTORY COMMENTS */ 85 86 87 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 88 89 dcl MATCH_ID char (20); /* global match id for all requests */ 90 dcl admin_sw bit (1); 91 dcl all_sw bit (1); 92 dcl alp ptr; 93 dcl answer char (16) var; 94 dcl areap ptr; 95 dcl arg_did_match bit (1); 96 dcl arg_didnt_match bit (1); 97 dcl arg_dir_dir char (168); 98 dcl arg_dir_ent char (32); 99 dcl arg_no fixed bin; 100 dcl arglen fixed bin; 101 dcl argptr ptr; 102 dcl bad_msg_version bit (1); 103 dcl brief_sw bit (1); 104 dcl call_sys_log bit (1); 105 dcl code fixed bin (35); 106 dcl default_q fixed bin; 107 dcl dir char (168); 108 dcl end_msg_seg bit (1); 109 dcl entry fixed bin; /* see named constants below. */ 110 dcl entry_id_count fixed bin; 111 dcl first_arg fixed bin; 112 dcl first_q fixed bin; 113 dcl found_all_arg_match bit (1); 114 dcl found_one_match bit (1); 115 dcl gen_type char (32); 116 dcl id char (28); 117 dcl id_match_ms_id bit (72) aligned; 118 dcl id_msg char (32) var; 119 dcl idx fixed bin; 120 dcl input_seg char (32); 121 dcl last_q fixed bin; 122 dcl len fixed bin; 123 dcl long_msg char (256); /* expanded error message from ioa_$rsnnl */ 124 dcl max_q fixed bin; 125 dcl mode bit (36) aligned; 126 dcl mseg_idx (-1:4) fixed bin; /* mseg index for queues with existing requests */ 127 dcl mseg_name char (32); 128 dcl mseg_sender_id char (32); 129 dcl msg char (136); /* error message, long as one print line */ 130 dcl msg_id_code fixed bin (71); /* this is a clock reading actually */ 131 dcl nargs fixed bin; 132 dcl old_ms_id bit (72) aligned; 133 dcl one_request_only bit (1); 134 dcl option char (32); 135 dcl path_id_count fixed bin; 136 dcl person char (28); 137 dcl project char (28); 138 dcl queue_no fixed bin; 139 dcl queue_pic pic "9"; /* for converting queue number to char */ 140 dcl queue_sw bit (1); 141 dcl queue_type char (32); 142 dcl rdir char (168); 143 dcl req_dir_dir char (168); 144 dcl req_dir_ent char (32); 145 dcl req_dir_uid bit (36); 146 dcl reqp ptr; 147 dcl request_id_count fixed bin; 148 dcl rqt_sw bit (1); 149 dcl rseg char (32); 150 dcl saved_code fixed bin (35) init (0); 151 dcl search_all_sw bit (1); 152 dcl sender char (32); 153 dcl sender_id char (32); 154 dcl sender_sw bit (1); 155 dcl single_ms_id bit (72) aligned; 156 dcl sysdir char (168); 157 dcl target_default_q fixed bin; 158 dcl target_gen_type char (32); 159 dcl target_max_q fixed bin; 160 dcl target_mseg_idx fixed bin; /* mseg index of target queue of a move */ 161 dcl target_queue fixed bin; 162 dcl target_queue_type char (32); 163 dcl to_q_sw bit (1); 164 dcl to_rqt_sw bit (1); 165 dcl try_again bit (1); 166 dcl user char (32); 167 dcl verb char (8); 168 dcl wakeup_answering_service bit (1); 169 170 dcl 1 br aligned, 171 2 padding (9) bit (36), 172 2 uid bit (36); 173 174 dcl 1 local_asraci aligned like asr_abs_command_info; 175 176 dcl 1 local_mseg_message_info like mseg_message_info aligned; 177 178 dcl arg char (arglen) unaligned based (argptr); 179 180 dcl CAR fixed bin int static options (constant) init (1); /* values assigned to the entry variable */ 181 dcl CDR fixed bin int static options (constant) init (2); 182 dcl COR fixed bin int static options (constant) init (3); 183 dcl CRR fixed bin int static options (constant) init (4); 184 dcl MAR fixed bin int static options (constant) init (5); 185 dcl MDR fixed bin int static options (constant) init (6); 186 dcl MOR fixed bin int static options (constant) init (7); 187 dcl ASC fixed bin int static options (constant) init (8); /* AS_CANCEL entry code */ 188 dcl ASM fixed bin int static options (constant) init (9); /* AS_MOVE entry code */ 189 dcl ASN fixed bin int static options (constant) init (10); /* AS_NEXT entry code */ 190 191 dcl PATH fixed bin static options (constant) init (1); /* values assigned to type array (dcl in begin block) */ 192 dcl ENTRY fixed bin static options (constant) init (2); 193 dcl ID fixed bin static options (constant) init (3); 194 195 dcl ID_CHARS char (11) int static options (constant) init ("0123456789."); 196 dcl CAPS char (26) int static options (constant) init ("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 197 dcl Q_name (-1:4) char (16) int static options (constant) 198 init ("foreground queue", "queue 1", "queue 1", "queue 2", "queue 3", "queue 4"); 199 200 dcl abs_default_q fixed bin int static; 201 dcl abs_max_q fixed bin int static; 202 dcl abs_sysdir char (168) internal static init (">system_control_1"); 203 dcl io_default_q fixed bin int static; 204 dcl io_max_q fixed bin int static; 205 dcl iod_sysdir char (168) int static init (">daemon_dir_dir>io_daemon_dir"); 206 dcl not_initialized bit (1) int static init ("1"b); 207 dcl ret_default_q fixed bin int static; 208 dcl ret_max_q fixed bin int static; 209 dcl retriever_sysdir char (168) int static init (">daemon_dir_dir>volume_retriever"); 210 211 dcl (cleanup, conversion, linkage_error, size) condition; 212 213 dcl re_read_label label; /* where to go to try reading again */ 214 215 dcl error_table_$bad_arg ext fixed bin (35); 216 dcl error_table_$bad_conversion ext fixed bin (35); 217 dcl error_table_$bad_segment ext fixed bin (35); 218 dcl error_table_$badopt ext fixed bin (35); 219 dcl error_table_$id_not_found ext fixed bin (35); 220 dcl error_table_$no_message ext fixed bin (35); 221 dcl error_table_$noarg ext fixed bin (35); 222 dcl error_table_$request_pending ext fixed bin (35); 223 224 dcl absolute_pathname_ entry (char (*), char (*), fixed bin (35)); 225 dcl check_star_name_$path entry (char (*), fixed bin (35)); 226 dcl com_err_ entry options (variable); 227 dcl command_query_ entry options (variable); 228 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 229 dcl cu_$arg_list_ptr entry (ptr); 230 dcl cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin, fixed bin (35), ptr); 231 dcl enter_output_request$default_request_type entry (char (*), char (*), fixed bin, fixed bin, fixed bin (35)); 232 dcl enter_output_request$request_type entry (char (*), char (*), char (*), fixed bin, fixed bin, fixed bin (35)); 233 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 234 dcl get_system_free_area_ entry (ptr); 235 dcl hcs_$star_ entry (char (*), char (*), fixed bin, ptr, fixed bin, ptr, ptr, fixed bin (35)); 236 dcl hcs_$status_long entry (char (*), char (*), fixed bin (1), ptr, ptr, fixed bin (35)); 237 dcl (ioa_, ioa_$rsnnl) entry options (variable); 238 dcl iod_info_$generic_type entry (char (*), char (32), fixed bin (35)); 239 dcl iod_info_$queue_data entry (char (*), fixed bin, fixed bin, fixed bin (35)); 240 dcl iod_info_$test entry (char (*)); 241 dcl match_request_id_ entry (fixed bin (71), char (*)) returns (bit (1) aligned); 242 dcl match_star_name_ entry (char (*), char (*), fixed bin (35)); 243 dcl message_segment_$add_index entry (fixed bin, ptr, fixed bin (24), bit (72) aligned, fixed bin (35)); 244 dcl message_segment_$close entry (fixed bin, fixed bin (35)); 245 dcl message_segment_$delete_index entry (fixed bin, bit (72) aligned, fixed bin (35)); 246 dcl message_segment_$get_mode_index entry (fixed bin, bit (36) aligned, fixed bin (35)); 247 dcl message_segment_$open entry (char (*), char (*), fixed bin, fixed bin (35)); 248 dcl message_segment_$read_message_index entry (fixed bin, ptr, ptr, fixed bin (35)); 249 dcl queue_admin_$add_index entry (fixed bin, ptr, bit (72) aligned, fixed bin (35)); 250 dcl request_id_ entry (fixed bin (71)) returns (char (19)); 251 dcl send_as_request_$no_block entry (ptr, fixed bin, bit (72) aligned, fixed bin (35)); 252 dcl suffixed_name_$make entry (char (*), char (*), char (*), fixed bin (35)); 253 dcl sys_log_$error_log entry options (variable); 254 dcl system_info_$default_absentee_queue entry (fixed bin); 255 256 dcl (addr, after, before, currentsize, min, null, substr, rtrim, convert, unspec, verify, search, length) builtin; 257 1 1 /* BEGIN INCLUDE FILE ... abs_message_format.incl.pl1 */ 1 2 1 3 /* Requires user_attributes.incl.pl1 */ 1 4 1 5 1 6 /****^ HISTORY COMMENTS: 1 7* 1) change(86-03-01,Gilcrease), approve(86-03-27,MCR7370), 1 8* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 1 9* Modified 740723 by PG to add AIM info 1 10* Modified April 1978 by T. Casey to add much new info and change version number to 4 1 11* Modified November 1978 by T. Casey to add secondary_ok 1 12* Modified June 1981 by T. Casey for MR9.0 to make max_cpu_time fixed bin (35) (was fixed bin (17) aligned) 1 13* 2) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 1 14* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 1 15* Add truncate_absout and restarted bits for -truncate absout. SCP 6297. 1 16* 3) change(86-12-08,GDixon), approve(87-07-16,MCR7741), 1 17* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 18* Changed structure under request.abs_attributes to use like structure in 1 19* abs_attributes.incl.pl1. This allows the same attributes to be used 1 20* in pit.incl.pl1 and user_table_entry.incl.pl1 as well as this include 1 21* file. 1 22* 4) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 1 23* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 1 24* Added the version 6 elements: home_dir, init_proc, initial_ring, 1 25* len_homedir, len_initproc. SCP6367 1 26* 5) change(88-07-29,Parisek), approve(88-07-29,PBF7849), 1 27* audit(88-07-29,Lippard), install(88-08-01,MR12.2-1072): 1 28* Place the elements "home_dir", and "init_proc" before the varying length 1 29* element "args" in the stucture. Since "args" length can grow varyingly, 1 30* it should remain at the bottom of the structure. 1 31* END HISTORY COMMENTS */ 1 32 1 33 1 34 dcl abs_message_version_6 fixed bin int static options (constant) init (6); 1 35 1 36 dcl 1 request aligned based (reqp), /* format of absentee request */ 1 37 /* the pointer, reqp, must be declared in the including program */ 1 38 2 request_header like queue_msg_hdr, /* 62 words */ 1 39 2 request_version fixed bin, /* identification of version of abs request */ 1 40 2 len_name fixed bin, /* length of name */ 1 41 2 arg_count fixed bin, /* number of arguments to input segment */ 1 42 2 len_args fixed bin, /* length of string containing arguments to input segment */ 1 43 2 len_output fixed bin, /* length of output pathname */ 1 44 2 len_proxy fixed bin, /* length of proxy name */ 1 45 2 len_resource fixed bin, /* length of resource description */ 1 46 2 len_sender fixed bin, /* length of sender */ 1 47 2 len_comment fixed bin, /* length of comment */ 1 48 2 len_vpad fixed bin, /* length of spare variable length string */ 1 49 2 initial_ring fixed bin, /* initial ring number request */ 1 50 2 len_homedir fixed bin, /* length of home_dir */ 1 51 2 len_initproc fixed bin, /* length of login responder string */ 1 52 2 request_pad (5) fixed bin, /* leave room for stuff we did not think of this time */ 1 53 2 deferred_time fixed bin (71), /* clock time until which this request should be held + not run */ 1 54 2 max_cpu_time fixed bin (35), /* user given cpu limit in seconds */ 1 55 2 requested_authorization bit (72), /* request should be run at this authorization */ 1 56 2 abs_attributes aligned like user_abs_attributes, /* include user_abs_attributes.incl.pl1 */ 1 57 2 abs_status_flags, /* bits giving reasons for job's status */ 1 58 3 operator_deferred_until_time bit (1) unaligned, 1 59 3 operator_deferred_indefinitely bit (1) unaligned, 1 60 3 resources_unavailable bit (1) unaligned, 1 61 3 cpu_time_limit bit (1) unaligned, 1 62 3 queue_limit bit (1) unaligned, 1 63 3 user_limit bit (1) unaligned, 1 64 3 load_control bit (1) unaligned, 1 65 3 status_pad bit (29) unaligned, 1 66 1 67 2 name char (0 refer (request.len_name)) aligned, /* personal name of requestor */ 1 68 2 output_file char (0 refer (request.len_output)) aligned, /* absolute pathname of output file */ 1 69 2 proxy_name char (0 refer (request.len_proxy)) aligned, /* name of user for whom submitted */ 1 70 2 resource char (0 refer (request.len_resource)) aligned, /* resource description */ 1 71 2 sender char (0 refer (request.len_sender)) aligned, /* name of RJE station or other sender */ 1 72 2 comment char (0 refer (request.len_comment)) aligned, /* message to operator, or anything else user puts in it */ 1 73 2 home_dir char (0 refer (request.len_homedir)) aligned,/* initial home dir */ 1 74 2 init_proc char (0 refer (request.len_initproc)) aligned, 1 75 /* name of login responder */ 1 76 2 vpad char (0 refer (request.len_vpad)) aligned, /* for the thing we didn't think of this time */ 1 77 2 arg_lengths (0 refer (request.arg_count)) fixed bin, /* array of argument lengths */ 1 78 2 args char (0 refer (request.len_args)) aligned; /* string containing arguments to control segment */ 1 79 1 80 /* END INCLUDE FILE ... abs_message_format.incl.pl1 */ 258 259 2 1 /* BEGIN INCLUDE FILE ... as_request_header.incl.pl1 */ 2 2 2 3 /* DESCRIPTION: 2 4* Answering Service request information. 2 5**/ 2 6 2 7 2 8 /****^ HISTORY COMMENTS: 2 9* 1) change(00-01-01,JRandom), approve(), audit(), install(): 2 10* Written by someone, at sometime. 2 11* 2) change(84-09-10,Tague), approve(), audit(), install(): 2 12* R. Michael Tague: Added ASR_BUMP_USER request. 2 13* 3) change(84-10-04,Margulies), approve(), audit(), install(): 2 14* BIM: ASR_ADMIN_COMMAND. 2 15* 4) change(85-01-23,Swenson), approve(), audit(), install(): 2 16* E. Swenson for ASR_NOTE_PNT_CHANGE. 2 17* 5) change(85-02-18,Margulies), approve(), audit(), install(): 2 18* BIM: ASR_DAEMON_COMMAND, ASR_COM_CHANNEL_INFO 2 19* 6) change(85-12-12,Lippard), approve(85-12-30,MCR7326), 2 20* audit(86-10-27,GDixon), install(86-10-28,MR12.0-1200): 2 21* Jim Lippard: Added ASR_ABS_COMMAND request. 2 22* END HISTORY COMMENTS */ 2 23 2 24 2 25 /* format: style4 */ 2 26 2 27 dcl as_request_version_1 fixed bin internal static initial (1) options (constant); 2 28 2 29 dcl ( 2 30 ASR_FIRST_TYPE initial (1), 2 31 ASR_DIAL_SERVER initial (1), 2 32 ASR_DIAL_OUT initial (2), 2 33 ASR_FPE_CAUSES_LOGOUT initial (3), 2 34 ASR_FPE_CAUSES_NEW_PROC initial (4), 2 35 ASR_PROC_TERM_NOTIFY initial (5), 2 36 ASR_BUMP_USER initial (6), 2 37 ASR_ADMIN_COMMAND initial (7), 2 38 ASR_NOTE_PNT_CHANGE initial (8), 2 39 ASR_DAEMON_COMMAND initial (9), 2 40 ASR_COM_CHANNEL_INFO initial (10), 2 41 ASR_ABS_COMMAND initial (11), 2 42 ASR_LAST_TYPE initial (11) 2 43 ) fixed bin internal static options (constant); 2 44 2 45 dcl ASR_DEFER_IN_ADMIN_MODE (1:11) bit (1) int static options (constant) 2 46 init ((6) (1) "0"b, "1"b, (4) (1) "0"b); 2 47 2 48 dcl ASR_REQUEST_NAMES (1:11) int static options (constant) 2 49 char (40) init ( 2 50 "Dial request", 2 51 "Dial out request", 2 52 "Logout on fatal process error", 2 53 "New process on fatal process error", 2 54 "Monitor process terminations", 2 55 "Bump user", 2 56 "Execute admin command", 2 57 "Note PNT change", 2 58 "Daemon command", 2 59 "Communications channel info", 2 60 "Absentee command"); 2 61 2 62 dcl 1 as_request_header based aligned, 2 63 2 version fixed bin, /* version number */ 2 64 2 type fixed bin, /* what to do */ 2 65 2 reply_channel fixed bin (71); /* who to tell */ 2 66 2 67 2 68 /* END INCLUDE FILE ... as_request_header.incl.pl1 */ 260 261 3 1 /* BEGIN INCLUDE FILE asr_abs_command.incl.pl1 */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(85-12-12,Lippard), approve(85-12-30,MCR7326), 3 5* audit(86-10-27,GDixon), install(86-10-28,MR12.0-1200): 3 6* Written by Jim Lippard. 3 7* END HISTORY COMMENTS */ 3 8 3 9 dcl asr_abs_command_info_ptr ptr; 3 10 3 11 dcl 1 asr_abs_command_info aligned based (asr_abs_command_info_ptr), 3 12 2 header aligned like as_request_header, 3 13 2 version char (8), 3 14 2 action_code fixed bin, 3 15 2 request_id fixed bin (71); 3 16 3 17 dcl ASR_AC_INFO_VERSION_1 char (8) int static options (constant) init ("asrac001"); 3 18 dcl (ASR_AC_LOGIN init (1), 3 19 ASR_AC_CANCEL init (2)) fixed bin int static options (constant); 3 20 3 21 dcl asr_reply_ac_ptr ptr; 3 22 3 23 dcl 1 asr_reply_abs_command aligned based (asr_reply_ac_ptr), 3 24 2 code fixed bin (35); 3 25 3 26 /* END INCLUDE FILE asr_abs_command.incl.pl1 */ 262 263 4 1 /* BEGIN INCLUDE FILE ... dprint_msg.incl.pl1 */ 4 2 /* Modified: November 1983 by C. Marker Added no_separator. */ 4 3 4 4 /****^ HISTORY COMMENTS: 4 5* 1) change(87-05-10,Gilcrease), approve(87-05-13,MCR7686), 4 6* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 4 7* Add line_nbrs bit for line-numbered printouts, version 4. 4 8* 2) change(88-02-05,Farley), approve(88-02-05,PBF7686), audit(88-02-05,GWMay), 4 9* install(88-02-05,MR12.2-1022): 4 10* Corrected alignment of line_nbrs, was aligned s/b unaligned.. 4 11* 3) change(88-08-23,Farley), approve(88-09-16,MCR7911), 4 12* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 4 13* Increased size of forms field to 64 characters (was only 24), which 4 14* updates the version to 5. 4 15* END HISTORY COMMENTS */ 4 16 4 17 4 18 dcl dmp ptr; /* ptr to message */ 4 19 4 20 dcl 1 dprint_msg based (dmp) aligned, /* structure of a IO daemon print or punch request */ 4 21 2 header like queue_msg_hdr, /* header for all standard queue messages */ 4 22 2 version fixed bin, /* version of the dprint_msg used */ 4 23 2 copies fixed bin, /* number of copies user requested */ 4 24 2 bit_count fixed bin (35), /* the bitcount of the segment at request time */ 4 25 2 output_module fixed bin, /* 1=print, 2=7punch, 3= mcc, 4=raw */ 4 26 2 control, /* control flags. */ 4 27 3 nep bit (1) unal, /* TRUE if printing over perforations */ 4 28 3 single bit (1) unal, /* TRUE if ignore FF and VT */ 4 29 3 non_edited bit (1) unal, /* TRUE if printing in non-edited mode */ 4 30 3 truncate bit (1) unal, /* TRUE if truncating lines at line length */ 4 31 3 esc bit (1) unal, /* TRUE if text escapes are to be processed */ 4 32 3 center_top_label bit (1) unal, /* TRUE if top label to be centered */ 4 33 3 center_bottom_label bit (1) unal, /* TRUE if bottom label to be centered */ 4 34 3 no_separator bit(1) unal, /* TRUE if the inner head a tail sheets of multiple copies are to be suppressed. */ 4 35 3 line_nbrs bit (1) unal, /* TRUE if line numbers wanted */ 4 36 3 padding bit (27) unal, 4 37 2 lmargin fixed bin, /* indent from the left */ 4 38 2 line_lth fixed bin, /* logical line length */ 4 39 2 page_lth fixed bin, /* logical page length */ 4 40 2 heading_lth fixed bin, /* number of chars in heading */ 4 41 2 top_label_lth fixed bin, /* number of chars in the top label */ 4 42 2 bottom_label_lth fixed bin, /* number of chars in bottom label */ 4 43 2 chan_stop_path_lth fixed bin, /* number of chars in channel stop pathname */ 4 44 2 forms_name_lth fixed bin, /* number of chars in forms name */ 4 45 2 future_fb_values (7) fixed bin, /* make future versions possible */ 4 46 2 forms char (24), /* name of special forms, or blank */ 4 47 2 destination char (24), /* routing for output */ 4 48 2 heading char (head_max_lth refer (dprint_msg.heading_lth)), /* heading on page 1 */ 4 49 2 top_label char (label_max_lth refer (dprint_msg.top_label_lth)), /* top page heading for each page */ 4 50 2 bottom_label char (label_max_lth refer (dprint_msg.bottom_label_lth)), /* bottom page heading */ 4 51 2 chan_stop_path char (path_max_lth refer (dprint_msg.chan_stop_path_lth)), /* path of rqti seg with channel stops */ 4 52 2 forms_name char (forms_max_lth refer (dprint_msg.forms_name_lth)); /* forms name string */ 4 53 4 54 4 55 dcl ( 4 56 head_max_lth init (64), /* allocation size for heading */ 4 57 label_max_lth init (136), /* allocation size for label fields */ 4 58 path_max_lth init (168), /* allocation size for pathname fields */ 4 59 forms_max_lth init (64) /* allocation size for forms name string */ 4 60 ) fixed bin int static options (constant); 4 61 4 62 dcl ( 4 63 dprint_msg_version_3 init (3), 4 64 dprint_msg_version_4 init (4), 4 65 dprint_msg_version_5 init (5) /* current version */ 4 66 ) fixed bin int static options (constant); 4 67 4 68 /* END INCLUDE FILE ... dprint_msg.incl.pl1 */ 264 265 5 1 /* BEGIN INCLUDE FILE . . . mseg_message_info.incl.pl1 BIM 1984-10-10 */ 5 2 /* format: style3,idind30 */ 5 3 5 4 /* structure returned when message is read from a message segment */ 5 5 5 6 5 7 dcl mseg_message_info_ptr pointer; 5 8 5 9 dcl 1 mseg_message_info based (mseg_message_info_ptr) aligned, 5 10 2 version char (8) aligned, 5 11 2 message_code fixed bin, 5 12 2 control_flags unaligned, 5 13 3 own bit (1), 5 14 3 delete bit (1), 5 15 3 pad bit (34), 5 16 2 ms_ptr ptr, /* pointer to message */ 5 17 2 ms_len fixed bin (24), /* length of message in bits */ 5 18 2 ms_id bit (72), /* unique ID of message */ 5 19 /* input in some cases */ 5 20 2 ms_access_class bit (72), /* message access class */ 5 21 2 sender_id char (32) unaligned,/* process-group ID of sender */ 5 22 2 sender_process_id bit (36) aligned, /* if nonzero, process that sent */ 5 23 2 sender_level fixed bin, /* validation level of sender */ 5 24 2 sender_authorization bit (72), /* access authorization of message sender */ 5 25 2 sender_max_authorization bit (72), /* max authorization of sending process */ 5 26 2 sender_audit bit (36) aligned; /* audit flags */ 5 27 5 28 declare MSEG_MESSAGE_INFO_V1 char (8) aligned init ("msegmi01") int static options (constant); 5 29 5 30 declare ( 5 31 MSEG_READ_FIRST init (1), 5 32 MSEG_READ_LAST init (2), 5 33 MSEG_READ_SPECIFIED init (3), 5 34 MSEG_READ_BEFORE_SPECIFIED init (4), 5 35 MSEG_READ_AFTER_SPECIFIED init (5)) 5 36 fixed bin int static options (constant); 5 37 5 38 declare (MSEG_READ_OWN init ("1"b), 5 39 MSEG_READ_DELETE init ("01"b) 5 40 ) bit (36) aligned internal static options (constant); 5 41 5 42 /* END INCLUDE FILE . . . mseg_message_info.incl.pl1 */ 266 267 6 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 6 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 6 3 /* version number changed to 4, 08/10/78 WOS */ 6 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 6 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 6 6 6 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 6 8 2 version fixed bin, /* version of this structure - must be set, see below */ 6 9 2 switches aligned, /* various bit switch values */ 6 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 6 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 6 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 6 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 6 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 6 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 6 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 6 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 6 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 6 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 6 20 6 21 /* Limit of data defined for version 2 */ 6 22 6 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 6 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 6 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 6 26 /* minimum of 30 seconds required for repeat */ 6 27 /* otherwise, no repeat will occur */ 6 28 /* Limit of data defined for version 4 */ 6 29 6 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 6 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 6 32 6 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 6 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 6 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 6 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 6 37 6 38 /* END INCLUDE FILE query_info.incl.pl1 */ 268 269 7 1 /* BEGIN INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 7 2 7 3 /* This is the message header used for standard system queue messages, namely: 7 4* IO daemon requests, absentee requests, retrieval requests. 7 5**/ 7 6 7 7 /* Written by Jerry Whitmore, Spring 1978. 7 8* Modified by T. Casey, November 1978, to add values for state. 7 9* Modified by R. Kovalcik, June 1982, defer_until_process_terminataion 7 10**/ 7 11 7 12 dcl 1 queue_msg_hdr based aligned, /* standard header for all system queue messages */ 7 13 2 msg_time fixed bin (71), /* date and time of request */ 7 14 2 hdr_version fixed bin, /* version of this declaration */ 7 15 2 dirname char (168), /* directory name */ 7 16 2 ename char (32), /* entry name of file requested */ 7 17 2 message_type fixed bin, /* message format descriptor */ 7 18 /* 0 = absentee request */ 7 19 /* 1 = print request */ 7 20 /* 2 = punch request */ 7 21 /* 3 = tape request */ 7 22 /* 4 = retrieval request */ 7 23 2 bit_flags, 7 24 3 delete_sw bit (1) unal, /* delete file when done */ 7 25 3 notify bit (1) unal, /* user wants to be notified */ 7 26 3 defer_until_process_termination bit (1) unal, /* don't process request until process terminates */ 7 27 3 padding bit (33) unal, 7 28 2 state fixed bin, /* stage of processing after being queued: 7 29* 0 = initial unprocessed state, 1 = deferred, 7 30* 2 = in state transition, 3 = eligible, 4 = running, 7 31* 5 = bumped, 6 = deferred_until_process_termination */ 7 32 2 orig_queue fixed bin, /* queue the request was submitted to */ 7 33 2 std_length fixed bin, /* length of std msg for this type */ 7 34 2 dupt_lock bit (36) aligned, /* lock word for defer until process termination */ 7 35 2 hdr_pad (3) fixed bin; 7 36 7 37 dcl queue_msg_hdr_version_1 fixed bin int static options (constant) init (1); /* current version of the header */ 7 38 7 39 /* Values for queue_msg_hdr.state */ 7 40 7 41 dcl STATE_UNPROCESSED fixed bin int static options (constant) init (0); 7 42 dcl STATE_DEFERRED fixed bin int static options (constant) init (1); 7 43 dcl STATE_TRANSITION fixed bin int static options (constant) init (2); 7 44 dcl STATE_ELIGIBLE fixed bin int static options (constant) init (3); 7 45 dcl STATE_RUNNING fixed bin int static options (constant) init (4); 7 46 dcl STATE_BUMPED fixed bin int static options (constant) init (5); 7 47 dcl STATE_DUPT fixed bin int static options (constant) init (6); 7 48 7 49 /* END INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 270 271 8 1 /* BEGIN INCLUDE FILE ... retv_request.incl.pl1 ... June 1976 */ 8 2 8 3 dcl requestp ptr; 8 4 8 5 dcl retv_request_version_2 fixed bin int static init (2) options (constant); 8 6 8 7 dcl 1 retv_request based (requestp) aligned, 8 8 2 header like queue_msg_hdr, 8 9 2 bits, 8 10 3 subtree bit (1), /* on if sub-tree retrieval desired */ 8 11 3 dirs bit (1), /* on if only subtree dirs desired */ 8 12 3 segs bit (1), /* on if only subtree segments desired */ 8 13 3 previous bit (1), /* on if prior object desired */ 8 14 2 fixed_bin, 8 15 3 version fixed bin, /* version of structure */ 8 16 3 to_time fixed bin (71), /* latest time to start search from */ 8 17 3 from_time fixed bin (71), /* from_time time not to search past */ 8 18 2 chars, 8 19 3 new_dirname char (168), /* cross retrieval directory name */ 8 20 3 new_ename char (32); /* cross retrieval entry name */ 8 21 8 22 /* END INCLUDE FILE ... retv_request.incl.pl1 */ 272 273 9 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 9 2 9 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 9 4 /* */ 9 5 /* This include file describes the attributes of an absentee job. It is */ 9 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 9 7 /* and PIT.incl.pl1. */ 9 8 /* */ 9 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 9 10 9 11 /****^ HISTORY COMMENTS: 9 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 9 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 9 14* Separated abs_attributes from the request structure 9 15* (abs_message_format.incl.pl1) so that the identical structure could be 9 16* used in the ute structure (user_table_entry.incl.pl1). 9 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 9 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 9 19* Added ABS_ATTRIBUTE_NAMES array. 9 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 9 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 9 22* Added the no_start_up flag. SCP6367 9 23* END HISTORY COMMENTS */ 9 24 9 25 dcl 1 user_abs_attributes aligned based, 9 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 9 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 9 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 9 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 9 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 9 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 9 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 9 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 9 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 9 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 9 36 2 attributes_pad bit (26) unaligned; 9 37 9 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 9 39 "restartable", 9 40 "user_deferred_until_time", 9 41 "proxy", 9 42 "set_bit_cnt", 9 43 "time_in_gmt", 9 44 "user_deferred_indefinitely", 9 45 "secondary_ok", 9 46 "truncate_absout", 9 47 "restarted", 9 48 "no_start_up"); 9 49 9 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 9 51 274 275 276 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 277 278 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 279 280 281 /* 282*cancel_abs_request: 283*car: entry; Main entry point. */ 284 285 if not_initialized then call init; 286 id = "cancel_abs_request"; 287 sysdir = abs_sysdir; 288 default_q = abs_default_q; 289 max_q = abs_max_q; 290 queue_type = "absentee"; 291 entry = CAR; 292 go to cmd_common; 293 294 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 295 296 297 cancel_daemon_request: 298 cdr: entry; 299 300 /* This entry performs same functions as main entry but uses io_daemon request queues (dprint/dpunch/dplot) */ 301 302 if not_initialized then call init; 303 id = "cancel_daemon_request"; 304 sysdir = iod_sysdir; 305 default_q = io_default_q; 306 max_q = io_max_q; 307 queue_type, gen_type = "printer"; 308 entry = CDR; 309 go to cmd_common; 310 311 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 312 313 314 cancel_output_request: 315 cor: entry; 316 317 /* This entry performs same functions as main entry but uses io_daemon request queues (enter_output_request) */ 318 319 if not_initialized then call init; 320 id = "cancel_output_request"; 321 sysdir = iod_sysdir; 322 gen_type = "printer"; 323 call enter_output_request$default_request_type (gen_type, queue_type, default_q, max_q, code); 324 entry = COR; 325 go to cmd_common; 326 327 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 328 329 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 330 331 332 cancel_retrieval_request: 333 crr: entry; 334 335 /* This entry performs the same function as the main entry but uses retrieval request queues */ 336 337 if not_initialized then call init; 338 id = "cancel_retrieval_request"; 339 sysdir = retriever_sysdir; 340 default_q = ret_default_q; 341 max_q = ret_max_q; 342 queue_type = "volume_retriever"; 343 entry = CRR; 344 go to cmd_common; 345 346 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 347 348 349 move_abs_request: 350 mar: entry; 351 352 /* This entry will move an absentee request from one queue to another */ 353 354 if not_initialized then call init; 355 id = "move_abs_request"; 356 sysdir = abs_sysdir; 357 default_q = abs_default_q; 358 max_q = abs_max_q; 359 queue_type = "absentee"; 360 entry = MAR; 361 go to cmd_common; 362 363 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 364 365 366 move_daemon_request: 367 mdr: entry; 368 369 /* This entry will move a dprint/dpunch/dplot request from one rqt/queue to another */ 370 371 if not_initialized then call init; 372 id = "move_daemon_request"; 373 sysdir = iod_sysdir; 374 default_q = io_default_q; 375 max_q = io_max_q; 376 queue_type, gen_type = "printer"; /* default to the printer queues */ 377 entry = MDR; 378 go to cmd_common; 379 380 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 381 382 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 383 384 385 move_output_request: 386 mor: entry; 387 388 /* This entry will move an enter_output_request from one rqt/queue to another */ 389 390 if not_initialized then call init; 391 id = "move_output_request"; 392 sysdir = iod_sysdir; 393 gen_type = "printer"; /* default to the printer queues */ 394 call enter_output_request$default_request_type (gen_type, queue_type, default_q, max_q, code); 395 entry = MOR; 396 go to cmd_common; 397 398 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 399 400 401 as_abs: entry (a_arglp, a_nargs, a_req_id_ret, a_code); 402 403 /* this entry is ONLY for the answering service "abs move", "abs cancel", and "abs next" commands */ 404 405 dcl a_arglp ptr; /* arg list ptr from abs xxx command - including the xxx */ 406 dcl a_nargs fixed bin; /* number of args in abs xxx arg list */ 407 dcl a_req_id_ret fixed bin (71); /* request id which we did xxx to */ 408 dcl a_code fixed bin (35); /* you guessed it! */ 409 410 if not_initialized then call init; 411 alp = a_arglp; /* copy the arg list pointer */ 412 a_req_id_ret = 0; /* clear the value for now */ 413 a_code = 0; 414 call cu_$arg_ptr_rel (1, argptr, arglen, a_code, alp); /* see which this is */ 415 if a_code ^= 0 then return; 416 417 if arg = "cancel" then entry = ASC; /* the abs cancel entry */ 418 else if arg = "move" then entry = ASM; /* " abs move */ 419 else if arg = "next" then entry = ASN; /* " abs next */ 420 else do; /* undefined function */ 421 a_code = error_table_$bad_arg; 422 return; 423 end; 424 425 queue_type = "absentee"; 426 max_q = abs_max_q; 427 default_q = abs_default_q; 428 sysdir = abs_sysdir; 429 id = "cancel_abs_request$as_abs"; 430 nargs = a_nargs; /* copy the number of args given */ 431 call_sys_log = "1"b; /* for the as_abs entry write errors to sys_log */ 432 go to common; /* now join the command code */ 433 434 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 435 436 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 437 438 439 cmd_common: 440 call cu_$arg_count (nargs, code); /* get number of args for allocating variables in begin block */ 441 if code ^= 0 then do; 442 call com_err_ (code, id); 443 return; 444 end; 445 call cu_$arg_list_ptr (alp); /* get arglist ptr so begin block can get args */ 446 call_sys_log = "0"b; /* for commands we use the standard com_err_ */ 447 448 449 common: brief_sw, /* initialize switches to zero */ 450 admin_sw, 451 sender_sw, 452 all_sw, 453 rqt_sw, 454 queue_sw, 455 to_q_sw, 456 to_rqt_sw, 457 wakeup_answering_service, 458 search_all_sw = "0"b; /* default - look for callers own requests */ 459 request_id_count, path_id_count, entry_id_count = 0; 460 MATCH_ID = ""; /* clear the global match id for all requests */ 461 person, project, sender = ""; 462 if (entry = ASN | entry = ASC) then one_request_only = "1"b; 463 else one_request_only = "0"b; /* match multiple requests unless ASN or ASC */ 464 465 mseg_idx (*) = 0; /* no message segments open yet */ 466 target_mseg_idx = 0; 467 reqp = null; 468 469 BLOCK: begin; /* allocate adjustable storage. */ 470 471 dcl arg_dir_uid (nargs) bit (36); 472 dcl matched (nargs) fixed bin; /* matched (i) is number of requests matching arg i */ 473 dcl msg_id (nargs) bit (72) aligned; /* message id of matched request */ 474 dcl queue (nargs) fixed bin; /* queue where request is (if not starname) */ 475 dcl req_seg (nargs) char (32); /* entry name of segment in request for arg i */ 476 dcl starname (nargs) fixed bin; /* 0 = no star, 1 = normal star, 2 = double star */ 477 dcl type (nargs) fixed bin; /* type of request identifier for arg i */ 478 /* 1 = PATH, 2 = ENTRY name, 3 = ID number */ 479 dcl used_up (nargs) bit (1) unal; /* bit i TRUE if arg i to be ignored later */ 480 481 arg_dir_uid (*) = ""b; 482 matched (*) = 0; 483 msg_id (*) = ""b; 484 queue (*) = 0; 485 req_seg (*) = ""; 486 starname (*) = 0; 487 type (*) = 0; 488 used_up (*) = "0"b; 489 490 target_queue, first_q, last_q = -10; /* init to illegal values */ 491 target_default_q = default_q; /* define in case of bad iod_tables */ 492 target_max_q = max_q; 493 first_arg = 1; /* start inital arg pass at arg 1, unless redefined */ 494 495 on conversion begin; 496 code = error_table_$bad_conversion; 497 msg = "Illegal value for argument: " || option; 498 go to abort_cmd; /* abort now */ 499 end; 500 501 on size begin; 502 code = error_table_$bad_conversion; 503 msg = "Value out of range for argument: " || option; 504 go to abort_cmd; 505 end; 506 507 /* Start of first pass over the arguments. Locate request identifiers and check control args */ 508 509 if entry = ASM | entry = ASC | entry = ASN then do; /* special case the as_abs entries */ 510 used_up (1) = "1"b; /* first arg was cancel, move, or next */ 511 len = min (nargs, 4); /* look at up to 3 more here */ 512 do arg_no = 2 to len while (first_arg = 1); /* next args are user, proj and/or ID without ctl arg */ 513 /* allowable forms are and */ 514 /* where is pers.proj or "pers proj" */ 515 /* any ctl arg terminates free form input */ 516 call cu_$arg_ptr_rel (arg_no, argptr, arglen, code, alp); 517 if code ^= 0 then do; 518 msg = "First args assumed to be user and request id."; 519 go to abort_cmd; 520 end; 521 /* terminate on ctl arg or full path */ 522 if substr (arg, 1, 1) = "-" | substr (arg, 1, 1) = ">" then first_arg = arg_no; 523 else if verify (arg, ID_CHARS) = 0 then do; /* this must be a request id */ 524 type (arg_no) = ID; /* mark it as an request id for later */ 525 request_id_count = request_id_count + 1; /* say we have one */ 526 one_request_only = "1"b; /* Opr will only give one id */ 527 end; 528 else if person = "" then do; /* not ctl arg or ID, must be user name */ 529 used_up (arg_no) = "1"b; /* don't look at this again */ 530 admin_sw = "1"b; /* say we have a user name */ 531 search_all_sw = "1"b; /* don't look at just our own requests */ 532 sender_id = arg; 533 person = before (sender_id, "."); 534 project = before (after (sender_id, "."), "."); 535 if length (rtrim (person)) > 22 | search (substr (person, 1, 1), CAPS) = 0 then do; 536 msg = "Invalid person name: " || person; 537 go to abort_cmd; 538 end; 539 if project = "" then do; /* try for "pers proj" form */ 540 call cu_$arg_ptr_rel (arg_no + 1, argptr, arglen, code, alp); /* peek at next arg */ 541 if code ^= 0 then first_arg = arg_no + 1; /* we may be done */ 542 else if length (arg) <= 9 & search (substr (arg, 1, 1), CAPS) ^= 0 then do; 543 project = arg; /* if it looks like a project name, use it */ 544 arg_no = arg_no + 1; /* found it, advance index */ 545 used_up (arg_no) = "1"b; 546 end; 547 end; 548 end; 549 else first_arg = arg_no; /* not an id or pers/proj */ 550 end; 551 if first_arg = 1 then first_arg = arg_no; /* if no ctl arg, go on with 4 */ 552 if person ^= "" then if project = "" then project = "*"; /* no proj use * */ 553 if entry = ASN then do; /* for the abs next cmd we move the request into q 0 */ 554 to_q_sw = "1"b; /* mark as pre specified */ 555 target_queue = 0; /* this is the head of q 1 */ 556 end; 557 end; 558 559 do arg_no = first_arg to nargs; 560 if used_up (arg_no) then go to next_option; 561 msg = ""; /* clear error message string */ 562 call cu_$arg_ptr_rel (arg_no, argptr, arglen, code, alp); 563 if code ^= 0 then do; 564 msg = "Argument read error."; /* check the codes first time around only */ 565 go to abort_cmd; 566 end; 567 568 if substr (arg, 1, 1) = "-" then do; /* look for all allowable options */ 569 used_up (arg_no) = "1"b; 570 option = arg; /* save for better error messages */ 571 if option = "-admin" | option = "-am" | option = "-user" then do; 572 arg_no = arg_no + 1; 573 call cu_$arg_ptr_rel (arg_no, argptr, arglen, code, alp); 574 if code ^= 0 | substr (arg, 1, 1) = "-" then do; 575 msg = "No user name given with argument: " || option; 576 go to abort_cmd; 577 end; 578 used_up (arg_no) = "1"b; 579 if admin_sw then do; 580 msg = "Only one user name allowed. " || option; 581 go to abort_cmd; 582 end; 583 admin_sw = "1"b; /* say we have a user name */ 584 search_all_sw = "1"b; /* look at all requests in the queues */ 585 sender_id = arg; /* copy argument */ 586 person = before (sender_id, "."); 587 project = before (after (sender_id, "."), "."); 588 if person = "" then person = "*"; 589 if project = "" then project = "*"; 590 if (entry = ASC | entry = ASM | entry = ASN) & person = "*" then do; 591 msg = "A user name other then ""*"" or blank must be given."; 592 go to abort_cmd; 593 end; 594 end; 595 else if option = "-brief" | option = "-bf" then brief_sw = "1"b; /* say brief option given */ 596 else if option = "-all" | option = "-a" then all_sw = "1"b; /* say all option given */ 597 else if option = "-queue" | option = "-q" then do; 598 if queue_sw then do;/* duplicate option? */ 599 msg = "Duplicate queue specification argument: " || option; 600 go to abort_cmd; 601 end; 602 arg_no = arg_no + 1;/* get next argument - queue number */ 603 call cu_$arg_ptr_rel (arg_no, argptr, arglen, code, alp); 604 if code ^= 0 | substr (arg, 1, 1) = "-" then do; 605 msg = "Queue number missing."; 606 go to abort_cmd; 607 end; 608 used_up (arg_no) = "1"b; 609 if (entry = CAR | entry = MAR | entry = ASC | entry = ASM | entry = ASN) & 610 (arg = "fg" | arg = "foreground") then queue_no = -1; 611 else queue_no = convert (queue_no, arg); /* change to fixed bin */ 612 if ((entry = MAR | entry = CAR | entry = ASC | entry = ASM | entry = ASN) & queue_no < -1) | 613 ((entry = MDR | entry = MOR | entry = CDR | entry = COR | entry = CRR) & queue_no < 1) | 614 queue_no > 4 then do; 615 msg = "Invalid queue: " || arg; 616 go to abort_cmd; 617 end; 618 queue_sw = "1"b; /* indicate queue option given */ 619 first_q, last_q = queue_no; 620 end; 621 else if (entry = CAR | entry = MAR | entry = ASC | entry = ASM | entry = ASN) & 622 (option = "-foreground" | option = "-fg") then do; 623 if queue_sw then do;/* duplicate option? */ 624 msg = "Duplicate queue specification argument: " || option; 625 go to abort_cmd; 626 end; 627 used_up (arg_no) = "1"b; 628 queue_no = -1; 629 queue_sw = "1"b; /* indicate queue option given */ 630 first_q, last_q = queue_no; 631 end; 632 else if (entry = CAR | entry = MAR | entry = ASC | entry = ASM | entry = ASN) & 633 option = "-sender" then do; 634 if sender_sw then do; 635 msg = "Duplicate control argument: " || option; 636 go to abort_cmd; 637 end; 638 arg_no = arg_no + 1; 639 call cu_$arg_ptr_rel (arg_no, argptr, arglen, code, alp); 640 if code ^= 0 | substr (arg, 1, 1) = "-" then do; 641 msg = "Sender name missing."; 642 go to abort_cmd; 643 end; 644 used_up (arg_no) = "1"b; 645 sender_sw = "1"b; 646 sender = arg; 647 end; 648 else if (entry = CDR | entry = COR | entry = MDR | entry = MOR) & /* I/O Daemon request types */ 649 (option = "-rqt" | option = "-request_type") then do; 650 if rqt_sw then do; /* duplicate option? */ 651 msg = "Duplicate control argument: " || option; 652 go to abort_cmd; 653 end; 654 arg_no = arg_no + 1; 655 call cu_$arg_ptr_rel (arg_no, argptr, arglen, code, alp); 656 if code ^= 0 | substr (arg, 1, 1) = "-" then do; 657 msg = "Request type name missing."; 658 go to abort_cmd; 659 end; 660 used_up (arg_no) = "1"b; 661 if (entry = CDR | entry = MDR) then do; 662 call iod_info_$generic_type (arg, gen_type, code); 663 if code ^= 0 then 664 if code = error_table_$id_not_found then do; 665 msg = "Unknown request type: " || arg; 666 go to abort_cmd; 667 end; 668 else call err_proc (-1, 0, "Warning -- Unable to check request type ^a.", arg); 669 else do; 670 call iod_info_$queue_data (arg, default_q, max_q, code); 671 if code ^= 0 then do; 672 msg = "Unable to get default and max queues for: " || arg; 673 go to abort_cmd; 674 end; 675 end; 676 queue_type = arg; 677 end; 678 else do; /* must use enter_output_request to process */ 679 /* request types for COR and MOR */ 680 call enter_output_request$request_type (arg, 681 gen_type, queue_type, default_q, max_q, code); 682 if code ^= 0 then 683 if code = error_table_$id_not_found then do; 684 msg = "Unknown request type: " || arg; 685 go to abort_cmd; 686 end; 687 else call err_proc (-1, 0, "Warning -- Unable to check request type ^a.", arg); 688 end; 689 rqt_sw = "1"b; /* say we got this arg */ 690 end; 691 else if (entry = MAR | entry = MDR | entry = MOR | entry = ASM) & 692 (option = "-to_queue" | option = "-tq" | option = "-to_q") then do; 693 /* these recognize the -tq option */ 694 if to_q_sw then do; /* duplicate option? */ 695 msg = "Duplicate control argument: " || option; 696 go to abort_cmd; 697 end; 698 arg_no = arg_no + 1;/* get next argument - queue number */ 699 call cu_$arg_ptr_rel (arg_no, argptr, arglen, code, alp); 700 if code ^= 0 | substr (arg, 1, 1) = "-" then do; 701 msg = "Queue number missing for: " || option; 702 go to abort_cmd; 703 end; 704 used_up (arg_no) = "1"b; 705 if (entry = MAR | entry = ASM) & (arg = "fg" | arg = "foreground") then queue_no = -1; 706 else queue_no = convert (queue_no, arg); /* change to fixed bin */ 707 if ((entry = MAR | entry = ASM) & queue_no < -1) | 708 ((entry = MDR | entry = MOR) & queue_no < 1) | 709 queue_no > 4 then do; 710 msg = "Invalid queue number: " || arg; 711 go to abort_cmd; 712 end; 713 target_queue = queue_no; 714 to_q_sw = "1"b; 715 end; 716 else if (entry = MDR | entry = MOR) & 717 (option = "-to_request_type" | option = "-to_rqt") then do; 718 /* only MDR and MOR know about other request types */ 719 if to_rqt_sw then do; /* duplicate option? */ 720 msg = "Duplicate control argument: " || option; 721 go to abort_cmd; 722 end; 723 arg_no = arg_no + 1; 724 call cu_$arg_ptr_rel (arg_no, argptr, arglen, code, alp); 725 if code ^= 0 | substr (arg, 1, 1) = "-" then do; 726 msg = "Request type name missing for: " || option; 727 go to abort_cmd; 728 end; 729 used_up (arg_no) = "1"b; 730 if entry = MDR then do; 731 call iod_info_$generic_type (arg, target_gen_type, code); 732 if code ^= 0 then 733 if code = error_table_$id_not_found then do; 734 msg = "Unknown request type: " || arg; 735 go to abort_cmd; 736 end; 737 else call err_proc (-1, 0, "Warning -- Unable to check request type ^a.", arg); 738 else do; 739 call iod_info_$queue_data (arg, target_default_q, target_max_q, code); 740 if code ^= 0 then do; 741 msg = "Unable to get default and max queues for: " || arg; 742 go to abort_cmd; 743 end; 744 end; 745 target_queue_type = arg; 746 end; 747 else do; 748 call enter_output_request$request_type (arg, 749 target_gen_type, target_queue_type, 750 target_default_q, target_max_q, code); 751 if code ^= 0 then 752 if code = error_table_$id_not_found then do; 753 msg = "Unknown request type: " || arg; 754 go to abort_cmd; 755 end; 756 else call err_proc (-1, 0, "Warning -- Unable to check request type ^a.", arg); 757 end; 758 to_rqt_sw = "1"b; 759 end; 760 else if (entry = COR | entry = MOR) & 761 (option = "-print" | option = "-pr") then do; 762 gen_type = "printer"; 763 call enter_output_request$default_request_type (gen_type, 764 queue_type, default_q, max_q, code); 765 if code ^= 0 then do; 766 msg = "^/Default request type for printing unknown"; 767 go to abort_cmd; 768 end; 769 end; 770 else if (entry = COR | entry = MOR) & 771 (option = "-punch" | option = "-pch") then do; 772 gen_type = "punch"; 773 call enter_output_request$default_request_type (gen_type, 774 queue_type, default_q, max_q, code); 775 if code ^= 0 then do; 776 msg = "^/Default request type for punching unknown"; 777 go to abort_cmd; 778 end; 779 end; 780 else if (entry = COR | entry = MOR) & 781 (option = "-plot") then do; 782 gen_type = "plotter"; 783 call enter_output_request$default_request_type (gen_type, 784 queue_type, default_q, max_q, code); 785 if code ^= 0 then do; 786 msg = "^/Default request type for plotting unknown"; 787 go to abort_cmd; 788 end; 789 end; 790 else if option = "-id" then do; /* we have a request ID type identifier */ 791 arg_no = arg_no + 1; 792 call cu_$arg_ptr_rel (arg_no, argptr, arglen, code, alp); 793 if code ^= 0 then do; 794 msg = "Request match id missing for: " || option; 795 go to abort_cmd; 796 end; 797 if verify (arg, ID_CHARS) ^= 0 then do; 798 msg = "Invalid request id: " || arg; 799 go to abort_cmd; 800 end; 801 type (arg_no) = ID; /* say this was given by id number */ 802 request_id_count = request_id_count + 1; 803 if request_id_count = 1 then MATCH_ID = arg; /* save the global value */ 804 else MATCH_ID = ""; /* kill it if more than one */ 805 if entry = ASM then one_request_only = "1"b; /* an id means only one */ 806 end; 807 else if option = "-entry" | option = "-et" then do; /* also a segment identifier */ 808 arg_no = arg_no + 1; 809 call cu_$arg_ptr_rel (arg_no, argptr, arglen, code, alp); 810 if code ^= 0 then do; 811 msg = "Entry name missing for: " || option; 812 go to abort_cmd; 813 end; 814 type (arg_no) = ENTRY; 815 entry_id_count = entry_id_count + 1; 816 end; 817 else do; /* Illegal option */ 818 code = error_table_$badopt; 819 msg = option; 820 go to abort_cmd; 821 end; 822 end; 823 824 /* Not a control argument, must be a full or relative pathname */ 825 826 else do; 827 if (entry = ASM | entry = ASC | entry = ASN) & substr (arg, 1, 1) ^= ">" then do; 828 msg = "Not a full pathname: " || arg; 829 go to abort_cmd; 830 end; 831 type (arg_no) = PATH; /* this one is a pathname */ 832 path_id_count = path_id_count + 1; 833 end; 834 next_option: end; 835 836 /* All the control arguments and pathnames passed the first test. Now check for consistency */ 837 838 if (request_id_count + path_id_count + entry_id_count) = 0 then do; /* Need at least one thing to cancel */ 839 code = error_table_$noarg; /* .. of course we could interpret this as cancel all */ 840 msg = "No request identifiers given."; 841 abort_cmd: call err_proc (-1, code, msg, ""); 842 if (entry = ASC | entry = ASM | entry = ASN) then 843 if code = 0 then a_code = error_table_$bad_arg; /* be sure caller knows */ 844 else a_code = code; 845 return; 846 end; 847 848 if request_id_count > 1 then /* for multiple -id args */ 849 if (path_id_count + entry_id_count) > 0 then do; /* can't have path or entry args */ 850 code = error_table_$bad_arg; 851 msg = "Multiple -id args are incompatible with path or entry args."; 852 go to abort_cmd; 853 end; 854 else if one_request_only then do; /* this is bad too */ 855 code = error_table_$bad_arg; 856 msg = "Multiple -id args are not allowed."; 857 go to abort_cmd; 858 end; 859 860 code = 0; 861 862 if (entry = ASM | entry = ASC | entry = ASN) & ^admin_sw then do; 863 code = error_table_$noarg; 864 msg = "No user name specified."; 865 go to abort_cmd; 866 end; 867 868 if ^to_rqt_sw then do; /* if no target specified, assume the same queue type */ 869 target_queue_type = queue_type; 870 target_default_q = default_q; 871 target_max_q = max_q; 872 target_gen_type = gen_type; 873 end; 874 else if target_queue_type = queue_type then to_rqt_sw = "0"b; /* same queue type */ 875 876 if all_sw & queue_sw then do; /* all and queue are incompatible */ 877 msg = "The -all and -queue control arguments are incompatible."; 878 go to abort_cmd; 879 end; 880 881 if (entry = MAR | entry = ASM) & ^to_q_sw then do; 882 msg = "Target queue for move not specified."; 883 go to abort_cmd; 884 end; 885 886 if target_queue = -10 then target_queue = target_default_q; /* assume default if not set */ 887 888 if ^queue_sw then all_sw = "1"b; 889 890 if one_request_only then brief_sw = "1"b; /* if searching all Q's for one request */ 891 892 if all_sw then do; /* define the queues to search */ 893 if (entry = MAR | entry = CAR | entry = ASC | entry = ASM) then first_q = -1; 894 else first_q = 1; 895 last_q = max_q; 896 end; 897 else if ^queue_sw then first_q, last_q = default_q; /* use default if he didn't say */ 898 899 if last_q > max_q then do; 900 msg = "Specified queue number is greater than maximum for: " || queue_type; 901 go to abort_cmd; 902 end; 903 904 if queue_sw & /* if queue was given, check more */ 905 queue_type = "absentee" then do; /* do we treat queue 0 and 1 as the same */ 906 if (entry = MAR | entry = ASM | entry = ASN) & 907 first_q = target_queue then go to same_q; 908 if first_q = 1 then first_q = 0; /* he asked for 1, we look at 0 and 1 */ 909 end; /* done with absentee stuff */ 910 911 if (entry = MDR | entry = MOR) & ^to_rqt_sw & first_q = last_q & target_queue = first_q then do; 912 /* same queue??? */ 913 same_q: msg = "The same queue specified as source and target of move."; 914 go to abort_cmd; 915 end; 916 917 if (entry = MDR | entry = MOR) & (target_gen_type ^= gen_type) then do; /* cross types? */ 918 msg = "The target request type of move is not of the same generic type as the source."; 919 go to abort_cmd; 920 end; 921 922 if to_q_sw then /* if moving, is the target defined? */ 923 if target_queue > target_max_q then do; 924 msg = "Target queue number of move is greater than maximum for: " || target_queue_type; 925 go to abort_cmd; 926 end; 927 928 if entry = MAR | entry = MDR | entry = MOR | entry = ASM | entry = ASN then verb = "move"; 929 else verb = "cancel"; /* make messages clearer */ 930 931 if admin_sw then 932 user = rtrim (person) || "." || project; 933 else user = "*.*"; /* this will just format query message correctly */ 934 935 /* Check for valid star names in entry and path identifiers */ 936 937 do arg_no = 1 to nargs; 938 if ^used_up (arg_no) & type (arg_no) ^= ID then do; /* look at PATH and ENTRY args */ 939 call cu_$arg_ptr_rel (arg_no, argptr, arglen, code, alp); 940 if type (arg_no) = PATH then do; /* get the directory uid while we are here */ 941 call expand_pathname_ (arg, dir, input_seg, code); 942 if code ^= 0 then do; 943 no_exp: msg = "Unable to expand pathname for: " || arg; 944 go to abort_cmd; 945 end; 946 call expand_pathname_ (dir, arg_dir_dir, arg_dir_ent, code); 947 if code ^= 0 then go to no_exp; 948 /* Get the unique id of the directory containing the segment 949* so can still find it if path spelled differently */ 950 call hcs_$status_long (arg_dir_dir, arg_dir_ent, 1, addr (br), null, code); 951 if code = 0 then arg_dir_uid (arg_no) = br.uid; 952 end; 953 else dir = ""; /* avoid garbage */ 954 call check_star_name_$path (arg, code); /* segment name or starname */ 955 if code > 2 then do; /* bad star name, forget it */ 956 used_up (arg_no) = "1"b; 957 call err_proc (-1, code, "Argument ^a skipped.", arg); 958 go to skip; 959 end; 960 if code ^= 0 & one_request_only then do; 961 code = error_table_$bad_arg; 962 msg = "Starnames are not allowed by this command or with ""-id"" control argument."; 963 go to abort_cmd; 964 end; 965 starname (arg_no) = code; /* record the name type */ 966 if code = 2 then do; /* double star, be sure caller wants this */ 967 answer = ""; 968 query_info.version = query_info_version_4; 969 query_info.yes_or_no_sw = "1"b; 970 query_info.suppress_name_sw = "1"b; 971 972 call ioa_$rsnnl ("^[your ^]requests^[ for ^a^;^s^]^[ from directory ^a^;^s^]", 973 msg, len, ^admin_sw, (user ^= "*.*"), user, (type (arg_no) = PATH), dir); 974 975 call command_query_ (addr (query_info), answer, id, 976 "Do you want to ^a all ^a ^[in all ^a queues^;in ^a ^a^]?", 977 verb, msg, all_sw, queue_type, Q_name (last_q)); 978 if answer ^= "yes" then do; 979 used_up (arg_no) = "1"b; /* skip this one in the future */ 980 go to skip; 981 end; 982 end; 983 end; 984 else if ^used_up (arg_no) then 985 if ((path_id_count + entry_id_count) > 0) & MATCH_ID ^= "" 986 then used_up (arg_no) = "1"b; /* special case the use of 987* -id N alone, otherwise this was the MATCH_ID source */ 988 989 skip: end; 990 991 /* if move command, open target queue */ 992 993 if entry = MAR | entry = MDR | entry = MOR | entry = ASM then do; 994 if target_queue < 0 then 995 mseg_name = rtrim (target_queue_type) || "_foreground.ms"; /* a -1 is the foreground queue */ 996 else do; /* otherwise convert the queue number */ 997 queue_pic = target_queue;/* convert number to char */ 998 mseg_name = rtrim (target_queue_type) || "_" || queue_pic || ".ms"; 999 end; 1000 call message_segment_$open (sysdir, mseg_name, target_mseg_idx, code); 1001 if code ^= 0 then do; 1002 call err_proc (1, code, "Unable to open target message segment: ^a", 1003 rtrim (sysdir) || ">" || mseg_name); 1004 return; 1005 end; 1006 end; 1007 1008 call get_system_free_area_ (areap); /* get pointer to area - place to read message into */ 1009 mseg_message_info_ptr = addr (local_mseg_message_info); 1010 unspec (mseg_message_info) = ""b; 1011 mseg_message_info.version = MSEG_MESSAGE_INFO_V1; 1012 1013 on cleanup call cleaner_up; 1014 1015 queue_no = first_q; /* set value of first queue to be searched */ 1016 try_again = "1"b; /* try_again if salvaged mseg */ 1017 id_match_ms_id, single_ms_id = "0"b; 1018 found_one_match, found_all_arg_match = "0"b; 1019 1020 queue_loop: /* construct entry name of message segment */ 1021 if queue_no < 0 then 1022 mseg_name = rtrim (queue_type) || "_foreground.ms"; 1023 else do; 1024 queue_pic = queue_no; /* convert number to char */ 1025 mseg_name = rtrim (queue_type) || "_" || queue_pic || ".ms"; 1026 end; 1027 1028 /* open message segment containing requests */ 1029 1030 call message_segment_$open (sysdir, mseg_name, mseg_idx (queue_no), code); 1031 if code ^= 0 then do; 1032 message_error: if code ^= error_table_$no_message then 1033 call err_proc (1, code, "^a", mseg_name); 1034 end_msg_seg = "1"b; /* indicate that this mseg is done */ 1035 try_again = "1"b; /* ready for next one */ 1036 go to next_msg; /* free request and go on to next queue or phase */ 1037 end; 1038 1039 if to_q_sw & target_mseg_idx = mseg_idx (queue_no) then do; 1040 end_msg_seg = "1"b; /* don't search target queue for match on -all */ 1041 go to next_msg; 1042 end; 1043 1044 call message_segment_$get_mode_index (mseg_idx (queue_no), mode, code); 1045 if code ^= 0 then do; 1046 call err_proc (-1, code, "Unable to check user's mode to message segment ^a.", mseg_name); 1047 end_msg_seg = "1"b; 1048 go to next_msg; 1049 end; 1050 if admin_sw then do; /* process must have read and delete access */ 1051 if (mode & "01100"b) ^= "01100"b then do; /* trouble */ 1052 call err_proc (-1, 0, 1053 "Process lacks access to read and delete another user's requests. ^a", mseg_name); 1054 end_msg_seg = "1"b; 1055 go to next_msg; 1056 end; 1057 end; 1058 else if (mode & "00010"b) ^= "00010"b then do; /* otherwise process must have own access */ 1059 call err_proc (-1, 0, "Process lacks access to message segment. ^a", mseg_name); 1060 end_msg_seg = "1"b; 1061 go to next_msg; 1062 end; 1063 1064 end_msg_seg = "0"b; /* not at end of message segment yet */ 1065 1066 /* The first read from a message segment will be for the first message. The own entry is used */ 1067 /* to get the callers own messages. In admin mode, we read every message. */ 1068 1069 re_read_label = first_read; /* come here if salvaged */ 1070 1071 first_read: mseg_message_info.own = ^search_all_sw; 1072 mseg_message_info.message_code = MSEG_READ_FIRST; 1073 call message_segment_$read_message_index 1074 (mseg_idx (queue_no), areap, mseg_message_info_ptr, code); 1075 1076 message_loop: 1077 if code ^= 0 then 1078 if try_again & code = error_table_$bad_segment then do; /* salvaged! Try again? */ 1079 call err_proc (1, 0, "Warning: message segment ^a has been salvaged.", mseg_name); 1080 try_again = "0"b; /* avoid looping forever */ 1081 go to re_read_label; 1082 end; 1083 else go to message_error; /* abort this mseg */ 1084 1085 try_again = "1"b; /* got a good message, allow for second salvage */ 1086 bad_msg_version = "0"b; /* assume good format, then we check */ 1087 1088 reqp = mseg_message_info.ms_ptr; 1089 if reqp -> queue_msg_hdr.hdr_version ^= queue_msg_hdr_version_1 then bad_msg_version = "1"b; 1090 rdir = reqp -> queue_msg_hdr.dirname; /* if bad version, these will not be used */ 1091 rseg = reqp -> queue_msg_hdr.ename; 1092 msg_id_code = reqp -> queue_msg_hdr.msg_time; 1093 1094 if bad_msg_version then do; 1095 rseg = "Undefined_Segment_Name"; /* set this for messages */ 1096 if MATCH_ID ^= "" then go to next_msg; /* can't trust msg_id_code, so flush */ 1097 end; 1098 else do; /* for good messages, find directory uid */ 1099 call expand_pathname_ (rdir, req_dir_dir, req_dir_ent, code); 1100 call hcs_$status_long (req_dir_dir, req_dir_ent, 1, addr (br), null, code); 1101 if code ^= 0 then do; 1102 req_dir_uid = ""b; 1103 end; 1104 else do; 1105 req_dir_uid = br.uid; /* save for the uid match */ 1106 end; 1107 1108 if MATCH_ID ^= "" then do; /* are we looking for one match id? */ 1109 if ^match_request_id_ (msg_id_code, MATCH_ID) 1110 then go to next_msg; /* if not this one, go on */ 1111 end; 1112 1113 if sender_sw & sender ^= reqp -> request.sender then go to next_msg; 1114 /* check for RJE station sender if needed */ 1115 end; 1116 1117 mseg_sender_id = mseg_message_info.sender_id; 1118 if search_all_sw then do; /* are we looking for a particular sender's request */ 1119 /* and if so is this his request */ 1120 if (person ^= "*") & (person ^= before (mseg_sender_id, ".")) then go to next_msg; 1121 if (project ^= "*") & (project ^= before (after (mseg_sender_id, "."), ".")) then go to next_msg; 1122 end; 1123 1124 arg_didnt_match = "0"b; /* see if one request id didn't match this request */ 1125 arg_did_match = "0"b; /* and if one did. */ 1126 1127 do arg_no = 1 to nargs; /* scan all request identifier arguments for a match */ 1128 if ^used_up (arg_no) then do; 1129 if bad_msg_version then /* can we delete it anyway? */ 1130 if type (arg_no) = ENTRY & starname (arg_no) = 2 then go to found_match; 1131 else if one_request_only then go to next_msg; 1132 else go to next_arg; 1133 1134 call cu_$arg_ptr_rel (arg_no, argptr, arglen, code, alp); 1135 1136 if type (arg_no) = PATH | type (arg_no) = ENTRY then do; 1137 if type (arg_no) = PATH then do; /* get dir and entry name for argument */ 1138 call expand_pathname_ (arg, dir, input_seg, code); 1139 if rdir ^= dir then /* directories do not match */ 1140 if arg_dir_uid (arg_no) ^= ""b & req_dir_uid ^= ""b then do; /* try uid match */ 1141 if arg_dir_uid (arg_no) ^= req_dir_uid then go to no_match; /* dir mismatch? */ 1142 end; 1143 else go to no_match; /* no valid uids & no dir match */ 1144 end; 1145 else do; /* otherwise we just have an entry name */ 1146 input_seg = arg; 1147 dir = ""; 1148 end; 1149 1150 if starname (arg_no) = 2 then go to found_match; /* try for speed */ 1151 1152 call match_star_name_ (rseg, input_seg, code); /* see if entry names match */ 1153 if code ^= 0 then 1154 if queue_type = "absentee" then do; /* for absentee, check for .absin */ 1155 /* if suffix missing - append it */ 1156 call suffixed_name_$make (input_seg, "absin", input_seg, code); 1157 if code ^= 0 then do; 1158 call err_proc (-1, code, " Argument ^a ignored.", arg); 1159 used_up (arg_no) = "1"b; 1160 go to no_match; 1161 end; 1162 call match_star_name_ (rseg, input_seg, code); /* see if entry names match */ 1163 if code ^= 0 then go to no_match; 1164 end; 1165 else go to no_match; 1166 end; 1167 else do; /* only thing left is a match ID */ 1168 input_seg = ""; 1169 dir = ""; 1170 if ^match_request_id_ (msg_id_code, arg) then go to no_match; 1171 if arglen = 19 & ^one_request_only then starname (arg_no) = 2; 1172 /* all the digits, treat as starname */ 1173 if id_match_ms_id = ""b then /* record first request id match */ 1174 id_match_ms_id = mseg_message_info.ms_id; 1175 end; 1176 1177 /* This request matches, record it for later or process if starname or full ID given. */ 1178 /* Ignore the fact that one request can match more than one request identifier */ 1179 /* (e.g., >dir>foo, -entry foo, -id ) */ 1180 1181 found_match: matched (arg_no) = matched (arg_no) + 1; /* count number of matches */ 1182 queue (arg_no) = queue_no; /* record the queue */ 1183 msg_id (arg_no) = mseg_message_info.ms_id; /* and message id */ 1184 req_seg (arg_no) = rseg; /* save the segment name for messages */ 1185 1186 if one_request_only then do; /* handle different, all args must match 1 request */ 1187 found_one_match = "1"b; /* some arg matched some request */ 1188 arg_did_match = "1"b; /* got an arg matching this request */ 1189 if id_match_ms_id ^= ""b then /* if some request id matched, it better be this one */ 1190 if id_match_ms_id ^= mseg_message_info.ms_id then go to no_match; 1191 if entry = ASN | entry = ASC then a_req_id_ret = reqp -> queue_msg_hdr.msg_time; 1192 go to next_arg; 1193 end; 1194 1195 if starname (arg_no) > 0 then do; 1196 if entry = CDR | entry = COR | entry = CAR | entry = CRR then 1197 call delete_request (mseg_idx (queue_no), msg_id (arg_no), "1"b, code); 1198 else call move_request (mseg_idx (queue_no), msg_id (arg_no), code); 1199 if code ^= 0 then matched (arg_no) = matched (arg_no) - 1; /* request not found */ 1200 end; 1201 go to next_msg; 1202 end; 1203 do while ("0"b); /* skip next statement when falling through */ 1204 /* i.e., when the arg was already used up */ 1205 no_match: arg_didnt_match = "1"b; 1206 end; 1207 next_arg: end; 1208 1209 if arg_did_match & ^arg_didnt_match then do; /* the one_request_only case */ 1210 if found_all_arg_match then do; /* more than one matched all_arg args */ 1211 bad_match: msg = "Specified arguments do not define a unique request."; 1212 if entry = ASN | entry = ASC then a_req_id_ret = 0; 1213 code = 0; 1214 go to abort_cmd; 1215 end; 1216 found_all_arg_match = "1"b; /* this is the request we want (we hope) */ 1217 single_ms_id = mseg_message_info.ms_id; 1218 end; 1219 1220 next_msg: if reqp ^= null then do; /* free up allotment in area if necessary */ 1221 free reqp -> request; 1222 reqp = null; /* indicate that freeing performed */ 1223 end; 1224 if end_msg_seg then /* this queue is done */ 1225 if queue_no < last_q then do; /* do we want to look at other queues */ 1226 queue_no = queue_no + 1; /* look at next priority level */ 1227 go to queue_loop; 1228 end; 1229 else go to delete_things; /* now do the final deletions or moves */ 1230 1231 old_ms_id = mseg_message_info.ms_id; /* want to continue reading more requests */ 1232 1233 /* For each read after the first, read the next message in the queue */ 1234 1235 re_read_label = inc_read; /* retries now come here */ 1236 1237 inc_read: mseg_message_info.own = ^search_all_sw; 1238 mseg_message_info.message_code = MSEG_READ_AFTER_SPECIFIED; 1239 mseg_message_info.ms_id = old_ms_id; 1240 call message_segment_$read_message_index 1241 (mseg_idx (queue_no), areap, addr (mseg_message_info), code); 1242 go to message_loop; 1243 1244 /* Now we are ready to delete/move things specified uniquely if there was only a single match */ 1245 1246 delete_things: 1247 if one_request_only then do; /* double check this case */ 1248 code = 0; /* for error reporting */ 1249 if ^found_one_match then do; 1250 if target_queue = -10 then /* if not moving, simple message */ 1251 msg = "No matching request found."; 1252 else msg = "No matching request found outside of " || Q_name (target_queue); 1253 /* hide Q 0, but accurate */ 1254 go to abort_cmd; 1255 end; 1256 else if ^found_all_arg_match then go to bad_match; 1257 else do; /* delete/move the single request */ 1258 queue_no = -10; /* mark as undefined for now */ 1259 do idx = 1 to nargs while (queue_no = -10); 1260 if ^used_up (idx) then 1261 if msg_id (idx) = single_ms_id then do; /* this is it */ 1262 arg_no = idx; /* get ready for the internal procs */ 1263 queue_no = queue (arg_no); 1264 end; 1265 end; 1266 if queue_no = -10 then do; /* OOPS, Programming error */ 1267 msg = "Software error, try other arguments."; 1268 go to abort_cmd; 1269 end; 1270 if entry = ASC | entry = CAR | entry = CDR | entry = COR | entry = CRR then 1271 call delete_request (mseg_idx (queue_no), single_ms_id, "0"b, code); 1272 else call move_request (mseg_idx (queue_no), single_ms_id, code); 1273 if code ^= 0 then do; 1274 msg = "Request already gone from " || Q_name (queue_no); 1275 go to abort_cmd; 1276 end; 1277 end; 1278 go to DONE; /* omit the next bunch of loops */ 1279 end; 1280 1281 do arg_no = 1 to nargs; /* last time around, delete or move single matches */ 1282 if ^used_up (arg_no) & starname (arg_no) = 0 then do; 1283 if matched (arg_no) > 1 then do; /* oops, multiple matches, complain */ 1284 call cu_$arg_ptr_rel (arg_no, argptr, arglen, code, alp); 1285 1286 if type (arg_no) = PATH then do; /* make up full path for error msg */ 1287 call absolute_pathname_ (arg, msg, code); /* it expanded before ok */ 1288 msg = "pathname " || substr (msg, 1, length (rtrim (msg))); /* mark the front with type */ 1289 end; 1290 else if type (arg_no) = ENTRY then msg = "entry " || arg; 1291 else msg = "match id " || arg; 1292 1293 call ioa_$rsnnl ("Did not ^a requests: ^d matches found for ^a", long_msg, len, 1294 verb, matched (arg_no), msg); 1295 call err_proc (-1, 0, "^a", long_msg); 1296 used_up (arg_no) = "1"b; 1297 end; 1298 else if matched (arg_no) = 1 then do; /* could have been no match */ 1299 queue_no = queue (arg_no); /* queue we found it in */ 1300 if entry = CAR | entry = CDR | entry = COR | entry = CRR then 1301 call delete_request (mseg_idx (queue_no), msg_id (arg_no), "0"b, code); 1302 else call move_request (mseg_idx (queue_no), msg_id (arg_no), code); 1303 used_up (arg_no) = "1"b; 1304 end; 1305 end; 1306 end; 1307 1308 if ^brief_sw then /* report any no-matches unless user said be quiet */ 1309 do arg_no = 1 to nargs; 1310 if matched (arg_no) = 0 & ^used_up (arg_no) then do; 1311 call cu_$arg_ptr_rel (arg_no, argptr, arglen, code, alp); 1312 if MATCH_ID ^= "" then id_msg = "ID " || rtrim (MATCH_ID) || " "; 1313 else id_msg = ""; 1314 if type (arg_no) = PATH then do; /* make up full path for error msg */ 1315 call absolute_pathname_ (arg, msg, code); /* it expanded before ok */ 1316 msg = id_msg || "pathname " || msg; /* mark the front with type */ 1317 end; 1318 else if type (arg_no) = ENTRY then msg = id_msg || "entry " || arg; 1319 else msg = "match id " || arg; 1320 call ioa_$rsnnl ("Request^[s^;^] not found in ^a ^[^a^;queues^s^]: ^a", long_msg, len, 1321 (starname (arg_no) > 0), queue_type, ^all_sw, Q_name (queue_no), msg); 1322 call err_proc (-1, 0, "^a", long_msg); 1323 end; 1324 end; 1325 1326 /* INTERNAL PROCEDURES WHICH MUST BE WITHIN THE SCOPE OF THIS BEGIN BLOCK FOLLOW */ 1327 1328 1329 /* INTERNAL PROCEDURES - INSIDE BEGIN BLOCK */ 1330 1331 move_request: proc (mseg_idx, msg_id, code); 1332 1333 dcl mseg_idx fixed bin; 1334 dcl msg_id bit (72) aligned; 1335 dcl code fixed bin (35); 1336 dcl new_msg_id bit (72) aligned; 1337 dcl req_ptr ptr init (null); 1338 dcl msg_len fixed bin (24); 1339 dcl try_again bit (1); 1340 1341 on cleanup begin; 1342 if req_ptr ^= null then free req_ptr -> request; 1343 end; 1344 1345 try_again = "1"b; /* allow retry on read */ 1346 mseg_message_info.ms_ptr = null; /* no current allocation */ 1347 1348 read_again: mseg_message_info.own = ^admin_sw; 1349 mseg_message_info.message_code = MSEG_READ_SPECIFIED; 1350 mseg_message_info.ms_id = msg_id; 1351 call message_segment_$read_message_index 1352 (mseg_idx, areap, addr (mseg_message_info), code); /* read the current message */ 1353 if code ^= 0 then do; 1354 forget_it: if mseg_message_info.ms_ptr ^= null then free mseg_message_info.ms_ptr -> request; 1355 if code = error_table_$no_message then return; 1356 if try_again & code = error_table_$bad_segment then do; /* salvaged */ 1357 try_again = "0"b; 1358 go to read_again; 1359 end; 1360 call err_proc (-1, code, "Message segment error.", ""); 1361 go to DONE; 1362 end; 1363 1364 req_ptr = mseg_message_info.ms_ptr; /* so cleanup handler can function */ 1365 msg_len = mseg_message_info.ms_len; 1366 1367 if req_ptr -> request.state = STATE_TRANSITION | 1368 req_ptr -> request.state = STATE_RUNNING then do; 1369 call ioa_$rsnnl ("Request ^a>^a ^a not moved.^/It is already running.", long_msg, len, 1370 req_ptr -> request.dirname, req_ptr -> request.ename, 1371 request_id_ (req_ptr -> request.msg_time)); 1372 call msg_proc (rtrim (long_msg)); 1373 return; 1374 end; 1375 1376 req_ptr -> request.state = STATE_UNPROCESSED; /* reset state like a new request */ 1377 1378 if admin_sw then do; 1379 on linkage_error begin; /* in case process faults on queue_admin_ gate */ 1380 call err_proc (-1, 0, "Process lacks access to move another user's requests.", ""); 1381 go to DONE; /* just give up */ 1382 end; 1383 1384 call queue_admin_$add_index (target_mseg_idx, addr (mseg_message_info), new_msg_id, code); 1385 if code ^= 0 then go to forget_it; 1386 revert linkage_error; 1387 end; 1388 else do; 1389 call message_segment_$add_index (target_mseg_idx, req_ptr, msg_len, new_msg_id, code); 1390 if code ^= 0 then go to forget_it; 1391 end; 1392 1393 free req_ptr -> request; 1394 req_ptr = null; 1395 1396 if entry = MAR | entry = ASM | entry = ASN then /* just for absentee */ 1397 wakeup_answering_service = "1"b; /* tell AS to look over the queues */ 1398 1399 /* if that went well we can delete the old message from the original queue */ 1400 1401 call message_segment_$delete_index (mseg_idx, msg_id, code); 1402 if code ^= 0 then do; /* duplicate messages exist */ 1403 call err_proc (-1, code, "^/Message added to target queue, but not deleted from source. ^a", 1404 req_seg (arg_no)); 1405 go to DONE; 1406 end; 1407 1408 if ^brief_sw & ((starname (arg_no) > 0) | all_sw) then do; /* print message for multi-match */ 1409 if entry = MAR | entry = ASM | entry = ASN then do; 1410 call ioa_$rsnnl ("Absentee request ^a^[ for ^a^;^s^] moved from ^a to ^a.", 1411 long_msg, len, req_seg (arg_no), admin_sw, 1412 sender_id, Q_name (queue_no), Q_name (target_queue)); 1413 call msg_proc (rtrim (long_msg)); 1414 end; 1415 else call ioa_ ("Daemon request ^a^[ for ^a^;^s^] moved from ^a queue ^d to^[ ^a^;^s^] queue ^d.", 1416 req_seg (arg_no), admin_sw, sender_id, 1417 queue_type, queue_no, to_rqt_sw, target_queue_type, target_queue); 1418 end; 1419 1420 return; 1421 1422 end move_request; 1423 1424 delete_request: proc (mseg_idx, msg_id, force_sw, code); 1425 1426 dcl mseg_idx fixed bin; 1427 dcl msg_id bit (72) aligned; 1428 dcl force_sw bit (1); 1429 dcl code fixed bin (35); 1430 dcl as_code fixed bin (35); 1431 dcl req_ptr ptr init (null); 1432 dcl msg_len fixed bin (24); 1433 dcl try_again bit (1); 1434 dcl answer char (12) var; 1435 dcl rq_state fixed bin; 1436 1437 on cleanup begin; 1438 if req_ptr ^= null then free req_ptr -> request; 1439 end; 1440 1441 as_code = 0; /* be sure this is cleared */ 1442 try_again = "1"b; /* allow retry on read */ 1443 mseg_message_info.ms_ptr = null; /* no current allocation */ 1444 1445 if entry = CRR then go to re_try; /* do we check for a running job? */ 1446 read_again: mseg_message_info.own = ^admin_sw; 1447 mseg_message_info.message_code = MSEG_READ_SPECIFIED; 1448 mseg_message_info.ms_id = msg_id; 1449 call message_segment_$read_message_index 1450 (mseg_idx, areap, addr (mseg_message_info), code); /* read the current message */ 1451 if code ^= 0 then do; 1452 forget_it: if mseg_message_info.ms_ptr ^= null then free mseg_message_info.ms_ptr -> request; 1453 if code = error_table_$no_message then return; 1454 if try_again & code = error_table_$bad_segment then do; /* salvaged */ 1455 try_again = "0"b; 1456 go to read_again; 1457 end; 1458 call err_proc (-1, code, "Message segment error.", ""); 1459 go to DONE; 1460 end; 1461 1462 req_ptr = mseg_message_info.ms_ptr; /* so cleanup handler can function */ 1463 msg_len = mseg_message_info.ms_len; 1464 rq_state = req_ptr -> request.state; 1465 1466 if entry = CAR | entry = ASC then do; /* Absentee checks */ 1467 if rq_state = STATE_TRANSITION | rq_state = STATE_RUNNING then do; /* already going */ 1468 if entry = ASC then do; /* avoid questions and return code */ 1469 as_code = error_table_$request_pending; 1470 end; 1471 else do; 1472 1473 if type (arg_no) = ID & force_sw then go to bump_it; /* fully defined, don't ask */ 1474 1475 query_info.version = query_info_version_4; 1476 query_info.yes_or_no_sw = "1"b; 1477 query_info.suppress_name_sw = "0"b; 1478 1479 answer = ""; /* clear the answer to be sure */ 1480 1481 call command_query_ (addr (query_info), answer, id, 1482 "Request ^a>^a ^a is^[^xnow being considered for^] running.^/Do you wish to cancel and bump it^[^xif it is running^]?", 1483 req_ptr -> request.dirname, req_ptr -> request.ename, 1484 request_id_ (req_ptr -> request.msg_time), (rq_state = STATE_TRANSITION), 1485 (rq_state = STATE_TRANSITION)); 1486 1487 if answer ^= "yes" then return; /* otherwise it is no or an error */ 1488 1489 1490 bump_it: call send_as_wakeup (ASR_AC_CANCEL, req_ptr -> request.msg_time); 1491 1492 end; 1493 end; 1494 end; 1495 1496 free req_ptr -> request; 1497 req_ptr = null; 1498 1499 try_again = "1"b; 1500 1501 /* IO_Daemons 79: Warn user that running daemon request can not be cancelled 1502* and leave the request in the queue */ 1503 re_try: if (entry = COR | entry = CDR ) & (rq_state = STATE_RUNNING) 1504 then call ioa_ ("Unable to cancel daemon request ^a^[ for ^a^;^s^] from ^a queue ^d. It is already running.", 1505 req_seg (arg_no), admin_sw, sender_id, queue_type, queue_no); 1506 else do; 1507 /* delete the message from the original queue */ 1508 call message_segment_$delete_index (mseg_idx, msg_id, code); 1509 if code ^= 0 then do; 1510 if code = error_table_$no_message then return; /* someone got it first */ 1511 if try_again & code = error_table_$bad_segment then do; 1512 try_again = "0"b; 1513 go to re_try; 1514 end; 1515 call ioa_$rsnnl ("^/Unable to cancel request ^a from ^a queue ^d.", long_msg, len, 1516 req_seg (arg_no), queue_type, queue_no); 1517 call err_proc (-1, code, "^a", long_msg); 1518 go to DONE; /* stop trying now */ 1519 end; 1520 1521 if (rq_state = STATE_RUNNING) | 1522 ^brief_sw & ((starname (arg_no) > 0) | all_sw) then do; /* print message for multi-match */ 1523 if entry = CAR | entry = ASC then do; 1524 call ioa_$rsnnl ("Absentee request ^a^[ for ^a^;^s^] cancelled^[ from ^a^;^s^].", 1525 long_msg, len, req_seg (arg_no), admin_sw, sender_id, all_sw, Q_name (queue_no)); 1526 call msg_proc (rtrim (long_msg)); 1527 end; 1528 else if entry = CDR | entry = COR 1529 then call ioa_ ("Daemon request ^a^[ for ^a^;^s^] cancelled^[ from queue ^d^;^s^].", 1530 req_seg (arg_no), admin_sw, sender_id, all_sw, queue_no); 1531 else if entry = CRR 1532 then call ioa_ ("Retrieval request ^a^[ for ^a^;^s^] cancelled^[ from queue ^d^;^s^].", 1533 req_seg (arg_no), admin_sw, sender_id, all_sw, queue_no); 1534 end; 1535 1536 end; 1537 1538 if code = 0 then code = as_code; /* pass back if set */ 1539 1540 end delete_request; 1541 1542 err_proc: proc (severity, code, ctl_string, argument); 1543 1544 dcl severity fixed bin; 1545 dcl code fixed bin (35); 1546 dcl ctl_string char (*); 1547 dcl argument char (*); 1548 1549 if call_sys_log then 1550 1551 call sys_log_$error_log (severity, code, id, ctl_string, argument); 1552 1553 else call com_err_ (code, id, ctl_string, argument); 1554 1555 return; 1556 1557 1558 msg_proc: entry (ctl_string); 1559 1560 if call_sys_log then 1561 1562 call sys_log_$error_log (-1, 0, "", ctl_string); /* simple message */ 1563 1564 else call ioa_ (ctl_string); 1565 1566 return; 1567 1568 end err_proc; 1569 1570 1571 1572 /* END OF INTERNAL PROCEDURES WITHIN THE SCOPE OF THE BEGIN BLOCK */ 1573 1574 1575 DONE: end BLOCK; /* of begin block */ 1576 1577 call cleaner_up; /* free, close etc. */ 1578 1579 return; 1580 1581 1582 /* ENTRY POINTS TO SET TEST DIRECTORIES FOR EACH REQUEST TYPE */ 1583 1584 1585 test_car: test_mar: entry (test_sys_dir); /* entry point for testing car and mar commands */ 1586 1587 dcl test_sys_dir char (*); 1588 1589 abs_sysdir = test_sys_dir; /* copy name of test system directory */ 1590 not_initialized = "1"b; /* force definition of default and max queues */ 1591 return; 1592 1593 1594 test_cdr: test_mdr: entry (test_sys_dir); /* must share entry because of iod_info_ */ 1595 1596 iod_sysdir = test_sys_dir; 1597 call iod_info_$test (test_sys_dir); 1598 not_initialized = "1"b; /* force definition of default and max queues */ 1599 return; 1600 1601 1602 test_crr: entry (test_sys_dir); 1603 1604 retriever_sysdir = test_sys_dir; 1605 not_initialized = "1"b; /* force definition of default and max queues */ 1606 return; 1607 1608 /* INTERNAL PROCEDURES - OUTSIDE SCOPE OF BEGIN BLOCK */ 1609 1610 cleaner_up: proc; 1611 1612 dcl ec fixed bin (35); 1613 dcl i fixed bin; 1614 1615 if reqp ^= null then do; 1616 free reqp -> request; 1617 reqp = null; 1618 end; 1619 1620 do i = -1 to 4; 1621 if mseg_idx (i) ^= 0 then call message_segment_$close (mseg_idx (i), ec); 1622 end; 1623 1624 if target_mseg_idx ^= 0 then call message_segment_$close (target_mseg_idx, ec); 1625 1626 if wakeup_answering_service then call send_as_wakeup (ASR_AC_LOGIN, (0)); 1627 1628 return; 1629 1630 end cleaner_up; 1631 1632 1633 1634 init: proc; 1635 1636 call iod_info_$queue_data ("printer", io_default_q, io_max_q, code); 1637 if code ^= 0 then do; /* attempt default action */ 1638 io_max_q = 4; /* the max max_q */ 1639 io_default_q = 3; /* as in the past */ 1640 end; 1641 1642 abs_max_q = 4; /* AS creates foreground queue and queues 0, 1, 2, 3, & 4 */ 1643 call system_info_$default_absentee_queue (abs_default_q); 1644 if abs_default_q = 0 then abs_default_q = 3; 1645 /* default default queue is 3 */ 1646 1647 call hcs_$star_ (retriever_sysdir, "volume_retriever*.ms", 2, null, ret_max_q, null, null, code); 1648 if code ^= 0 then 1649 ret_max_q = 3; /* retriever never has more than three */ 1650 ret_default_q = min (ret_max_q, 3); 1651 1652 not_initialized = "0"b; /* we have the values now */ 1653 1654 return; 1655 1656 end init; 1657 1658 1659 send_as_wakeup: 1660 procedure (P_function, P_request_id); 1661 1662 dcl P_function fixed bin parm; 1663 dcl P_request_id fixed bin (71) parm; 1664 1665 local_asraci.version = ASR_AC_INFO_VERSION_1; 1666 local_asraci.action_code = P_function; 1667 local_asraci.request_id = P_request_id; 1668 local_asraci.header.version = as_request_version_1; 1669 local_asraci.header.type = ASR_ABS_COMMAND; 1670 local_asraci.header.reply_channel = 0; 1671 1672 call send_as_request_$no_block (addr (local_asraci), currentsize (local_asraci), 1673 ""b, code); 1674 1675 return; 1676 1677 end send_as_wakeup; 1678 1679 1680 end cancel_abs_request; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/21/90 1118.7 cancel_abs_request.pl1 >spec>install>1025>cancel_abs_request.pl1 258 1 08/04/88 2111.5 abs_message_format.incl.pl1 >ldd>include>abs_message_format.incl.pl1 260 2 10/30/86 2110.5 as_request_header.incl.pl1 >ldd>include>as_request_header.incl.pl1 262 3 10/30/86 2110.5 asr_abs_command.incl.pl1 >ldd>include>asr_abs_command.incl.pl1 264 4 11/09/88 0859.7 dprint_msg.incl.pl1 >ldd>include>dprint_msg.incl.pl1 266 5 01/10/85 2102.8 mseg_message_info.incl.pl1 >ldd>include>mseg_message_info.incl.pl1 268 6 03/11/83 1304.3 query_info_.incl.pl1 >ldd>include>query_info.incl.pl1 270 7 08/31/82 1736.3 queue_msg_hdr.incl.pl1 >ldd>include>queue_msg_hdr.incl.pl1 272 8 09/04/80 2106.4 retv_request.incl.pl1 >ldd>include>retv_request.incl.pl1 274 9 07/14/88 2115.0 user_abs_attributes.incl.pl1 >ldd>include>user_abs_attributes.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. ASC constant fixed bin(17,0) initial dcl 187 ref 417 462 509 590 609 612 621 632 827 842 862 893 1191 1212 1270 1466 1468 1523 ASM constant fixed bin(17,0) initial dcl 188 ref 418 509 590 609 612 621 632 691 705 707 805 827 842 862 881 893 906 928 993 1396 1409 ASN constant fixed bin(17,0) initial dcl 189 ref 419 462 509 553 590 609 612 621 632 827 842 862 906 928 1191 1212 1396 1409 ASR_ABS_COMMAND constant fixed bin(17,0) initial dcl 2-29 ref 1669 ASR_AC_CANCEL 000145 constant fixed bin(17,0) initial dcl 3-18 set ref 1490* ASR_AC_INFO_VERSION_1 000002 constant char(8) initial packed unaligned dcl 3-17 ref 1665 ASR_AC_LOGIN 000153 constant fixed bin(17,0) initial dcl 3-18 set ref 1626* CAPS 000034 constant char(26) initial packed unaligned dcl 196 ref 535 542 CAR constant fixed bin(17,0) initial dcl 180 ref 291 609 612 621 632 893 1196 1270 1300 1466 1523 CDR constant fixed bin(17,0) initial dcl 181 ref 308 612 648 661 1196 1270 1300 1503 1528 COR constant fixed bin(17,0) initial dcl 182 ref 324 612 648 760 770 780 1196 1270 1300 1503 1528 CRR constant fixed bin(17,0) initial dcl 183 ref 343 612 1196 1270 1300 1445 1531 ENTRY constant fixed bin(17,0) initial dcl 192 ref 814 1129 1136 1290 1318 ID constant fixed bin(17,0) initial dcl 193 ref 524 801 938 1473 ID_CHARS 000043 constant char(11) initial packed unaligned dcl 195 ref 523 797 MAR constant fixed bin(17,0) initial dcl 184 ref 360 609 612 621 632 691 705 707 881 893 906 928 993 1396 1409 MATCH_ID 000100 automatic char(20) packed unaligned dcl 89 set ref 460* 803* 804* 984 1096 1108 1109* 1312 1312 MDR constant fixed bin(17,0) initial dcl 185 ref 377 612 648 661 691 707 716 730 911 917 928 993 MOR constant fixed bin(17,0) initial dcl 186 ref 395 612 648 691 707 716 760 770 780 911 917 928 993 MSEG_MESSAGE_INFO_V1 000000 constant char(8) initial dcl 5-28 ref 1011 MSEG_READ_AFTER_SPECIFIED constant fixed bin(17,0) initial dcl 5-30 ref 1238 MSEG_READ_FIRST constant fixed bin(17,0) initial dcl 5-30 ref 1072 MSEG_READ_SPECIFIED constant fixed bin(17,0) initial dcl 5-30 ref 1349 1447 PATH constant fixed bin(17,0) initial dcl 191 ref 831 940 972 1136 1137 1286 1314 P_function parameter fixed bin(17,0) dcl 1662 ref 1659 1666 P_request_id parameter fixed bin(71,0) dcl 1663 ref 1659 1667 Q_name 000004 constant char(16) initial array packed unaligned dcl 197 set ref 975* 1252 1274 1320* 1410* 1410* 1524* STATE_RUNNING constant fixed bin(17,0) initial dcl 7-45 ref 1367 1467 1503 1521 STATE_TRANSITION constant fixed bin(17,0) initial dcl 7-43 ref 1367 1467 1481 1481 STATE_UNPROCESSED constant fixed bin(17,0) initial dcl 7-41 ref 1376 a_arglp parameter pointer dcl 405 ref 401 411 a_code parameter fixed bin(35,0) dcl 408 set ref 401 413* 414* 415 421* 842* 844* a_nargs parameter fixed bin(17,0) dcl 406 ref 401 430 a_req_id_ret parameter fixed bin(71,0) dcl 407 set ref 401 412* 1191* 1212* abs_default_q 000010 internal static fixed bin(17,0) dcl 200 set ref 288 357 427 1643* 1644 1644* abs_max_q 000011 internal static fixed bin(17,0) dcl 201 set ref 289 358 426 1642* abs_sysdir 000012 internal static char(168) initial packed unaligned dcl 202 set ref 287 356 428 1589* absolute_pathname_ 000236 constant entry external dcl 224 ref 1287 1315 action_code 6 001140 automatic fixed bin(17,0) level 2 dcl 174 set ref 1666* addr builtin function dcl 256 ref 950 950 975 975 1009 1100 1100 1240 1240 1351 1351 1384 1384 1449 1449 1481 1481 1672 1672 admin_sw 000105 automatic bit(1) packed unaligned dcl 90 set ref 449* 530* 579 583* 862 931 972 1050 1348 1378 1410* 1415* 1446 1503* 1524* 1528* 1531* after builtin function dcl 256 ref 534 587 1121 all_sw 000106 automatic bit(1) packed unaligned dcl 91 set ref 449* 596* 876 888* 892 975* 1320 1408 1521 1524* 1528* 1531* alp 000110 automatic pointer dcl 92 set ref 411* 414* 445* 516* 540* 562* 573* 603* 639* 655* 699* 724* 792* 809* 939* 1134* 1284* 1311* answer 000106 automatic varying char(12) dcl 1434 in procedure "delete_request" set ref 1479* 1481* 1487 answer 000112 automatic varying char(16) dcl 93 in procedure "car" set ref 967* 975* 978 answer_iocbp 6 001212 automatic pointer initial level 2 dcl 6-7 set ref 6-7* areap 000120 automatic pointer dcl 94 set ref 1008* 1073* 1240* 1351* 1449* arg based char packed unaligned dcl 178 set ref 417 418 419 522 522 523 532 542 542 543 568 570 574 585 604 609 609 611 615 640 646 656 662* 665 668* 670* 672 676 680* 684 687* 700 705 705 706 710 725 731* 734 737* 739* 741 745 748* 753 756* 797 798 803 827 828 941* 943 954* 957* 1138* 1146 1158* 1170* 1287* 1290 1291 1315* 1318 1319 arg_count 100 based fixed bin(17,0) level 2 dcl 1-36 ref 1221 1342 1354 1393 1438 1452 1496 1616 arg_did_match 000122 automatic bit(1) packed unaligned dcl 95 set ref 1125* 1188* 1209 arg_didnt_match 000123 automatic bit(1) packed unaligned dcl 96 set ref 1124* 1205* 1209 arg_dir_dir 000124 automatic char(168) packed unaligned dcl 97 set ref 946* 950* arg_dir_ent 000176 automatic char(32) packed unaligned dcl 98 set ref 946* 950* arg_dir_uid 000100 automatic bit(36) array packed unaligned dcl 471 set ref 481* 951* 1139 1141 arg_no 000206 automatic fixed bin(17,0) dcl 99 set ref 512* 516* 522 524 529 540 541 544* 544 545 549* 551 559* 560 562* 569 572* 572 573* 578 602* 602 603* 608 627 638* 638 639* 644 654* 654 655* 660 698* 698 699* 704 723* 723 724* 729 791* 791 792* 801 808* 808 809* 814 831* 937* 938 938 939* 940 951 956 965 972 979 984 984* 1127* 1128 1129 1129 1134* 1136 1136 1137 1139 1141 1150 1159 1171 1181 1181 1182 1183 1184 1195 1196 1198 1199 1199* 1262* 1263 1281* 1282 1282 1283 1284* 1286 1290 1293 1296 1298 1299 1300 1302 1303* 1308* 1310 1310 1311* 1314 1318 1320* 1403 1408 1410 1415 1473 1503 1515 1521 1524 1528 1531 arglen 000207 automatic fixed bin(17,0) dcl 100 set ref 414* 417 418 419 516* 522 522 523 532 540* 542 542 543 562* 568 570 573* 574 585 603* 604 609 609 611 615 639* 640 646 655* 656 662 662 665 668 668 670 670 672 676 680 680 684 687 687 699* 700 705 705 706 710 724* 725 731 731 734 737 737 739 739 741 745 748 748 753 756 756 792* 797 798 803 809* 827 828 939* 941 941 943 954 954 957 957 1134* 1138 1138 1146 1158 1158 1170 1170 1171 1284* 1287 1287 1290 1291 1311* 1315 1315 1318 1319 argptr 000210 automatic pointer dcl 101 set ref 414* 417 418 419 516* 522 522 523 532 540* 542 542 543 562* 568 570 573* 574 585 603* 604 609 609 611 615 639* 640 646 655* 656 662 665 668 670 672 676 680 684 687 699* 700 705 705 706 710 724* 725 731 734 737 739 741 745 748 753 756 792* 797 798 803 809* 827 828 939* 941 943 954 957 1134* 1138 1146 1158 1170 1284* 1287 1290 1291 1311* 1315 1318 1319 argument parameter char packed unaligned dcl 1547 set ref 1542 1549* 1553* as_code 000100 automatic fixed bin(35,0) dcl 1430 set ref 1441* 1469* 1538 as_request_header based structure level 1 dcl 2-62 as_request_version_1 constant fixed bin(17,0) initial dcl 2-27 ref 1668 asr_abs_command_info based structure level 1 dcl 3-11 bad_msg_version 000212 automatic bit(1) packed unaligned dcl 102 set ref 1086* 1089* 1094 1129 before builtin function dcl 256 ref 533 534 586 587 1120 1121 br 001125 automatic structure level 1 dcl 170 set ref 950 950 1100 1100 brief_sw 000213 automatic bit(1) packed unaligned dcl 103 set ref 449* 595* 890* 1308 1408 1521 call_sys_log 000214 automatic bit(1) packed unaligned dcl 104 set ref 431* 446* 1549 1560 check_star_name_$path 000240 constant entry external dcl 225 ref 954 cleanup 000000 stack reference condition dcl 211 ref 1013 1341 1437 code parameter fixed bin(35,0) dcl 1335 in procedure "move_request" set ref 1331 1351* 1353 1355 1356 1360* 1384* 1385 1389* 1390 1401* 1402 1403* code parameter fixed bin(35,0) dcl 1545 in procedure "err_proc" set ref 1542 1549* 1553* code 000215 automatic fixed bin(35,0) dcl 105 in procedure "car" set ref 323* 394* 439* 441 442* 496* 502* 516* 517 540* 541 562* 563 573* 574 603* 604 639* 640 655* 656 662* 663 663 670* 671 680* 682 682 699* 700 724* 725 731* 732 732 739* 740 748* 751 751 763* 765 773* 775 783* 785 792* 793 809* 810 818* 839* 841* 842 844 850* 855* 860* 863* 939* 941* 942 946* 947 950* 951 954* 955 957* 960 961* 965 966 1000* 1001 1002* 1030* 1031 1032 1032* 1044* 1045 1046* 1073* 1076 1076 1099* 1100* 1101 1134* 1138* 1152* 1153 1156* 1157 1158* 1162* 1163 1196* 1198* 1199 1213* 1240* 1248* 1270* 1272* 1273 1284* 1287* 1300* 1302* 1311* 1315* 1636* 1637 1647* 1648 1672* code parameter fixed bin(35,0) dcl 1429 in procedure "delete_request" set ref 1424 1449* 1451 1453 1454 1458* 1508* 1509 1510 1511 1517* 1538 1538* com_err_ 000242 constant entry external dcl 226 ref 442 1553 command_query_ 000244 constant entry external dcl 227 ref 975 1481 control_flags 3 based structure level 2 packed packed unaligned dcl 5-9 conversion 000000 stack reference condition dcl 211 ref 495 convert builtin function dcl 256 ref 611 706 cp_escape_control 1(02) 001212 automatic bit(2) initial level 3 packed packed unaligned dcl 6-7 set ref 6-7* ctl_string parameter char packed unaligned dcl 1546 set ref 1542 1549* 1553* 1558 1560* 1564* cu_$arg_count 000246 constant entry external dcl 228 ref 439 cu_$arg_list_ptr 000250 constant entry external dcl 229 ref 445 cu_$arg_ptr_rel 000252 constant entry external dcl 230 ref 414 516 540 562 573 603 639 655 699 724 792 809 939 1134 1284 1311 currentsize builtin function dcl 256 ref 1672 1672 default_q 000216 automatic fixed bin(17,0) dcl 106 set ref 288* 305* 323* 340* 357* 374* 394* 427* 491 670* 680* 763* 773* 783* 870 897 dir 000217 automatic char(168) packed unaligned dcl 107 set ref 941* 946* 953* 972* 1138* 1139 1147* 1169* dirname 3 based char(168) level 2 in structure "queue_msg_hdr" dcl 7-12 in procedure "car" ref 1090 dirname 3 based char(168) level 3 in structure "request" dcl 1-36 in procedure "car" set ref 1369* 1481* ec 000100 automatic fixed bin(35,0) dcl 1612 set ref 1621* 1624* ename 55 based char(32) level 3 in structure "request" dcl 1-36 in procedure "car" set ref 1369* 1481* ename 55 based char(32) level 2 in structure "queue_msg_hdr" dcl 7-12 in procedure "car" ref 1091 end_msg_seg 000271 automatic bit(1) packed unaligned dcl 108 set ref 1034* 1040* 1047* 1054* 1060* 1064* 1224 enter_output_request$default_request_type 000254 constant entry external dcl 231 ref 323 394 763 773 783 enter_output_request$request_type 000256 constant entry external dcl 232 ref 680 748 entry 000272 automatic fixed bin(17,0) dcl 109 set ref 291* 308* 324* 343* 360* 377* 395* 417* 418* 419* 462 462 509 509 509 553 590 590 590 609 609 609 609 609 612 612 612 612 612 612 612 612 612 612 621 621 621 621 621 632 632 632 632 632 648 648 648 648 661 661 691 691 691 691 705 705 707 707 707 707 716 716 730 760 760 770 770 780 780 805 827 827 827 842 842 842 862 862 862 881 881 893 893 893 893 906 906 906 911 911 917 917 928 928 928 928 928 993 993 993 993 1191 1191 1196 1196 1196 1196 1212 1212 1270 1270 1270 1270 1270 1300 1300 1300 1300 1396 1396 1396 1409 1409 1409 1445 1466 1466 1468 1503 1503 1523 1523 1528 1528 1531 entry_id_count 000273 automatic fixed bin(17,0) dcl 110 set ref 459* 815* 815 838 848 984 error_table_$bad_arg 000216 external static fixed bin(35,0) dcl 215 ref 421 842 850 855 961 error_table_$bad_conversion 000220 external static fixed bin(35,0) dcl 216 ref 496 502 error_table_$bad_segment 000222 external static fixed bin(35,0) dcl 217 ref 1076 1356 1454 1511 error_table_$badopt 000224 external static fixed bin(35,0) dcl 218 ref 818 error_table_$id_not_found 000226 external static fixed bin(35,0) dcl 219 ref 663 682 732 751 error_table_$no_message 000230 external static fixed bin(35,0) dcl 220 ref 1032 1355 1453 1510 error_table_$noarg 000232 external static fixed bin(35,0) dcl 221 ref 839 863 error_table_$request_pending 000234 external static fixed bin(35,0) dcl 222 ref 1469 expand_pathname_ 000260 constant entry external dcl 233 ref 941 946 1099 1138 explanation_len 14 001212 automatic fixed bin(21,0) initial level 2 dcl 6-7 set ref 6-7* explanation_ptr 12 001212 automatic pointer initial level 2 dcl 6-7 set ref 6-7* first_arg 000274 automatic fixed bin(17,0) dcl 111 set ref 493* 512 522* 541* 549* 551 551* 559 first_q 000275 automatic fixed bin(17,0) dcl 112 set ref 490* 619* 630* 893* 894* 897* 906 908 908* 911 911 1015 force_sw parameter bit(1) packed unaligned dcl 1428 ref 1424 1473 found_all_arg_match 000276 automatic bit(1) packed unaligned dcl 113 set ref 1018* 1210 1216* 1256 found_one_match 000277 automatic bit(1) packed unaligned dcl 114 set ref 1018* 1187* 1249 gen_type 000300 automatic char(32) packed unaligned dcl 115 set ref 307* 322* 323* 376* 393* 394* 662* 680* 762* 763* 772* 773* 782* 783* 872 917 get_system_free_area_ 000262 constant entry external dcl 234 ref 1008 hcs_$star_ 000264 constant entry external dcl 235 ref 1647 hcs_$status_long 000266 constant entry external dcl 236 ref 950 1100 hdr_version 2 based fixed bin(17,0) level 2 dcl 7-12 ref 1089 header 001140 automatic structure level 2 dcl 174 i 000101 automatic fixed bin(17,0) dcl 1613 set ref 1620* 1621 1621* id 000310 automatic char(28) packed unaligned dcl 116 set ref 286* 303* 320* 338* 355* 372* 391* 429* 442* 975* 1481* 1549* 1553* id_match_ms_id 000320 automatic bit(72) dcl 117 set ref 1017* 1173 1173* 1189 1189 id_msg 000322 automatic varying char(32) dcl 118 set ref 1312* 1313* 1316 1318 idx 000333 automatic fixed bin(17,0) dcl 119 set ref 1259* 1260 1260 1262* input_seg 000334 automatic char(32) packed unaligned dcl 120 set ref 941* 1138* 1146* 1152* 1156* 1156* 1162* 1168* io_default_q 000064 internal static fixed bin(17,0) dcl 203 set ref 305 374 1636* 1639* io_max_q 000065 internal static fixed bin(17,0) dcl 204 set ref 306 375 1636* 1638* ioa_ 000270 constant entry external dcl 237 ref 1415 1503 1528 1531 1564 ioa_$rsnnl 000272 constant entry external dcl 237 ref 972 1293 1320 1369 1410 1515 1524 iod_info_$generic_type 000274 constant entry external dcl 238 ref 662 731 iod_info_$queue_data 000276 constant entry external dcl 239 ref 670 739 1636 iod_info_$test 000300 constant entry external dcl 240 ref 1597 iod_sysdir 000066 internal static char(168) initial packed unaligned dcl 205 set ref 304 321 373 392 1596* last_q 000344 automatic fixed bin(17,0) dcl 121 set ref 490* 619* 630* 895* 897* 899 911 975 1224 len 000345 automatic fixed bin(17,0) dcl 122 set ref 511* 512 972* 1293* 1320* 1369* 1410* 1515* 1524* len_args 101 based fixed bin(17,0) level 2 dcl 1-36 ref 1221 1342 1354 1393 1438 1452 1496 1616 len_comment 106 based fixed bin(17,0) level 2 dcl 1-36 ref 1221 1342 1354 1393 1438 1452 1496 1616 len_homedir 111 based fixed bin(17,0) level 2 dcl 1-36 ref 1221 1342 1354 1393 1438 1452 1496 1616 len_initproc 112 based fixed bin(17,0) level 2 dcl 1-36 ref 1221 1342 1354 1393 1438 1452 1496 1616 len_name 77 based fixed bin(17,0) level 2 dcl 1-36 ref 1113 1221 1342 1354 1393 1438 1452 1496 1616 len_output 102 based fixed bin(17,0) level 2 dcl 1-36 ref 1113 1221 1342 1354 1393 1438 1452 1496 1616 len_proxy 103 based fixed bin(17,0) level 2 dcl 1-36 ref 1113 1221 1342 1354 1393 1438 1452 1496 1616 len_resource 104 based fixed bin(17,0) level 2 dcl 1-36 ref 1113 1221 1342 1354 1393 1438 1452 1496 1616 len_sender 105 based fixed bin(17,0) level 2 dcl 1-36 ref 1113 1221 1342 1354 1393 1438 1452 1496 1616 len_vpad 107 based fixed bin(17,0) level 2 dcl 1-36 ref 1221 1342 1354 1393 1438 1452 1496 1616 length builtin function dcl 256 ref 535 542 1288 linkage_error 000000 stack reference condition dcl 211 ref 1379 1386 literal_sw 1(05) 001212 automatic bit(1) initial level 3 packed packed unaligned dcl 6-7 set ref 6-7* local_asraci 001140 automatic structure level 1 dcl 174 set ref 1672 1672 1672 1672 local_mseg_message_info 001152 automatic structure level 1 dcl 176 set ref 1009 long_msg 000346 automatic char(256) packed unaligned dcl 123 set ref 1293* 1295* 1320* 1322* 1369* 1372 1372 1410* 1413 1413 1515* 1517* 1524* 1526 1526 match_request_id_ 000302 constant entry external dcl 241 ref 1109 1170 match_star_name_ 000304 constant entry external dcl 242 ref 1152 1162 matched 000100 automatic fixed bin(17,0) array dcl 472 set ref 482* 1181* 1181 1199* 1199 1283 1293* 1298 1310 max_q 000446 automatic fixed bin(17,0) dcl 124 set ref 289* 306* 323* 341* 358* 375* 394* 426* 492 670* 680* 763* 773* 783* 871 895 899 message_code 2 based fixed bin(17,0) level 2 dcl 5-9 set ref 1072* 1238* 1349* 1447* message_segment_$add_index 000306 constant entry external dcl 243 ref 1389 message_segment_$close 000310 constant entry external dcl 244 ref 1621 1624 message_segment_$delete_index 000312 constant entry external dcl 245 ref 1401 1508 message_segment_$get_mode_index 000314 constant entry external dcl 246 ref 1044 message_segment_$open 000316 constant entry external dcl 247 ref 1000 1030 message_segment_$read_message_index 000320 constant entry external dcl 248 ref 1073 1240 1351 1449 min builtin function dcl 256 ref 511 1650 mode 000447 automatic bit(36) dcl 125 set ref 1044* 1051 1058 ms_id 7 based bit(72) level 2 dcl 5-9 set ref 1173 1183 1189 1217 1231 1239* 1350* 1448* ms_len 6 based fixed bin(24,0) level 2 dcl 5-9 set ref 1365 1463 ms_ptr 4 based pointer level 2 dcl 5-9 set ref 1088 1346* 1354 1354 1364 1443* 1452 1452 1462 mseg_idx 000450 automatic fixed bin(17,0) array dcl 126 in procedure "car" set ref 465* 1030* 1039 1044* 1073* 1196* 1198* 1240* 1270* 1272* 1300* 1302* 1621 1621* mseg_idx parameter fixed bin(17,0) dcl 1333 in procedure "move_request" set ref 1331 1351* 1401* mseg_idx parameter fixed bin(17,0) dcl 1426 in procedure "delete_request" set ref 1424 1449* 1508* mseg_message_info based structure level 1 dcl 5-9 set ref 1010* 1240 1240 1351 1351 1384 1384 1449 1449 mseg_message_info_ptr 001210 automatic pointer dcl 5-7 set ref 1009* 1010 1011 1071 1072 1073* 1088 1117 1173 1183 1189 1217 1231 1237 1238 1239 1240 1240 1346 1348 1349 1350 1351 1351 1354 1354 1364 1365 1384 1384 1443 1446 1447 1448 1449 1449 1452 1452 1462 1463 mseg_name 000456 automatic char(32) packed unaligned dcl 127 set ref 994* 998* 1000* 1002 1020* 1025* 1030* 1032* 1046* 1052* 1059* 1079* mseg_sender_id 000466 automatic char(32) packed unaligned dcl 128 set ref 1117* 1120 1121 msg 000476 automatic char(136) packed unaligned dcl 129 set ref 497* 503* 518* 536* 561* 564* 575* 580* 591* 599* 605* 615* 624* 635* 641* 651* 657* 665* 672* 684* 695* 701* 710* 720* 726* 734* 741* 753* 766* 776* 786* 794* 798* 811* 819* 828* 840* 841* 851* 856* 864* 877* 882* 900* 913* 918* 924* 943* 962* 972* 975* 1211* 1250* 1252* 1267* 1274* 1287* 1288* 1288 1288 1290* 1291* 1293* 1315* 1316* 1316 1318* 1319* 1320* msg_id parameter bit(72) dcl 1427 in procedure "delete_request" set ref 1424 1448 1508* msg_id parameter bit(72) dcl 1334 in procedure "move_request" set ref 1331 1350 1401* msg_id 000100 automatic bit(72) array dcl 473 in begin block on line 469 set ref 483* 1183* 1196* 1198* 1260 1300* 1302* msg_id_code 000540 automatic fixed bin(71,0) dcl 130 set ref 1092* 1109* 1170* msg_len 000104 automatic fixed bin(24,0) dcl 1432 in procedure "delete_request" set ref 1463* msg_len 000104 automatic fixed bin(24,0) dcl 1338 in procedure "move_request" set ref 1365* 1389* msg_time based fixed bin(71,0) level 3 in structure "request" dcl 1-36 in procedure "car" set ref 1369* 1369* 1481* 1481* 1490* msg_time based fixed bin(71,0) level 2 in structure "queue_msg_hdr" dcl 7-12 in procedure "car" ref 1092 1191 nargs 000542 automatic fixed bin(17,0) dcl 131 set ref 430* 439* 471 472 473 474 475 476 477 479 511 559 937 1127 1259 1281 1308 new_msg_id 000100 automatic bit(72) dcl 1336 set ref 1384* 1389* not_initialized 000140 internal static bit(1) initial packed unaligned dcl 206 set ref 285 302 319 337 354 371 390 410 1590* 1598* 1605* 1652* null builtin function dcl 256 ref 467 6-7 6-7 6-7 950 950 1100 1100 1220 1222 1337 1342 1346 1354 1394 1431 1438 1443 1452 1497 1615 1617 1647 1647 1647 1647 1647 1647 old_ms_id 000544 automatic bit(72) dcl 132 set ref 1231* 1239 one_request_only 000546 automatic bit(1) packed unaligned dcl 133 set ref 462* 463* 526* 805* 854 890 960 1131 1171 1186 1246 option 000547 automatic char(32) packed unaligned dcl 134 set ref 497 503 570* 571 571 571 575 580 595 595 596 596 597 597 599 621 621 624 632 635 648 648 651 691 691 691 695 701 716 716 720 726 760 760 770 770 780 790 794 807 807 811 819 own 3 based bit(1) level 3 packed packed unaligned dcl 5-9 set ref 1071* 1237* 1348* 1446* padding 1(07) 001212 automatic bit(29) initial level 3 packed packed unaligned dcl 6-7 set ref 6-7* path_id_count 000557 automatic fixed bin(17,0) dcl 135 set ref 459* 832* 832 838 848 984 person 000560 automatic char(28) packed unaligned dcl 136 set ref 461* 528 533* 535 535 536 552 586* 588 588* 590 931 1120 1120 project 000567 automatic char(28) packed unaligned dcl 137 set ref 461* 534* 539 543* 552 552* 587* 589 589* 931 1121 1121 prompt_after_explanation 1(06) 001212 automatic bit(1) initial level 3 packed packed unaligned dcl 6-7 set ref 6-7* query_code 3 001212 automatic fixed bin(35,0) initial level 2 dcl 6-7 set ref 6-7* query_info 001212 automatic structure level 1 dcl 6-7 set ref 975 975 1481 1481 query_info_version_4 constant fixed bin(17,0) initial dcl 6-34 ref 968 1475 question_iocbp 4 001212 automatic pointer initial level 2 dcl 6-7 set ref 6-7* queue 000100 automatic fixed bin(17,0) array dcl 474 set ref 484* 1182* 1263 1299 queue_admin_$add_index 000322 constant entry external dcl 249 ref 1384 queue_msg_hdr based structure level 1 dcl 7-12 queue_msg_hdr_version_1 constant fixed bin(17,0) initial dcl 7-37 ref 1089 queue_no 000576 automatic fixed bin(17,0) dcl 138 set ref 609* 611* 611 612 612 612 619 628* 630 705* 706* 706 707 707 707 713 1015* 1020 1024 1030 1039 1044 1073 1182 1196 1198 1224 1226* 1226 1240 1258* 1259 1263* 1266 1270 1272 1274 1299* 1300 1302 1320 1410 1415* 1503* 1515* 1524 1528* 1531* queue_pic 000577 automatic picture(1) packed unaligned dcl 139 set ref 997* 998 1024* 1025 queue_sw 000600 automatic bit(1) packed unaligned dcl 140 set ref 449* 598 618* 623 629* 876 888 897 904 queue_type 000601 automatic char(32) packed unaligned dcl 141 set ref 290* 307* 323* 342* 359* 376* 394* 425* 676* 680* 763* 773* 783* 869 874 900 904 975* 1020 1025 1153 1320* 1415* 1503* 1515* rdir 000611 automatic char(168) packed unaligned dcl 142 set ref 1090* 1099* 1139 re_read_label 001204 automatic label variable dcl 213 set ref 1069* 1081 1235* repeat_time 10 001212 automatic fixed bin(71,0) initial level 2 dcl 6-7 set ref 6-7* reply_channel 2 001140 automatic fixed bin(71,0) level 3 dcl 174 set ref 1670* req_dir_dir 000663 automatic char(168) packed unaligned dcl 143 set ref 1099* 1100* req_dir_ent 000735 automatic char(32) packed unaligned dcl 144 set ref 1099* 1100* req_dir_uid 000745 automatic bit(36) packed unaligned dcl 145 set ref 1102* 1105* 1139 1141 req_ptr 000102 automatic pointer initial dcl 1337 in procedure "move_request" set ref 1337* 1342 1342 1364* 1367 1367 1369 1369 1369 1369 1376 1389* 1393 1394* req_ptr 000102 automatic pointer initial dcl 1431 in procedure "delete_request" set ref 1431* 1438 1438 1462* 1464 1481 1481 1481 1481 1490 1496 1497* req_seg 000100 automatic char(32) array packed unaligned dcl 475 set ref 485* 1184* 1403* 1410* 1415* 1503* 1515* 1524* 1528* 1531* reqp 000746 automatic pointer dcl 146 set ref 467* 1088* 1089 1090 1091 1092 1113 1191 1220 1221 1222* 1615 1616 1617* request based structure level 1 dcl 1-36 set ref 1221 1342 1354 1393 1438 1452 1496 1616 request_header based structure level 2 dcl 1-36 request_id 10 001140 automatic fixed bin(71,0) level 2 dcl 174 set ref 1667* request_id_ 000324 constant entry external dcl 250 ref 1369 1369 1481 1481 request_id_count 000750 automatic fixed bin(17,0) dcl 147 set ref 459* 525* 525 802* 802 803 838 848 ret_default_q 000141 internal static fixed bin(17,0) dcl 207 set ref 340 1650* ret_max_q 000142 internal static fixed bin(17,0) dcl 208 set ref 341 1647* 1648* 1650 retriever_sysdir 000143 internal static char(168) initial packed unaligned dcl 209 set ref 339 1604* 1647* rq_state 000112 automatic fixed bin(17,0) dcl 1435 set ref 1464* 1467 1467 1481 1481 1503 1521 rqt_sw 000751 automatic bit(1) packed unaligned dcl 148 set ref 449* 650 689* rseg 000752 automatic char(32) packed unaligned dcl 149 set ref 1091* 1095* 1152* 1162* 1184 rtrim builtin function dcl 256 ref 535 931 994 998 1002 1020 1025 1288 1312 1372 1372 1413 1413 1526 1526 saved_code 000762 automatic fixed bin(35,0) initial dcl 150 set ref 150* search builtin function dcl 256 ref 535 542 search_all_sw 000763 automatic bit(1) packed unaligned dcl 151 set ref 449* 531* 584* 1071 1118 1237 send_as_request_$no_block 000326 constant entry external dcl 251 ref 1672 sender based char level 2 in structure "request" dcl 1-36 in procedure "car" ref 1113 sender 000764 automatic char(32) packed unaligned dcl 152 in procedure "car" set ref 461* 646* 1113 sender_id 13 based char(32) level 2 in structure "mseg_message_info" packed packed unaligned dcl 5-9 in procedure "car" set ref 1117 sender_id 000774 automatic char(32) packed unaligned dcl 153 in procedure "car" set ref 532* 533 534 585* 586 587 1410* 1415* 1503* 1524* 1528* 1531* sender_sw 001004 automatic bit(1) packed unaligned dcl 154 set ref 449* 634 645* 1113 severity parameter fixed bin(17,0) dcl 1544 set ref 1542 1549* single_ms_id 001006 automatic bit(72) dcl 155 set ref 1017* 1217* 1260 1270* 1272* size 000000 stack reference condition dcl 211 ref 501 starname 000100 automatic fixed bin(17,0) array dcl 476 set ref 486* 965* 1129 1150 1171* 1195 1282 1320 1408 1521 state 67 based fixed bin(17,0) level 3 dcl 1-36 set ref 1367 1367 1376* 1464 status_code 2 001212 automatic fixed bin(35,0) initial level 2 dcl 6-7 set ref 6-7* substr builtin function dcl 256 ref 522 522 535 542 568 574 604 640 656 700 725 827 1288 suffixed_name_$make 000330 constant entry external dcl 252 ref 1156 suppress_name_sw 1(01) 001212 automatic bit(1) initial level 3 packed packed unaligned dcl 6-7 set ref 6-7* 970* 1477* suppress_spacing 1(04) 001212 automatic bit(1) initial level 3 packed packed unaligned dcl 6-7 set ref 6-7* switches 1 001212 automatic structure level 2 dcl 6-7 sys_log_$error_log 000332 constant entry external dcl 253 ref 1549 1560 sysdir 001010 automatic char(168) packed unaligned dcl 156 set ref 287* 304* 321* 339* 356* 373* 392* 428* 1000* 1002 1030* system_info_$default_absentee_queue 000334 constant entry external dcl 254 ref 1643 target_default_q 001062 automatic fixed bin(17,0) dcl 157 set ref 491* 739* 748* 870* 886 target_gen_type 001063 automatic char(32) packed unaligned dcl 158 set ref 731* 748* 872* 917 target_max_q 001073 automatic fixed bin(17,0) dcl 159 set ref 492* 739* 748* 871* 922 target_mseg_idx 001074 automatic fixed bin(17,0) dcl 160 set ref 466* 1000* 1039 1384* 1389* 1624 1624* target_queue 001075 automatic fixed bin(17,0) dcl 161 set ref 490* 555* 713* 886 886* 906 911 922 994 997 1250 1252 1410 1415* target_queue_type 001076 automatic char(32) packed unaligned dcl 162 set ref 745* 748* 869* 874 924 994 998 1415* test_sys_dir parameter char packed unaligned dcl 1587 set ref 1585 1585 1589 1594 1594 1596 1597* 1602 1604 to_q_sw 001106 automatic bit(1) packed unaligned dcl 163 set ref 449* 554* 694 714* 881 922 1039 to_rqt_sw 001107 automatic bit(1) packed unaligned dcl 164 set ref 449* 719 758* 868 874* 911 1415* try_again 000105 automatic bit(1) packed unaligned dcl 1433 in procedure "delete_request" set ref 1442* 1454 1455* 1499* 1511 1512* try_again 000105 automatic bit(1) packed unaligned dcl 1339 in procedure "move_request" set ref 1345* 1356 1357* try_again 001110 automatic bit(1) packed unaligned dcl 165 in procedure "car" set ref 1016* 1035* 1076 1080* 1085* type 000100 automatic fixed bin(17,0) array dcl 477 in begin block on line 469 set ref 487* 524* 801* 814* 831* 938 940 972 1129 1136 1136 1137 1286 1290 1314 1318 1473 type 1 001140 automatic fixed bin(17,0) level 3 in structure "local_asraci" dcl 174 in procedure "car" set ref 1669* uid 11 001125 automatic bit(36) level 2 dcl 170 set ref 951 1105 unspec builtin function dcl 256 set ref 1010* used_up 000100 automatic bit(1) array packed unaligned dcl 479 set ref 488* 510* 529* 545* 560 569* 578* 608* 627* 644* 660* 704* 729* 938 956* 979* 984 984* 1128 1159* 1260 1282 1296* 1303* 1310 user 001111 automatic char(32) packed unaligned dcl 166 set ref 931* 933* 972 972* user_abs_attributes based structure level 1 dcl 9-25 verb 001122 automatic char(8) packed unaligned dcl 167 set ref 928* 929* 975* 1293* verify builtin function dcl 256 ref 523 797 version 001140 automatic fixed bin(17,0) level 3 in structure "local_asraci" dcl 174 in procedure "car" set ref 1668* version based char(8) level 2 in structure "mseg_message_info" dcl 5-9 in procedure "car" set ref 1011* version 4 001140 automatic char(8) level 2 in structure "local_asraci" dcl 174 in procedure "car" set ref 1665* version 001212 automatic fixed bin(17,0) level 2 in structure "query_info" dcl 6-7 in procedure "car" set ref 968* 1475* wakeup_answering_service 001124 automatic bit(1) packed unaligned dcl 168 set ref 449* 1396* 1626 yes_or_no_sw 1 001212 automatic bit(1) initial level 3 packed packed unaligned dcl 6-7 set ref 6-7* 969* 1476* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 9-38 ASR_ADMIN_COMMAND internal static fixed bin(17,0) initial dcl 2-29 ASR_BUMP_USER internal static fixed bin(17,0) initial dcl 2-29 ASR_COM_CHANNEL_INFO internal static fixed bin(17,0) initial dcl 2-29 ASR_DAEMON_COMMAND internal static fixed bin(17,0) initial dcl 2-29 ASR_DEFER_IN_ADMIN_MODE internal static bit(1) initial array packed unaligned dcl 2-45 ASR_DIAL_OUT internal static fixed bin(17,0) initial dcl 2-29 ASR_DIAL_SERVER internal static fixed bin(17,0) initial dcl 2-29 ASR_FIRST_TYPE internal static fixed bin(17,0) initial dcl 2-29 ASR_FPE_CAUSES_LOGOUT internal static fixed bin(17,0) initial dcl 2-29 ASR_FPE_CAUSES_NEW_PROC internal static fixed bin(17,0) initial dcl 2-29 ASR_LAST_TYPE internal static fixed bin(17,0) initial dcl 2-29 ASR_NOTE_PNT_CHANGE internal static fixed bin(17,0) initial dcl 2-29 ASR_PROC_TERM_NOTIFY internal static fixed bin(17,0) initial dcl 2-29 ASR_REQUEST_NAMES internal static char(40) initial array packed unaligned dcl 2-48 MSEG_READ_BEFORE_SPECIFIED internal static fixed bin(17,0) initial dcl 5-30 MSEG_READ_DELETE internal static bit(36) initial dcl 5-38 MSEG_READ_LAST internal static fixed bin(17,0) initial dcl 5-30 MSEG_READ_OWN internal static bit(36) initial dcl 5-38 STATE_BUMPED internal static fixed bin(17,0) initial dcl 7-46 STATE_DEFERRED internal static fixed bin(17,0) initial dcl 7-42 STATE_DUPT internal static fixed bin(17,0) initial dcl 7-47 STATE_ELIGIBLE internal static fixed bin(17,0) initial dcl 7-44 abs_message_version_6 internal static fixed bin(17,0) initial dcl 1-34 asr_abs_command_info_ptr automatic pointer dcl 3-9 asr_reply_abs_command based structure level 1 dcl 3-23 asr_reply_ac_ptr automatic pointer dcl 3-21 dmp automatic pointer dcl 4-18 dprint_msg based structure level 1 dcl 4-20 dprint_msg_version_3 internal static fixed bin(17,0) initial dcl 4-62 dprint_msg_version_4 internal static fixed bin(17,0) initial dcl 4-62 dprint_msg_version_5 internal static fixed bin(17,0) initial dcl 4-62 forms_max_lth internal static fixed bin(17,0) initial dcl 4-55 head_max_lth internal static fixed bin(17,0) initial dcl 4-55 label_max_lth internal static fixed bin(17,0) initial dcl 4-55 path_max_lth internal static fixed bin(17,0) initial dcl 4-55 query_info_version_3 internal static fixed bin(17,0) initial dcl 6-33 query_info_version_5 internal static fixed bin(17,0) initial dcl 6-35 query_info_version_6 internal static fixed bin(17,0) initial dcl 6-36 requestp automatic pointer dcl 8-3 retv_request based structure level 1 dcl 8-7 retv_request_version_2 internal static fixed bin(17,0) initial dcl 8-5 NAMES DECLARED BY EXPLICIT CONTEXT. BLOCK 002677 constant label dcl 469 DONE 013425 constant label dcl 1575 ref 1278 1361 1381 1405 1459 1518 abort_cmd 006514 constant label dcl 841 ref 498 504 519 537 565 576 581 592 600 606 616 625 636 642 652 658 666 673 685 696 702 711 721 727 735 742 754 767 777 787 795 799 812 820 829 852 857 865 878 883 901 914 919 925 944 963 1214 1254 1268 1275 as_abs 002436 constant entry external dcl 401 bad_match 012051 constant label dcl 1211 ref 1256 bump_it 015377 constant label dcl 1490 ref 1473 cancel_abs_request 001774 constant entry external dcl 16 cancel_daemon_request 002040 constant entry external dcl 297 cancel_output_request 002107 constant entry external dcl 314 cancel_retrieval_request 002175 constant entry external dcl 332 car 001764 constant entry external dcl 16 cdr 002030 constant entry external dcl 297 cleaner_up 016552 constant entry internal dcl 1610 ref 1013 1577 cmd_common 002561 constant label dcl 439 ref 292 309 325 344 361 378 396 common 002622 constant label dcl 449 ref 432 cor 002077 constant entry external dcl 314 crr 002165 constant entry external dcl 332 delete_request 014651 constant entry internal dcl 1424 ref 1196 1270 1300 delete_things 012245 constant label dcl 1246 ref 1224 err_proc 016177 constant entry internal dcl 1542 ref 668 687 737 756 841 957 1002 1032 1046 1052 1059 1079 1158 1295 1322 1360 1380 1403 1458 1517 first_read 010707 constant label dcl 1071 ref 1069 forget_it 013620 constant label dcl 1354 in procedure "move_request" ref 1385 1390 forget_it 015045 constant label dcl 1452 in procedure "delete_request" found_match 011700 constant label dcl 1181 ref 1129 1150 inc_read 012210 constant label dcl 1237 ref 1235 init 016733 constant entry internal dcl 1634 ref 285 302 319 337 354 371 390 410 mar 002231 constant entry external dcl 349 mdr 002275 constant entry external dcl 366 message_error 010443 constant label dcl 1032 ref 1076 message_loop 010736 constant label dcl 1076 ref 1242 mor 002344 constant entry external dcl 385 move_abs_request 002241 constant entry external dcl 349 move_daemon_request 002305 constant entry external dcl 366 move_output_request 002354 constant entry external dcl 385 move_request 013430 constant entry internal dcl 1331 ref 1198 1272 1302 msg_proc 016302 constant entry internal dcl 1558 ref 1372 1413 1526 next_arg 012040 constant label dcl 1207 ref 1132 1192 next_msg 012075 constant label dcl 1220 ref 1036 1041 1048 1055 1061 1096 1109 1113 1120 1121 1131 1201 next_option 006477 constant label dcl 834 ref 560 no_exp 007306 constant label dcl 943 ref 947 no_match 012034 constant label dcl 1205 ref 1139 1141 1153 1160 1163 1170 1189 queue_loop 010277 constant label dcl 1020 ref 1227 re_try 015501 constant label dcl 1503 ref 1445 1513 read_again 015002 constant label dcl 1446 in procedure "delete_request" ref 1456 read_again 013555 constant label dcl 1348 in procedure "move_request" ref 1358 same_q 007053 constant label dcl 913 ref 906 send_as_wakeup 017102 constant entry internal dcl 1659 ref 1490 1626 skip 007751 constant label dcl 989 ref 958 980 test_car 016412 constant entry external dcl 1585 test_cdr 016461 constant entry external dcl 1594 test_crr 016523 constant entry external dcl 1602 test_mar 016373 constant entry external dcl 1585 test_mdr 016442 constant entry external dcl 1594 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 20374 20732 17372 20404 Length 21532 17372 336 564 1001 206 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME car 754 external procedure is an external procedure. begin block on line 469 342 begin block uses auto adjustable storage, and enables or reverts conditions. on unit on line 495 64 on unit on unit on line 501 64 on unit on unit on line 1013 64 on unit move_request 228 internal procedure enables or reverts conditions. on unit on line 1341 73 on unit on unit on line 1379 102 on unit delete_request 192 internal procedure enables or reverts conditions. on unit on line 1437 73 on unit err_proc 94 internal procedure is called during a stack extension. cleaner_up 92 internal procedure is called by several nonquick procedures. init internal procedure shares stack frame of external procedure car. send_as_wakeup 80 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 abs_default_q car 000011 abs_max_q car 000012 abs_sysdir car 000064 io_default_q car 000065 io_max_q car 000066 iod_sysdir car 000140 not_initialized car 000141 ret_default_q car 000142 ret_max_q car 000143 retriever_sysdir car STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 469 000100 type begin block on line 469 000100 starname begin block on line 469 000100 used_up begin block on line 469 000100 matched begin block on line 469 000100 arg_dir_uid begin block on line 469 000100 msg_id begin block on line 469 000100 req_seg begin block on line 469 000100 queue begin block on line 469 car 000100 MATCH_ID car 000105 admin_sw car 000106 all_sw car 000110 alp car 000112 answer car 000120 areap car 000122 arg_did_match car 000123 arg_didnt_match car 000124 arg_dir_dir car 000176 arg_dir_ent car 000206 arg_no car 000207 arglen car 000210 argptr car 000212 bad_msg_version car 000213 brief_sw car 000214 call_sys_log car 000215 code car 000216 default_q car 000217 dir car 000271 end_msg_seg car 000272 entry car 000273 entry_id_count car 000274 first_arg car 000275 first_q car 000276 found_all_arg_match car 000277 found_one_match car 000300 gen_type car 000310 id car 000320 id_match_ms_id car 000322 id_msg car 000333 idx car 000334 input_seg car 000344 last_q car 000345 len car 000346 long_msg car 000446 max_q car 000447 mode car 000450 mseg_idx car 000456 mseg_name car 000466 mseg_sender_id car 000476 msg car 000540 msg_id_code car 000542 nargs car 000544 old_ms_id car 000546 one_request_only car 000547 option car 000557 path_id_count car 000560 person car 000567 project car 000576 queue_no car 000577 queue_pic car 000600 queue_sw car 000601 queue_type car 000611 rdir car 000663 req_dir_dir car 000735 req_dir_ent car 000745 req_dir_uid car 000746 reqp car 000750 request_id_count car 000751 rqt_sw car 000752 rseg car 000762 saved_code car 000763 search_all_sw car 000764 sender car 000774 sender_id car 001004 sender_sw car 001006 single_ms_id car 001010 sysdir car 001062 target_default_q car 001063 target_gen_type car 001073 target_max_q car 001074 target_mseg_idx car 001075 target_queue car 001076 target_queue_type car 001106 to_q_sw car 001107 to_rqt_sw car 001110 try_again car 001111 user car 001122 verb car 001124 wakeup_answering_service car 001125 br car 001140 local_asraci car 001152 local_mseg_message_info car 001204 re_read_label car 001210 mseg_message_info_ptr car 001212 query_info car cleaner_up 000100 ec cleaner_up 000101 i cleaner_up delete_request 000100 as_code delete_request 000102 req_ptr delete_request 000104 msg_len delete_request 000105 try_again delete_request 000106 answer delete_request 000112 rq_state delete_request move_request 000100 new_msg_id move_request 000102 req_ptr move_request 000104 msg_len move_request 000105 try_again move_request THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as r_ne_as alloc_char_temp cat_realloc_chars enter_begin_block leave_begin_block call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other begin_return_mac return_mac tra_ext_1 tra_ext_2 alloc_auto_adj enable_op shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc any_to_any_truncate_op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absolute_pathname_ check_star_name_$path com_err_ command_query_ cu_$arg_count cu_$arg_list_ptr cu_$arg_ptr_rel enter_output_request$default_request_type enter_output_request$request_type expand_pathname_ get_system_free_area_ hcs_$star_ hcs_$status_long ioa_ ioa_$rsnnl iod_info_$generic_type iod_info_$queue_data iod_info_$test match_request_id_ match_star_name_ message_segment_$add_index message_segment_$close message_segment_$delete_index message_segment_$get_mode_index message_segment_$open message_segment_$read_message_index queue_admin_$add_index request_id_ send_as_request_$no_block suffixed_name_$make sys_log_$error_log system_info_$default_absentee_queue THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$bad_conversion error_table_$bad_segment error_table_$badopt error_table_$id_not_found error_table_$no_message error_table_$noarg error_table_$request_pending LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 150 001730 6 7 001731 16 001763 285 002002 286 002006 287 002011 288 002015 289 002017 290 002021 291 002024 292 002026 297 002027 302 002046 303 002052 304 002055 305 002061 306 002063 307 002065 308 002073 309 002075 314 002076 319 002115 320 002121 321 002124 322 002130 323 002133 324 002161 325 002163 332 002164 337 002203 338 002207 339 002212 340 002216 341 002220 342 002222 343 002225 344 002227 349 002230 354 002247 355 002253 356 002256 357 002262 358 002264 359 002266 360 002271 361 002273 366 002274 371 002313 372 002317 373 002322 374 002326 375 002330 376 002332 377 002340 378 002342 385 002343 390 002362 391 002366 392 002371 393 002375 394 002400 395 002426 396 002430 401 002431 410 002444 411 002450 412 002454 413 002456 414 002457 415 002500 417 002503 418 002514 419 002523 421 002532 422 002535 425 002536 426 002541 427 002544 428 002546 429 002551 430 002554 431 002556 432 002560 439 002561 441 002572 442 002574 443 002611 445 002612 446 002621 449 002622 459 002634 460 002637 461 002642 462 002653 463 002663 465 002664 466 002674 467 002675 469 002677 471 002702 472 002707 473 002713 474 002721 475 002725 476 002733 477 002737 479 002743 1293 002752 1403 002754 481 002756 482 002767 483 003001 484 003017 485 003031 486 003047 487 003061 488 003073 490 003107 491 003114 492 003116 493 003120 495 003122 496 003136 497 003142 498 003155 501 003161 502 003175 503 003201 504 003214 509 003220 510 003230 511 003232 512 003237 516 003251 517 003270 518 003273 519 003276 522 003277 523 003313 524 003326 525 003332 526 003333 527 003335 528 003336 529 003342 530 003347 531 003351 532 003353 533 003356 534 003366 535 003411 536 003434 537 003447 539 003451 540 003455 541 003477 542 003506 543 003522 544 003526 545 003527 548 003534 549 003535 550 003537 551 003541 552 003546 553 003561 554 003564 555 003566 559 003567 560 003600 561 003605 562 003610 563 003627 564 003632 565 003635 568 003636 569 003645 570 003652 571 003656 572 003672 573 003673 574 003712 575 003722 576 003735 578 003737 579 003744 580 003747 581 003762 583 003764 584 003766 585 003770 586 003774 587 004004 588 004027 589 004036 590 004045 591 004060 592 004063 594 004064 595 004065 596 004100 597 004113 598 004123 599 004125 600 004140 602 004142 603 004143 604 004162 605 004172 606 004175 608 004176 609 004203 611 004250 612 004260 615 004320 616 004336 618 004340 619 004342 620 004344 621 004345 623 004402 624 004404 625 004417 628 004421 629 004423 630 004425 631 004427 632 004430 634 004436 635 004440 636 004453 638 004455 639 004456 640 004475 641 004505 642 004510 644 004511 645 004516 646 004520 647 004524 648 004525 650 004555 651 004557 652 004572 654 004574 655 004575 656 004614 657 004624 658 004627 660 004630 661 004635 662 004642 663 004666 665 004674 666 004712 668 004714 670 004752 671 005001 672 005004 673 005022 676 005024 677 005032 680 005033 682 005071 684 005077 685 005115 687 005117 689 005154 690 005157 691 005160 694 005204 695 005206 696 005221 698 005223 699 005224 700 005243 701 005253 702 005266 704 005270 705 005275 706 005322 707 005332 710 005354 711 005372 713 005374 714 005375 715 005377 716 005400 719 005414 720 005417 721 005432 723 005434 724 005435 725 005454 726 005464 727 005477 729 005501 730 005506 731 005511 732 005535 734 005543 735 005561 737 005563 739 005621 740 005650 741 005653 742 005671 745 005673 746 005701 748 005702 751 005740 753 005746 754 005764 756 005766 758 006023 759 006026 760 006027 762 006043 763 006046 765 006075 766 006100 767 006103 769 006104 770 006105 772 006117 773 006122 775 006151 776 006154 777 006157 779 006160 780 006161 782 006167 783 006172 785 006221 786 006224 787 006227 789 006230 790 006231 791 006235 792 006236 793 006255 794 006260 795 006273 797 006275 798 006311 799 006325 801 006327 802 006333 803 006334 804 006343 805 006346 806 006353 807 006354 808 006364 809 006365 810 006404 811 006407 812 006422 814 006424 815 006430 816 006431 818 006432 819 006435 820 006440 822 006441 827 006442 828 006453 829 006470 831 006472 832 006476 834 006477 838 006502 839 006506 840 006511 841 006514 842 006543 844 006562 845 006564 848 006566 850 006574 851 006577 852 006602 854 006603 855 006605 856 006610 857 006613 860 006614 862 006615 863 006637 864 006642 865 006645 868 006646 869 006651 870 006654 871 006656 872 006660 873 006663 874 006664 876 006672 877 006677 878 006702 881 006703 882 006714 883 006717 886 006720 888 006725 890 006733 892 006737 893 006742 894 006756 895 006760 896 006762 897 006763 899 006770 900 006773 901 007006 904 007010 906 007016 908 007025 911 007031 913 007053 914 007056 917 007057 918 007065 919 007070 922 007071 924 007076 925 007111 928 007113 929 007130 931 007132 933 007175 937 007201 938 007212 939 007226 940 007245 941 007253 942 007303 943 007306 944 007325 946 007327 947 007353 950 007356 951 007420 952 007427 953 007430 954 007433 955 007453 956 007457 957 007464 958 007520 960 007521 961 007525 962 007530 963 007533 965 007534 966 007537 967 007541 968 007542 969 007544 970 007546 972 007550 975 007635 978 007717 979 007725 980 007732 983 007733 984 007734 989 007751 993 007754 994 007765 996 010016 997 010017 998 010027 999 010076 1000 010077 1001 010124 1002 010127 1004 010216 1008 010221 1009 010230 1010 010234 1011 010237 1013 010243 1015 010265 1016 010270 1017 010272 1018 010275 1020 010277 1023 010331 1024 010332 1025 010342 1026 010411 1030 010412 1031 010440 1032 010443 1034 010500 1035 010503 1036 010504 1039 010505 1040 010513 1041 010515 1044 010516 1045 010532 1046 010535 1047 010566 1048 010571 1050 010572 1051 010575 1052 010601 1054 010633 1055 010636 1057 010637 1058 010640 1059 010644 1060 010676 1061 010701 1064 010702 1069 010704 1071 010707 1072 010716 1073 010720 1076 010736 1079 010746 1080 011000 1081 011002 1085 011004 1086 011006 1088 011007 1089 011012 1090 011016 1091 011021 1092 011024 1094 011026 1095 011030 1096 011033 1097 011037 1099 011040 1100 011064 1101 011130 1102 011133 1103 011134 1105 011135 1108 011137 1109 011143 1113 011167 1117 011224 1118 011230 1120 011232 1121 011247 1124 011277 1125 011300 1127 011301 1128 011312 1129 011317 1131 011332 1132 011334 1134 011335 1136 011354 1137 011364 1138 011366 1139 011416 1141 011431 1144 011433 1146 011434 1147 011441 1150 011444 1152 011451 1153 011471 1156 011500 1157 011526 1158 011531 1159 011570 1160 011576 1162 011577 1163 011617 1166 011622 1168 011623 1169 011626 1170 011631 1171 011660 1173 011672 1181 011700 1182 011703 1183 011706 1184 011717 1186 011726 1187 011731 1188 011733 1189 011734 1191 011742 1192 011752 1195 011753 1196 011756 1198 012007 1199 012022 1201 012031 1203 012032 1205 012034 1206 012037 1207 012040 1209 012043 1210 012047 1211 012051 1212 012055 1213 012065 1214 012066 1216 012067 1217 012071 1220 012075 1221 012102 1222 012167 1224 012172 1226 012177 1227 012200 1231 012201 1235 012205 1237 012210 1238 012217 1239 012221 1240 012224 1242 012244 1246 012245 1248 012247 1249 012250 1250 012252 1252 012261 1254 012277 1256 012301 1258 012303 1259 012305 1260 012321 1262 012337 1263 012341 1265 012344 1266 012346 1267 012351 1268 012354 1270 012355 1272 012410 1273 012423 1274 012426 1275 012445 1278 012447 1281 012450 1282 012460 1283 012470 1284 012475 1286 012514 1287 012522 1288 012546 1289 012575 1290 012577 1291 012620 1293 012637 1295 012702 1296 012734 1297 012742 1298 012743 1299 012744 1300 012747 1302 013003 1303 013021 1306 013027 1308 013031 1310 013044 1311 013055 1312 013074 1313 013145 1314 013147 1315 013154 1316 013200 1317 013230 1318 013232 1319 013266 1320 013305 1322 013370 1324 013422 1575 013425 1331 013427 1337 013435 1341 013437 1342 013453 1343 013545 1345 013546 1346 013550 1348 013555 1349 013566 1350 013570 1351 013576 1353 013615 1354 013620 1355 013714 1356 013721 1357 013725 1358 013726 1360 013727 1361 013764 1364 013767 1365 013774 1367 013776 1369 014003 1372 014057 1373 014112 1376 014114 1378 014116 1379 014123 1380 014137 1381 014172 1384 014175 1385 014221 1386 014224 1387 014225 1389 014226 1390 014245 1393 014250 1394 014335 1396 014337 1401 014352 1402 014366 1403 014371 1405 014431 1408 014434 1409 014450 1410 014457 1413 014537 1414 014572 1415 014574 1420 014647 1424 014650 1431 014656 1437 014660 1438 014674 1439 014766 1441 014767 1442 014770 1443 014772 1445 014777 1446 015002 1447 015013 1448 015015 1449 015023 1451 015042 1452 015045 1453 015141 1454 015146 1455 015152 1456 015153 1458 015154 1459 015211 1462 015214 1463 015221 1464 015223 1466 015225 1467 015234 1468 015241 1469 015244 1470 015247 1473 015250 1475 015263 1476 015265 1477 015267 1479 015271 1481 015272 1487 015372 1490 015377 1496 015410 1497 015475 1499 015477 1503 015501 1508 015557 1509 015573 1510 015576 1511 015601 1512 015605 1513 015606 1515 015607 1517 015653 1518 015707 1521 015712 1523 015731 1524 015740 1526 016016 1527 016051 1528 016053 1531 016123 1538 016170 1540 016175 1542 016176 1549 016217 1553 016254 1555 016300 1558 016301 1560 016315 1564 016351 1566 016362 1577 016363 1579 016367 1585 016370 1589 016426 1590 016435 1591 016437 1594 016440 1596 016475 1597 016504 1598 016515 1599 016520 1602 016521 1604 016537 1605 016546 1606 016550 1610 016551 1615 016557 1616 016564 1617 016651 1620 016654 1621 016661 1622 016676 1624 016700 1626 016714 1628 016732 1634 016733 1636 016734 1637 016762 1638 016764 1639 016767 1642 016771 1643 016774 1644 017002 1647 017007 1648 017064 1650 017071 1652 017077 1654 017100 1659 017101 1665 017107 1666 017112 1667 017115 1668 017117 1669 017121 1670 017123 1672 017125 1675 017147 ----------------------------------------------------------- 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