COMPILATION LISTING OF SEGMENT enter_abs_request_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 01/17/89 1342.2 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1986 * 6* * * 7* *********************************************************** */ 8 9 /* format: style2,^inddcls,ifthenstmt,ifthendo,^indnoniterdo,^inditerdo,ind3,idind32 */ 10 11 enter_abs_request_: 12 procedure (p_abs_request_info_ptr, p_abs_return_info_ptr, p_code); 13 14 /****^ HISTORY COMMENTS: 15* 1) change(86-04-30,Cox), approve(86-05-01,MCR7390), audit(86-05-12,Newcomb), 16* install(86-06-30,MR12.0-1082): 17* Initially written. 18* 2) change(86-06-23,Gilcrease), approve(86-06-23,MCR7370), 19* audit(86-06-25,Lippard), install(86-06-30,MR12.0-1082): 20* Change version number of abs_message_format, for 21* -truncate .absout SCP6297. 22* 3) change(86-06-23,Lippard), approve(85-12-30,MCR7326), 23* audit(86-10-24,GDixon), install(86-10-28,MR12.0-1200): 24* Modified 19 June 1986 (above date to satisfy picky hcom) 25* by Jim Lippard to use absentee command AS request. 26* 4) change(87-07-07,GDixon), approve(87-07-07,MCR7741), 27* audit(87-07-07,Hartogs), install(87-08-04,MR12.1-1055): 28* Include user_abs_attributes.incl.pl1 as part of splitting 29* abs_message_format.incl.pl1. 30* 5) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 31* audit(88-05-03,Lippard), install(88-07-13,MR12.2-1047): 32* Added the referencing of the new abs_request_info version 3 elements. 33* Use exec_com search paths for locating input absin. SCP 6367. 34* 6) change(88-04-29,Parisek), approve(88-04-29,MCR7878), 35* audit(88-05-03,Lippard), install(88-07-13,MR12.2-1047): 36* Parse the input pathname here instead of the ear command module and check 37* if ec search paths are required for locating absin. 38* 7) change(88-08-15,Parisek), approve(88-09-22,MCR7977), 39* audit(88-09-26,Fawcett), install(88-09-30,MR12.2-1124): 40* Correct improper formatting of some error messages returned to the caller. 41* Improve for coding standards. 42* 8) change(88-11-22,Parisek), approve(89-01-03,MCR8032), 43* audit(89-01-04,Farley), install(89-01-17,MR12.3-1005): 44* Use fs_util_ entries for determining absin/absout segment types, and ACLs 45* so ACLs for MSFs can be easily determined. 46* END HISTORY COMMENTS */ 47 48 /* Parameters */ 49 50 dcl (p_abs_request_info_ptr, p_abs_return_info_ptr) 51 ptr parameter; 52 dcl p_code fixed bin (35) parameter; 53 54 /* Automatic */ 55 56 dcl aok bit (1) aligned; 57 dcl arg_idx fixed bin; 58 dcl authrng (2) bit (72) aligned; 59 dcl ( 60 code, 61 default_cpu_limits dimension (4), 62 default_foreground_cpu_limit 63 ) fixed bin (35); 64 dcl ignore_code fixed bin (35); 65 dcl (input_entryname, login_name, message_seg_entry, output_entryname, proxy_name) 66 char (32); 67 dcl len_entry fixed bin; /* length of entry name of absentee control segment */ 68 dcl len_path fixed bin; /* length of dir name of abs(in out) segs */ 69 dcl 1 local_asraci aligned like asr_abs_command_info; 70 dcl message_id bit (72) aligned; 71 dcl must_search bit (1) aligned; 72 dcl next_arg_position fixed bin; 73 dcl (input_dirname, output_dirname, output_pathname) 74 char (168); 75 dcl rs_len fixed bin; 76 dcl search_pname char (168); /* Directory name located through search paths */ 77 dcl queue_picture picture "9"; 78 dcl reqp ptr; 79 dcl ringrng (2) fixed bin; 80 81 /* Entries */ 82 83 dcl aim_check_$in_range entry (bit (72) aligned, (2) bit (72) aligned) returns (bit (1) aligned); 84 dcl expand_pathname_$add_suffix entry (char (*), char (*), char (*), char (*), fixed bin (35)); 85 dcl get_group_id_$tag_star entry () returns (char (32)); 86 dcl cu_$level_get entry (fixed bin); 87 dcl get_temp_segment_ entry (char (*), ptr, fixed bin (35)); 88 dcl fs_util_$get_type entry (char (*), char (*), char (*), fixed bin (35)); 89 dcl fs_util_$get_user_access_modes entry (char (*), char (*), char (*), fixed bin, bit (36) aligned, bit (36) aligned, fixed bin (35)); 90 dcl ioa_$rsnnl entry () options (variable); 91 dcl message_segment_$add_file entry (char (*), char (*), ptr, fixed bin, bit (72) aligned, fixed bin (35)); 92 dcl message_segment_$get_message_count_file 93 entry (char (*), char (*), fixed bin, fixed bin (35)); 94 dcl parse_resource_desc_$check entry (char (*), ptr, ptr, ptr, char (*) var, fixed bin (35)); 95 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 96 dcl release_temp_segment_ entry (char (*), ptr, fixed bin (35)); 97 dcl search_paths_$find_dir entry (char (*), ptr, char (*), char (*), char (*), fixed bin (35)); 98 dcl send_as_request_$no_block entry (ptr, fixed bin, bit(72) aligned, fixed bin(35)); 99 dcl suffixed_name_$make entry (char (*), char (*), char (32), fixed bin (35)); 100 dcl suffixed_name_$new_suffix entry (char (*), char (*), char (*), char (32), fixed bin (35)); 101 dcl system_info_$abs_limits entry ((4) fixed bin (35), fixed bin (35)); 102 dcl system_info_$default_absentee_queue 103 entry (fixed bin); 104 dcl user_info_$attributes entry (char (*) varying); 105 dcl user_info_$authorization_range entry ((2) bit (72) aligned); 106 dcl user_info_$ring_range entry ((2) fixed bin); 107 dcl user_info_$whoami entry (char (*), char (*), char (*)); 108 109 /* External */ 110 111 dcl ( 112 as_error_table_$illegal_hd_arg, 113 as_error_table_$illegal_ip_arg, 114 as_error_table_$ring_too_high, 115 as_error_table_$ring_too_low, 116 error_table_$ai_out_range, 117 error_table_$bad_subr_arg, 118 error_table_$moderr, 119 error_table_$noarg, 120 error_table_$no_append, 121 error_table_$no_search_list, 122 error_table_$noentry, 123 error_table_$not_seg_type, 124 error_table_$no_s_permission, 125 error_table_$null_info_ptr, 126 error_table_$pathlong, 127 error_table_$unimplemented_version 128 ) fixed bin (35) external; 129 130 /* Constant */ 131 132 dcl ( 133 ABSENTEE_DIRECTORY char (168) initial (">system_control_1"), 134 ABSENTEE_QUEUE_PREFIX char (9) initial ("absentee_"), 135 ABSIN_SEG bit (1) aligned initial ("0"b), 136 ABSOUT_SEG bit (1) aligned initial ("1"b), 137 FOREGROUND_ABSENTEE_QUEUE_NAME char (32) initial ("absentee_foreground.ms"), 138 ME char (32) initial ("enter_absentee_request_"), 139 MESSAGE_SEG_SUFFIX char (2) initial ("ms") 140 ) internal static options (constant); 141 142 /* Conditions */ 143 144 dcl cleanup condition; 145 146 /* Builtins */ 147 148 dcl (addr, clock, convert, currentsize, index, length, null, rtrim, 149 reverse, search, substr, unspec) builtin; 150 151 /* Program */ 152 153 p_code = 0; 154 155 abs_request_info_ptr = p_abs_request_info_ptr; 156 if abs_request_info_ptr = null then call ERROR_RETURN (error_table_$null_info_ptr); 157 abs_return_info_ptr = p_abs_return_info_ptr; 158 if abs_return_info_ptr = null then call ERROR_RETURN (error_table_$null_info_ptr); 159 if abs_request_info.attributes.attributes_mbz ^= "0"b then call ERROR_RETURN (error_table_$bad_subr_arg); 160 161 if abs_request_info.version ^= ABSENTEE_REQUEST_INFO_VERSION_3 162 then call ERROR_RETURN (error_table_$unimplemented_version); 163 if abs_return_info.version ^= ABSENTEE_RETURN_INFO_VERSION_3 164 then call ERROR_RETURN (error_table_$unimplemented_version); 165 166 reqp = null (); /* initialize values */ 167 abs_return_info.request_id = 0; 168 abs_return_info.error_msg = ""; 169 abs_return_info.abs_pathname = ""; 170 on cleanup call clean_up (); 171 172 call get_temp_segment_ (ME, reqp, code); 173 if code ^= 0 then call ERROR_RETURN (code); 174 175 /**** request_header */ 176 177 unspec (request.request_header) = ""b; 178 request.request_header.msg_time = clock (); 179 request.request_header.hdr_version = queue_msg_hdr_version_1; 180 181 input_dirname, input_entryname = ""; 182 must_search = "0"b; 183 184 if abs_request_info.input_segment_dirname = "" then do; 185 code = error_table_$noarg; 186 call ioa_$rsnnl ("Pathname of input segment.", abs_return_info.error_msg, rs_len, ""); 187 call ERROR_RETURN (code); 188 end; 189 190 len_path = search (reverse (abs_request_info.input_segment_dirname), 191 "<>") - 1; 192 if len_path < 0 then must_search = "1"b; /* arg is entryname only, must use search paths */ 193 194 call expand_pathname_$add_suffix (abs_request_info.input_segment_dirname, 195 "absin", input_dirname, input_entryname, code); 196 if code ^= 0 then call ERROR_RETURN (code); 197 198 if must_search then do; 199 call search_paths_$find_dir ("exec_com", null (), input_entryname, 200 "", search_pname, code); /* use the exec_com search list */ 201 if code = 0 then input_dirname = search_pname; 202 else if code ^= error_table_$no_search_list then do; 203 /* entry not found using ec search list */ 204 call ioa_$rsnnl ("^a.absin using ^a search list.", abs_return_info.error_msg, 205 rs_len, abs_request_info.input_segment_dirname, "exec_com"); 206 call ERROR_RETURN (code); 207 end; 208 end; 209 210 len_entry = length (rtrim (input_entryname)); 211 len_path = length (rtrim (input_dirname)); 212 if len_path + len_entry > length (request.request_header.dirname) 213 then do; /* Full path name is now too long to remember. */ 214 code = error_table_$pathlong; 215 call ioa_$rsnnl ("^a", abs_return_info.error_msg, rs_len, 216 abs_request_info.input_segment_dirname); 217 call ERROR_RETURN (code); 218 end; 219 220 call CHECK_SEG_ACCESS (input_dirname, input_entryname, ABSIN_SEG); 221 abs_return_info.abs_pathname = rtrim(input_dirname) || 222 ">" || input_entryname; 223 request.request_header.dirname = input_dirname; 224 request.request_header.ename = input_entryname; 225 request.request_header.message_type = 0 /* absentee request */; 226 request.request_header.bit_flags.notify = abs_request_info.attributes.notify; 227 228 /**** version & abs_attributes */ 229 230 request.request_version = abs_message_version_6; 231 unspec (request.abs_attributes), unspec (request.abs_status_flags) = ""b; 232 request.abs_attributes = abs_request_info.attributes, by name; 233 234 /**** foreground & queue */ 235 236 if abs_request_info.queue = FOREGROUND_QUEUE then do; 237 request.request_header.orig_queue = 1; 238 message_seg_entry = FOREGROUND_ABSENTEE_QUEUE_NAME; 239 end; 240 else do; 241 if abs_request_info.queue = DEFAULT_QUEUE 242 then call system_info_$default_absentee_queue (request.request_header.orig_queue); 243 else if abs_request_info.queue = BACKGROUND_QUEUE (0) then request.request_header.orig_queue = 1; 244 /* queue 0 is really the front of queue 1 */ 245 else if abs_request_info.queue = BACKGROUND_QUEUE (1) | abs_request_info.queue = BACKGROUND_QUEUE (2) 246 | abs_request_info.queue = BACKGROUND_QUEUE (3) | abs_request_info.queue = BACKGROUND_QUEUE (4) 247 then request.request_header.orig_queue = convert (request.request_header.orig_queue, abs_request_info.queue); 248 else if abs_request_info.queue ^= BACKGROUND_QUEUE (4) then call ERROR_RETURN (error_table_$bad_subr_arg); 249 call suffixed_name_$make (ABSENTEE_QUEUE_PREFIX || convert (queue_picture, request.request_header.orig_queue), 250 MESSAGE_SEG_SUFFIX, message_seg_entry, code); 251 end; 252 253 /**** name & len_name */ 254 255 call user_info_$whoami (login_name, (""), ("")); 256 request.len_name = length (rtrim (login_name)); 257 request.name = substr (login_name, 1, request.len_name); 258 259 /**** output_file & len_output */ 260 261 if abs_request_info.output_segment_dirname ^= "" 262 then output_dirname = abs_request_info.output_segment_dirname; 263 else output_dirname = input_dirname; 264 if abs_request_info.output_segment_entryname ^= "" 265 then call suffixed_name_$make (abs_request_info.output_segment_entryname, "absout", output_entryname, code); 266 else call suffixed_name_$new_suffix (input_entryname, "absin", "absout", output_entryname, code); 267 if code ^= 0 then call ERROR_RETURN (code); 268 call CHECK_SEG_ACCESS (output_dirname, output_entryname, ABSOUT_SEG); 269 output_pathname = pathname_ (output_dirname, output_entryname); 270 request.len_output = length (rtrim (output_pathname)); 271 request.output_file = substr (output_pathname, 1, request.len_output); 272 273 /**** proxy_name & len_proxy & abs_attributes.proxy */ 274 275 if abs_request_info.proxy_personid ^= "" then do; 276 call ioa_$rsnnl ("^a.^a", proxy_name, request.len_proxy, abs_request_info.proxy_personid, 277 abs_request_info.proxy_projectid); 278 request.abs_attributes.proxy = "1"b; 279 request.proxy_name = substr (proxy_name, 1, request.len_proxy); 280 end; 281 else request.abs_attributes.proxy = "0"b; 282 283 /**** deferred_time & max_cpu_time & requested_authorization & attributes */ 284 285 request.deferred_time = abs_request_info.deferred_time; 286 if abs_request_info.deferred_time ^= 0 then request.user_deferred_until_time = "1"b; 287 if abs_request_info.max_cpu_time = 0 then do; 288 call system_info_$abs_limits (default_cpu_limits, default_foreground_cpu_limit); 289 if abs_request_info.queue = FOREGROUND_QUEUE 290 then request.max_cpu_time = default_foreground_cpu_limit; 291 else request.max_cpu_time = default_cpu_limits (request.request_header.orig_queue); 292 end; 293 else request.max_cpu_time = abs_request_info.max_cpu_time; 294 295 call user_info_$authorization_range (authrng); /* get user's low and high auth levels */ 296 if aim_check_$in_range (abs_request_info.requested_authorization, authrng) then 297 request.requested_authorization = abs_request_info.requested_authorization; 298 /* auth level ok */ 299 else do; 300 code = error_table_$ai_out_range; /* not ok */ 301 call ERROR_RETURN (code); 302 end; 303 request.restartable = abs_request_info.restartable; 304 request.user_deferred_indefinitely = abs_request_info.user_deferred_indefinitely; 305 request.secondary_ok = abs_request_info.secondary_ok; 306 request.truncate_absout = abs_request_info.truncate_absout; 307 308 /**** resource & sender & comment & home_dir & init_proc & len_= */ 309 310 request.len_resource = abs_request_info.resource_length; 311 request.len_sender = length (rtrim (abs_request_info.sender)); 312 request.len_comment = abs_request_info.comment_length; 313 if length (rtrim( abs_request_info.home_dir)) > 0 then do; 314 /* home dir was specified */ 315 call get_attributes ("vhomedir", aok); /* check if user has this attribute */ 316 if aok then request.len_homedir = length (rtrim (abs_request_info.home_dir)); 317 /* has attribute */ 318 else do; 319 code = as_error_table_$illegal_hd_arg; /* does not have attribute */ 320 call ERROR_RETURN (code); 321 end; 322 request.home_dir = 323 substr (abs_request_info.home_dir, 1, request.len_homedir); 324 /* fill in specified home dir */ 325 end; 326 if length (rtrim(abs_request_info.init_proc)) > 0 then do; 327 /* initial process overseer specified */ 328 call get_attributes ("vinitproc", aok); /* check if user has this attribute */ 329 if aok then request.len_initproc = length (rtrim (abs_request_info.init_proc)); 330 /* has attribute */ 331 else do; 332 code = as_error_table_$illegal_ip_arg; /* does not have attribute */ 333 call ERROR_RETURN (code); 334 end; 335 request.init_proc = 336 substr (abs_request_info.init_proc, 1, request.len_initproc); 337 /* fill in specified initial procedure */ 338 end; 339 340 if request.len_resource > 0 then do; /* resources specified */ 341 call parse_resource_desc_$check ((abs_request_info.resource), null (), null (), null (), "", code); 342 if code ^= 0 then call ERROR_RETURN (code); 343 request.resource = abs_request_info.resource; 344 end; 345 if request.len_sender > 0 then request.sender = substr (abs_request_info.sender, 1, request.len_sender); 346 /* sender string specified */ 347 if request.len_comment > 0 then request.comment = abs_request_info.comment; 348 /* comment string specified */ 349 350 request.len_vpad = 0; 351 352 /**** args & arg_lengths & arg_count & len_args */ 353 354 request.arg_count = abs_request_info.arg_count; 355 if request.arg_count > 0 then do; /* fill in argument string information */ 356 request.len_args, next_arg_position = 0; 357 do arg_idx = 1 to abs_request_info.arg_count; 358 next_arg_position = request.len_args + 1; 359 request.len_args = request.len_args + length (abs_request_info.arguments (arg_idx)); 360 request.arg_lengths (arg_idx) = length (abs_request_info.arguments (arg_idx)); 361 substr (request.args, next_arg_position, length (abs_request_info.arguments (arg_idx))) = 362 abs_request_info.arguments (arg_idx); 363 end; 364 end; 365 366 /**** initial_ring & no_start_up */ 367 368 if abs_request_info.initial_ring ^= -1 then do; /* user specified an initial ring */ 369 call user_info_$ring_range (ringrng); /* check allowed low and high ring values */ 370 if abs_request_info.initial_ring < ringrng (1) then do; 371 code = as_error_table_$ring_too_low; /* specified lower than lowest allowed */ 372 call ERROR_RETURN (code); 373 end; 374 else if abs_request_info.initial_ring > ringrng (2) then do; 375 code = as_error_table_$ring_too_high; /* specified higher than highest allowed */ 376 call ERROR_RETURN (code); 377 end; 378 end; 379 request.initial_ring = abs_request_info.initial_ring; /* fill in initial ring value */ 380 381 request.abs_attributes.no_start_up = abs_request_info.attributes.no_start_up; 382 /* fill in no_startup parameter */ 383 384 request.request_header.std_length = currentsize (request); 385 /* note the size of the request structure */ 386 387 /**** end of request setup; now put request in queue */ 388 389 call message_segment_$add_file (ABSENTEE_DIRECTORY, message_seg_entry, reqp, request.request_header.std_length * 36, 390 message_id, code); 391 /* queue request into the appropriate message segment */ 392 if code ^= 0 then call ERROR_RETURN (code); 393 394 abs_return_info.request_id = request.msg_time; /* fill in the return info to send back to caller */ 395 if abs_request_info.queue = DEFAULT_QUEUE 396 then abs_return_info.queue = convert (queue_picture, request.request_header.orig_queue) || " "; 397 else abs_return_info.queue = abs_request_info.queue; 398 call message_segment_$get_message_count_file (ABSENTEE_DIRECTORY, message_seg_entry, 399 abs_return_info.queue_requests_count, code); 400 if code ^= 0 then call ERROR_RETURN (code); 401 402 local_asraci.version = ASR_AC_INFO_VERSION_1; 403 local_asraci.action_code = ASR_AC_LOGIN; 404 local_asraci.request_id = request.msg_time; 405 local_asraci.header.version = as_request_version_1; 406 local_asraci.header.type = ASR_ABS_COMMAND; 407 local_asraci.header.reply_channel = 0; 408 409 call send_as_request_$no_block (addr (local_asraci), currentsize (local_asraci), 410 ""b, code); 411 412 if code ^= 0 then call ERROR_RETURN (code); 413 414 call clean_up (); 415 416 EAR_RETURN: 417 return; 418 419 CHECK_SEG_ACCESS: 420 proc (cs_dir, cs_en, cs_seg_type); 421 422 /* Absin segment must exist and give r access to the absentee user. 423* Absout must either exist and give him w, or not exist and parent must give him a. */ 424 425 dcl cs_dir char (168) parameter; 426 dcl cs_en char (32) parameter; 427 dcl cs_seg_type bit (1) aligned parameter; 428 429 dcl (cs_ring) fixed bin; 430 dcl cs_code fixed bin (35); 431 dcl cs_type char (32); 432 dcl cs_mode bit (36) aligned; 433 dcl x_mode bit (36) aligned; 434 435 /* Get type and bitcount of segment (chase links). This verifies that it exists, too. */ 436 437 call cu_$level_get (cs_ring); 438 call fs_util_$get_type (cs_dir, cs_en, cs_type, cs_code); 439 440 /* We are checking as a favor to the user. If we can't know, go away quietly. */ 441 if cs_code ^= 0 442 then if cs_code ^= error_table_$no_s_permission then do; 443 if cs_code = error_table_$noentry & cs_seg_type = ABSOUT_SEG then do; 444 /* absout does not exist */ 445 call fs_util_$get_user_access_modes (cs_dir, "", get_group_id_$tag_star (), 446 cs_ring, cs_mode, x_mode, cs_code); 447 /* need access to create absout */ 448 if cs_code ^= 0 then do; 449 call ioa_$rsnnl ("Warning: Cannot check access on directory containing entry. Job may not run successfully.", 450 abs_return_info.error_msg, rs_len); 451 call ERROR_RETURN (cs_code); 452 end; 453 if ^(cs_mode = A_ACCESS | cs_mode = SA_ACCESS | cs_mode = SMA_ACCESS) 454 then call ERROR_RETURN (error_table_$no_append); 455 end; 456 457 /* abort if: 458* - any error (except no_s_permission) on absin seg, 459* - any error (except no_s_permission or noentry) on absout seg, 460* - any error (except no_s_permission) on absout dir. */ 461 462 else do; 463 call ioa_$rsnnl ("^a", abs_return_info.error_msg, rs_len, 464 pathname_ (cs_dir, cs_en)); 465 call ERROR_RETURN (cs_code); 466 end; 467 end; 468 else do; 469 call ioa_$rsnnl ("^a^[>^]^a", abs_return_info.error_msg, rs_len, 470 cs_dir, (cs_dir ^= ">"), 471 cs_en); 472 call ERROR_RETURN (cs_code); 473 end; 474 475 /**** must be a segment, link or MSF */ 476 else do; 477 if cs_type = FS_OBJECT_TYPE_SEGMENT | cs_type = FS_OBJECT_TYPE_MSF 478 | cs_type = FS_OBJECT_TYPE_LINK 479 then do; 480 /* Status call on segment ok. Now check access to it. */ 481 call fs_util_$get_user_access_modes (cs_dir, cs_en, get_group_id_$tag_star (), 482 cs_ring, cs_mode, x_mode, cs_code); 483 if cs_code ^= 0 then do; 484 call ioa_$rsnnl ("Warning: Cannot check access on ^a. Job may not run successfully.", 485 abs_return_info.error_msg, rs_len, pathname_ (cs_dir, cs_en)); 486 call ERROR_RETURN (cs_code); 487 end; 488 if (cs_seg_type = ABSIN_SEG 489 & ^(cs_mode = R_ACCESS | cs_mode = RE_ACCESS | cs_mode = RW_ACCESS | cs_mode = REW_ACCESS)) 490 | (cs_seg_type = ABSOUT_SEG 491 & ^(cs_mode = W_ACCESS | cs_mode = RW_ACCESS | cs_mode = REW_ACCESS)) 492 then do; 493 call ioa_$rsnnl ("^a", abs_return_info.error_msg, rs_len, 494 pathname_ (cs_dir, cs_en)); 495 call ERROR_RETURN (error_table_$moderr); 496 end; 497 end; 498 else do; 499 call ioa_$rsnnl ("^a", abs_return_info.error_msg, rs_len, 500 pathname_ (cs_dir, cs_en)); 501 call ERROR_RETURN (error_table_$not_seg_type); 502 end; 503 end; 504 505 end CHECK_SEG_ACCESS; 506 507 get_attributes: 508 procedure (p_attr, p_aok); 509 /* check various user attributes */ 510 dcl p_attr char (24) parameter; 511 dcl p_aok bit (1) aligned parameter; 512 dcl my_attributes char (128) varying; 513 514 call user_info_$attributes (my_attributes); 515 if index (my_attributes, rtrim(p_attr)) > 0 then p_aok = "1"b; 516 else p_aok = "0"b; 517 end get_attributes; 518 519 clean_up: 520 procedure (); 521 if reqp ^= null () then call release_temp_segment_ (ME, reqp, ignore_code); 522 return; 523 end clean_up; 524 525 ERROR_RETURN: 526 proc (er_code); 527 528 declare er_code fixed bin (35); 529 530 call clean_up (); 531 p_code = er_code; 532 goto EAR_RETURN; 533 end ERROR_RETURN; 534 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 */ 535 536 2 1 /* Begin include file abs_request_dcls.incl.pl1 */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(86-02-19,Cox), approve(86-05-12,MCR7390), audit(86-05-12,Newcomb), 2 5* install(86-06-30,MR12.0-1082): 2 6* Initially written. 2 7* 2) change(86-06-20,Gilcrease), approve(86-06-20,MCR7390), 2 8* audit(86-06-25,Lippard), install(86-06-30,MR12.0-1082): 2 9* Make abs_request_info.attributes.truncate_absout known, 2 10* for version 2 of the include file, 2 11* to indicate -truncate .absout is implemented SCR6297. 2 12* 3) change(86-10-14,Lippard), approve(85-12-30,MCR7326), 2 13* audit(86-10-27,GDixon), install(86-10-28,MR12.0-1200): 2 14* Add comments describing each field. 2 15* 4) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 2 16* audit(88-05-04,Lippard), install(88-07-13,MR12.2-1047): 2 17* Added the request_info version 3 elements init_proc, subsystem_name, 2 18* home_dir, initial_ring, no_start_up. Added the return_info version 2 19* 3 elements: error_msg, and abs_pathname. SCP6367. 2 20* 5) change(88-04-29,Parisek), approve(88-04-29,MCR7878), 2 21* audit(88-05-04,Lippard), install(88-07-13,MR12.2-1047): 2 22* A. Remove the must_use_search bit element. 2 23* B. Replace the input_segment_entryname element with an unused pad 2 24* field, as the input entryname will be located by enter_abs_request_ 2 25* and placed into the request header as request.request_header.ename. 2 26* END HISTORY COMMENTS */ 2 27 2 28 /* format: style2,^inddcls,ifthenstmt,ifthendo,^indnoniterdo,^inditerdo,ind3,idind32 */ 2 29 2 30 dcl 1 abs_request_info structure aligned based (abs_request_info_ptr), 2 31 2 version char (8) aligned, /* version number of this structure */ 2 32 2 resource_length fixed bin, /* length of resource string */ 2 33 2 comment_length fixed bin, /* length of comment string */ 2 34 2 max_arg_length fixed bin, /* length of longest arg */ 2 35 2 arg_count fixed bin, /* number of args */ 2 36 2 proxy_personid char (22) aligned, /* person ID of proxy user */ 2 37 2 proxy_projectid char (9) aligned, /* project ID of proxy user */ 2 38 2 queue char (4) aligned, /* absentee queue */ 2 39 2 deferred_time fixed bin (71), /* time at which absentee is to run */ 2 40 2 max_cpu_time fixed bin (35), /* max CPU time for absentee process */ 2 41 2 requested_authorization bit (72), /* authorization at which absentee is to be logged in */ 2 42 2 input_segment_dirname char (168) unaligned,/* pathname of absin segment */ 2 43 2 pad (8) fixed bin, /* reserved */ 2 44 2 output_segment_dirname char (168) unaligned,/* pathname of absout segment */ 2 45 2 output_segment_entryname char (32) unaligned, 2 46 2 attributes aligned, 2 47 3 restartable bit (1) unaligned, /* True if this absentee may be restarted */ 2 48 3 user_deferred_indefinitely 2 49 bit (1) unaligned, /* True if this absentee is to be deferred indefinitely */ 2 50 3 secondary_ok bit (1) unaligned, /* True if it's OK for foreground job to be logged in without 2 51* primary status */ 2 52 3 truncate_absout bit (1) unaligned, /* True if absout is to be truncated before absentee runs */ 2 53 3 notify bit (1) unaligned, /* True if submitter is to be notified when job starts and ends */ 2 54 3 no_start_up bit (1) unaligned, 2 55 3 attributes_mbz bit (30) unaligned, /* must be zero */ 2 56 2 sender char (32), /* submitter of absentee */ 2 57 2 initial_ring fixed bin, /* initial ring requested */ 2 58 2 home_dir char (64), /* user's home dir */ 2 59 2 init_proc char (64), /* login responder name */ 2 60 2 61 2 resource char (arqi_resource_length refer (abs_request_info.resource_length)), 2 62 /* any RCP resources required by the job */ 2 63 2 comment char (arqi_comment_length refer (abs_request_info.comment_length)), 2 64 /* comment field */ 2 65 2 arguments dimension (arqi_arg_count refer (abs_request_info.arg_count)) 2 66 char (arqi_max_arg_length refer (abs_request_info.max_arg_length)) varying; 2 67 /* additional arguments to absentee process */ 2 68 2 69 2 70 dcl 1 abs_return_info structure aligned based (abs_return_info_ptr), 2 71 2 version char (8) aligned, /* version of this structure */ 2 72 2 request_id fixed bin (71), /* request ID of the absentee job: 2 73* 0 if not entered, 2 74* > 0 if entered */ 2 75 2 queue char (4) aligned, /* queue the job is entered in */ 2 76 2 queue_requests_count fixed bin (17), /* total number of requests in the queue */ 2 77 2 error_msg char (256), /* Additional error message info */ 2 78 2 abs_pathname char (168); /* Absolute absin pathname found via ec search paths */ 2 79 2 80 dcl (abs_request_info_ptr, abs_return_info_ptr) 2 81 ptr automatic; 2 82 2 83 dcl ( 2 84 ABSENTEE_REQUEST_INFO_VERSION_3 initial ("arqi_003"), 2 85 ABSENTEE_RETURN_INFO_VERSION_3 initial ("arti_003") 2 86 ) char (8) internal static options (constant); 2 87 2 88 /**** The following fields should be set before abs_request_info is allocated */ 2 89 dcl arqi_resource_length fixed bin; 2 90 dcl arqi_comment_length fixed bin; 2 91 dcl arqi_max_arg_length fixed bin; 2 92 dcl arqi_arg_count fixed bin; 2 93 2 94 dcl ( 2 95 BACKGROUND_QUEUE dimension (0:4) init ("0", "1", "2", "3", "4"), 2 96 FOREGROUND_QUEUE init ("fg"), 2 97 DEFAULT_QUEUE init ("dft") 2 98 ) char (4) aligned internal static options (constant); 2 99 2 100 /* End include file abs_request_dcls.incl.pl1 */ 537 538 3 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 3 2* 3 3* Values for the "access mode" argument so often used in hardcore 3 4* James R. Davis 26 Jan 81 MCR 4844 3 5* Added constants for SM access 4/28/82 Jay Pattin 3 6* Added text strings 03/19/85 Chris Jones 3 7**/ 3 8 3 9 3 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 3 11 dcl ( 3 12 N_ACCESS init ("000"b), 3 13 R_ACCESS init ("100"b), 3 14 E_ACCESS init ("010"b), 3 15 W_ACCESS init ("001"b), 3 16 RE_ACCESS init ("110"b), 3 17 REW_ACCESS init ("111"b), 3 18 RW_ACCESS init ("101"b), 3 19 S_ACCESS init ("100"b), 3 20 M_ACCESS init ("010"b), 3 21 A_ACCESS init ("001"b), 3 22 SA_ACCESS init ("101"b), 3 23 SM_ACCESS init ("110"b), 3 24 SMA_ACCESS init ("111"b) 3 25 ) bit (3) internal static options (constant); 3 26 3 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 3 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 3 29 3 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 3 31 static options (constant); 3 32 3 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 3 34 static options (constant); 3 35 3 36 dcl ( 3 37 N_ACCESS_BIN init (00000b), 3 38 R_ACCESS_BIN init (01000b), 3 39 E_ACCESS_BIN init (00100b), 3 40 W_ACCESS_BIN init (00010b), 3 41 RW_ACCESS_BIN init (01010b), 3 42 RE_ACCESS_BIN init (01100b), 3 43 REW_ACCESS_BIN init (01110b), 3 44 S_ACCESS_BIN init (01000b), 3 45 M_ACCESS_BIN init (00010b), 3 46 A_ACCESS_BIN init (00001b), 3 47 SA_ACCESS_BIN init (01001b), 3 48 SM_ACCESS_BIN init (01010b), 3 49 SMA_ACCESS_BIN init (01011b) 3 50 ) fixed bin (5) internal static options (constant); 3 51 3 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 539 540 4 1 /* BEGIN INCLUDE FILE ... as_request_header.incl.pl1 */ 4 2 4 3 /* DESCRIPTION: 4 4* Answering Service request information. 4 5**/ 4 6 4 7 4 8 /****^ HISTORY COMMENTS: 4 9* 1) change(00-01-01,JRandom), approve(), audit(), install(): 4 10* Written by someone, at sometime. 4 11* 2) change(84-09-10,Tague), approve(), audit(), install(): 4 12* R. Michael Tague: Added ASR_BUMP_USER request. 4 13* 3) change(84-10-04,Margulies), approve(), audit(), install(): 4 14* BIM: ASR_ADMIN_COMMAND. 4 15* 4) change(85-01-23,Swenson), approve(), audit(), install(): 4 16* E. Swenson for ASR_NOTE_PNT_CHANGE. 4 17* 5) change(85-02-18,Margulies), approve(), audit(), install(): 4 18* BIM: ASR_DAEMON_COMMAND, ASR_COM_CHANNEL_INFO 4 19* 6) change(85-12-12,Lippard), approve(85-12-30,MCR7326), 4 20* audit(86-10-27,GDixon), install(86-10-28,MR12.0-1200): 4 21* Jim Lippard: Added ASR_ABS_COMMAND request. 4 22* END HISTORY COMMENTS */ 4 23 4 24 4 25 /* format: style4 */ 4 26 4 27 dcl as_request_version_1 fixed bin internal static initial (1) options (constant); 4 28 4 29 dcl ( 4 30 ASR_FIRST_TYPE initial (1), 4 31 ASR_DIAL_SERVER initial (1), 4 32 ASR_DIAL_OUT initial (2), 4 33 ASR_FPE_CAUSES_LOGOUT initial (3), 4 34 ASR_FPE_CAUSES_NEW_PROC initial (4), 4 35 ASR_PROC_TERM_NOTIFY initial (5), 4 36 ASR_BUMP_USER initial (6), 4 37 ASR_ADMIN_COMMAND initial (7), 4 38 ASR_NOTE_PNT_CHANGE initial (8), 4 39 ASR_DAEMON_COMMAND initial (9), 4 40 ASR_COM_CHANNEL_INFO initial (10), 4 41 ASR_ABS_COMMAND initial (11), 4 42 ASR_LAST_TYPE initial (11) 4 43 ) fixed bin internal static options (constant); 4 44 4 45 dcl ASR_DEFER_IN_ADMIN_MODE (1:11) bit (1) int static options (constant) 4 46 init ((6) (1) "0"b, "1"b, (4) (1) "0"b); 4 47 4 48 dcl ASR_REQUEST_NAMES (1:11) int static options (constant) 4 49 char (40) init ( 4 50 "Dial request", 4 51 "Dial out request", 4 52 "Logout on fatal process error", 4 53 "New process on fatal process error", 4 54 "Monitor process terminations", 4 55 "Bump user", 4 56 "Execute admin command", 4 57 "Note PNT change", 4 58 "Daemon command", 4 59 "Communications channel info", 4 60 "Absentee command"); 4 61 4 62 dcl 1 as_request_header based aligned, 4 63 2 version fixed bin, /* version number */ 4 64 2 type fixed bin, /* what to do */ 4 65 2 reply_channel fixed bin (71); /* who to tell */ 4 66 4 67 4 68 /* END INCLUDE FILE ... as_request_header.incl.pl1 */ 541 542 5 1 /* BEGIN INCLUDE FILE asr_abs_command.incl.pl1 */ 5 2 5 3 /****^ HISTORY COMMENTS: 5 4* 1) change(85-12-12,Lippard), approve(85-12-30,MCR7326), 5 5* audit(86-10-27,GDixon), install(86-10-28,MR12.0-1200): 5 6* Written by Jim Lippard. 5 7* END HISTORY COMMENTS */ 5 8 5 9 dcl asr_abs_command_info_ptr ptr; 5 10 5 11 dcl 1 asr_abs_command_info aligned based (asr_abs_command_info_ptr), 5 12 2 header aligned like as_request_header, 5 13 2 version char (8), 5 14 2 action_code fixed bin, 5 15 2 request_id fixed bin (71); 5 16 5 17 dcl ASR_AC_INFO_VERSION_1 char (8) int static options (constant) init ("asrac001"); 5 18 dcl (ASR_AC_LOGIN init (1), 5 19 ASR_AC_CANCEL init (2)) fixed bin int static options (constant); 5 20 5 21 dcl asr_reply_ac_ptr ptr; 5 22 5 23 dcl 1 asr_reply_abs_command aligned based (asr_reply_ac_ptr), 5 24 2 code fixed bin (35); 5 25 5 26 /* END INCLUDE FILE asr_abs_command.incl.pl1 */ 543 544 6 1 /* BEGIN INCLUDE FILE: copy_flags.incl.pl1 */ 6 2 6 3 /* Flags for attributes that should/may be copied by the copy_ subroutine. This include file is 6 4* required by suffix_info.incl.pl1 and copy_options.incl.pl1 6 5* 6 6* Jay Pattin 6/23/83 */ 6 7 6 8 declare 1 copy_flags aligned based, /* ON means that this attribute may be copied by copy_ */ 6 9 2 names bit (1) unaligned, 6 10 2 acl bit (1) unaligned, 6 11 2 ring_brackets bit (1) unaligned, 6 12 2 max_length bit (1) unaligned, 6 13 2 copy_switch bit (1) unaligned, 6 14 2 safety_switch bit (1) unaligned, 6 15 2 dumper_switches bit (1) unaligned, 6 16 2 entry_bound bit (1) unaligned, /* only for vanilla object segments */ 6 17 2 extend bit (1) unaligned, /* copy_ may append to end of existing object */ 6 18 2 update bit (1) unaligned, /* copy_ may replace contents of existing object */ 6 19 2 mbz bit (26) unaligned; 6 20 6 21 /* END INCLUDE FILE: copy_flags.incl.pl1 */ 545 546 7 1 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 7 2 7 3 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 7 4 7 5 /* This include file contains branch and link structures returned by 7 6* hcs_$status_ and hcs_$status_long. */ 7 7 7 8 dcl 1 status_branch aligned based (status_ptr), 7 9 2 short aligned, 7 10 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 7 11 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 7 12 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 7 13 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 7 14 3 dtu bit (36) unaligned, /* date/time last used */ 7 15 3 mode bit (5) unaligned, /* caller's effective access */ 7 16 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 7 17 3 pad1 bit (8) unaligned, 7 18 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 7 19 7 20 /* Limit of information returned by hcs_$status_ */ 7 21 7 22 2 long aligned, 7 23 3 dtd bit (36) unaligned, /* date/time last dumped */ 7 24 3 dtem bit (36) unaligned, /* date/time branch last modified */ 7 25 3 lvid bit (36) unaligned, /* logical volume ID */ 7 26 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 7 27 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 7 28 3 pad2 bit (8) unaligned, 7 29 3 copy_switch bit (1) unaligned, /* copy switch */ 7 30 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 7 31 3 mdir_switch bit (1) unaligned, /* is a master dir */ 7 32 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 7 33 3 synchronized_switch bit (1) unaligned, /* DM synchronized file */ 7 34 3 pad3 bit (5) unaligned, 7 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 7 36 3 uid bit (36) unaligned; /* unique ID */ 7 37 7 38 dcl 1 status_link aligned based (status_ptr), 7 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 7 40 2 nnames fixed bin (16) unaligned unsigned, 7 41 2 names_relp bit (18) unaligned, 7 42 2 dtem bit (36) unaligned, 7 43 2 dtd bit (36) unaligned, 7 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 7 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 7 46 7 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 7 48 based (pointer (status_area_ptr, status_branch.names_relp)), 7 49 /* array of names returned */ 7 50 status_pathname character (status_link.pathname_length) aligned 7 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 7 52 /* link target path */ 7 53 status_area_ptr pointer, 7 54 status_ptr pointer; 7 55 7 56 dcl (Link initial (0), 7 57 Segment initial (1), 7 58 Directory initial (2)) fixed bin internal static options (constant); 7 59 /* values for type fields declared above */ 7 60 7 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 547 548 8 1 /* BEGIN INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 8 2 8 3 /* This is the message header used for standard system queue messages, namely: 8 4* IO daemon requests, absentee requests, retrieval requests. 8 5**/ 8 6 8 7 /* Written by Jerry Whitmore, Spring 1978. 8 8* Modified by T. Casey, November 1978, to add values for state. 8 9* Modified by R. Kovalcik, June 1982, defer_until_process_terminataion 8 10**/ 8 11 8 12 dcl 1 queue_msg_hdr based aligned, /* standard header for all system queue messages */ 8 13 2 msg_time fixed bin (71), /* date and time of request */ 8 14 2 hdr_version fixed bin, /* version of this declaration */ 8 15 2 dirname char (168), /* directory name */ 8 16 2 ename char (32), /* entry name of file requested */ 8 17 2 message_type fixed bin, /* message format descriptor */ 8 18 /* 0 = absentee request */ 8 19 /* 1 = print request */ 8 20 /* 2 = punch request */ 8 21 /* 3 = tape request */ 8 22 /* 4 = retrieval request */ 8 23 2 bit_flags, 8 24 3 delete_sw bit (1) unal, /* delete file when done */ 8 25 3 notify bit (1) unal, /* user wants to be notified */ 8 26 3 defer_until_process_termination bit (1) unal, /* don't process request until process terminates */ 8 27 3 padding bit (33) unal, 8 28 2 state fixed bin, /* stage of processing after being queued: 8 29* 0 = initial unprocessed state, 1 = deferred, 8 30* 2 = in state transition, 3 = eligible, 4 = running, 8 31* 5 = bumped, 6 = deferred_until_process_termination */ 8 32 2 orig_queue fixed bin, /* queue the request was submitted to */ 8 33 2 std_length fixed bin, /* length of std msg for this type */ 8 34 2 dupt_lock bit (36) aligned, /* lock word for defer until process termination */ 8 35 2 hdr_pad (3) fixed bin; 8 36 8 37 dcl queue_msg_hdr_version_1 fixed bin int static options (constant) init (1); /* current version of the header */ 8 38 8 39 /* Values for queue_msg_hdr.state */ 8 40 8 41 dcl STATE_UNPROCESSED fixed bin int static options (constant) init (0); 8 42 dcl STATE_DEFERRED fixed bin int static options (constant) init (1); 8 43 dcl STATE_TRANSITION fixed bin int static options (constant) init (2); 8 44 dcl STATE_ELIGIBLE fixed bin int static options (constant) init (3); 8 45 dcl STATE_RUNNING fixed bin int static options (constant) init (4); 8 46 dcl STATE_BUMPED fixed bin int static options (constant) init (5); 8 47 dcl STATE_DUPT fixed bin int static options (constant) init (6); 8 48 8 49 /* END INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 549 550 9 1 /* BEGIN INCLUDE FILE: suffix_info.incl.pl1 */ 9 2 /* format: style3,indcomtxt,idind30 */ 9 3 /**** Jay Pattin 2/13/83 9 4* M. Pandolf 1984.11.30 to set FS_OBJECT_TYPE_MSF to -multisegment_file 9 5* 9 6* The include file copy_flags.incl.pl1 must be included in any program using this include file. 9 7* 9 8* This structure is returned by the suffix_XXX_$suffix_info subroutines */ 9 9 9 10 declare suffix_info_ptr ptr; 9 11 9 12 declare 1 suffix_info aligned based (suffix_info_ptr), 9 13 2 version char (8), 9 14 2 type char (32) unaligned, 9 15 2 type_name char (32) unaligned, /* Singular name of the object type, e.g. "mailbox" */ 9 16 2 plural_name char (32) unaligned, /* Plural of above, e.g. "mailboxes" */ 9 17 2 flags unaligned, 9 18 3 standard_object bit (1) unaligned, /* ON if not an extended object (no suffix_XXX_) */ 9 19 3 extended_acl bit (1) unaligned, /* ON if uses extended ACLs, off if regular ACLs */ 9 20 3 has_switches bit (1) unaligned, /* ON if supports switches for objects */ 9 21 3 mbz1 bit (33) unaligned, 9 22 2 modes char (36), /* correspondence between bits and chars for extended modes */ 9 23 2 max_mode_len fixed bin, /* maximum number of modes on an object */ 9 24 2 num_ring_brackets fixed bin, /* number of ring brackets on object */ 9 25 2 copy_flags like copy_flags, /* See copy_flags.incl.pl1 */ 9 26 2 info_pathname char (168) unaligned; 9 27 /* pathname of info segment containing more info */ 9 28 9 29 declare SUFFIX_INFO_VERSION_1 char (8) static options (constant) init ("SUFFIX01"); 9 30 9 31 /* This information is returned by the suffix_XXX_$list_switches subroutines */ 9 32 9 33 declare switch_list_ptr ptr, 9 34 alloc_switch_count fixed bin, 9 35 alloc_switch_name_count fixed bin; 9 36 9 37 declare 1 switch_list aligned based (switch_list_ptr), 9 38 2 version char (8), /* SWITCH_LIST_VERSION_1 */ 9 39 2 switch_count fixed bin, /* total number of switches */ 9 40 2 switch_name_count fixed bin, /* total number of names */ 9 41 2 switches (alloc_switch_count refer (switch_list.switch_count)), 9 42 3 name_index fixed bin, /* index of first name for this switch */ 9 43 3 name_count fixed bin, /* number of names for this switch */ 9 44 3 default_value bit (1) aligned, /* default setting for this switch */ 9 45 3 mbz1 bit (36) aligned, /* reserved for future use */ 9 46 2 names (alloc_switch_name_count refer (switch_list.switch_name_count)) char (32); 9 47 9 48 declare SWITCH_LIST_VERSION_1 char (8) static options (constant) init ("SWLIST01"); 9 49 9 50 declare ( 9 51 FS_OBJECT_TYPE_SEGMENT init ("-segment"), 9 52 FS_OBJECT_TYPE_DIRECTORY init ("-directory"), 9 53 FS_OBJECT_TYPE_MSF init ("-multisegment_file"), 9 54 FS_OBJECT_TYPE_DM_FILE init ("-dm_file"), 9 55 FS_OBJECT_TYPE_LINK init ("-link") 9 56 ) char (32) unaligned int static options (constant); 9 57 9 58 /* END INCLUDE FILE: suffix_info.incl.pl1 */ 551 552 10 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 10 2 10 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 4 /* */ 10 5 /* This include file describes the attributes of an absentee job. It is */ 10 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 10 7 /* and PIT.incl.pl1. */ 10 8 /* */ 10 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 10 10 11 /****^ HISTORY COMMENTS: 10 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 10 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 10 14* Separated abs_attributes from the request structure 10 15* (abs_message_format.incl.pl1) so that the identical structure could be 10 16* used in the ute structure (user_table_entry.incl.pl1). 10 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 10 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 10 19* Added ABS_ATTRIBUTE_NAMES array. 10 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 10 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 10 22* Added the no_start_up flag. SCP6367 10 23* END HISTORY COMMENTS */ 10 24 10 25 dcl 1 user_abs_attributes aligned based, 10 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 10 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 10 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 10 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 10 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 10 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 10 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 10 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 10 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 10 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 10 36 2 attributes_pad bit (26) unaligned; 10 37 10 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 10 39 "restartable", 10 40 "user_deferred_until_time", 10 41 "proxy", 10 42 "set_bit_cnt", 10 43 "time_in_gmt", 10 44 "user_deferred_indefinitely", 10 45 "secondary_ok", 10 46 "truncate_absout", 10 47 "restarted", 10 48 "no_start_up"); 10 49 10 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 10 51 553 554 555 end enter_abs_request_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/17/89 1342.2 enter_abs_request_.pl1 >spec>install>1005>enter_abs_request_.pl1 535 1 08/04/88 2011.5 abs_message_format.incl.pl1 >ldd>include>abs_message_format.incl.pl1 537 2 07/14/88 2015.0 abs_request_dcls.incl.pl1 >ldd>include>abs_request_dcls.incl.pl1 539 3 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 541 4 10/30/86 2010.5 as_request_header.incl.pl1 >ldd>include>as_request_header.incl.pl1 543 5 10/30/86 2010.5 asr_abs_command.incl.pl1 >ldd>include>asr_abs_command.incl.pl1 545 6 10/14/83 1606.7 copy_flags.incl.pl1 >ldd>include>copy_flags.incl.pl1 547 7 11/22/82 0955.7 status_structures.incl.pl1 >ldd>include>status_structures.incl.pl1 549 8 08/31/82 1636.3 queue_msg_hdr.incl.pl1 >ldd>include>queue_msg_hdr.incl.pl1 551 9 03/05/85 1807.3 suffix_info.incl.pl1 >ldd>include>suffix_info.incl.pl1 553 10 07/14/88 2015.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. ABSENTEE_DIRECTORY 000072 constant char(168) initial packed unaligned dcl 132 set ref 389* 398* ABSENTEE_QUEUE_PREFIX 000067 constant char(9) initial packed unaligned dcl 132 ref 249 ABSENTEE_REQUEST_INFO_VERSION_3 000044 constant char(8) initial packed unaligned dcl 2-83 ref 161 ABSENTEE_RETURN_INFO_VERSION_3 000042 constant char(8) initial packed unaligned dcl 2-83 ref 163 ABSIN_SEG constant bit(1) initial dcl 132 set ref 220* 488 ABSOUT_SEG constant bit(1) initial dcl 132 set ref 268* 443 488 ASR_ABS_COMMAND constant fixed bin(17,0) initial dcl 4-29 ref 406 ASR_AC_INFO_VERSION_1 000030 constant char(8) initial packed unaligned dcl 5-17 ref 402 ASR_AC_LOGIN constant fixed bin(17,0) initial dcl 5-18 ref 403 A_ACCESS constant bit(3) initial packed unaligned dcl 3-11 ref 453 BACKGROUND_QUEUE 000034 constant char(4) initial array dcl 2-94 ref 243 245 245 245 245 248 DEFAULT_QUEUE 000032 constant char(4) initial dcl 2-94 ref 241 395 FOREGROUND_ABSENTEE_QUEUE_NAME 000057 constant char(32) initial packed unaligned dcl 132 ref 238 FOREGROUND_QUEUE 000033 constant char(4) initial dcl 2-94 ref 236 289 FS_OBJECT_TYPE_LINK 000000 constant char(32) initial packed unaligned dcl 9-50 ref 477 FS_OBJECT_TYPE_MSF 000010 constant char(32) initial packed unaligned dcl 9-50 ref 477 FS_OBJECT_TYPE_SEGMENT 000020 constant char(32) initial packed unaligned dcl 9-50 ref 477 ME 000047 constant char(32) initial packed unaligned dcl 132 set ref 172* 521* MESSAGE_SEG_SUFFIX 000046 constant char(2) initial packed unaligned dcl 132 set ref 249* REW_ACCESS constant bit(3) initial packed unaligned dcl 3-11 ref 488 488 RE_ACCESS constant bit(3) initial packed unaligned dcl 3-11 ref 488 RW_ACCESS constant bit(3) initial packed unaligned dcl 3-11 ref 488 488 R_ACCESS constant bit(3) initial packed unaligned dcl 3-11 ref 488 SA_ACCESS constant bit(3) initial packed unaligned dcl 3-11 ref 453 SMA_ACCESS constant bit(3) initial packed unaligned dcl 3-11 ref 453 W_ACCESS constant bit(3) initial packed unaligned dcl 3-11 ref 488 abs_attributes 125 based structure level 2 dcl 1-36 set ref 231* 232* abs_message_version_6 constant fixed bin(17,0) initial dcl 1-34 ref 230 abs_pathname 106 based char(168) level 2 dcl 2-70 set ref 169* 221* abs_request_info based structure level 1 dcl 2-30 abs_request_info_ptr 000472 automatic pointer dcl 2-80 set ref 155* 156 159 161 184 190 194 204 215 226 232 236 241 243 245 245 245 245 245 248 261 261 264 264 275 276 276 285 286 287 289 293 296 296 303 304 305 306 310 311 312 313 316 322 326 329 335 341 343 345 347 354 357 359 360 361 361 368 370 374 379 381 395 397 abs_return_info based structure level 1 dcl 2-70 abs_return_info_ptr 000474 automatic pointer dcl 2-80 set ref 157* 158 163 167 168 169 186 204 215 221 394 395 397 398 449 463 469 484 493 499 abs_status_flags 126 based structure level 2 dcl 1-36 set ref 231* action_code 6 000170 automatic fixed bin(17,0) level 2 dcl 69 set ref 403* addr builtin function dcl 148 ref 409 409 aim_check_$in_range 000010 constant entry external dcl 83 ref 296 aok 000100 automatic bit(1) dcl 56 set ref 315* 316 328* 329 arg_count 5 based fixed bin(17,0) level 2 in structure "abs_request_info" dcl 2-30 in procedure "enter_abs_request_" ref 354 357 arg_count 100 based fixed bin(17,0) level 2 in structure "request" dcl 1-36 in procedure "enter_abs_request_" set ref 354* 355 361 384 arg_idx 000101 automatic fixed bin(17,0) dcl 57 set ref 357* 359 360 360 361 361* arg_lengths based fixed bin(17,0) array level 2 dcl 1-36 set ref 360* args based char level 2 dcl 1-36 set ref 361* arguments based varying char array level 2 dcl 2-30 ref 359 360 361 361 as_error_table_$illegal_hd_arg 000066 external static fixed bin(35,0) dcl 111 ref 319 as_error_table_$illegal_ip_arg 000070 external static fixed bin(35,0) dcl 111 ref 332 as_error_table_$ring_too_high 000072 external static fixed bin(35,0) dcl 111 ref 375 as_error_table_$ring_too_low 000074 external static fixed bin(35,0) dcl 111 ref 371 as_request_header based structure level 1 dcl 4-62 as_request_version_1 constant fixed bin(17,0) initial dcl 4-27 ref 405 asr_abs_command_info based structure level 1 dcl 5-11 attributes 171 based structure level 2 dcl 2-30 ref 232 attributes_mbz 171(06) based bit(30) level 3 packed packed unaligned dcl 2-30 ref 159 authrng 000102 automatic bit(72) array dcl 58 set ref 295* 296* bit_flags 66 based structure level 3 dcl 1-36 cleanup 000464 stack reference condition dcl 144 ref 170 clock builtin function dcl 148 ref 178 code 000106 automatic fixed bin(35,0) dcl 59 set ref 172* 173 173* 185* 187* 194* 196 196* 199* 201 202 206* 214* 217* 249* 264* 266* 267 267* 300* 301* 319* 320* 332* 333* 341* 342 342* 371* 372* 375* 376* 389* 392 392* 398* 400 400* 409* 412 412* comment based char level 2 in structure "request" dcl 1-36 in procedure "enter_abs_request_" set ref 347* comment based char level 2 in structure "abs_request_info" dcl 2-30 in procedure "enter_abs_request_" ref 347 comment_length 3 based fixed bin(17,0) level 2 dcl 2-30 ref 312 347 359 360 361 361 convert builtin function dcl 148 ref 245 249 395 copy_flags based structure level 1 dcl 6-8 cs_code 000507 automatic fixed bin(35,0) dcl 430 set ref 438* 441 441 443 445* 448 451* 465* 472* 481* 483 486* cs_dir parameter char(168) packed unaligned dcl 425 set ref 419 438* 445* 463* 463* 469* 469 481* 484* 484* 493* 493* 499* 499* cs_en parameter char(32) packed unaligned dcl 426 set ref 419 438* 463* 463* 469* 481* 484* 484* 493* 493* 499* 499* cs_mode 000520 automatic bit(36) dcl 432 set ref 445* 453 453 453 481* 488 488 488 488 488 488 488 cs_ring 000506 automatic fixed bin(17,0) dcl 429 set ref 437* 445* 481* cs_seg_type parameter bit(1) dcl 427 ref 419 443 488 488 cs_type 000510 automatic char(32) packed unaligned dcl 431 set ref 438* 477 477 477 cu_$level_get 000016 constant entry external dcl 86 ref 437 currentsize builtin function dcl 148 ref 384 409 409 default_cpu_limits 000107 automatic fixed bin(35,0) array dcl 59 set ref 288* 291 default_foreground_cpu_limit 000113 automatic fixed bin(35,0) dcl 59 set ref 288* 289 deferred_time 120 based fixed bin(71,0) level 2 in structure "request" dcl 1-36 in procedure "enter_abs_request_" set ref 285* deferred_time 20 based fixed bin(71,0) level 2 in structure "abs_request_info" dcl 2-30 in procedure "enter_abs_request_" ref 285 286 dirname 3 based char(168) level 3 dcl 1-36 set ref 212 223* ename 55 based char(32) level 3 dcl 1-36 set ref 224* er_code parameter fixed bin(35,0) dcl 528 ref 525 531 error_msg 6 based char(256) level 2 dcl 2-70 set ref 168* 186* 204* 215* 449* 463* 469* 484* 493* 499* error_table_$ai_out_range 000076 external static fixed bin(35,0) dcl 111 ref 300 error_table_$bad_subr_arg 000100 external static fixed bin(35,0) dcl 111 set ref 159* 248* error_table_$moderr 000102 external static fixed bin(35,0) dcl 111 set ref 495* error_table_$no_append 000106 external static fixed bin(35,0) dcl 111 set ref 453* error_table_$no_s_permission 000116 external static fixed bin(35,0) dcl 111 ref 441 error_table_$no_search_list 000110 external static fixed bin(35,0) dcl 111 ref 202 error_table_$noarg 000104 external static fixed bin(35,0) dcl 111 ref 185 error_table_$noentry 000112 external static fixed bin(35,0) dcl 111 ref 443 error_table_$not_seg_type 000114 external static fixed bin(35,0) dcl 111 set ref 501* error_table_$null_info_ptr 000120 external static fixed bin(35,0) dcl 111 set ref 156* 158* error_table_$pathlong 000122 external static fixed bin(35,0) dcl 111 ref 214 error_table_$unimplemented_version 000124 external static fixed bin(35,0) dcl 111 set ref 161* 163* expand_pathname_$add_suffix 000012 constant entry external dcl 84 ref 194 fs_util_$get_type 000022 constant entry external dcl 88 ref 438 fs_util_$get_user_access_modes 000024 constant entry external dcl 89 ref 445 481 get_group_id_$tag_star 000014 constant entry external dcl 85 ref 445 445 481 481 get_temp_segment_ 000020 constant entry external dcl 87 ref 172 hdr_version 2 based fixed bin(17,0) level 3 dcl 1-36 set ref 179* header 000170 automatic structure level 2 dcl 69 home_dir 203 based char(64) level 2 in structure "abs_request_info" dcl 2-30 in procedure "enter_abs_request_" ref 313 316 322 home_dir based char level 2 in structure "request" dcl 1-36 in procedure "enter_abs_request_" set ref 322* ignore_code 000114 automatic fixed bin(35,0) dcl 64 set ref 521* index builtin function dcl 148 ref 515 init_proc 223 based char(64) level 2 in structure "abs_request_info" dcl 2-30 in procedure "enter_abs_request_" ref 326 329 335 init_proc based char level 2 in structure "request" dcl 1-36 in procedure "enter_abs_request_" set ref 335* initial_ring 110 based fixed bin(17,0) level 2 in structure "request" dcl 1-36 in procedure "enter_abs_request_" set ref 379* initial_ring 202 based fixed bin(17,0) level 2 in structure "abs_request_info" dcl 2-30 in procedure "enter_abs_request_" ref 368 370 374 379 input_dirname 000206 automatic char(168) packed unaligned dcl 73 set ref 181* 194* 201* 211 220* 221 223 263 input_entryname 000115 automatic char(32) packed unaligned dcl 65 set ref 181* 194* 199* 210 220* 221 224 266* input_segment_dirname 25 based char(168) level 2 packed packed unaligned dcl 2-30 set ref 184 190 194* 204* 215* ioa_$rsnnl 000026 constant entry external dcl 90 ref 186 204 215 276 449 463 469 484 493 499 len_args 101 based fixed bin(17,0) level 2 dcl 1-36 set ref 356* 358 359* 359 361 384 len_comment 106 based fixed bin(17,0) level 2 dcl 1-36 set ref 312* 322 335 347 347 360 361 384 len_entry 000165 automatic fixed bin(17,0) dcl 67 set ref 210* 212 len_homedir 111 based fixed bin(17,0) level 2 dcl 1-36 set ref 316* 322 322 335 360 361 384 len_initproc 112 based fixed bin(17,0) level 2 dcl 1-36 set ref 329* 335 335 360 361 384 len_name 77 based fixed bin(17,0) level 2 dcl 1-36 set ref 256* 257 257 271 279 322 335 343 345 347 360 361 384 len_output 102 based fixed bin(17,0) level 2 dcl 1-36 set ref 270* 271 271 279 322 335 343 345 347 360 361 384 len_path 000166 automatic fixed bin(17,0) dcl 68 set ref 190* 192 211* 212 len_proxy 103 based fixed bin(17,0) level 2 dcl 1-36 set ref 276* 279 279 322 335 343 345 347 360 361 384 len_resource 104 based fixed bin(17,0) level 2 dcl 1-36 set ref 310* 322 335 340 343 345 347 360 361 384 len_sender 105 based fixed bin(17,0) level 2 dcl 1-36 set ref 311* 322 335 345 345 345 347 360 361 384 len_vpad 107 based fixed bin(17,0) level 2 dcl 1-36 set ref 350* 360 361 384 length builtin function dcl 148 ref 210 211 212 256 270 311 313 316 326 329 359 360 361 local_asraci 000170 automatic structure level 1 dcl 69 set ref 409 409 409 409 login_name 000125 automatic char(32) packed unaligned dcl 65 set ref 255* 256 257 max_arg_length 4 based fixed bin(17,0) level 2 dcl 2-30 ref 359 359 360 360 361 361 361 361 max_cpu_time 22 based fixed bin(35,0) level 2 in structure "abs_request_info" dcl 2-30 in procedure "enter_abs_request_" ref 287 293 max_cpu_time 122 based fixed bin(35,0) level 2 in structure "request" dcl 1-36 in procedure "enter_abs_request_" set ref 289* 291* 293* message_id 000202 automatic bit(72) dcl 70 set ref 389* message_seg_entry 000135 automatic char(32) packed unaligned dcl 65 set ref 238* 249* 389* 398* message_segment_$add_file 000030 constant entry external dcl 91 ref 389 message_segment_$get_message_count_file 000032 constant entry external dcl 92 ref 398 message_type 65 based fixed bin(17,0) level 3 dcl 1-36 set ref 225* msg_time based fixed bin(71,0) level 3 dcl 1-36 set ref 178* 394 404 must_search 000204 automatic bit(1) dcl 71 set ref 182* 192* 198 my_attributes 000530 automatic varying char(128) dcl 512 set ref 514* 515 name 127 based char level 2 dcl 1-36 set ref 257* next_arg_position 000205 automatic fixed bin(17,0) dcl 72 set ref 356* 358* 361 no_start_up 171(05) based bit(1) level 3 in structure "abs_request_info" packed packed unaligned dcl 2-30 in procedure "enter_abs_request_" ref 381 no_start_up 125(09) based bit(1) level 3 in structure "request" packed packed unaligned dcl 1-36 in procedure "enter_abs_request_" set ref 381* notify 66(01) based bit(1) level 4 in structure "request" packed packed unaligned dcl 1-36 in procedure "enter_abs_request_" set ref 226* notify 171(04) based bit(1) level 3 in structure "abs_request_info" packed packed unaligned dcl 2-30 in procedure "enter_abs_request_" ref 226 null builtin function dcl 148 ref 156 158 166 199 199 341 341 341 341 341 341 521 orig_queue 70 based fixed bin(17,0) level 3 dcl 1-36 set ref 237* 241* 243* 245* 245 249 291 395 output_dirname 000260 automatic char(168) packed unaligned dcl 73 set ref 261* 263* 268* 269* output_entryname 000145 automatic char(32) packed unaligned dcl 65 set ref 264* 266* 268* 269* output_file based char level 2 dcl 1-36 set ref 271* output_pathname 000332 automatic char(168) packed unaligned dcl 73 set ref 269* 270 271 output_segment_dirname 107 based char(168) level 2 packed packed unaligned dcl 2-30 ref 261 261 output_segment_entryname 161 based char(32) level 2 packed packed unaligned dcl 2-30 set ref 264 264* p_abs_request_info_ptr parameter pointer dcl 50 ref 11 155 p_abs_return_info_ptr parameter pointer dcl 50 ref 11 157 p_aok parameter bit(1) dcl 511 set ref 507 515* 516* p_attr parameter char(24) packed unaligned dcl 510 ref 507 515 p_code parameter fixed bin(35,0) dcl 52 set ref 11 153* 531* parse_resource_desc_$check 000034 constant entry external dcl 94 ref 341 pathname_ 000036 constant entry external dcl 95 ref 269 463 463 484 484 493 493 499 499 proxy 125(02) based bit(1) level 3 packed packed unaligned dcl 1-36 set ref 278* 281* proxy_name 000155 automatic char(32) packed unaligned dcl 65 in procedure "enter_abs_request_" set ref 276* 279 proxy_name based char level 2 in structure "request" dcl 1-36 in procedure "enter_abs_request_" set ref 279* proxy_personid 6 based char(22) level 2 dcl 2-30 set ref 275 276* proxy_projectid 14 based char(9) level 2 dcl 2-30 set ref 276* queue 17 based char(4) level 2 in structure "abs_request_info" dcl 2-30 in procedure "enter_abs_request_" ref 236 241 243 245 245 245 245 245 248 289 395 397 queue 4 based char(4) level 2 in structure "abs_return_info" dcl 2-70 in procedure "enter_abs_request_" set ref 395* 397* queue_msg_hdr based structure level 1 dcl 8-12 queue_msg_hdr_version_1 constant fixed bin(17,0) initial dcl 8-37 ref 179 queue_picture automatic picture(1) packed unaligned dcl 77 ref 249 395 queue_requests_count 5 based fixed bin(17,0) level 2 dcl 2-70 set ref 398* release_temp_segment_ 000040 constant entry external dcl 96 ref 521 reply_channel 2 000170 automatic fixed bin(71,0) level 3 dcl 69 set ref 407* reqp 000460 automatic pointer dcl 78 set ref 166* 172* 177 178 179 212 223 224 225 226 230 231 231 232 237 241 243 245 245 249 256 257 257 270 271 271 276 278 279 279 281 285 286 289 291 291 293 296 303 304 305 306 310 311 312 316 322 322 329 335 335 340 343 345 345 345 347 347 350 354 355 356 358 359 359 360 361 379 381 384 384 389* 389 394 395 404 521 521* request based structure level 1 dcl 1-36 set ref 384 request_header based structure level 2 dcl 1-36 set ref 177* request_id 2 based fixed bin(71,0) level 2 in structure "abs_return_info" dcl 2-70 in procedure "enter_abs_request_" set ref 167* 394* request_id 10 000170 automatic fixed bin(71,0) level 2 in structure "local_asraci" dcl 69 in procedure "enter_abs_request_" set ref 404* request_version 76 based fixed bin(17,0) level 2 dcl 1-36 set ref 230* requested_authorization 23 based bit(72) level 2 in structure "abs_request_info" dcl 2-30 in procedure "enter_abs_request_" set ref 296* 296 requested_authorization 123 based bit(72) level 2 in structure "request" dcl 1-36 in procedure "enter_abs_request_" set ref 296* resource 243 based char level 2 in structure "abs_request_info" dcl 2-30 in procedure "enter_abs_request_" ref 341 343 resource based char level 2 in structure "request" dcl 1-36 in procedure "enter_abs_request_" set ref 343* resource_length 2 based fixed bin(17,0) level 2 dcl 2-30 ref 310 341 343 347 359 360 361 361 restartable 125 based bit(1) level 3 in structure "request" packed packed unaligned dcl 1-36 in procedure "enter_abs_request_" set ref 303* restartable 171 based bit(1) level 3 in structure "abs_request_info" packed packed unaligned dcl 2-30 in procedure "enter_abs_request_" ref 303 reverse builtin function dcl 148 ref 190 ringrng 000462 automatic fixed bin(17,0) array dcl 79 set ref 369* 370 374 rs_len 000404 automatic fixed bin(17,0) dcl 75 set ref 186* 204* 215* 449* 463* 469* 484* 493* 499* rtrim builtin function dcl 148 ref 210 211 221 256 270 311 313 316 326 329 515 search builtin function dcl 148 ref 190 search_paths_$find_dir 000042 constant entry external dcl 97 ref 199 search_pname 000405 automatic char(168) packed unaligned dcl 76 set ref 199* 201 secondary_ok 125(06) based bit(1) level 3 in structure "request" packed packed unaligned dcl 1-36 in procedure "enter_abs_request_" set ref 305* secondary_ok 171(02) based bit(1) level 3 in structure "abs_request_info" packed packed unaligned dcl 2-30 in procedure "enter_abs_request_" ref 305 send_as_request_$no_block 000044 constant entry external dcl 98 ref 409 sender 172 based char(32) level 2 in structure "abs_request_info" dcl 2-30 in procedure "enter_abs_request_" ref 311 345 sender based char level 2 in structure "request" dcl 1-36 in procedure "enter_abs_request_" set ref 345* std_length 71 based fixed bin(17,0) level 3 dcl 1-36 set ref 384* 389 substr builtin function dcl 148 set ref 257 271 279 322 335 345 361* suffixed_name_$make 000046 constant entry external dcl 99 ref 249 264 suffixed_name_$new_suffix 000050 constant entry external dcl 100 ref 266 system_info_$abs_limits 000052 constant entry external dcl 101 ref 288 system_info_$default_absentee_queue 000054 constant entry external dcl 102 ref 241 truncate_absout 125(07) based bit(1) level 3 in structure "request" packed packed unaligned dcl 1-36 in procedure "enter_abs_request_" set ref 306* truncate_absout 171(03) based bit(1) level 3 in structure "abs_request_info" packed packed unaligned dcl 2-30 in procedure "enter_abs_request_" ref 306 type 1 000170 automatic fixed bin(17,0) level 3 dcl 69 set ref 406* unspec builtin function dcl 148 set ref 177* 231* 231* user_abs_attributes based structure level 1 dcl 10-25 user_deferred_indefinitely 125(05) based bit(1) level 3 in structure "request" packed packed unaligned dcl 1-36 in procedure "enter_abs_request_" set ref 304* user_deferred_indefinitely 171(01) based bit(1) level 3 in structure "abs_request_info" packed packed unaligned dcl 2-30 in procedure "enter_abs_request_" ref 304 user_deferred_until_time 125(01) based bit(1) level 3 packed packed unaligned dcl 1-36 set ref 286* user_info_$attributes 000056 constant entry external dcl 104 ref 514 user_info_$authorization_range 000060 constant entry external dcl 105 ref 295 user_info_$ring_range 000062 constant entry external dcl 106 ref 369 user_info_$whoami 000064 constant entry external dcl 107 ref 255 version based char(8) level 2 in structure "abs_return_info" dcl 2-70 in procedure "enter_abs_request_" ref 163 version based char(8) level 2 in structure "abs_request_info" dcl 2-30 in procedure "enter_abs_request_" ref 161 version 4 000170 automatic char(8) level 2 in structure "local_asraci" dcl 69 in procedure "enter_abs_request_" set ref 402* version 000170 automatic fixed bin(17,0) level 3 in structure "local_asraci" dcl 69 in procedure "enter_abs_request_" set ref 405* x_mode 000521 automatic bit(36) dcl 433 set ref 445* 481* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 10-38 ASR_AC_CANCEL internal static fixed bin(17,0) initial dcl 5-18 ASR_ADMIN_COMMAND internal static fixed bin(17,0) initial dcl 4-29 ASR_BUMP_USER internal static fixed bin(17,0) initial dcl 4-29 ASR_COM_CHANNEL_INFO internal static fixed bin(17,0) initial dcl 4-29 ASR_DAEMON_COMMAND internal static fixed bin(17,0) initial dcl 4-29 ASR_DEFER_IN_ADMIN_MODE internal static bit(1) initial array packed unaligned dcl 4-45 ASR_DIAL_OUT internal static fixed bin(17,0) initial dcl 4-29 ASR_DIAL_SERVER internal static fixed bin(17,0) initial dcl 4-29 ASR_FIRST_TYPE internal static fixed bin(17,0) initial dcl 4-29 ASR_FPE_CAUSES_LOGOUT internal static fixed bin(17,0) initial dcl 4-29 ASR_FPE_CAUSES_NEW_PROC internal static fixed bin(17,0) initial dcl 4-29 ASR_LAST_TYPE internal static fixed bin(17,0) initial dcl 4-29 ASR_NOTE_PNT_CHANGE internal static fixed bin(17,0) initial dcl 4-29 ASR_PROC_TERM_NOTIFY internal static fixed bin(17,0) initial dcl 4-29 ASR_REQUEST_NAMES internal static char(40) initial array packed unaligned dcl 4-48 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 3-33 Directory internal static fixed bin(17,0) initial dcl 7-56 E_ACCESS internal static bit(3) initial packed unaligned dcl 3-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 FS_OBJECT_TYPE_DIRECTORY internal static char(32) initial packed unaligned dcl 9-50 FS_OBJECT_TYPE_DM_FILE internal static char(32) initial packed unaligned dcl 9-50 Link internal static fixed bin(17,0) initial dcl 7-56 M_ACCESS internal static bit(3) initial packed unaligned dcl 3-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 N_ACCESS internal static bit(3) initial packed unaligned dcl 3-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 3-30 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 3-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 STATE_BUMPED internal static fixed bin(17,0) initial dcl 8-46 STATE_DEFERRED internal static fixed bin(17,0) initial dcl 8-42 STATE_DUPT internal static fixed bin(17,0) initial dcl 8-47 STATE_ELIGIBLE internal static fixed bin(17,0) initial dcl 8-44 STATE_RUNNING internal static fixed bin(17,0) initial dcl 8-45 STATE_TRANSITION internal static fixed bin(17,0) initial dcl 8-43 STATE_UNPROCESSED internal static fixed bin(17,0) initial dcl 8-41 SUFFIX_INFO_VERSION_1 internal static char(8) initial packed unaligned dcl 9-29 SWITCH_LIST_VERSION_1 internal static char(8) initial packed unaligned dcl 9-48 S_ACCESS internal static bit(3) initial packed unaligned dcl 3-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 Segment internal static fixed bin(17,0) initial dcl 7-56 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 alloc_switch_count automatic fixed bin(17,0) dcl 9-33 alloc_switch_name_count automatic fixed bin(17,0) dcl 9-33 arqi_arg_count automatic fixed bin(17,0) dcl 2-92 arqi_comment_length automatic fixed bin(17,0) dcl 2-90 arqi_max_arg_length automatic fixed bin(17,0) dcl 2-91 arqi_resource_length automatic fixed bin(17,0) dcl 2-89 asr_abs_command_info_ptr automatic pointer dcl 5-9 asr_reply_abs_command based structure level 1 dcl 5-23 asr_reply_ac_ptr automatic pointer dcl 5-21 status_area_ptr automatic pointer dcl 7-47 status_branch based structure level 1 dcl 7-8 status_entry_names based char(32) array dcl 7-47 status_link based structure level 1 dcl 7-38 status_pathname based char dcl 7-47 status_ptr automatic pointer dcl 7-47 suffix_info based structure level 1 dcl 9-12 suffix_info_ptr automatic pointer dcl 9-10 switch_list based structure level 1 dcl 9-37 switch_list_ptr automatic pointer dcl 9-33 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_SEG_ACCESS 003225 constant entry internal dcl 419 ref 220 268 EAR_RETURN 003224 constant label dcl 416 set ref 532 ERROR_RETURN 004206 constant entry internal dcl 525 ref 156 158 159 161 163 173 187 196 206 217 248 267 301 320 333 342 372 376 392 400 412 451 453 465 472 486 495 501 clean_up 004153 constant entry internal dcl 519 ref 170 414 530 enter_abs_request_ 000323 constant entry external dcl 11 get_attributes 004107 constant entry internal dcl 507 ref 315 328 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5222 5350 4467 5232 Length 6042 4467 126 456 533 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME enter_abs_request_ 750 external procedure is an external procedure. on unit on line 170 64 on unit CHECK_SEG_ACCESS internal procedure shares stack frame of external procedure enter_abs_request_. get_attributes internal procedure shares stack frame of external procedure enter_abs_request_. clean_up 78 internal procedure is called by several nonquick procedures. ERROR_RETURN internal procedure shares stack frame of external procedure enter_abs_request_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME enter_abs_request_ 000100 aok enter_abs_request_ 000101 arg_idx enter_abs_request_ 000102 authrng enter_abs_request_ 000106 code enter_abs_request_ 000107 default_cpu_limits enter_abs_request_ 000113 default_foreground_cpu_limit enter_abs_request_ 000114 ignore_code enter_abs_request_ 000115 input_entryname enter_abs_request_ 000125 login_name enter_abs_request_ 000135 message_seg_entry enter_abs_request_ 000145 output_entryname enter_abs_request_ 000155 proxy_name enter_abs_request_ 000165 len_entry enter_abs_request_ 000166 len_path enter_abs_request_ 000170 local_asraci enter_abs_request_ 000202 message_id enter_abs_request_ 000204 must_search enter_abs_request_ 000205 next_arg_position enter_abs_request_ 000206 input_dirname enter_abs_request_ 000260 output_dirname enter_abs_request_ 000332 output_pathname enter_abs_request_ 000404 rs_len enter_abs_request_ 000405 search_pname enter_abs_request_ 000460 reqp enter_abs_request_ 000462 ringrng enter_abs_request_ 000472 abs_request_info_ptr enter_abs_request_ 000474 abs_return_info_ptr enter_abs_request_ 000506 cs_ring CHECK_SEG_ACCESS 000507 cs_code CHECK_SEG_ACCESS 000510 cs_type CHECK_SEG_ACCESS 000520 cs_mode CHECK_SEG_ACCESS 000521 x_mode CHECK_SEG_ACCESS 000530 my_attributes get_attributes THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op shorten_stack ext_entry int_entry set_chars_eis index_chars_eis any_to_any_truncate_clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. aim_check_$in_range cu_$level_get expand_pathname_$add_suffix fs_util_$get_type fs_util_$get_user_access_modes get_group_id_$tag_star get_temp_segment_ ioa_$rsnnl message_segment_$add_file message_segment_$get_message_count_file parse_resource_desc_$check pathname_ release_temp_segment_ search_paths_$find_dir send_as_request_$no_block suffixed_name_$make suffixed_name_$new_suffix system_info_$abs_limits system_info_$default_absentee_queue user_info_$attributes user_info_$authorization_range user_info_$ring_range user_info_$whoami THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. as_error_table_$illegal_hd_arg as_error_table_$illegal_ip_arg as_error_table_$ring_too_high as_error_table_$ring_too_low error_table_$ai_out_range error_table_$bad_subr_arg error_table_$moderr error_table_$no_append error_table_$no_s_permission error_table_$no_search_list error_table_$noarg error_table_$noentry error_table_$not_seg_type error_table_$null_info_ptr error_table_$pathlong error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000317 153 000330 155 000332 156 000335 157 000347 158 000353 159 000366 161 000401 163 000415 166 000431 167 000433 168 000436 169 000441 170 000444 172 000466 173 000507 177 000513 178 000517 179 000521 181 000524 182 000532 184 000533 185 000540 186 000543 187 000573 190 000575 192 000607 194 000612 196 000644 198 000650 199 000652 201 000713 202 000721 204 000724 206 000763 210 000765 211 000777 212 001011 214 001014 215 001017 217 001047 220 001051 221 001053 223 001113 224 001120 225 001123 226 001124 230 001132 231 001134 232 001136 236 001166 237 001171 238 001173 239 001176 241 001177 243 001211 245 001216 248 001237 249 001247 255 001313 256 001333 257 001346 261 001351 263 001362 264 001365 266 001420 267 001454 268 001460 269 001462 270 001502 271 001515 275 001525 276 001532 278 001565 279 001570 280 001606 281 001607 285 001611 286 001614 287 001620 288 001622 289 001633 291 001643 292 001647 293 001650 295 001651 296 001660 300 001706 301 001711 303 001713 304 001721 305 001726 306 001733 310 001740 311 001742 312 001754 313 001756 315 001770 316 001775 319 002015 320 002020 322 002022 326 002066 328 002101 329 002106 332 002126 333 002131 335 002133 340 002204 341 002207 342 002257 343 002264 345 002312 347 002345 350 002413 354 002414 355 002417 356 002420 357 002422 358 002431 359 002435 360 002462 361 002564 363 002701 368 002703 369 002707 370 002716 371 002722 372 002725 373 002727 374 002730 375 002732 376 002735 379 002737 381 002743 384 002750 389 003033 392 003072 394 003076 395 003101 397 003123 398 003124 400 003151 402 003155 403 003157 404 003161 405 003163 406 003165 407 003167 409 003171 412 003214 414 003220 416 003224 419 003225 437 003227 438 003236 441 003263 443 003270 445 003277 448 003346 449 003350 451 003375 453 003377 455 003415 463 003416 465 003466 467 003470 469 003471 472 003541 473 003543 477 003544 481 003560 483 003630 484 003632 486 003704 488 003706 493 003746 495 004016 497 004025 499 004026 501 004077 505 004106 507 004107 514 004111 515 004122 516 004150 517 004151 519 004152 521 004160 522 004205 525 004206 530 004210 531 004214 532 004220 ----------------------------------------------------------- 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