COMPILATION LISTING OF SEGMENT imft_receive_object_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 03/15/89 0830.5 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* *********************************************************** */ 8 9 /* Receive storage system objects from a remote Multics */ 10 11 /* Created: October 1980 by G. Palter */ 12 /* Modified: 28 February 1981 by G. Palter to validate user's access to parent directory and improve messages used to 13* report incorrect access on the parent */ 14 /* Modified: April 1982 by G. Palter to finish initial implementation */ 15 /* Modified: July 1982 by G. Palter for true AIM support and to properly process I/O error abort control records */ 16 /* Modified: March 1983 by Robert Coren to recognize local I/O errors and to not hide imft_et_$unknown_status_code */ 17 /* Modified: March 1983 by Robert Coren to process requests for remote transfer */ 18 /* Modified: July 1983 by Robert Coren to fix bug in call to ioa_$rsnnl */ 19 /* Modified: August 1983 by Robert Coren for version 5 backup_control structure */ 20 /* Modified: November 1983 by Robert Coren to turn on ring-1 privilege for pull requests in order to call 21* queue_admin_$add_index with impunity */ 22 /* Modified: 1984-10-11 BIM for mseg_message_info */ 23 24 25 /****^ HISTORY COMMENTS: 26* 1) change(88-06-30,Beattie), approve(88-08-01,MCR7948), 27* audit(88-10-11,Farley), install(88-10-14,MR12.2-1165): 28* a) Add support for extend and update operations. 29* b) Add access check to support delete option in remote pulls. 30* c) Change all access checks to look for explicit ACLs at all times. 31* 2) change(88-11-10,Beattie), approve(88-08-01,PBF7948), 32* audit(88-11-14,Farley), install(88-11-14,MR12.2-1214): 33* Change declaration of local_request_number to match up with what is 34* coming from request_descriptor structure to prevent size condtions. 35* 3) change(88-11-16,Beattie), approve(88-08-01,PBF7948), 36* audit(88-11-16,Farley), install(88-11-16,MR12.2-1217): 37* Allow driver to access *.imft.acs through links in home directories 38* without having status access by first calling hcs_$get_link_target 39* to get actual pathname before checking access. 40* END HISTORY COMMENTS */ 41 42 43 /* format: style4,delnl,insnl,ifthenstmt,ifthen */ 44 45 imft_receive_object_: 46 procedure (P_imft_driver_info_ptr, P_fis_info_ptr, P_code); 47 48 imft_driver_info_ptr = P_imft_driver_info_ptr; 49 fis_info_ptr = P_fis_info_ptr; 50 P_code = 0; /* no errors yet */ 51 52 foreign_system_name = rtrim (imft_driver_info.foreign_system.name); 53 54 if fis_info.version ^= FIS_INFO_VERSION_1 then do; 55 P_code = error_table_$unimplemented_version; 56 return; 57 end; 58 59 if (fis_info.n_iocbs < 2) | (fis_info.n_iocbs > hbound (fis_info.iocbs, 1)) then do; 60 P_code = error_table_$bad_arg; 61 return; 62 end; 63 64 master_iocb_ptr = fis_info.iocbs (1); /* first switch is master terminal ... */ 65 data_iocb_ptr = fis_info.iocbs (2); /* ... and second is where objects arrives */ 66 67 if (master_iocb_ptr = null ()) | (data_iocb_ptr = null ()) then do; 68 P_code = error_table_$bad_arg; 69 return; 70 end; 71 72 system_area_ptr = get_system_free_area_ (); 73 74 /** for determining access */ 75 my_group_id = get_group_id_ (); /* Person.Project.Tag */ 76 /* strip tag */ 77 my_user_id = substr (my_group_id, 1, length (rtrim (my_group_id)) - 2); 78 current_ring = get_ring_ (); 79 80 /* One time initialization */ 81 82 if first_call then do; 83 84 errfile_dname = get_pdir_ (); /* place for reload's error files */ 85 errfile_ename = "IMFT." || unique_chars_ (""b); 86 errfile_pathname = pathname_ (errfile_dname, errfile_ename); 87 call hcs_$make_seg (errfile_dname, errfile_ename, "", RW_ACCESS_BIN, errfile_ptr, code); 88 if errfile_ptr = null () then do; /* shouldn't happen, but... */ 89 call iodd_msg_ (ERROR, MASTER, code, IMFT_RECEIVE_OBJECT_, 90 "Creating ^a as error file for notifications.", errfile_pathname); 91 P_code = code; 92 return; 93 end; 94 call hcs_$terminate_noname (errfile_ptr, ignore_code); 95 96 branch_info.version = create_branch_version_2; 97 /* initialize branch info structure */ 98 branch_info.dir_sw = "1"b; 99 branch_info.copy_sw = "0"b; 100 branch_info.chase_sw = "0"b; 101 branch_info.priv_upgrade_sw = "0"b; 102 branch_info.parent_ac_sw = "1"b; 103 branch_info.mbz1 = ""b; 104 branch_info.mode = SMA_ACCESS; 105 branch_info.mbz2 = ""b; 106 branch_info.rings (1), branch_info.rings (2), branch_info.rings (3) = 7; 107 branch_info.userid = my_group_id; 108 branch_info.bitcnt = 0; 109 branch_info.quota = 0; 110 branch_info.access_class = get_authorization_ (); 111 branch_info.dir_quota = 0; 112 temp_ename = "IMFT_dir." || unique_chars_ (""b); 113 temp_dname = pathname_ (errfile_dname, temp_ename); 114 115 call hcs_$create_branch_ (errfile_dname, temp_ename, addr (branch_info), code); 116 if code ^= 0 then do; 117 call iodd_msg_ (ERROR, MASTER, code, IMFT_RECEIVE_OBJECT_, 118 "Creating holding directory for extend and update file operations."); 119 P_code = code; 120 return; 121 end; 122 123 first_call = "0"b; /* all set */ 124 end; 125 126 /* Setup for operation */ 127 128 acl_ptr, errfile_ptr = null (); /* keep cleanup handler happy */ 129 130 errfile_attached, object_in_progress = "0"b; 131 132 on condition (cleanup) call cleanup_handler (); 133 134 /* 135* Main processing loop: Accept objects from the remote system indefintely or until input is available on the master 136* console. When input is available from the master, control returns to the caller when between objects to permit driver 137* command processing 138**/ 139 140 do while ("1"b); 141 142 call imft_find_input_switch_ (fis_info_ptr, "1"b, source, code); 143 if code ^= 0 then do; 144 call iodd_msg_ (ERROR, MASTER, code, IMFT_RECEIVE_OBJECT_, "Waiting for input from master or remote.") 145 ; 146 P_code = code; 147 go to RETURN_FROM_RECEIVE_OBJECT; 148 end; 149 150 if (source = 1) then /* input from master console */ 151 go to RETURN_FROM_RECEIVE_OBJECT; 152 153 /* Input is available from remote Multics: check for a BOF command */ 154 155 object_in_progress = "0"b; /* haven't started yet */ 156 157 local_icri.version = ICRI_VERSION_1; 158 local_icri.timeout = 5 * ONE_MINUTE; /* give it a chance to be read */ 159 local_icri.record_ptr = addr (input_buffer); 160 local_icri.record_max_lth = length (input_buffer); 161 162 call iox_$control (data_iocb_ptr, "read_command_record", addr (local_icri), code); 163 if code ^= 0 then call io_error (code, "Attempting to read from " || foreign_system_name || "."); 164 165 if (local_icri.record_type = IMFT_SYNC1) | (local_icri.record_type = IMFT_SYNC2) then 166 signal condition (imft_resynchronize_driver_); 167 168 else if local_icri.record_type = IMFT_LOGOUT then signal condition (imft_remote_logout_); 169 170 else if local_icri.record_type ^= IMFT_BOF & local_icri.record_type ^= IMFT_REMOTE_REQUEST then do; 171 call iodd_msg_ (NORMAL, MASTER, NO_ERROR, IMFT_RECEIVE_OBJECT_, "Unexpected command code ^d from ^a.", 172 local_icri.record_type, foreign_system_name); 173 P_code = error_table_$fatal_error; /* make driver reinitialize */ 174 go to RETURN_FROM_RECEIVE_OBJECT; 175 end; 176 local_bof_reply.abort_request = "0"b; /* assume everything is OK */ 177 local_bof_reply.abort_message = ""; 178 179 acl_count = 2; /* one entry each for driver and user */ 180 allocate general_acl in (system_area) set (acl_ptr); 181 general_acl.version = GENERAL_ACL_VERSION_1; 182 general_acl.count = acl_count; 183 general_acl (DRIVER_ACL_IDX).access_name = rtrim (my_user_id) || ".*"; 184 imft_chk_acl.version = IMFT_CHECK_ACL_VERSION_1; 185 imft_chk_acl.foreign_sys_name = foreign_system_name; 186 imft_chk_acl.gen_acl_ptr = acl_ptr; 187 imft_chk_acl.sys_auth_ceiling = imft_driver_info.local_system.access_ceiling; 188 imft_chk_acl.sys_auth_floor = imft_driver_info.local_system.access_floor; 189 190 object_in_progress = "1"b; /* in case of QUITs or other failures */ 191 192 if local_icri.record_type = IMFT_BOF then do; 193 194 /**** Object to be sent from other system. */ 195 196 local_bof_command = addr (input_buffer) -> bof_command; 197 198 local_request_number, local_bof_reply.request_number = local_bof_command.request_number; 199 200 /* 201* Determine resting place of the object, the user to notify, log the BOF command, inform the user that something is 202* coming, and validate that the driver and user have proper access 203**/ 204 205 if local_bof_command.foreign_path_given then do; 206 local_dirname = local_bof_command.foreign_dirname; 207 local_entname = local_bof_command.foreign_ename; 208 local_full_pathname = pathname_ (local_dirname, local_entname); 209 foreign_full_pathname = 210 pathname_ (local_bof_command.local_dirname, local_bof_command.local_ename); 211 end; 212 else do; 213 local_dirname = local_bof_command.local_dirname; 214 local_entname = local_bof_command.local_ename; 215 local_full_pathname, foreign_full_pathname = pathname_ (local_dirname, local_entname); 216 end; 217 218 if local_bof_command.foreign_user_given then 219 mail_destination = local_bof_command.foreign_user; 220 else mail_destination = local_bof_command.local_user; 221 222 foreign_user_id = rtrim (local_bof_command.local_user); 223 local_user_id = rtrim (mail_destination); 224 225 imft_chk_acl.user_auth = local_bof_command.local_user_authorization; 226 227 call translate_aim_attributes_ (imft_driver_info.foreign_system.aim_attributes_ptr, 228 local_bof_command.local_user_authorization, imft_driver_info.local_system.aim_attributes_ptr, 229 mail_access_class, code); 230 if code ^= 0 then /* submitter authorization is too high ... */ 231 mail_access_class = imft_driver_info.local_system.access_ceiling; 232 233 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", 234 "Request ^d ^a input q^d: receive^[ extension to^]^[ update to^] ^a ^a^/^2xfor ^a^[ from ^a^;^s^]^[^/^2xoriginally ^a^]", 235 local_bof_command.request_number, foreign_system_name, local_bof_command.queue, 236 local_bof_command.extend, local_bof_command.update, OBJECT_TYPES (local_bof_command.object_type), 237 local_full_pathname, mail_destination, local_bof_command.foreign_user_given, 238 local_bof_command.local_user, local_bof_command.foreign_path_given, foreign_full_pathname); 239 240 local_personid = before (mail_destination, "."); 241 call imft_pnt_interface_$validate_personid (local_personid, code); 242 if code ^= 0 then 243 call reject_request (code, "Validating user name """ || rtrim (local_personid) || """."); 244 245 call translate_aim_attributes_ (imft_driver_info.foreign_system.aim_attributes_ptr, 246 local_bof_command.object_access_class, imft_driver_info.local_system.aim_attributes_ptr, 247 local_bof_command.object_access_class, code); 248 if code ^= 0 then do; 249 call convert_aim_attributes_ (local_bof_command.object_access_class, octal_string); 250 call reject_request (code, 251 "Attempting to translate access class (" || rtrim (octal_string) || ") from " 252 || foreign_system_name || "."); 253 end; 254 255 call validate_access (); /* will abort if not OK */ 256 257 if local_bof_command.notify then 258 call notify_user ( 259 "Beginning reception of^[ extension to^]^[ update to^] ^a ^a from ^a (queue ^d).", 260 local_bof_command.extend, local_bof_command.update, 261 OBJECT_TYPES (local_bof_command.object_type), local_full_pathname, foreign_system_name, 262 local_bof_command.queue); 263 264 /* 265* If control reaches here, as much validation of the request has been performed as possible without actually invoking 266* backup_load_: Inform the other system that it may send the object 267**/ 268 269 local_icri.version = ICRI_VERSION_1; 270 local_icri.timeout = 5 * ONE_MINUTE; /* give the other system a decent chance */ 271 local_icri.record_type = IMFT_BOF; /* this is a reply to their BOF command */ 272 local_icri.record_ptr = addr (local_bof_reply); 273 local_icri.record_lth = 4 * currentsize (local_bof_reply); 274 275 call iox_$control (data_iocb_ptr, "write_reply_record", addr (local_icri), code); 276 if code ^= 0 then call io_error (code, "Attempting to reply to " || foreign_system_name || "."); 277 278 279 /* 280* Prepare to invoke backup_load_: construct description of reload and terminate the backup system to cleanup from last 281* use in this process (if any) 282**/ 283 284 static_backup_control.version = BACKUP_CONTROL_VERSION_5; 285 static_backup_control.tape_entry = nulle; 286 287 string (static_backup_control.options) = ""b; 288 static_backup_control.debug_sw = "1"b; 289 static_backup_control.error_file = "1"b; 290 static_backup_control.first = "1"b; 291 static_backup_control.allow_dir_overwrite = "1"b; 292 293 static_backup_control.preattached = "1"b; 294 /* we supply the I/O switch */ 295 static_backup_control.data_iocb = data_iocb_ptr; 296 297 static_backup_control.restore_access_class = "1"b; 298 /* restore the AIM access class even though not privileged */ 299 300 static_backup_control.enforce_minimum_ring = "1"b; 301 static_backup_control.minimum_ring = acs_write_bracket; 302 /* don't create anything lower than the ACS segment's write 303* bracket which should reflect local user's normal ring of 304* execution */ 305 306 static_backup_control.translate_access_class = "1"b; 307 static_backup_control.source_attributes_ptr = imft_driver_info.foreign_system.aim_attributes_ptr; 308 static_backup_control.target_attributes_ptr = imft_driver_info.local_system.aim_attributes_ptr; 309 /* translate foreign system's AIM attributes to our own */ 310 311 static_backup_control.request_count = 1;/* one and only one object to load */ 312 313 static_backup_control.object.path = foreign_full_pathname; 314 315 if local_bof_command.extend | local_bof_command.update then 316 static_backup_control.object.new_path = pathname_ (temp_dname, local_entname); 317 318 else if local_bof_command.foreign_path_given then 319 /* user requested it be put somewhere else */ 320 static_backup_control.object.new_path = local_full_pathname; 321 else static_backup_control.object.new_path = ""; 322 323 string (static_backup_control.object.switches) = ""b; 324 static_backup_control.object.no_primary_sw = "1"b; 325 if local_bof_command.object_type = MSF then 326 /* always flush old subtree if present */ 327 static_backup_control.object.trim_sw = "1"b; 328 else static_backup_control.object.trim_sw = 329 (local_bof_command.directory_creation_mode = REPLACE_DIRECTORIES); 330 331 call term_$refname ("backup_load_", ignore_code); 332 call term_$refname ("backup_map_", ignore_code); 333 call term_$refname ("bk_ss_", ignore_code); 334 335 call ios_$attach ("err_file", "file", errfile_pathname, "w", ios_status); 336 if ios_status.code ^= 0 then call abort_reception (ios_status.code, "Setting up backup error file."); 337 errfile_attached = "1"b; /* go it */ 338 339 /* Perform the reload: establish a handler in case anything went wrong during transmission and invoke backup_load_ */ 340 341 on condition (imft_read_abort_) call analyze_read_abort; 342 343 call backup_load_ (addr (static_backup_control), code); 344 345 RETURN_FROM_BACKUP_LOAD: /* backup_load_ will read the EOF record */ 346 call analyze_backup_results (code); 347 348 if ^backup_errors_detected then /* reload occurred without any troubles ... */ 349 if local_bof_command.extend | local_bof_command.update then do; 350 351 string (cpo.copy_items) = ""b; 352 cpo.version = COPY_OPTIONS_VERSION_1; 353 cpo.caller_name = IMFT_RECEIVE_OBJECT_; 354 cpo.copy_items.entry_bound = "1"b; 355 string (cpo.flags) = ""b; 356 cpo.flags.delete = "1"b; 357 cpo.copy_items.extend = local_bof_command.extend; 358 cpo.copy_items.update = local_bof_command.update; 359 cpo.flags.raw = "1"b; 360 cpo.source_dir = temp_dname; 361 cpo.source_name = local_entname; 362 cpo.target_dir = local_dirname; 363 cpo.target_name = local_entname; 364 365 on sub_error_ call copy_sub_err_handler (); 366 367 call copy_ (addr (cpo)); 368 revert sub_error_; 369 end; 370 371 COPY_OPERATION_FINISHED: 372 if ^backup_errors_detected then /* reload occurred without any troubles ... */ 373 if local_bof_command.notify then 374 call notify_user ( 375 "Received^[ extension to^]^[ update to^] ^a ^a without^[ further^] errors from ^a (queue ^d).", 376 local_bof_command.extend, local_bof_command.update, 377 OBJECT_TYPES (local_bof_command.object_type), local_full_pathname, 378 foreign_backup_errors, foreign_system_name, local_bof_command.queue); 379 380 if ^imft_driver_info.old_version then do; 381 /* other end is expecting eof_reply to confirm */ 382 /* successful reception */ 383 local_eof_reply.request_number = local_request_number; 384 local_eof_reply.error = backup_errors_detected; 385 386 local_icri.version = ICRI_VERSION_1; 387 local_icri.timeout = 5 * ONE_MINUTE; 388 local_icri.record_type = IMFT_EOF; 389 local_icri.record_ptr = addr (local_eof_reply); 390 local_icri.record_lth = 4 * currentsize (local_eof_reply); 391 392 call iox_$control (data_iocb_ptr, "write_reply_record", addr (local_icri), code); 393 if code ^= 0 then call io_error (code, "Attempting to reply to " || foreign_system_name || "."); 394 end; 395 396 if backup_errors_detected | foreign_backup_errors then 397 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", 398 "^2xNon-fatal errors in transfer detected by ^[^a^;^s^]^[ and ^]^[^a^]", 399 foreign_backup_errors, foreign_system_name, foreign_backup_errors & backup_errors_detected, 400 backup_errors_detected, imft_driver_info.local_system.name); 401 402 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", "^2xReceived request ^d.", 403 local_bof_command.request_number); 404 405 end; /* if sending to other system */ 406 407 /**** Request to queue transfers from here to the other system. */ 408 409 else do; 410 local_rr = addr (input_buffer) -> remote_request; 411 local_request_number, local_bof_reply.request_number = local_rr.request_number; 412 local_dirname = local_rr.dirname; 413 local_starname = local_rr.ename; 414 local_full_pathname = pathname_ (local_dirname, local_starname); 415 416 if local_rr.foreign_path_given then 417 foreign_equalname = pathname_ (local_rr.foreign_dirname, local_rr.foreign_ename); 418 else foreign_equalname = local_full_pathname; 419 420 if local_rr.foreign_user_given then 421 mail_destination = local_rr.foreign_user; 422 else mail_destination = local_rr.local_user; 423 424 foreign_user_id = rtrim (local_rr.local_user); 425 local_user_id = rtrim (mail_destination); 426 general_acl (USER_ACL_IDX).access_name = local_user_id || ".*"; 427 428 call translate_aim_attributes_ (imft_driver_info.foreign_system.aim_attributes_ptr, 429 local_rr.local_user_authorization, imft_driver_info.local_system.aim_attributes_ptr, 430 mail_access_class, code); 431 if code ^= 0 then /* submitter authorization is too high ... */ 432 mail_access_class = imft_driver_info.local_system.access_ceiling; 433 434 if ^imft_driver_info.remote_request_allowed 435 /* this site doesn't permit it */ 436 then 437 call reject_request (NO_ERROR, 438 foreign_system_name || " does not have permission to request transfers."); 439 440 local_personid = before (mail_destination, "."); 441 call imft_pnt_interface_$validate_personid (local_personid, code); 442 if code ^= 0 then 443 call reject_request (code, "Validating user name """ || rtrim (local_personid) || """."); 444 445 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", 446 "Request ^d ^a input q^d: transmit^[ extension^]^[ update^] ^a^/^2xfrom ^a^[ for ^a^;^s^]^[^/^2xas ^a^]", 447 local_request_number, foreign_system_name, local_rr.queue, local_rr.extend, local_rr.update, 448 local_full_pathname, mail_destination, local_rr.foreign_user_given, local_rr.local_user, 449 local_rr.foreign_path_given, foreign_equalname); 450 451 call validate_acs (R_ACCESS); 452 user_ring = max (local_rr.local_user_ring, acs_write_bracket); 453 454 call submit_request; 455 456 /* 457* if we return to here, we submitted the request, or part of it, anyway, so tell 458* the other system 459**/ 460 461 local_icri.version = ICRI_VERSION_1; 462 local_icri.timeout = 5 * ONE_MINUTE; /* give the other system a decent chance */ 463 local_icri.record_type = IMFT_BOF; /* this is a reply to their BOF command */ 464 local_icri.record_ptr = addr (local_bof_reply); 465 local_icri.record_lth = 4 * currentsize (local_bof_reply); 466 467 call ioa_$rsnnl ("Queued ^d request^[^;s^] on ^a for request ^d^[ with ^d error^[^;s^]^].", 468 local_bof_reply.abort_message, ignore_fb21, n_submitted, (n_submitted = 1), 469 imft_driver_info.local_system.name, local_request_number, (n_not_submitted > 0), n_not_submitted, 470 (n_not_submitted = 1)); 471 472 call iox_$control (data_iocb_ptr, "write_reply_record", addr (local_icri), code); 473 if code ^= 0 then call io_error (code, "Attempting to reply to " || foreign_system_name || "."); 474 475 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", 476 "^2xQueued ^d request^[^;s^] for request ^d^[ with ^d error^[^;s^]^].", n_submitted, 477 (n_submitted = 1), local_request_number, (n_not_submitted > 0), n_not_submitted, 478 (n_not_submitted = 1)); 479 480 end; /* if queueing transfers from here to other system */ 481 482 object_in_progress = "0"b; /* all done with this one */ 483 484 WAIT_FOR_NEXT_OBJECT: 485 end; /* do while ("1"b) */ 486 487 RETURN_FROM_RECEIVE_OBJECT: 488 call cleanup_handler (); 489 490 return; 491 492 /* 493* Handler for imft_read_abort_: This condition is raised during reading of backup records if transmission was 494* prematurely terminated at the remote system 495**/ 496 497 analyze_read_abort: 498 procedure (); 499 500 local_icri.version = ICRI_VERSION_1; 501 local_icri.timeout = 5 * ONE_MINUTE; /* give the remote system sometime */ 502 local_icri.record_ptr = addr (input_buffer); 503 local_icri.record_max_lth = length (input_buffer); 504 505 call iox_$control (data_iocb_ptr, "get_abort_info", addr (local_icri), code); 506 if code ^= 0 then call io_error (code, "Attempting to read from " || foreign_system_name || "."); 507 508 if (local_icri.record_type = IMFT_SYNC1) | (local_icri.record_type = IMFT_SYNC2) then do; 509 call notify_user ("Request for ^a deferred: ^a requested driver to reinitialize.", local_full_pathname, 510 foreign_system_name); 511 signal condition (imft_resynchronize_driver_); 512 end; 513 514 else if local_icri.record_type = IMFT_LOGOUT then do; 515 call notify_user ("Request for ^a deferred: ^a's output driver disconnected.", local_full_pathname, 516 foreign_system_name); 517 signal condition (imft_remote_logout_); 518 end; 519 520 else if local_icri.record_type = IMFT_EOF then do;/* backup_load_ will keep reading after object is loaded: */ 521 /* the EOF record after the object is trapped here */ 522 eof_command_ptr = local_icri.record_ptr; 523 go to RETURN_FROM_BACKUP_LOAD; 524 end; 525 526 527 else if local_icri.record_type = IMFT_ABORT then do; 528 abort_command_ptr = local_icri.record_ptr; 529 if abort_command.reason = IMFT_ABORT_IO_ERROR | abort_command.reason = IMFT_ABORT_LOCAL_IO_ERROR then do; 530 if abort_command.reason = IMFT_ABORT_IO_ERROR 531 /* came from foreign system */ 532 then 533 abort_command.code = imft_convert_status_code_$decode (abort_command.code); 534 call io_error (abort_command.code, "Attempting to read from " || foreign_system_name || "."); 535 end; 536 else if abort_command.reason = IMFT_ABORT_ABORTED then 537 call abort_reception (NO_ERROR, foreign_system_name || " terminated transmission prematurely."); 538 else if abort_command.reason = IMFT_ABORT_RESTARTED then 539 call abort_reception (NO_ERROR, "Operator at " || foreign_system_name || " restarted the request."); 540 else if (abort_command.reason = IMFT_ABORT_DEFERRED) | (abort_command.reason = IMFT_ABORT_SAVED) then 541 call abort_reception (NO_ERROR, 542 "Operator at " || foreign_system_name || " deferred transmission until a later time."); 543 else if abort_command.reason = IMFT_ABORT_CANCELLED then 544 call abort_reception (NO_ERROR, "Operator at " || foreign_system_name || " cancelled transmission."); 545 else call abort_reception (NO_ERROR, 546 foreign_system_name || " terminated transmission for an unknown reason."); 547 end; 548 549 else do; 550 call iodd_msg_ (NORMAL, MASTER, NO_ERROR, IMFT_RECEIVE_OBJECT_, "Unexpected command code ^d from ^a.", 551 local_icri.record_type, foreign_system_name); 552 P_code = error_table_$fatal_error; /* make driver reinitialize */ 553 go to RETURN_FROM_RECEIVE_OBJECT; 554 end; 555 end analyze_read_abort; 556 557 /* Cleanup before returning to caller */ 558 559 cleanup_handler: 560 procedure (); 561 562 if acl_ptr ^= null () then do; 563 free general_acl in (system_area); 564 acl_ptr = null (); 565 end; 566 567 if errfile_ptr ^= null () then do; 568 call hcs_$terminate_noname (errfile_ptr, ignore_code); 569 errfile_ptr = null (); 570 end; 571 572 if errfile_attached then do; 573 call ios_$detach ("err_file", "", "", ios_status); 574 call hcs_$truncate_file (errfile_dname, errfile_ename, 0, ignore_code); 575 call hcs_$set_bc (errfile_dname, errfile_ename, 0, ignore_code); 576 errfile_attached = "0"b; 577 end; 578 579 if object_in_progress then do; 580 call iodd_msg_ (NORMAL, MASTER, NO_ERROR, IMFT_RECEIVE_OBJECT_, "Processing of request ^d terminated.", 581 local_request_number); 582 object_in_progress = "0"b; 583 end; 584 585 return; 586 587 end cleanup_handler; 588 589 copy_sub_err_handler: 590 procedure; 591 592 dcl 1 ci aligned like condition_info; 593 dcl local_error_message character (1024); 594 595 call find_condition_info_ (null (), addr (ci), ignore_code); 596 sub_error_info_ptr = ci.info_ptr; 597 598 if sub_error_info.name ^= "copy_" then do; 599 CONTINUE_TO_SIGNAL: 600 call continue_to_signal_ (ignore_code); 601 goto END_COPY_HANDLER; 602 end; 603 else if sub_error_info.info_ptr = null then goto CONTINUE_TO_SIGNAL; 604 else if copy_error_info.copy_options_ptr ^= addr (cpo) then goto CONTINUE_TO_SIGNAL; 605 606 code = sub_error_info.status_code; 607 if code ^= 0 then do; 608 if code = error_table_$unsupported_operation & copy_error_info.operation = "entry bound" then 609 go to COPY_OPERATION_FINISHED; 610 611 backup_errors_detected = "1"b; 612 call convert_status_code_ (code, shortinfo, code_message); 613 call ioa_$rsnnl ("Error occured in extend/update operation:^[^s^; ^a^]^/(^a)", local_error_message, 614 ignore_fb21, (sub_error_info.info_string = ""), sub_error_info.info_string, code_message); 615 call notify_user (local_error_message); 616 end; 617 go to COPY_OPERATION_FINISHED; 618 619 END_COPY_HANDLER: 620 end copy_sub_err_handler; 621 622 /****^ 623* Validates access to receive a transfer request: Let TPerson.TProj be the user who is to receive the file/subtree, 624* SPerson.SProj be the user (on the other system) who is sending the file/subtree, MPerson.MProj be the user who is 625* running the daemon, and let TDir be the directory into which the file/subtree will be placed. Then: 626* 627* (1) SPerson.SProj must have explicit write access to the segment: 628* >udd>TProj>TPerson>SSite.imft.acs 629* where SSite is the name of the foreign system (the foreign_system keyword in the I/O daemon tables), 630* 631* (2) TPerson.TProj and MPerson.MProj must have explicit "sma" access to TDir, and 632* 633* (3) the access class of DIR must be equal to the access class of the file/subtree from the other system. 634* 635* To perform these checks, MPerson.MProj requires "s" access to the parent of TDir and to >udd>TProj>TPerson. 636* 637* The user's access to the directory is checked using the highest value of the following 3 items; 638* (1) write bracket of the user's ACS segment on local system as the user's ring of execution. 639* (2) the foreign user ring of execution. 640* (3) driver ring of execution. 641**/ 642 643 validate_access: 644 procedure () options (non_quick); /* because it has lots of automatic storage */ 645 646 dcl dir_access_class bit (72) aligned; 647 dcl dir_access_class_text character (256); 648 dcl local_error_message character (1024); 649 dcl local_pathname character (168); 650 dcl object_access_class_text character (256); 651 dcl parent_dirname character (168); 652 dcl parent_ename character (32); 653 dcl transfer_ring fixed binary (3); 654 655 call validate_acs (W_ACCESS); /* check access on ACS */ 656 transfer_ring = max (local_bof_command.local_user_ring, acs_write_bracket); 657 658 if local_dirname = ">" then /* can't transfer to the root */ 659 call reject_request (NO_ERROR, "IMFT can not create branches under the root."); 660 661 /**** Both driver and user must have explicit SMA access to parent directory */ 662 663 call expand_pathname_ (local_dirname, parent_dirname, parent_ename, ignore_code); 664 imft_chk_acl.dirname = parent_dirname; 665 imft_chk_acl.ename = parent_ename; 666 imft_chk_acl.dir_access = SMA_ACCESS; 667 imft_chk_acl.seg_access = RW_ACCESS; 668 imft_chk_acl.check_aim = "0"b; /* check_object_acl AIM check is not right for parent dir */ 669 imft_chk_acl.effective_ring = transfer_ring; 670 imft_chk_acl.bad_acl_idx = DRIVER_ACL_IDX; /* by default, error is driver's */ 671 general_acl (USER_ACL_IDX).access_name = local_user_id || ".*"; 672 673 call imft_util_$check_object_acl (addr (imft_chk_acl), code); 674 if code = 0 then code = imft_chk_acl.error_code; 675 if code ^= 0 then do; 676 if code = error_table_$unimplemented_version then call fatal_ica_error (); 677 call set_va_dir_sma_error_message (imft_chk_acl.bad_acl_idx); 678 call reject_request (code, local_error_message); 679 end; /* if code ^= 0 */ 680 681 code = 0; 682 do idx = 1 to hbound (general_acl.entries, 1); 683 if general_acl (idx).status_code ^= 0 then do; 684 code = general_acl (idx).status_code; 685 call convert_status_code_ (code, shortinfo, code_message); 686 call set_va_dir_sma_error_message (idx); 687 call notify_user (REQ_TERMED_STR, code ^= 0, code_message, local_error_message, local_dirname); 688 end; 689 end; 690 691 if code ^= 0 then 692 call reject_request_no_notify (NO_ERROR, 693 "Insufficient driver/user access to parent directory to receive object."); 694 695 /**** Check AIM of parent directory. */ 696 697 call hcs_$get_access_class ((parent_dirname), (parent_ename), dir_access_class, code); 698 if code ^= 0 then 699 call reject_request (code, "Attempting to determine access class of parent directory to object."); 700 701 if ^aim_check_$equal (dir_access_class, local_bof_command.object_access_class) then do; 702 dir_access_class_text, object_access_class_text = ""; 703 call convert_authorization_$to_string_short (dir_access_class, dir_access_class_text, ignore_code); 704 call convert_authorization_$to_string_short (local_bof_command.object_access_class, 705 object_access_class_text, ignore_code); 706 call ioa_$rsnnl ( 707 "Access class of ^a (^[^a^;^ssystem_low^]) must be equal to access class of object on ^a (^[^a^;^ssystem_low^]).", 708 local_error_message, ignore_fb21, local_dirname, (dir_access_class_text ^= ""), dir_access_class_text, 709 foreign_system_name, (object_access_class_text ^= ""), object_access_class_text); 710 call reject_request (error_table_$ai_restricted, local_error_message); 711 end; 712 713 if local_bof_command.extend | local_bof_command.update then do; 714 715 /**** Object must already exist and have explicit ACL entries of RW for both driver and user. */ 716 717 local_pathname = pathname_ (local_dirname, local_entname); 718 imft_chk_acl.dirname = local_dirname; 719 imft_chk_acl.ename = local_entname; 720 imft_chk_acl.dir_access = SMA_ACCESS; 721 imft_chk_acl.seg_access = RW_ACCESS; 722 imft_chk_acl.check_aim = "1"b; 723 imft_chk_acl.bad_acl_idx = DRIVER_ACL_IDX; /* by default, error is driver's */ 724 general_acl (USER_ACL_IDX).access_name = local_user_id || ".*"; 725 726 call imft_util_$check_object_acl (addr (imft_chk_acl), code); 727 if code = 0 then code = imft_chk_acl.error_code; 728 if code ^= 0 then do; 729 if code = error_table_$unimplemented_version then call fatal_ica_error (); 730 call reject_request (NO_ERROR, (imft_chk_acl (imft_chk_acl.bad_acl_idx).error_message)); 731 end; 732 733 code = 0; 734 do idx = 1 to hbound (general_acl.entries, 1); 735 if general_acl (idx).status_code ^= 0 then do; 736 code = general_acl (idx).status_code; 737 call notify_user (REQ_TERMED_STR, "0"b, code_message, imft_chk_acl (idx).error_message, 738 local_pathname); /* code_message is already in .error_message */ 739 end; 740 end; 741 742 if code ^= 0 then 743 call reject_request_no_notify (NO_ERROR, 744 "Insufficient driver/user access to extend or update object."); 745 746 if ^(imft_chk_acl.type = ENTRY_TYPE_SEGMENT | imft_chk_acl.type = ENTRY_TYPE_MSF) then do; 747 748 if index (imft_chk_acl.type, "-") = 1 then 749 local_type = substr (imft_chk_acl.type, 2); 750 else local_type = imft_chk_acl.type; 751 752 call ioa_$rsnnl ("Can only ^[extend^]^[update^] with segments or MSFs, not with ^a type object.", 753 local_error_message, ignore_fb21, local_bof_command.extend, local_bof_command.update, local_type) 754 ; 755 call reject_request (NO_ERROR, local_error_message); 756 end; 757 758 end; /* if extend or update */ 759 760 return; /* passes */ 761 762 set_va_dir_sma_error_message: 763 proc (p_idx); 764 765 dcl p_idx fixed binary parameter; 766 767 if code = error_table_$moderr | code = error_table_$user_not_found then 768 call ioa_$rsnnl ( 769 "^[Driver^;User^] (^a) must have an explicit ACL entry of SMA to parent directory of object to be received.", 770 local_error_message, ignore_fb21, (p_idx = DRIVER_ACL_IDX), general_acl (p_idx).access_name, 771 local_pathname); 772 else call ioa_$rsnnl ( 773 "Unable to determine ^a's and ^a's access to parent directory of object to be received.", 774 local_error_message, ignore_fb21, local_user_id, my_user_id); 775 776 end set_va_dir_sma_error_message; 777 778 end validate_access; 779 780 /* 781* Check for the existence of the ACS described in introductory comment to validate_access, 782* and ensure that the foreign user has the appropriate access (W for transferring 783* objects to this system, or R for requesting that they be transferred to SSite). 784**/ 785 786 validate_acs: 787 procedure (access_required); 788 789 dcl access_required bit (3) parameter; 790 791 dcl link_dirname character (168); 792 dcl link_ename character (32); 793 dcl local_dirname character (168); 794 dcl local_ename character (32); 795 dcl local_error_message character (1024); 796 dcl local_pathname character (168); 797 798 local_dirname, imft_chk_acl.dirname = 799 ">udd>" || after (local_user_id, ".") || ">" || before (local_user_id, "."); 800 local_ename, imft_chk_acl.ename = foreign_system_name || ".imft.acs"; 801 local_pathname = pathname_ (local_dirname, local_ename); 802 /* ACS path could be a link in "home" directory to which */ 803 /* daemon doesn't even have status access, */ 804 /* find actual path */ 805 call hcs_$get_link_target (local_dirname, local_ename, link_dirname, link_ename, code); 806 807 if code = 0 | code = error_table_$noentry then do; 808 809 /** previous call could have changed pathname */ 810 imft_chk_acl.dirname = link_dirname; 811 imft_chk_acl.ename = link_ename; 812 local_pathname = pathname_ (link_dirname, link_ename); 813 end; 814 815 if code ^= 0 then go to VALIDATE_ACS_ERROR; 816 817 imft_chk_acl.dir_access = S_ACCESS; 818 imft_chk_acl.seg_access = access_required; 819 imft_chk_acl.check_aim = "0"b; 820 imft_chk_acl.effective_ring = 0; /* we want to know what it is without getting an error */ 821 imft_chk_acl.bad_acl_idx = DRIVER_ACL_IDX; /* by default, error is driver's */ 822 general_acl (USER_ACL_IDX).access_name = foreign_user_id || ".*"; 823 824 call imft_util_$check_object_acl (addr (imft_chk_acl), code); 825 if code = 0 then code = imft_chk_acl.error_code; 826 if code ^= 0 then do; 827 828 if code = error_table_$unimplemented_version then call fatal_ica_error (); 829 830 VALIDATE_ACS_ERROR: 831 call set_acs_error_message (); 832 call reject_request (code, local_error_message); 833 end; 834 835 if general_acl (USER_ACL_IDX).status_code ^= 0 then do; 836 code = general_acl (USER_ACL_IDX).status_code; 837 call set_acs_error_message (); /* code can be set to 0 in this call */ 838 call reject_request (code, local_error_message); 839 end; 840 841 acs_write_bracket = max (imft_chk_acl.object_ring, current_ring); 842 /* restrict transfers to user's probable ring of */ 843 /* execution unless we operate in a higher ring */ 844 845 return; 846 847 /**** Support routine for validate_acs to generate an applicable error message. */ 848 849 set_acs_error_message: 850 proc; 851 852 if code = error_table_$noentry then do; 853 call ioa_$rsnnl ("^a has not established an ACS segment in ^a to control transfers ^[from^;to^] ^a.", 854 local_error_message, ignore_fb21, local_user_id, imft_chk_acl.dirname, 855 (access_required = W_ACCESS), foreign_system_name); 856 code = 0; /* no need to include the error_table_ message */ 857 end; 858 else if code = error_table_$moderr | code = error_table_$user_not_found then 859 call ioa_$rsnnl ("^a has not given ^a permission to transfer files ^[from^;to^] ^a ^[to^;from^] ^a.", 860 local_error_message, ignore_fb21, local_user_id, foreign_user_id, (access_required = W_ACCESS), 861 foreign_system_name, (access_required = W_ACCESS), imft_driver_info.local_system.name); 862 else call ioa_$rsnnl ("Attempting to determine ^a's access to ^a.", local_error_message, ignore_fb21, 863 foreign_user_id, local_pathname); 864 865 end set_acs_error_message; 866 867 end validate_acs; 868 869 /* 870* Submit one or more requests for transfer to the foreign system as specified by 871* the starname given in a request for remote transfer. This code is essentially lifted 872* from enter_imft_request 873**/ 874 875 submit_request: 876 procedure; 877 878 dcl queue_index fixed bin; 879 dcl request_type character (24); 880 dcl transmit_driver_id character (32); 881 dcl queue_ename character (32); 882 dcl local_error_message character (1024); 883 dcl queue_picture picture "9"; 884 dcl access_mode bit (36) aligned; 885 dcl queue_mode bit (36) aligned; 886 dcl chase_control bit (2); 887 dcl have_starname bit (1); 888 dcl submitted_a_request bit (1); 889 dcl reported_error bit (1); 890 dcl reported_dir_sma_warning bit (1); 891 dcl entry_idx fixed bin; 892 dcl priv_code fixed bin (35); 893 894 dcl 1 local_ft_request aligned like ft_request; 895 896 queue_index = 0; /* for cleanup handler */ 897 priv_code = -1; /* so it won't look like we turned it on */ 898 star_entry_ptr, star_names_ptr = null (); 899 900 on cleanup 901 begin; 902 if star_names_ptr ^= null () then do; 903 free star_names in (system_area); 904 star_names_ptr = null (); 905 end; 906 907 if star_entry_ptr ^= null () then do; 908 free star_entries in (system_area); 909 star_entry_ptr = null (); 910 end; 911 912 if queue_index ^= 0 then do; 913 call message_segment_$close (queue_index, ignore_code); 914 queue_index = 0; 915 end; 916 917 if priv_code = 0 /* we turned ring 1 privilege on */ 918 then 919 call system_privilege_$ring1_priv_off (ignore_code); 920 921 end; 922 923 local_user_access_id = local_user_id || ".*"; 924 request_type = "To_" || foreign_system_name; 925 queue_ename = rtrim (request_type) || "_" || convert (queue_picture, local_rr.queue) || ".ms"; 926 927 /* turn on ring 1 privilege in preparation for call to queue_admin_$add_index */ 928 929 on linkage_error ; /* if we don't have access to the gate, we'll risk it */ 930 call system_privilege_$ring1_priv_on (priv_code); /* sets code to 0 iff privilege was off before and */ 931 revert linkage_error; /* we turned it on */ 932 933 call message_segment_$open (imft_data_$queue_dirname, queue_ename, queue_index, code); 934 if code ^= 0 then call reject_request (code, "Opening " || pathname_ (imft_data_$queue_dirname, queue_ename)); 935 936 call hcs_$get_user_access_modes (imft_data_$queue_dirname, queue_ename, local_user_access_id, (user_ring), 937 access_mode, queue_mode, code); 938 if code ^= 0 then 939 call reject_request (code, 940 "Could not determine access to " || pathname_ (imft_data_$queue_dirname, queue_ename)); 941 942 if (queue_mode & A_EXTENDED_ACCESS) ^= A_EXTENDED_ACCESS 943 /* not enough access at all */ 944 then 945 call reject_request (NO_ERROR, 946 "User has insufficient access to " || rtrim (request_type) || " queue " 947 || convert (queue_picture, local_rr.queue)); 948 949 call iod_info_$driver_access_name (request_type, transmit_driver_id, code); 950 if code ^= 0 then do; 951 call ioa_$rsnnl ("Receiving driver attempting to determine transmiting driver ident on ^a system.", 952 local_error_message, ignore_fb21, imft_driver_info.local_system.name); 953 call reject_request (code, local_error_message); 954 end; 955 general_acl (DRIVER_ACL_IDX).access_name = transmit_driver_id; 956 957 /* Fill in constant portion of the ft_request */ 958 959 unspec (local_ft_request) = ""b; 960 961 local_ft_request.header.hdr_version = queue_msg_hdr_version_1; 962 local_ft_request.header.message_type = FT_MESSAGE_TYPE; 963 local_ft_request.header.notify = local_rr.notify; 964 local_ft_request.header.orig_queue = local_rr.queue; 965 local_ft_request.header.std_length = currentsize (local_ft_request); 966 local_ft_request.delete = local_rr.delete; 967 local_ft_request.extend = local_rr.extend; 968 local_ft_request.update = local_rr.update; 969 970 local_ft_request.version = FT_REQUEST_VERSION_1; 971 if foreign_user_id ^= local_user_id then do; /* foreign user is different from local user */ 972 local_ft_request.foreign_user = foreign_user_id; 973 local_ft_request.foreign_user_given = "1"b; 974 end; 975 976 local_ft_request.foreign_path_given = local_rr.foreign_path_given; 977 chase_control = local_rr.chase_control; 978 979 n_submitted = 0; 980 n_not_submitted = 0; 981 982 call check_star_name_$entry (local_starname, code); 983 have_starname = (code ^= 0); 984 reported_dir_sma_warning = "0"b; /* SMA access warning is to be reported once per request */ 985 986 if have_starname then do; /* more than one object */ 987 star_entry_ptr, star_names_ptr = null (); 988 submitted_a_request, reported_error = "0"b; 989 if chase_control = ALWAYS_CHASE then 990 call hcs_$star_ (local_dirname, local_starname, star_ALL_ENTRIES, system_area_ptr, star_entry_count, 991 star_entry_ptr, star_names_ptr, code); 992 else call hcs_$star_ (local_dirname, local_starname, star_BRANCHES_ONLY, system_area_ptr, star_entry_count, 993 star_entry_ptr, star_names_ptr, code); 994 if code ^= 0 then call reject_request (code, "Attempting to process star names."); 995 996 do entry_idx = 1 to star_entry_count; 997 call process_single_request (local_dirname, star_names (star_entries (entry_idx).nindex)); 998 999 PROCESS_NEXT_STAR_ENTRY: 1000 end; 1001 free star_names in (system_area); 1002 free star_entries in (system_area); 1003 star_entry_ptr, star_names_ptr = null (); 1004 if ^submitted_a_request then 1005 if reported_error then 1006 call reject_request_no_notify (NO_ERROR, NO_OBJ_FND_SATISFY_REQ_STR); 1007 else call reject_request (NO_ERROR, NO_OBJ_FND_SATISFY_REQ_STR); 1008 end; 1009 1010 else call process_single_request (local_dirname, local_starname); 1011 1012 call message_segment_$close (queue_index, ignore_code); 1013 1014 if priv_code = 0 /* if we turned ring-1 privilege on */ 1015 then 1016 call system_privilege_$ring1_priv_off (ignore_code); 1017 1018 return; 1019 1020 /* Internal to submit_request: Performs all necessary processing to submit a single request */ 1021 1022 process_single_request: 1023 procedure (p_dirname, p_ename); 1024 1025 dcl (p_dirname, p_ename) character (*) parameter; 1026 1027 dcl (local_dirname, local_pathname, parent_dirname, real_dirname) character (168); 1028 dcl (local_ename, parent_ename, real_ename, foreign_ename) character (32); 1029 1030 dcl entry_bit_count fixed binary (24); 1031 dcl entry_type fixed binary (2); 1032 1033 dcl local_error_message character (1024); 1034 dcl request_id character (19); 1035 dcl the_message_id bit (72) aligned; 1036 1037 dcl 1 auto_mseg_message_info aligned like mseg_message_info; 1038 1039 local_dirname = p_dirname; 1040 local_ename = p_ename; 1041 local_pathname = pathname_ (local_dirname, local_ename); 1042 1043 /* Determine the type of entry and, if requested and the entry is a link, determine its actual target */ 1044 1045 call hcs_$status_minf (local_dirname, local_ename, HCS_DONT_CHASE, entry_type, entry_bit_count, code); 1046 if code ^= 0 then 1047 COULD_NOT_STATUS_BRANCH: 1048 call abort_single_request (code, local_pathname, "Determining type of object."); 1049 1050 if (entry_type = star_LINK) then 1051 if (^have_starname & (chase_control = DEFAULT_CHASE)) | (chase_control = ALWAYS_CHASE) then do; 1052 call hcs_$get_link_target (local_dirname, local_ename, real_dirname, real_ename, code); 1053 if code ^= 0 then 1054 call abort_single_request (code, local_pathname, "Determining link target of object."); 1055 1056 local_dirname = real_dirname; 1057 local_ename = real_ename; 1058 call hcs_$status_minf (local_dirname, local_ename, HCS_DONT_CHASE, entry_type, entry_bit_count, 1059 code); 1060 if code ^= 0 then go to COULD_NOT_STATUS_BRANCH; 1061 end; 1062 else call abort_single_request (error_table_$link, local_pathname, 1063 "Object to be transmitted can not be a link."); 1064 1065 /**** 1066* Check the user's and the daemon's access to object. Both must have 1067* explicit non-null access to the branch. 1068**/ 1069 1070 imft_chk_acl.dirname = local_dirname; 1071 imft_chk_acl.ename = local_ename; 1072 imft_chk_acl.dir_access = S_ACCESS; 1073 imft_chk_acl.seg_access = R_ACCESS; 1074 imft_chk_acl.check_aim = "0"b; /* output daemon will check AIM */ 1075 imft_chk_acl.effective_ring = user_ring; 1076 imft_chk_acl.bad_acl_idx = DRIVER_ACL_IDX; /* by default, error is driver's */ 1077 general_acl (USER_ACL_IDX).access_name = local_user_id || ".*"; 1078 1079 call imft_util_$check_object_acl (addr (imft_chk_acl), code); 1080 if code = 0 then code = imft_chk_acl.error_code; 1081 if code ^= 0 then 1082 if code = error_table_$unimplemented_version then 1083 call fatal_ica_error (); 1084 else call abort_single_request (NO_ERROR, local_pathname, 1085 (imft_chk_acl (imft_chk_acl.bad_acl_idx).error_message)); 1086 1087 code = 0; 1088 do idx = 1 to hbound (general_acl.entries, 1); 1089 if general_acl (idx).status_code ^= 0 then do; 1090 code = general_acl (idx).status_code; 1091 call notify_user (REQ_TERMED_STR, "0"b, code_message, imft_chk_acl (idx).error_message, 1092 local_pathname); /* code_message is already in .error_message */ 1093 end; 1094 end; 1095 1096 if code ^= 0 then 1097 call abort_single_request_no_notify (NO_ERROR, local_pathname, 1098 "Insufficient driver/user access to object."); 1099 1100 /* If -file or -subtree was specified, verify that the branch is of the appropriate type */ 1101 1102 if ^(imft_chk_acl.type = ENTRY_TYPE_DIRECTORY) & ^local_rr.include_files then 1103 if ^have_starname then 1104 call reject_request (NO_ERROR, "Files may not be specified when ""-subtree"" is used."); 1105 1106 if (imft_chk_acl.type = ENTRY_TYPE_DIRECTORY) & ^local_rr.include_subtrees then 1107 if ^have_starname then do; 1108 call ioa_$rsnnl ("Subtrees may not be specified when ""-^[file^]^[extend^]^[update^]"" is used.", 1109 local_error_message, ignore_fb21, ^(local_rr.extend | local_rr.update), local_rr.extend, 1110 local_rr.update); 1111 call reject_request (NO_ERROR, local_error_message); 1112 end; 1113 1114 if (local_rr.extend | local_rr.update) 1115 & ^((imft_chk_acl.type = ENTRY_TYPE_SEGMENT) | (imft_chk_acl.type = ENTRY_TYPE_MSF)) then do; 1116 1117 if index (imft_chk_acl.type, "-") = 1 then 1118 local_type = substr (imft_chk_acl.type, 2); 1119 else local_type = imft_chk_acl.type; 1120 1121 call ioa_$rsnnl ("Can only ^[extend^]^[update^] with segments or MSFs, not with ^a type objects.", 1122 local_error_message, ignore_fb21, local_rr.extend, local_rr.update, local_type); 1123 call abort_single_request (NO_ERROR, local_pathname, local_error_message); 1124 end; 1125 1126 /* Construct the foreign pathname if -target_pathname was specified */ 1127 1128 if local_ft_request.foreign_path_given then do; 1129 call get_equal_name_ (local_ename, local_rr.foreign_ename, foreign_ename, code); 1130 if code ^= 0 then 1131 call abort_single_request (code, local_pathname, 1132 "Applying " || rtrim (local_rr.foreign_ename) || " to " || rtrim (local_ename)); 1133 end; 1134 1135 /**** 1136* Must always have S access to containing or parent directory for both 1137* driver and user. 1138* 1139* If the -delete option was used or local object is being extended or 1140* updated, both driver and user must have explicit SMA. 1141**/ 1142 1143 call expand_pathname_ (local_dirname, parent_dirname, parent_ename, ignore_code); 1144 imft_chk_acl.dirname = parent_dirname; 1145 imft_chk_acl.ename = parent_ename; 1146 imft_chk_acl.dir_access = S_ACCESS; 1147 imft_chk_acl.seg_access = R_ACCESS; 1148 imft_chk_acl.check_aim = "0"b; /* AIM checking done by output daemon */ 1149 imft_chk_acl.effective_ring = user_ring; 1150 imft_chk_acl.bad_acl_idx = DRIVER_ACL_IDX; /* by default, error is driver's */ 1151 general_acl (USER_ACL_IDX).access_name = local_user_id || ".*"; 1152 1153 call imft_util_$check_object_acl (addr (imft_chk_acl), code); 1154 if code = 0 then code = imft_chk_acl.error_code; 1155 if code ^= 0 then do; 1156 if code = error_table_$unimplemented_version then call fatal_ica_error (); 1157 call set_dir_s_error_message (imft_chk_acl.bad_acl_idx); 1158 call reject_request (code, local_error_message); 1159 end; /* if code ^= 0 */ 1160 1161 code = 0; 1162 do idx = 1 to hbound (general_acl.entries, 1); 1163 if general_acl (idx).status_code ^= 0 then do; 1164 code = general_acl (idx).status_code; 1165 call set_dir_s_error_message (idx); 1166 call convert_status_code_ (code, shortinfo, code_message); 1167 call notify_user (REQ_TERMED_STR, code ^= 0, code_message, local_error_message, local_pathname); 1168 end; 1169 end; 1170 1171 if code ^= 0 then 1172 call reject_request_no_notify (NO_ERROR, "Insufficient driver/user access to parent directory."); 1173 1174 /**** 1175* SMA access is not critical here. S access for both driver and user has 1176* already been checked above and was all right. The transmitting daemon may 1177* be able to do the proper checking. In case it does fail, the transfer 1178* will still occur; only the delete operation will not be done. Since this 1179* access check is done on the parent directory, there is no need to go 1180* through this check for each match on a star name once it has been 1181* reported. 1182**/ 1183 1184 if local_rr.delete & ^reported_dir_sma_warning then do; 1185 /* need SMA to parent directory for this case */ 1186 1187 imft_chk_acl.dir_access = SMA_ACCESS; 1188 imft_chk_acl.seg_access = RW_ACCESS; 1189 imft_chk_acl.bad_acl_idx = DRIVER_ACL_IDX; 1190 /* by default, error is driver's */ 1191 general_acl (USER_ACL_IDX).access_name = local_user_id || ".*"; 1192 1193 call imft_util_$check_object_acl (addr (imft_chk_acl), code); 1194 if code = 0 then code = imft_chk_acl.error_code; 1195 if code ^= 0 then do; 1196 if code = error_table_$unimplemented_version then call fatal_ica_error (); 1197 call set_dir_sma_error_message (imft_chk_acl.bad_acl_idx); 1198 call notify_user (local_error_message); 1199 end; /* if code ^= 0 */ 1200 1201 do idx = 1 to hbound (general_acl.entries, 1); 1202 if general_acl (idx).status_code ^= 0 then do; 1203 code = general_acl (idx).status_code; 1204 call set_dir_sma_error_message (idx); 1205 call notify_user (local_error_message); 1206 end; 1207 end; 1208 1209 end; /* if local_rr.delete */ 1210 1211 /* Submit the request */ 1212 1213 local_ft_request.header.msg_time = clock (); 1214 1215 local_ft_request.header.dirname = local_dirname; 1216 local_ft_request.header.ename = local_ename; 1217 1218 if local_ft_request.foreign_path_given then do; 1219 local_ft_request.foreign_dirname = local_rr.foreign_dirname; 1220 local_ft_request.foreign_ename = foreign_ename; 1221 end; 1222 1223 if entry_type = star_DIRECTORY then 1224 local_ft_request.directory_creation_mode = local_rr.directory_creation_mode; 1225 else local_ft_request.directory_creation_mode = "00"b; 1226 1227 mseg_message_info_ptr = addr (auto_mseg_message_info); 1228 unspec (mseg_message_info) = ""b; 1229 mseg_message_info.version = MSEG_MESSAGE_INFO_V1; 1230 mseg_message_info.ms_ptr = addr (local_ft_request); 1231 mseg_message_info.ms_len = 36 * currentsize (local_ft_request); 1232 mseg_message_info.sender_id = rtrim (mail_destination) || ".*"; 1233 mseg_message_info.sender_level = current_ring; 1234 mseg_message_info.sender_authorization, mseg_message_info.ms_access_class = mail_access_class; 1235 mseg_message_info.sender_max_authorization = mail_access_class; 1236 mseg_message_info.sender_process_id = ""b; 1237 mseg_message_info.ms_id = ""b; 1238 1239 call queue_admin_$add_index (queue_index, mseg_message_info_ptr, the_message_id, code); 1240 if code ^= 0 then call abort_single_request (code, local_pathname, "Attempting to add request."); 1241 1242 if local_rr.notify then do; /* let the user know it worked */ 1243 request_id = request_id_ (local_ft_request.header.msg_time); 1244 call notify_user ("Submitted request ^a to transfer ^a to ^a (queue ^d)", (substr (request_id, 7, 8)), 1245 local_pathname, foreign_system_name, local_rr.queue); 1246 end; 1247 1248 n_submitted = n_submitted + 1; /* keep count */ 1249 submitted_a_request = "1"b; /* needed by starname processor */ 1250 1251 return; 1252 1253 /* This particular request cannot be processed, others may be OK. */ 1254 1255 abort_single_request: 1256 procedure (p_code, p_pathname, p_message); 1257 1258 dcl p_code fixed binary (35) parameter; 1259 dcl p_pathname character (*) parameter; 1260 dcl p_message character (*) parameter; 1261 1262 dcl code_message character (100) aligned; 1263 dcl notify bit (1); 1264 1265 notify = "1"b; 1266 go to ABORT_SINGLE_JOIN; 1267 1268 abort_single_request_no_notify: 1269 entry (p_code, p_pathname, p_message); 1270 1271 notify = "0"b; 1272 1273 ABORT_SINGLE_JOIN: 1274 if have_starname /* there might be others that we can do */ 1275 then do; 1276 if p_code ^= NO_ERROR then 1277 call convert_status_code_ (p_code, shortinfo, code_message); 1278 else code_message = ""; 1279 1280 if notify then 1281 call notify_user ("Request not submitted: ^[^a^/^2x^;^s^]^a^/^2x(^a)", (p_code ^= NO_ERROR), 1282 code_message, p_message, p_pathname); 1283 1284 n_not_submitted = n_not_submitted + 1; 1285 /* count unsuccessful tries */ 1286 reported_error = "1"b; /* so we'll know not to do it later */ 1287 go to PROCESS_NEXT_STAR_ENTRY; /* non-local goto into submit_request */ 1288 end; 1289 1290 else if notify then call reject_request (p_code, p_message); 1291 else call reject_request_no_notify (p_code, p_message); 1292 1293 end abort_single_request; 1294 1295 set_dir_s_error_message: 1296 proc (p_idx); 1297 1298 dcl p_idx fixed binary parameter; 1299 1300 if code = error_table_$moderr | code = error_table_$user_not_found then 1301 call ioa_$rsnnl ( 1302 "^[Driver^;User^] (^a) must have an explicit ACL entry of S to parent directory of object.", 1303 local_error_message, ignore_fb21, (p_idx = DRIVER_ACL_IDX), general_acl (p_idx).access_name) 1304 ; 1305 else call ioa_$rsnnl ( 1306 "Unable to determine access of ^[driver^;user^] (^a) to the parent directory of object.", 1307 local_error_message, ignore_fb21, (p_idx = DRIVER_ACL_IDX), general_acl (p_idx).access_name) 1308 ; 1309 1310 end set_dir_s_error_message; 1311 1312 set_dir_sma_error_message: 1313 proc (p_idx); 1314 1315 dcl p_idx fixed binary parameter; 1316 1317 reported_dir_sma_warning = "1"b; /* don't want to come through here again */ 1318 /* for current star name */ 1319 if code = error_table_$moderr | code = error_table_$user_not_found then 1320 call ioa_$rsnnl ( 1321 "Warning: ^[Driver^;User^] (^a) must have an explicit ACL entry of SMA to parent directory of object to be deleted.^/^2xRequest will still be submitted.^/^2x(^a)", 1322 local_error_message, ignore_fb21, (p_idx = DRIVER_ACL_IDX), general_acl (p_idx).access_name, 1323 local_pathname); 1324 else do; 1325 call convert_status_code_ (code, shortinfo, code_message); 1326 call ioa_$rsnnl ( 1327 "Warning: ^a^/^2xUnable to determine access of ^[driver^;user^] (^a) to the parent directory of object to be deleted.^/^2xRequest will still be submitted.^/^2x(^a)", 1328 local_error_message, ignore_fb21, code_message, (p_idx = DRIVER_ACL_IDX), 1329 general_acl (p_idx).access_name, local_pathname); 1330 end; 1331 1332 end set_dir_sma_error_message; 1333 1334 end process_single_request; 1335 1336 end submit_request; 1337 1338 /* Reject the transfer request: send a reply to the remote system indicating the reason for the failure */ 1339 1340 reject_request: 1341 procedure (p_code, p_message); 1342 1343 dcl p_code fixed binary (35) parameter; 1344 dcl p_message character (*) parameter; 1345 1346 dcl code_message character (100) aligned; 1347 dcl send_to_user bit (1); 1348 1349 send_to_user = "1"b; 1350 go to REJECT_JOIN; 1351 1352 reject_request_no_notify: 1353 entry (p_code, p_message); 1354 1355 send_to_user = "0"b; 1356 1357 REJECT_JOIN: 1358 if p_code ^= NO_ERROR then 1359 call convert_status_code_ (p_code, shortinfo, code_message); 1360 else code_message = ""; 1361 1362 local_bof_reply.abort_request = "1"b; /* tell remote system to not send it */ 1363 local_bof_reply.abort_message = rtrim (code_message) || " " || p_message; 1364 1365 if send_to_user then 1366 call notify_user (REQ_TERMED_STR, p_code ^= 0, code_message, p_message, local_full_pathname); 1367 1368 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", "**Request ^d: ^a ^a", local_request_number, code_message, p_message) 1369 ; 1370 1371 local_icri.version = ICRI_VERSION_1; 1372 local_icri.timeout = 5 * ONE_MINUTE; 1373 local_icri.record_type = IMFT_BOF; /* this is a reply to their BOF command */ 1374 local_icri.record_ptr = addr (local_bof_reply); 1375 local_icri.record_lth = 4 * currentsize (local_bof_reply); 1376 1377 call iox_$control (data_iocb_ptr, "write_reply_record", addr (local_icri), code); 1378 if code ^= 0 then call io_error (code, "Attempting to reply to " || foreign_system_name || "."); 1379 1380 call cleanup_handler (); /* cleanup after this one */ 1381 1382 go to WAIT_FOR_NEXT_OBJECT; 1383 1384 end reject_request; 1385 1386 /* Abort receiving an object */ 1387 1388 abort_reception: 1389 procedure (p_code, p_message); 1390 1391 dcl p_code fixed binary (35) parameter; 1392 dcl p_message character (*) parameter; 1393 1394 dcl code_message character (100) aligned; 1395 1396 if p_code ^= 0 then 1397 call convert_status_code_ (p_code, shortinfo, code_message); 1398 else code_message = ""; 1399 1400 call notify_user ("Request for ^a terminated: ^a ^a", local_full_pathname, code_message, p_message); 1401 1402 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", "**Request ^d: ^a ^a", local_bof_command.request_number, 1403 code_message, p_message); 1404 1405 call cleanup_handler (); /* cleanup after it */ 1406 1407 go to WAIT_FOR_NEXT_OBJECT; 1408 1409 end abort_reception; 1410 1411 /**** Unable to communicate with imft_util_$check_object_acl with current version of imft_check_acl structure. */ 1412 1413 fatal_ica_error: 1414 procedure (); 1415 1416 P_code = code; 1417 call iodd_msg_ (NORMAL, MASTER, NO_ERROR, IMFT_RECEIVE_OBJECT_, 1418 "Invalid imft_check_acl version error from call to imft_util_$check_object_acl."); 1419 go to RETURN_FROM_RECEIVE_OBJECT; 1420 1421 end fatal_ica_error; 1422 1423 /* Respond to an I/O error on the line: return to command level */ 1424 1425 io_error: 1426 procedure (p_io_code, p_message); 1427 1428 dcl p_io_code fixed binary (35) parameter; 1429 dcl p_message character (*) parameter; 1430 1431 dcl code_message character (100) aligned; 1432 1433 if object_in_progress & local_bof_command.notify then do; 1434 if p_io_code ^= 0 then /* let the user know */ 1435 call convert_status_code_ (p_io_code, shortinfo, code_message); 1436 else code_message = ""; 1437 call notify_user ("Request for ^a terminated: ^a ^a", local_full_pathname, code_message, p_message); 1438 end; 1439 1440 call iodd_msg_ (ERROR, MASTER, p_io_code, IMFT_RECEIVE_OBJECT_, "^a", p_message); 1441 1442 P_code = p_io_code; /* reflect to the driver which will reinitialize */ 1443 1444 if imft_driver_info.debug_mode & (p_io_code ^= imft_et_$timeout) then signal condition (imft_debug_); 1445 /* give programmer a look: timeouts are handled by imft_io_ */ 1446 1447 go to RETURN_FROM_RECEIVE_OBJECT; 1448 1449 end io_error; 1450 1451 /* Send a notification to the user */ 1452 1453 notify_user: 1454 procedure () options (variable); 1455 1456 dcl notify_msg character (notify_msg_buffer_used) based (addr (notify_msg_buffer)); 1457 dcl notify_msg_buffer_used fixed binary (21); 1458 1459 call ioa_$general_rs (cu_$arg_list_ptr (), 1, 2, notify_msg_buffer, notify_msg_buffer_used, "0"b, "1"b); 1460 1461 call imft_mail_interface_$deliver_message ((foreign_system_name), mail_destination, INTERACTIVE_DELIVERY, "", 1462 notify_msg, mail_access_class, ignore_code); 1463 1464 return; 1465 1466 end notify_user; 1467 1468 /* 1469* Analyze results of using backup_load_: assumes any possible errors will be reflected both in the error file and return 1470* code from the backup_load_ call 1471**/ 1472 1473 analyze_backup_results: 1474 procedure (P_code); 1475 1476 dcl P_code fixed binary (35) parameter; /* return from backup_load_ */ 1477 1478 dcl errfile_bc fixed binary (24); 1479 dcl backup_code fixed binary (35); 1480 dcl backup_message character (20) varying; 1481 1482 backup_errors_detected = "0"b; /* until proven otherwise */ 1483 1484 if ^imft_driver_info.old_version then 1485 foreign_backup_errors = eof_command.backup_errors; 1486 else foreign_backup_errors = "0"b; 1487 1488 call ios_$detach ("err_file", "", "", ios_status); 1489 1490 call hcs_$initiate_count (errfile_dname, errfile_ename, "", errfile_bc, 00b, errfile_ptr, ignore_code); 1491 1492 if errfile_ptr ^= null () then /* there is an error file there */ 1493 if errfile_bc ^= 0 then /* it's not empty: something went wrong */ 1494 call report_backup_errors (); 1495 1496 else do; /* no error file, but make sure reload really worked */ 1497 if ^static_backup_control.object.found /* didn't find anything with the right name */ 1498 then do; 1499 backup_code = error_table_$noentry; 1500 backup_message = "not received from"; 1501 call notify_backup_failure (); 1502 end; 1503 1504 else if ^static_backup_control.object.loaded 1505 /* found it, but couldn't load it */ 1506 then do; 1507 backup_code = static_backup_control.object.status_code; 1508 /* hopefully this will be something informative */ 1509 backup_message = "not loaded from"; 1510 call notify_backup_failure (); 1511 end; 1512 1513 else if foreign_backup_errors then 1514 call notify_user ("Errors in transmission of ^a; see your mail at ^a.", local_full_pathname, 1515 foreign_system_name); 1516 end; 1517 1518 call hcs_$truncate_file (errfile_dname, errfile_ename, 0, ignore_code); 1519 call hcs_$set_bc (errfile_dname, errfile_ename, 0, ignore_code); 1520 1521 errfile_attached = "0"b; 1522 1523 return; 1524 1525 /* Internal to analyze_backup_results: reports errors detected by backup_load_ and recorded in the error file */ 1526 1527 report_backup_errors: 1528 procedure (); 1529 1530 dcl error_file character (errfile_lth) based (errfile_ptr); 1531 dcl errfile_lth fixed binary (21); 1532 dcl mail_subject character (1024) varying; 1533 1534 backup_errors_detected = "1"b; /* let top-level know not to notify */ 1535 1536 errfile_lth = divide ((errfile_bc + 8), 9, 21, 0); 1537 1538 call ioa_$rsnnl ("Received^[ extension to^]^[ update to^] ^a ^a with errors from ^a (queue ^d)", 1539 mail_subject, ignore_fb21, local_bof_command.extend, local_bof_command.update, 1540 OBJECT_TYPES (local_bof_command.object_type), local_full_pathname, foreign_system_name, 1541 local_bof_command.queue); 1542 1543 call imft_mail_interface_$deliver_message ((foreign_system_name), mail_destination, ORDINARY_DELIVERY, 1544 (mail_subject), error_file, mail_access_class, ignore_code); 1545 1546 return; 1547 1548 end report_backup_errors; 1549 1550 1551 /* Internal to analyze_backup_results: reports failure of backup when no error file present */ 1552 1553 notify_backup_failure: 1554 procedure (); 1555 1556 dcl code_message character (100) aligned; 1557 dcl (mail_subject, mail_message) character (1024) varying; 1558 1559 call convert_status_code_ (backup_code, shortinfo, code_message); 1560 call ioa_$rsnnl ("^a^/^a ^a ^a (queue ^d).^/^a", mail_message, ignore_fb21, code_message, 1561 local_full_pathname, backup_message, foreign_system_name, local_bof_command.queue, 1562 static_backup_control.object.error_name); 1563 1564 call ioa_$rsnnl ("Received^[ extension to^]^[ update to^] ^a ^a with errors from ^a (queue ^d)", 1565 mail_subject, ignore_fb21, local_bof_command.extend, local_bof_command.update, 1566 OBJECT_TYPES (local_bof_command.object_type), local_full_pathname, foreign_system_name, 1567 local_bof_command.queue); 1568 1569 call imft_mail_interface_$deliver_message ((foreign_system_name), mail_destination, ORDINARY_DELIVERY, 1570 (mail_subject), (mail_message), mail_access_class, ignore_code); 1571 1572 backup_errors_detected = "1"b; 1573 return; 1574 1575 end notify_backup_failure; 1576 1577 end analyze_backup_results; 1578 1579 /* Represents the null entry value: if called, the current object is aborted */ 1580 1581 nulle: 1582 procedure () options (variable); 1583 1584 call abort_reception (NO_ERROR, "Backup system requested tape label."); 1585 1586 return; 1587 1588 end nulle; 1589 1590 /* Parameters */ 1591 1592 dcl P_imft_driver_info_ptr pointer parameter; /* -> description of the IMFT driver */ 1593 dcl P_fis_info_ptr pointer parameter; /* -> list of I/O switches: 1st is master terminal; 2nd is the 1594* connection to the remote system */ 1595 dcl P_code fixed binary (35) parameter; 1596 1597 /* Remaining declarations */ 1598 1599 dcl data_iocb_ptr pointer; /* -> I/O switch for file transmission */ 1600 dcl master_iocb_ptr pointer; /* -> I/O switch for master console */ 1601 1602 dcl code fixed binary (35); 1603 dcl idx fixed binary; 1604 dcl ignore_code fixed binary (35); 1605 dcl ignore_fb21 fixed binary (21); 1606 1607 dcl 1 local_icri aligned like icri automatic; 1608 dcl 1 local_bof_command aligned like bof_command; 1609 dcl 1 local_bof_reply aligned like bof_reply; 1610 dcl 1 local_eof_reply aligned like eof_reply; 1611 dcl 1 local_rr aligned like remote_request; 1612 1613 dcl 1 imft_chk_acl aligned like imft_check_acl; 1614 1615 dcl 1 ios_status aligned, /* for calling ios_$* */ 1616 2 code fixed binary (35), /* actual error code */ 1617 2 io_status bit (36); /* status bits from last I/O operation */ 1618 1619 dcl system_area area based (system_area_ptr); 1620 dcl system_area_ptr pointer; 1621 1622 dcl code_message char (100) aligned; 1623 dcl input_buffer character (2048); /* for reading commands */ 1624 dcl notify_msg_buffer character (2048); /* for construction of user notifications */ 1625 1626 dcl source fixed binary; /* which I/O switch has input */ 1627 1628 dcl errfile_ptr pointer; /* -> error file generated by backup */ 1629 dcl errfile_attached bit (1) aligned; /* ON => error file is setup */ 1630 1631 dcl object_in_progress bit (1) aligned; /* ON => something is being received: inform user on abort */ 1632 dcl backup_errors_detected bit (1) aligned; /* ON => some errors occured in backup_load_ */ 1633 dcl foreign_backup_errors bit (1) aligned; /* ON => error reported in backup_dump_ by foreign system */ 1634 1635 dcl (mail_destination, local_personid) character (32); 1636 dcl mail_access_class bit (72) aligned; 1637 1638 dcl (local_full_pathname, local_dirname, foreign_full_pathname) character (168); 1639 dcl foreign_system_name character (32) varying; 1640 dcl local_entname character (32); 1641 dcl local_request_number fixed binary (35); 1642 dcl local_starname character (32); 1643 dcl local_type character (32); 1644 dcl foreign_equalname character (168); 1645 dcl octal_string character (32) aligned; 1646 1647 dcl my_group_id character (32); 1648 dcl my_user_id character (30); 1649 dcl (foreign_user_id, local_user_id) character (32) varying; 1650 dcl shortinfo character (8) aligned; 1651 dcl user_ring fixed binary (3); 1652 dcl local_user_access_id character (32); 1653 dcl (acs_write_bracket, current_ring) fixed binary (3); 1654 1655 dcl n_submitted fixed binary; 1656 dcl n_not_submitted fixed binary; 1657 1658 dcl IMFT_RECEIVE_OBJECT_ character (32) static options (constant) initial ("imft_receive_object_"); 1659 dcl ONE_MINUTE fixed binary static options (constant) initial (60); 1660 dcl NO_ERROR fixed binary (35) initial (0) static options (constant); 1661 dcl NO_OBJ_FND_SATISFY_REQ_STR character (42) initial ("No objects were found to satisfy request.") internal 1662 static options (constant); 1663 dcl REQ_TERMED_STR character (54) initial ("Request terminated: ^[^a^/^2x^;^s^]^a^/^2x(^a)") internal static 1664 options (constant); 1665 dcl first_call bit (1) aligned static initial ("1"b); 1666 1667 dcl 1 static_backup_control aligned static, /* control structure for backup_load_ */ 1668 2 header like backup_control.header, /* ... global data */ 1669 2 object like backup_control.requests; /* ... the actual object to be reloaded */ 1670 1671 dcl 1 branch_info aligned int static like create_branch_info; 1672 dcl 1 cpo aligned like copy_options; 1673 1674 dcl errfile_dname character (168) static; /* name of scratch file used as error file */ 1675 dcl errfile_ename character (32) static; 1676 dcl errfile_pathname character (168) static; 1677 dcl temp_ename character (32) static; 1678 dcl temp_dname character (168) static; 1679 1680 dcl error_table_$ai_restricted fixed bin (35) ext static; 1681 dcl error_table_$bad_arg fixed bin (35) ext static; 1682 dcl error_table_$fatal_error fixed bin (35) ext static; 1683 dcl error_table_$link fixed bin (35) ext static; 1684 dcl error_table_$moderr fixed bin (35) ext static; 1685 dcl error_table_$noentry fixed bin (35) ext static; 1686 dcl error_table_$unimplemented_version fixed binary (35) external; 1687 dcl error_table_$unsupported_operation fixed bin (35) ext static; 1688 dcl error_table_$user_not_found fixed bin (35) ext static; 1689 1690 dcl imft_et_$timeout fixed binary (35) external; 1691 1692 dcl imft_data_$queue_dirname character (168) external static; 1693 1694 dcl HCS_DONT_CHASE fixed binary (1) static options (constant) initial (0); 1695 1696 dcl A_EXTENDED_ACCESS bit (36) aligned internal static options (constant) init ("400000000000"b3); 1697 1698 dcl aim_check_$equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 1699 dcl backup_load_ entry (pointer, fixed binary (35)); 1700 dcl check_star_name_$entry entry (char (*), fixed bin (35)); 1701 dcl continue_to_signal_ entry (fixed bin (35)); 1702 dcl convert_aim_attributes_ entry (bit (72) aligned, character (32) aligned); 1703 dcl convert_authorization_$to_string_short entry (bit (72) aligned, char (*), fixed bin (35)); 1704 dcl convert_status_code_ entry (fixed binary (35), character (8) aligned, character (100) aligned); 1705 dcl copy_ entry (ptr); 1706 dcl cu_$arg_list_ptr entry () returns (pointer); 1707 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 1708 dcl find_condition_info_ entry (ptr, ptr, fixed bin (35)); 1709 dcl get_authorization_ entry () returns (bit (72) aligned); 1710 dcl get_equal_name_ entry (char (*), char (*), char (32), fixed bin (35)); 1711 dcl get_group_id_ entry () returns (character (32)); 1712 dcl get_pdir_ entry () returns (character (168)); 1713 dcl get_ring_ entry () returns (fixed binary (3)); 1714 dcl get_system_free_area_ entry () returns (pointer); 1715 dcl hcs_$create_branch_ entry (char (*), char (*), ptr, fixed bin (35)); 1716 dcl hcs_$get_access_class entry (char (*), char (*), bit (72) aligned, fixed bin (35)); 1717 dcl hcs_$get_link_target entry (char (*), char (*), char (*), char (*), fixed bin (35)); 1718 dcl hcs_$get_user_access_modes 1719 entry (char (*), char (*), char (*), fixed bin, bit (36) aligned, bit (36) aligned, fixed bin (35)); 1720 dcl hcs_$initiate_count 1721 entry (character (*), character (*), character (*), fixed binary (24), fixed binary (2), pointer, 1722 fixed binary (35)); 1723 dcl hcs_$make_seg entry (character (*), character (*), character (*), fixed binary (5), pointer, fixed binary (35)); 1724 dcl hcs_$set_bc entry (character (*), character (*), fixed binary (24), fixed binary (35)); 1725 dcl hcs_$star_ entry (char (*), char (*), fixed bin (2), ptr, fixed bin, ptr, ptr, fixed bin (35)); 1726 dcl hcs_$status_minf entry (char (*), char (*), fixed bin (1), fixed bin (2), fixed bin (24), fixed bin (35)); 1727 dcl hcs_$terminate_noname entry (pointer, fixed binary (35)); 1728 dcl hcs_$truncate_file entry (character (*), character (*), fixed binary (19), fixed binary (35)); 1729 dcl iod_info_$driver_access_name entry (char (*), char (32), fixed bin (35)); 1730 dcl imft_convert_status_code_$decode entry (fixed binary (35)) returns (fixed binary (35)); 1731 dcl imft_find_input_switch_ entry (pointer, bit (1) aligned, fixed binary, fixed binary (35)); 1732 dcl imft_mail_interface_$deliver_message 1733 entry (character (*), character (*), fixed binary, character (*), character (*), bit (72) aligned, 1734 fixed binary (35)); 1735 dcl imft_pnt_interface_$validate_personid entry (character (*), fixed binary (35)); 1736 dcl imft_util_$check_object_acl entry (ptr, fixed bin (35)); 1737 dcl ioa_$general_rs entry (pointer, fixed binary, fixed binary, character (*), fixed binary (21), bit (1), bit (1)); 1738 dcl ioa_$rsnnl entry () options (variable); 1739 dcl iodd_msg_ entry () options (variable); 1740 dcl ios_$attach entry (character (*), character (*), character (*), character (*), 1 aligned like ios_status); 1741 dcl ios_$detach entry (character (*), character (*), character (*), 1 aligned like ios_status); 1742 dcl iox_$control entry (pointer, character (*), pointer, fixed binary (35)); 1743 dcl message_segment_$open entry (char (*), char (*), fixed bin, fixed bin (35)); 1744 dcl message_segment_$close entry (fixed bin, fixed bin (35)); 1745 dcl pathname_ entry (character (*), character (*)) returns (character (168)); 1746 dcl request_id_ entry (fixed bin (71)) returns (char (19)); 1747 dcl queue_admin_$add_index entry (fixed bin, pointer, bit (72) aligned, fixed bin (35)); 1748 dcl system_privilege_$ring1_priv_on entry (fixed binary (35)); 1749 dcl system_privilege_$ring1_priv_off entry (fixed binary (35)); 1750 dcl term_$refname entry (character (*), fixed binary (35)); 1751 dcl translate_aim_attributes_ entry (pointer, bit (72) aligned, pointer, bit (72) aligned, fixed binary (35)); 1752 dcl unique_chars_ entry (bit (*)) returns (character (15)); 1753 1754 dcl (cleanup, imft_debug_, imft_read_abort_, imft_remote_logout_, imft_resynchronize_driver_, linkage_error, sub_error_) 1755 condition; 1756 1757 dcl (addr, after, before, clock, convert, currentsize, divide, hbound, index, length, max, null, rtrim, string, substr, 1758 sum, unspec) builtin; 1759 1 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 1760 1761 2 1 /* Begin include file -- acl_structures.incl.pl1 BIM 3/82 */ 2 2 /* format: style3,indcomtxt,idind30 */ 2 3 2 4 declare acl_ptr pointer; 2 5 declare acl_count fixed bin; 2 6 2 7 declare 1 general_acl aligned based (acl_ptr), /* for fs_util_ */ 2 8 2 version char (8) aligned, 2 9 2 count fixed bin, 2 10 2 entries (acl_count refer (general_acl.count)) aligned like general_acl_entry; 2 11 2 12 declare 1 general_acl_entry based, 2 13 2 access_name character (32) unaligned, 2 14 2 mode bit (36) aligned, 2 15 2 status_code fixed bin (35); 2 16 2 17 2 18 declare 1 general_extended_acl aligned based (acl_ptr), /* for fs_util_ */ 2 19 2 version char (8) aligned, 2 20 2 count fixed bin, 2 21 2 entries (acl_count refer (general_extended_acl.count)) aligned like general_extended_acl_entry; 2 22 2 23 declare 1 general_extended_acl_entry aligned based, 2 24 2 access_name character (32) unaligned, 2 25 2 mode bit (36) aligned, 2 26 2 extended_mode bit (36) aligned, 2 27 2 status_code fixed bin (35); 2 28 2 29 2 30 declare 1 general_delete_acl aligned based (acl_ptr), /* for file_system_ */ 2 31 2 version char (8) aligned, 2 32 2 count fixed bin, 2 33 2 entries (acl_count refer (general_delete_acl.count)) aligned like delete_acl_entry; 2 34 2 35 declare 1 general_delete_acl_entry aligned based, 2 36 2 access_name character (32) unaligned, 2 37 2 status_code fixed bin (35); 2 38 2 39 2 40 declare 1 segment_acl aligned based (acl_ptr), 2 41 2 version fixed bin, 2 42 2 count fixed bin, 2 43 2 entries (acl_count refer (segment_acl.count)) aligned like segment_acl_entry; 2 44 2 45 declare 1 segment_acl_entry like general_extended_acl_entry aligned based; 2 46 declare 1 segment_acl_array (acl_count) aligned like segment_acl_entry based (acl_ptr); 2 47 2 48 2 49 declare 1 directory_acl aligned based (acl_ptr), 2 50 2 version fixed bin, 2 51 2 count fixed bin, 2 52 2 entries (acl_count refer (directory_acl.count)) aligned like directory_acl_entry; 2 53 2 54 declare 1 directory_acl_entry like general_acl_entry aligned based; 2 55 declare 1 directory_acl_array (acl_count) aligned like directory_acl_entry based (acl_ptr); 2 56 2 57 2 58 declare 1 delete_acl based (acl_ptr) aligned, 2 59 2 version fixed bin, 2 60 2 count fixed bin, 2 61 2 entries (acl_count refer (delete_acl.count)) aligned like delete_acl_entry; 2 62 2 63 declare 1 delete_acl_entry like general_delete_acl_entry aligned based; 2 64 declare 1 delete_acl_array (acl_count) aligned like delete_acl_entry based (acl_ptr); 2 65 2 66 2 67 declare (SEG_ACL_VERSION_1 init ("sga1"), 2 68 DIR_ACL_VERSION_1 init ("dra1"), 2 69 DELETE_ACL_VERSION_1 init ("dla1")) 2 70 char (4) int static options (constant); 2 71 2 72 declare (GENERAL_ACL_VERSION_1 init ("gacl001"), 2 73 GENERAL_EXTENDED_ACL_VERSION_1 init ("gxacl001"), 2 74 GENERAL_DELETE_ACL_VERSION_1 init ("gdacl001")) 2 75 char (8) internal static options (constant); 2 76 2 77 declare ACL_VERSION_1 fixed bin init (1) int static options (constant); 2 78 2 79 /* End include file acl_structures.incl.pl1 */ 1762 1763 3 1 /* BEGIN INCLUDE FILE ... backup_control.incl.pl1 */ 3 2 /* Modified: July 1982 by G. Palter to add features for proper support of AIM in IMFT (version 4) */ 3 3 /* Modified: August 1983 by Robert Coren to add minimum access class enforcement */ 3 4 /* Modified: November 1983 by Robert Coren to add "upgrade_to_user_auth" flag */ 3 5 3 6 /* Hierarchy dumper/reloader subroutine control structure */ 3 7 3 8 dcl 1 backup_control aligned based (backup_control_ptr), 3 9 2 header, /* allows people to use like (!) */ 3 10 3 version character (8) unaligned, 3 11 3 tape_entry entry (character (*)) variable, /* returns next tape label */ 3 12 3 data_iocb pointer, /* -> I/O switch to use for dumping/loading if preattached */ 3 13 3 maximum_access_class bit (72) aligned, /* maximum access class for anything to be dumped */ 3 14 3 minimum_access_class bit (72) aligned, /* minimum access class for anything to be dumped */ 3 15 3 maximum_dir_access_class bit (72) aligned, /* no directory above this access class is dumped */ 3 16 3 user_for_access_check, /* data required to validate user's access */ 3 17 4 id character (32) unaligned, /* Person.Project.tag */ 3 18 4 authorization bit (72), /* the user's process authorization */ 3 19 4 ring fixed binary, /* the user's ring o execution */ 3 20 3 minimum_ring fixed binary, /* no ring bracket is set below this value */ 3 21 3 aim_translations, /* data required to translate AIM attributes on the tape */ 3 22 4 source_attributes_ptr pointer, 3 23 4 target_attributes_ptr pointer, 3 24 3 options aligned, 3 25 4 map_sw bit(1) unaligned, /* ON to write map segment */ 3 26 4 debug_sw bit (1) unaligned, /* ON to check quotas and not trim subtrees */ 3 27 4 no_reload_sw bit (1) unaligned, /* ON to not load for backup_load_ */ 3 28 4 hold_sw bit (1) unaligned, /* ON to not demount tape afterwards */ 3 29 4 preattached bit (1) unaligned, /* ON => perform loading/dumping to supplied I/O switch */ 3 30 4 error_file bit (1) unaligned, /* ON => generate an error file anyway */ 3 31 4 first bit (1) unaligned, /* ON => for reload, stop after all requests satisfied */ 3 32 4 caller_handles_conditions bit (1) unaligned, /* ON => caller of backup_dump_ handles faults */ 3 33 4 allow_dir_overwrite bit (1) unaligned, /* ON => allow reloaded seg to overwrite a dir */ 3 34 4 enforce_max_access_class bit (1) unaligned, /* ON => do not dump anything above given access class */ 3 35 4 dont_dump_upgraded_dirs bit (1) unaligned, /* ON => do not dump directories above given access class */ 3 36 4 check_effective_access bit (1) unaligned, /* ON => do not dump branches specified user can't touch */ 3 37 4 restore_access_class bit (1) unaligned, /* ON => restore AIM attributes even in debug mode */ 3 38 4 enforce_minimum_ring bit (1) unaligned, /* ON => do not give anything ring bracket below minimum */ 3 39 4 translate_access_class bit (1) unaligned, /* ON => translate access classes read from tape */ 3 40 4 enforce_min_access_class bit (1) unaligned, /* ON => do not dump anything below given access class */ 3 41 4 upgrade_to_user_auth bit (1) unaligned, /* ON => set access class of branch being dumped to user's authorization */ 3 42 4 pad bit (19) unaligned, 3 43 3 request_count fixed binary, /* # of entries to load or dump */ 3 44 2 requests (backup_control_request_count refer (backup_control.request_count)), 3 45 3 path character (168) unaligned, /* pathname of object to be dumped/loaded */ 3 46 3 new_path character (168) unaligned, /* pathname for object when reloading if not same as above */ 3 47 3 switches aligned, 3 48 4 no_primary_sw bit (1) unaligned, /* do not use primary pathname */ 3 49 4 trim_sw bit (1) unaligned, /* trim target directories */ 3 50 4 pad bit (34) unaligned, 3 51 3 found bit(1) aligned, /* ON => found on tape by backup_load_ (output) */ 3 52 3 loaded bit (1) aligned, /* ON => loaded by backup_load_ (output) */ 3 53 3 status_code fixed binary (35), /* ON => per-entry status code (output) */ 3 54 3 error_name character (65) unaligned; /* ON => some information about what happened (output) */ 3 55 3 56 dcl backup_control_ptr pointer; 3 57 3 58 dcl backup_control_request_count fixed binary; /* for allocations */ 3 59 3 60 dcl BACKUP_CONTROL_VERSION_5 character (8) static options (constant) initial ("hbc_0005"); 3 61 3 62 /* END INCLUDE FILE ... backup_control.incl.pl1 */ 1764 1765 4 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 4 2 4 3 /* Structure for find_condition_info_. 4 4* 4 5* Written 1-Mar-79 by M. N. Davidoff. 4 6**/ 4 7 4 8 /* automatic */ 4 9 4 10 declare condition_info_ptr pointer; 4 11 4 12 /* based */ 4 13 4 14 declare 1 condition_info aligned based (condition_info_ptr), 4 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 4 16 2 version fixed binary, /* Must be 1 */ 4 17 2 condition_name char (32) varying, /* name of condition */ 4 18 2 info_ptr pointer, /* pointer to the condition data structure */ 4 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 4 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 4 21 2 flags unaligned, 4 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 4 23 3 pad1 bit (35), 4 24 2 pad2 bit (36), 4 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 4 26 2 pad3 (4) bit (36); 4 27 4 28 /* internal static */ 4 29 4 30 declare condition_info_version_1 4 31 fixed binary internal static options (constant) initial (1); 4 32 4 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 1766 1767 5 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 5 2 /* format: style2 */ 5 3 5 4 declare condition_info_header_ptr 5 5 pointer; 5 6 declare 1 condition_info_header 5 7 aligned based (condition_info_header_ptr), 5 8 2 length fixed bin, /* length in words of this structure */ 5 9 2 version fixed bin, /* version number of this structure */ 5 10 2 action_flags aligned, /* tell handler how to proceed */ 5 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 5 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 5 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 5 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 5 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 5 16 3 pad bit (32) unaligned, 5 17 2 info_string char (256) varying, /* may contain printable message */ 5 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 5 19 5 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 1768 1769 6 1 /* BEGIN INCLUDE FILE: copy_error_info.incl.pl1 6 2* 6 3* This is the structure pointed to by sub_error_info.info_ptr when copy_ 6 4* signals the sub_err_ condition. 6 5* 6 6* Jay Pattin 6/13/83 */ 6 7 6 8 declare 1 copy_error_info aligned based (sub_error_info.info_ptr), 6 9 2 copy_options_ptr ptr, /* Pointer to input argument of copy_ */ 6 10 2 operation char (32), /* Name of operation that failed. */ 6 11 2 target_err_switch bit (1) aligned; /* ON = error was on the target */ 6 12 6 13 /* END INCLUDE FILE: copy_error_info.incl.pl1 */ 1770 1771 7 1 /* BEGIN INCLUDE FILE: copy_flags.incl.pl1 */ 7 2 7 3 /* Flags for attributes that should/may be copied by the copy_ subroutine. This include file is 7 4* required by suffix_info.incl.pl1 and copy_options.incl.pl1 7 5* 7 6* Jay Pattin 6/23/83 */ 7 7 7 8 declare 1 copy_flags aligned based, /* ON means that this attribute may be copied by copy_ */ 7 9 2 names bit (1) unaligned, 7 10 2 acl bit (1) unaligned, 7 11 2 ring_brackets bit (1) unaligned, 7 12 2 max_length bit (1) unaligned, 7 13 2 copy_switch bit (1) unaligned, 7 14 2 safety_switch bit (1) unaligned, 7 15 2 dumper_switches bit (1) unaligned, 7 16 2 entry_bound bit (1) unaligned, /* only for vanilla object segments */ 7 17 2 extend bit (1) unaligned, /* copy_ may append to end of existing object */ 7 18 2 update bit (1) unaligned, /* copy_ may replace contents of existing object */ 7 19 2 mbz bit (26) unaligned; 7 20 7 21 /* END INCLUDE FILE: copy_flags.incl.pl1 */ 1772 1773 8 1 /* BEGIN INCLUDE FILE: copy_options.incl.pl1 */ 8 2 8 3 /* This structure declares the input structure used by the copy_ subroutine. 8 4* 8 5* NOTE: This include file depends on declarations in the include file 8 6* copy_flags.incl.pl1. 8 7* 8 8* Jay Pattin 6/1/83 */ 8 9 8 10 declare copy_options_ptr ptr; 8 11 8 12 declare 1 copy_options aligned based (copy_options_ptr), 8 13 2 version char (8), /* currently COPY_OPTIONS_VERSION_1 */ 8 14 2 caller_name char (32) unal, /* Used in nd_handler_ call */ 8 15 2 source_dir char (168) unal, 8 16 2 source_name char (32) unal, 8 17 2 target_dir char (168) unal, 8 18 2 target_name char (32) unal, 8 19 2 flags, 8 20 3 no_name_dup bit (1) unaligned, /* ON = don't call nd_handler_ */ 8 21 3 raw bit (1) unaligned, /* ON = don't call object_type_, use hcs_ */ 8 22 3 force bit (1) unaligned, /* ON = delete or force access to target */ 8 23 3 delete bit (1) unaligned, /* ON = delete original after copy (for move) */ 8 24 3 target_err_switch bit (1) unaligned, 8 25 3 mbz bit (31) unaligned, 8 26 2 copy_items like copy_flags; /* see copy_flags.incl.pl1 */ 8 27 8 28 declare COPY_OPTIONS_VERSION_1 char (8) static options (constant) init ("CPOPT001"); 8 29 8 30 /* END INCLUDE FILE: copy_options.incl.pl1 */ 1774 1775 9 1 /* BEGIN INCLUDE FILE - - - create_branch_info.incl.pl1 - - - created January 1975 */ 9 2 9 3 9 4 /****^ HISTORY COMMENTS: 9 5* 1) change(89-01-16,TLNguyen), approve(89-01-16,MCR8049), 9 6* audit(89-02-03,Parisek), install(89-03-15,MR12.3-1025): 9 7* 1. Declare version constant properly. 9 8* 2. Remove version 1 since it was never referenced and to force 9 9* callers to upgrade their programs. 9 10* END HISTORY COMMENTS */ 9 11 9 12 9 13 /* Modified December 1984 for dir_quota, Keith Loepere. */ 9 14 9 15 /* this include files gives the argument structure for create_branch_ */ 9 16 9 17 dcl 1 create_branch_info aligned based, 9 18 2 version fixed bin, /* set this to the largest value given below */ 9 19 2 switches unaligned, 9 20 3 dir_sw bit (1) unaligned, /* if on, a directory branch is wanted */ 9 21 3 copy_sw bit (1) unaligned, /* if on, initiating segment will be done by copying */ 9 22 3 chase_sw bit (1) unaligned, /* if on, if pathname is a link, it will be chased */ 9 23 3 priv_upgrade_sw bit (1) unaligned, /* privileged creation (ring 1) of upgraded object */ 9 24 3 parent_ac_sw bit (1) unaligned, /* if on, use parent's access class for seg or dir created */ 9 25 3 mbz1 bit (31) unaligned, /* pad to full word */ 9 26 2 mode bit (3) unaligned, /* segment or directory for acl for userid */ 9 27 2 mbz2 bit (33) unaligned, /* pad to full word */ 9 28 2 rings (3) fixed bin (3), /* branch's ring brackets */ 9 29 2 userid char (32), /* user's access control name */ 9 30 2 bitcnt fixed bin (24), /* bit count of the segment */ 9 31 2 quota fixed bin (18), /* for directories, this am't of quota will be moved to it */ 9 32 2 access_class bit (72), /* is the access class of the body of the branch */ 9 33 2 dir_quota fixed bin (18); /* for directories, this am't of dir quota will be moved to it */ 9 34 9 35 dcl create_branch_version_2 fixed bin int static options (constant) init (2); 9 36 9 37 /* END INCLUDE FILE - - - create_branch_info.incl.pl1 - - - */ 9 38 1776 1777 10 1 /* BEGIN: fs_star_.incl.pl1 * * * * * * * * * * * * */ 10 2 10 3 /****^ HISTORY COMMENTS: 10 4* 1) change(88-07-15,GDixon), approve(88-09-20,MCR7987), 10 5* audit(88-10-03,Beattie), install(88-10-06,MR12.2-1139): 10 6* Initial version corresponding to MTB781-00. 10 7* 2) change(88-08-25,GDixon), approve(88-09-20,MCR7987), 10 8* audit(88-10-03,Beattie), install(88-10-06,MR12.2-1139): 10 9* Modifications corresponding to MTB781-01 correcting minor problems 10 10* found during the review of the earlier MTB. 10 11* 3) change(88-09-19,GDixon), approve(88-09-20,MCR8007), 10 12* audit(88-10-03,Beattie), install(88-10-06,MR12.2-1139): 10 13* Final changes reflecting MTB781-02. This is the MR12.2 version. 10 14* END HISTORY COMMENTS */ 10 15 10 16 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 17 /* */ 10 18 /* This include file declares structures and named constants used when calling the fs_star_ */ 10 19 /* subroutine. */ 10 20 /* */ 10 21 /* star_options: */ 10 22 /* defines star matching, selection and sorting criteria. */ 10 23 /* */ 10 24 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 25 10 26 dcl 1 star_options aligned based (star_optionsP), 10 27 2 version char(8), /* = STAR_OPTIONS_VERSION_1 */ 10 28 10 29 2 caller, 10 30 3 ssu_sciP ptr, /* subsystem sci_ptr, used to get */ 10 31 /* areas & temp segs, report errors. */ 10 32 /* null => use other elements as below */ 10 33 3 fs_star_dataP ptr, /* ptr to fs_star_ internal data. */ 10 34 10 35 2 selection, 10 36 3 star_pathsP ptr, /* ptr to input pathname array. */ 10 37 /* Starred paths select starting ents. */ 10 38 3 path_allow bit(36) aligned, /* type of paths allowed in star_paths */ 10 39 /* See PATH_ALLOW_xxx constants below. */ 10 40 3 entry_type, /* selection/expansion of standard */ 10 41 4 ( /* entry types. See ENTRY_xxx */ 10 42 links, /* constants below. */ 10 43 segs, 10 44 dirs, 10 45 msfs, 10 46 msf_comps, 10 47 dm_files, 10 48 archives, 10 49 arch_comps, 10 50 extended_entries) bit(36) aligned, 10 51 3 extended_entry_typesP ptr, /* ptr to entry type selection array. */ 10 52 /* ^=null => only paths matching one */ 10 53 /* extended entry type are */ 10 54 /* selected. */ 10 55 3 match_namesP ptr, /* ptr to added starname match array. */ 10 56 /* ^=null => only paths matching one */ 10 57 /* or more matchnames are */ 10 58 /* selected. */ 10 59 3 exclude_namesP ptr, /* ptr to starname exclusion array. */ 10 60 /* ^=null => selected paths matching */ 10 61 /* one or more excludenames */ 10 62 /* are de-selected. */ 10 63 10 64 2 per_entry, /* For each selected entry: */ 10 65 3 sorting (6), /* major/minor sort keys, by locator */ 10 66 4 ( /* within selected subtree. */ 10 67 dirs, /* Sorting of dirs in selected subtree */ 10 68 dir_ents, /* Sorting of ents in selected dirs. */ 10 69 comps) fixed bin, /* Sorting of archive and msf */ 10 70 /* components in selected ents. */ 10 71 /* Lower-numbered array elements are */ 10 72 /* major keys. See SORT_xxx */ 10 73 /* constants below. */ 10 74 3 handler /* call this proc to handle entry. */ 10 75 entry (ptr, char(*), (*)char(32), char(*), fixed bin), 10 76 /* call handler (star_dataP, dir, ent_names, comp_name, action); */ 10 77 3 error /* call this proc if error occurs. */ 10 78 entry (ptr, char(*), (*)char(32), char(*), 10 79 fixed bin(35), char(*), fixed bin), 10 80 /* call error (star_dataP, dir, ent_names, comp_name, */ 10 81 /* code, message, action); */ 10 82 /* =ssu_$null_entry => */ 10 83 /* use ssu_$print_error */ 10 84 3 handler_dataP ptr, /* ptr to caller-provided data passed */ 10 85 /* on to .handler and .error. */ 10 86 3 data_desired fixed bin, /* type of info to pass to .handler */ 10 87 /* for each selected entry. See */ 10 88 /* DATA_xxx constants below. */ 10 89 3 data_version char(8) unal, /* Version of star_data structure */ 10 90 /* that .handler expects to receive. */ 10 91 /* Only STAR_DATA_VERSION_1 allowed. */ 10 92 2 mbz bit(36) aligned, /* Reserved for future use. */ 10 93 star_optionsP ptr; /* ptr to star_options structure. */ 10 94 10 95 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 96 /* */ 10 97 /* Named Constant for star_options.version: */ 10 98 /* version of star_options the caller is prepared to deal with. */ 10 99 /* */ 10 100 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 101 10 102 dcl STAR_OPTIONS_VERSION_1 init("STAROPT1") char(8) int static options(constant); 10 103 10 104 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 105 /* */ 10 106 /* star_paths: */ 10 107 /* array of directory entry pathnames (or archive component pathnames) which does initial */ 10 108 /* pathname selection, based upon starnames in dir part (dir>**>ent), final entryname (dir>**), */ 10 109 /* and/or archive component part (dir>ent.archive::**) of pathname. These starnames select the */ 10 110 /* initial set of entries to which further selection criteria are applied. */ 10 111 /* star_options.path_allow setting controls which type of pathname (dir entry or archive */ 10 112 /* component) is allowed, and which parts may contain stars. */ 10 113 /* */ 10 114 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 115 10 116 dcl 1 star_paths aligned based (star_options.star_pathsP), 10 117 2 version char(8), /* = STAR_PATHS_VERSION_1 */ 10 118 2 max_count fixed bin, /* maximum size of value array for the */ 10 119 /* current allocation of star_paths. */ 10 120 2 count fixed bin, /* current size of value array. */ 10 121 2 value (star_paths_size refer (star_paths.max_count)) char(202) unal, 10 122 /* dir>**>ent>**::** */ 10 123 star_paths_size fixed bin auto, 10 124 STAR_PATHS_VERSION_1 init("STARPTH1") char(8) int static options(constant); 10 125 10 126 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 127 /* */ 10 128 /* Named Constants for star_options.path_allow: */ 10 129 /* select the types of pathnames are allowed, and which pathname components may contain stars. */ 10 130 /* */ 10 131 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 132 10 133 dcl (PATH_ALLOW_DIR_STAR_NAMES init("1"b), /* dir>**>ent */ 10 134 PATH_ALLOW_ENTRY_STAR_NAMES init("01"b), /* dir>** */ 10 135 PATH_ALLOW_ARCHIVE_COMPONENTS init("001"b), /* dir>ent::comp */ 10 136 PATH_ALLOW_ARCHIVE_STAR_NAMES init("0001"b), /* dir>ent::** */ 10 137 PATH_ALLOW_ARCHIVE_COMP_STAR_NAMES init("0011"b), /* dir>ent::** or dir>ent::comp */ 10 138 PATH_ALLOW_NONDIR_STAR_NAMES init("0111"b), /* dir>**::** */ 10 139 PATH_ALLOW_BRANCH_STAR_NAMES init("1100"b), /* dir>**>** */ 10 140 PATH_ALLOW_ALL_STAR_NAMES init("1111"b)) /* dir>**>**::** */ 10 141 bit(36) aligned int static options(constant); 10 142 10 143 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 144 /* */ 10 145 /* Named Constants for star_options.selection.entry_type: */ 10 146 /* for entries matching the starname, selection by entry type, control expansion, etc. */ 10 147 /* One named constant from each group may be ORed together to form a value to be assigned to */ 10 148 /* each star_options.entry_type.XXX value (eg, star_options.entry_type.segs). */ 10 149 /* */ 10 150 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 151 10 152 dcl (ENTRY_DONT_RETURN init("1"b), /* Don't return entries of this type. */ 10 153 ENTRY_RETURN init("0"b), /* Return entries of this type. */ 10 154 10 155 ENTRY_LIST_SUBENTRIES init("01"b), /* List components of matching ents. */ 10 156 ENTRY_DONT_LIST_SUBENTRIES init("00"b), /* Don't list components of match ents. */ 10 157 /* Applies to: dirs, archives, msfs */ 10 158 10 159 ENTRY_INAEE init("001"b), /* Interpret as extended ent (-inaee). */ 10 160 ENTRY_INASE init("000"b), /* Interpret as standard ent (-inase). */ 10 161 /* Applies to: segs, dirs, msfs, & */ 10 162 /* dm_files. */ 10 163 10 164 ENTRY_DONT_SELECT_NULL init("0001"b), /* Select only nonnull entries. */ 10 165 ENTRY_DONT_SELECT_NONNULL init("00001"b), /* Select only null entries. */ 10 166 ENTRY_SELECT_NULL_NONNULL init("00000"b), /* Select both null and nonnull entries.*/ 10 167 /* Applies to: links, segs, msfs, */ 10 168 /* msf_comps, archives, arch_comps */ 10 169 10 170 ENTRY_CHASE_NONSTAR_LINKS init("000001"b), /* Chase links only if link was not */ 10 171 /* selected by a starname. */ 10 172 ENTRY_CHASE_ALL_LINKS init("0000001"b), /* Chase all links. (-chase) */ 10 173 ENTRY_DONT_CHASE_LINKS init("0000000"b), /* Don't chase links. (-no_chase) */ 10 174 /* Applies to: links */ 10 175 10 176 ENTRY_DONT_SELECT_OBJECTS init("00000001"b), /* Select only nonobject files. */ 10 177 ENTRY_DONT_SELECT_NONOBJECTS init("000000001"b), /* Select only object files. */ 10 178 ENTRY_SELECT_ALL_FILES init("000000000"b), /* Select both objects and nonobjects. */ 10 179 /* Applies to: segs, msfs, arch_comps */ 10 180 10 181 ENTRY_DONT_SELECT_MDIRS init("0000000001"b), /* Select only nonmaster dirs. */ 10 182 ENTRY_DONT_SELECT_NON_MDIRS init("00000000001"b),/* Select only master dirs. */ 10 183 ENTRY_SELECT_ALL_DIRS init("00000000000"b))/* Select both masters and nonmasters. */ 10 184 /* Applies to: dirs */ 10 185 bit(36) aligned int static options(constant); 10 186 10 187 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 188 /* */ 10 189 /* extended_entry_types: */ 10 190 /* array of extended entry types applied to entries selected from the star_paths array. If an */ 10 191 /* entry matches any of the given extended types, that entry is included for further selection. */ 10 192 /* */ 10 193 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 194 10 195 dcl 1 extended_entry_types aligned based (star_options.extended_entry_typesP), 10 196 2 version char(8), /* = STAR_EXTENDED_ENTRY_VERSION_1 */ 10 197 2 max_count fixed bin, /* maximum size of value array for the */ 10 198 /* current allocation of */ 10 199 /* extended_entry_types. */ 10 200 2 count fixed bin, /* current size of value array. */ 10 201 2 value (extended_entry_types_size refer (extended_entry_types.max_count)) char(32) unal, 10 202 /* -slet EXTENDED_TYPE */ 10 203 extended_entry_types_size fixed bin auto, 10 204 STAR_EXTENDED_ENTRY_VERSION_1 init("STARETP1") char(8) int static options(constant); 10 205 10 206 10 207 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 208 /* */ 10 209 /* match_names: */ 10 210 /* array of additional starnames which are applied to entries selected from the star_paths */ 10 211 /* and extended_entry_types arrays. If any name on an entry matches any match_name, that entry */ 10 212 /* is included for further selection. */ 10 213 /* */ 10 214 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 215 10 216 dcl 1 match_names aligned based (star_options.match_namesP), 10 217 2 version char(8), /* = STAR_MATCH_NAMES_VERSION_1 */ 10 218 2 max_count fixed bin, /* maximum size of value array for the */ 10 219 /* current allocation of match_names. */ 10 220 2 count fixed bin, /* current size of value array. */ 10 221 2 value (match_names_size refer (match_names.max_count)) char(32) unal, 10 222 /* -match ** */ 10 223 match_names_size fixed bin auto, 10 224 STAR_MATCH_NAMES_VERSION_1 init("STARMNM1") char(8) int static options(constant); 10 225 10 226 10 227 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 228 /* */ 10 229 /* exclude_names: */ 10 230 /* array of starnames which are applied to entries selected from star_paths, */ 10 231 /* extended_entry_types and match_names arrays. If any name on an entry matches an exclude */ 10 232 /* name, that entry is excluded from further selection. */ 10 233 /* */ 10 234 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 235 10 236 dcl 1 exclude_names aligned based (star_options.exclude_namesP), 10 237 2 version char(8), /* = STAR_EXCLUDE_NAMES_VERSION_1 */ 10 238 2 max_count fixed bin, /* maximum size of value array for the */ 10 239 /* current allocation of exclude_names */ 10 240 2 count fixed bin, /* current size of value array. */ 10 241 2 value (exclude_names_size refer (exclude_names.max_count)) char(32) unal, 10 242 /* -exclude ** */ 10 243 exclude_names_size fixed bin auto, 10 244 STAR_EXCLUDE_NAMES_VERSION_1 init("STARENM1") char(8) int static options(constant); 10 245 10 246 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 247 /* */ 10 248 /* Named Constants for star_options.handler: */ 10 249 /* handler procedure's action parameter to control the further progress of searching. */ 10 250 /* */ 10 251 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 252 10 253 dcl (HANDLER_OK init (0), /* no error when handling entry. */ 10 254 HANDLER_REJECT init (1), /* no error, but handler does not */ 10 255 /* accept entry; it should not be */ 10 256 /* counted, expanded, etc. */ 10 257 HANDLER_DONT_EXPAND init (2), /* no error, but handler does not want */ 10 258 /* dir/archive entry expanded. */ 10 259 HANDLER_EXPAND init (3), /* no error, but expand dir/archive */ 10 260 /* even if contrary to .entry_type. */ 10 261 HANDLER_EXPAND_DONT_COUNT init (4), /* no error, but handler does not accept */ 10 262 /* entry; it should not be counted, but */ 10 263 /* should be expanded. */ 10 264 HANDLER_DONT_COUNT init (5), /* no error, but handler does not accept */ 10 265 /* entry; it should not be counted. Its */ 10 266 /* expansion depends upon .entry_type */ 10 267 /* setting for this type of entry. */ 10 268 HANDLER_STOP init (6), /* no error, but the selection process */ 10 269 /* process terminates immediately. */ 10 270 /* Entry should be counted, then */ 10 271 /* fs_star_$select returns to caller. */ 10 272 HANDLER_ABORT init (7) /* error, entry not counted, selection */ 10 273 /* process terminates immediately, */ 10 274 /* handler reports any error, then */ 10 275 /* fs_star_$select returns to caller. */ 10 276 ) fixed bin internal static options(constant); 10 277 10 278 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 279 /* */ 10 280 /* Named Constants for star_options.error: */ 10 281 /* error procedure's action parameter. */ 10 282 /* */ 10 283 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 284 10 285 dcl (ERROR_OK init (0), /* error was processed successfully. */ 10 286 /* Entry causing error should be */ 10 287 /* counted as a match, but should not */ 10 288 /* be passed to handler for processing */ 10 289 /* nor expanded. */ 10 290 ERROR_REJECT init (1), /* error was processed successfully. */ 10 291 /* Entry causing error was rejected, */ 10 292 /* should not be counted as a match, */ 10 293 /* expanded, nor passed to handler. */ 10 294 ERROR_STOP init (6), /* error was processed successfully, */ 10 295 /* but error routine wants to stop the */ 10 296 /* selection process immediately. */ 10 297 /* Entry should be counted as a match, */ 10 298 /* but not expanded nor passed to the */ 10 299 /* handler routine for processing. */ 10 300 ERROR_ABORT init (7) /* error processing was unsuccessful. */ 10 301 /* Error routine wants to stop the */ 10 302 /* selection process immediately. */ 10 303 /* Entry should not be counted as a */ 10 304 /* match, expanded, nor passed to the */ 10 305 /* handler routine. */ 10 306 ) fixed bin internal static options(constant); 10 307 10 308 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 309 /* */ 10 310 /* Named Constants for star_options.sorting: */ 10 311 /* */ 10 312 /* fs_star_ can sort the selected entries before they are passed to the caller-provided handler */ 10 313 /* routine. Sorting of selected entries can be based upon three categories of sorting: */ 10 314 /* - the attributes of selected archive or MSF components (the component's name or its position */ 10 315 /* within the archive/msf); or */ 10 316 /* - the attributes of the selected directory entry (matching entryname, entry type or position */ 10 317 /* within the directory); or */ 10 318 /* - the selected entry's location within the selected subtree, or the matching entrynames in the */ 10 319 /* directory part of the pathname of a selected entry. */ 10 320 /* */ 10 321 /* To provide flexibility, any of the sorting categories above can be used singly, or in */ 10 322 /* combination. If used in combination, component sorting occurs before entry sorting, which occurs */ 10 323 /* before directory pathname sorting. Within a given category, several sorting operations are */ 10 324 /* possible. These include: */ 10 325 /* - sorting by name; */ 10 326 /* - sorting by (standard or extended) entry type; */ 10 327 /* - sorting of children entries with respect to their parent; */ 10 328 /* - sorting in ascending or descending sequence (forward or reverse); or */ 10 329 /* - sorting can be disabled for the category. */ 10 330 /* */ 10 331 /* Within a sort category, each sorting operation can be used singly, or in combinations of one to*/ 10 332 /* four sort operations in a caller-defined order. Order sort operations are specified by filling in*/ 10 333 /* the elements of the star_options.sorting arrays. For example: */ 10 334 /* star_options.selection.entry_type = ENTRY_RETURN; */ 10 335 /* star_options.sorting(*) = SORT_OFF; */ 10 336 /* star_options.sorting(1) = SORT_FORWARD; */ 10 337 /* star_options.sorting(1).comps = SORT_BY_NAME; */ 10 338 /* passes all directories and directory entries in the selected subtree to the handler routine in the*/ 10 339 /* order they were returned by hcs_$star_. Selected components of archives and MSFs are passed to */ 10 340 /* the handler routine, sorted by component name. */ 10 341 /* star_options.selection.entry_type = ENTRY_RETURN; */ 10 342 /* star_options.sorting(*) = SORT_OFF; */ 10 343 /* star_options.sorting(1) = SORT_FORWARD; */ 10 344 /* star_options.sorting(1).comps = SORT_REVERSE; */ 10 345 /* star_options.sorting(2).comps = SORT_BY_NAME; */ 10 346 /* passes the components to the handler sorted by component name, in reverse ASCII collating */ 10 347 /* sequence. */ 10 348 /* star_options.selection.entry_type = ENTRY_DONT_RETURN; */ 10 349 /* star_options.selection.entry_type.dirs = ENTRY_DONT_RETURN | ENTRY_LIST_SUBENTRIES; */ 10 350 /* star_options.selection.entry_type.archives = ENTRY_DONT_RETURN | ENTRY_LIST_SUBENTRIES; */ 10 351 /* star_options.selection.entry_type.arch_comps = ENTRY_RETURN; */ 10 352 /* star_options.sorting(*) = SORT_OFF; */ 10 353 /* star_options.sorting(1).comps = SORT_BY_NAME; */ 10 354 /* passes the archive components to the handler sorted by component name, irrespective of the archive*/ 10 355 /* the component resides in. That is, components in all archives selected from the subtree are found*/ 10 356 /* and sorted by name, and then passed to the handler in that order. */ 10 357 /* */ 10 358 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 359 10 360 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 361 /* */ 10 362 /* star_options.selection.entry_type = ENTRY_RETURN; */ 10 363 /* star_options.selection.entry_type.dirs = ENTRY_LIST_SUBENTRIES; */ 10 364 /* star_options.selection.entry_type.arch_comps = ENTRY_DONT_RETURN; */ 10 365 /* star_options.selection.entry_type.msf_comps = ENTRY_DONT_RETURN; */ 10 366 /* star_options.sorting(*) = SORT_OFF; */ 10 367 /* star_options.sorting(1).dirs = SORT_BY_NAME; */ 10 368 /* star_options.sorting(1).dir_ents = SORT_BY_STANDARD_TYPE */ 10 369 /* star_options.sorting(2).dir_ents = SORT_BY_NAME; */ 10 370 /* star_options.sorting(3).dir_ents = SORT_ENTRIES_BEFORE_SUBENTRIES; */ 10 371 /* passes selected entries to the handler routine sorted by directory, and within a directory sorted */ 10 372 /* by matching entryname within entry type groupings. For entries in a single directory, this is the*/ 10 373 /* type of grouping and sorting performed by the command: */ 10 374 /* list -sort name -all */ 10 375 /* */ 10 376 /* Sorting is based upon the location of the item within the selected subtree. If sorting by */ 10 377 /* dirs(*) is SORT_OFF, then the entire subtree must be selected and sorted before any data can be */ 10 378 /* passed to the handler. If sorting by dirs(*) is not SORT_OFF, then the contents of each dir is */ 10 379 /* sorted and passed to handler before processing subdirs. This provides more immediate response. */ 10 380 /* */ 10 381 /* Elements of the star_data.matched minor structure below are counts of the total entries found, */ 10 382 /* divided by entry type. If sorting.dirs(*) is SORT_OFF, then these counts represent the total of */ 10 383 /* all entries selected within the entire subtree. Otherwise, they represent only the entries */ 10 384 /* selected and sorted within the current node of the subtree and all previously handled nodes. */ 10 385 /* */ 10 386 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 387 10 388 dcl (SORT_OFF init(0), /* Don't sort by this subtree locator. */ 10 389 SORT_FORWARD init(1), /* Sort entries in order returned by */ 10 390 /* hcs_$star_ or archive_ subrs. */ 10 391 SORT_REVERSE init(2), /* Reverse ordering specified by */ 10 392 /* sort_sel elements with higher */ 10 393 /* index values. */ 10 394 SORT_BY_NAME init(3), /* Sort by primary matching ent name. */ 10 395 SORT_BY_STANDARD_ENTRY_TYPE init(4), /* Sort by standard entry type. */ 10 396 SORT_BY_EXTENDED_ENTRY_TYPE init(5), /* Sort by extended entry type. */ 10 397 SORT_ENTRIES_BEFORE_SUBENTRIES init(6)) /* Sort all entries in a directory before*/ 10 398 /* looking for any subentries. By */ 10 399 /* default, subentries below an entry */ 10 400 /* are expanded immediately after the */ 10 401 /* entry is encountered in the sorted */ 10 402 /* sequence of directory entries. */ 10 403 fixed bin int static options(constant); 10 404 10 405 10 406 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 407 /* */ 10 408 /* Named Constants for star_options.data_desired: */ 10 409 /* values control the amount of data returned to caller's entry handler routine in */ 10 410 /* star_data.entry_data. */ 10 411 /* */ 10 412 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 413 10 414 dcl (DATA_TYPE init (1), /* Entry type, only. */ 10 415 DATA_INITIATE init (2)) /* Entry type, length and count */ 10 416 fixed bin int static options(constant); 10 417 10 418 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 419 /* */ 10 420 /* Named constant for star_options.data_version: */ 10 421 /* caller-specified version of star_data he is willing to accept. */ 10 422 /* */ 10 423 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 424 10 425 dcl STAR_DATA_VERSION_1 init ("STARDAT1") char(8) int static options(constant); 10 426 /* star_data version 1 structure. */ 10 427 10 428 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 429 /* */ 10 430 /* star_data: */ 10 431 /* information provided to caller-supplied entry handler routine for each selected entry. */ 10 432 /* */ 10 433 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 434 10 435 dcl 1 star_data aligned based (star_dataP), 10 436 2 version char(8), /* = STAR_DATA_VERSION_1 */ 10 437 2 star_optionsP ptr, /* ptr to caller-supplied star_options */ 10 438 /* structure. This makes */ 10 439 /* star_options.handler_dataP */ 10 440 /* available to the handler routine. */ 10 441 2 matched, /* count of matching entries: */ 10 442 3 ( 10 443 current, /* index of current entry in sort list */ 10 444 total, /* count of total entries. */ 10 445 links, /* count of total links. */ 10 446 segs, /* count of total non-archive, */ 10 447 /* non-extended entry segments. */ 10 448 dirs, /* count of total directories. */ 10 449 msfs, /* count of total multisegment files. */ 10 450 msf_comps, /* count of total msf components. */ 10 451 dm_files, /* count of total data mgt files. */ 10 452 archives, /* count of total archives. */ 10 453 arch_comps, /* count of total archive components. */ 10 454 extended_entries) fixed bin, /* count of total extended entries. */ 10 455 /* See Named Constants for */ 10 456 /* sort_options.sorting above. */ 10 457 3 mbz_matched (4) fixed bin, /* reserved for future use. */ 10 458 10 459 2 entry_data, /* Beginning of DATA_xxx return items. */ 10 460 3 data_desired fixed bin, /* amount of data in entry_data minor */ 10 461 /* structure which is valid. */ 10 462 3 depth fixed bin, /* depth of this entry below its */ 10 463 /* corresponding parent in */ 10 464 /* star_paths.value. */ 10 465 3 type char(32) unal, /* extended entry type for matching */ 10 466 /* entry. See ENTRY_TYPE_xxx */ 10 467 /* constants below for standard entry */ 10 468 /* types. Extended types are given */ 10 469 /* by entry type suffix (eg, mbx). */ 10 470 /* Data above available when */ 10 471 /* data_desired set to DATA_TYPE. */ 10 472 10 473 3 length fixed bin(35), /* length of entry (by entry type): */ 10 474 /* link => 0 */ 10 475 /* seg => bit count */ 10 476 /* dir => 0 */ 10 477 /* msf => sum of comp bit counts */ 10 478 /* msf comp => msf comp bit count */ 10 479 /* dm_file => 0 */ 10 480 /* arch => bit count of archive */ 10 481 /* arch comp => bit count of component */ 10 482 /* ext entry => 0 */ 10 483 3 count fixed bin(35), /* length of entry (by entry type): */ 10 484 /* link => 0 */ 10 485 /* seg => 0 */ 10 486 /* dir => inferior entry count */ 10 487 /* msf => number of components */ 10 488 /* msf comp => total msf components */ 10 489 /* dm_file => 0 */ 10 490 /* arch => number of components */ 10 491 /* arch comp => total arch components */ 10 492 /* ext entry => 0 */ 10 493 3 entryP ptr, /* ptr to an entry: */ 10 494 /* link => null */ 10 495 /* seg => ptr to segment */ 10 496 /* dir => null */ 10 497 /* msf => ptr to msf_manager_ */ 10 498 /* fcb_ptr argument */ 10 499 /* msf comp => ptr to msf component */ 10 500 /* dm_file => null */ 10 501 /* arch => ptr to archive */ 10 502 /* arch comp => ptr to component */ 10 503 /* ext entry => null */ 10 504 /* Data above available when */ 10 505 /* data_desired set to DATA_INITIATE. */ 10 506 10 507 star_dataP ptr automatic; /* ptr to star_data structure. */ 10 508 10 509 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 510 /* */ 10 511 /* Named constants for star_data.type: */ 10 512 /* type values describing the type of entry passed to caller-supplied handler routine. Type */ 10 513 /* strings for file system standard entry types (links, segments, dirs, dm_files, msfs) agree */ 10 514 /* with those returned by fs_util_$get_type. */ 10 515 /* */ 10 516 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 517 10 518 dcl (ENTRY_TYPE_ARCHIVE init ("-archive"), 10 519 ENTRY_TYPE_ARCHIVE_COMP init ("-archive_component"), 10 520 ENTRY_TYPE_DIRECTORY init ("-directory"), 10 521 ENTRY_TYPE_DM_FILE init ("-dm_file"), 10 522 ENTRY_TYPE_LINK init ("-link"), 10 523 ENTRY_TYPE_MSF init ("-multisegment_file"), 10 524 ENTRY_TYPE_MSF_COMP init ("-msf_component"), 10 525 ENTRY_TYPE_SEGMENT init ("-segment"), 10 526 ENTRY_TYPE_UNKNOWN init ("-unknown"), 10 527 ENTRY_TYPE_UNSET init ("") 10 528 ) char (32) unaligned int static options (constant); 10 529 10 530 dcl STANDARD_ENTRY_TYPES (9) char (32) unal/* array of standard entry type values. */ 10 531 int static options(constant) init ( 10 532 "-link", 10 533 "-segment", 10 534 "-directory", 10 535 "-multisegment_file", 10 536 "-msf_component", 10 537 "-dm_file", 10 538 "-archive", 10 539 "-archive_component", 10 540 "-unknown"); 10 541 10 542 /* END OF: fs_star_.incl.pl1 * * * * * * * * * * * * */ 1778 1779 11 1 /* BEGIN INCLUDE FILE ... _imft_check_acl.incl.pl1 */ 11 2 11 3 /* format: style4 */ 11 4 11 5 /****^ HISTORY COMMENTS: 11 6* 1) change(88-09-21,Beattie), approve(88-08-01,MCR7948), 11 7* audit(88-10-14,Farley), install(88-10-14,MR12.2-1165): 11 8* Created to support IMFT ACL checking. 11 9* END HISTORY COMMENTS */ 11 10 11 11 dcl 1 imft_check_acl aligned based (imft_check_acl_ptr), 11 12 2 version character (8), /* version of this structure */ 11 13 2 flags, 11 14 3 allow_transfer bit (1) unaligned, /* indicates that transfer is allowed to start */ 11 15 3 objects_to_transfer bit (1) unaligned, /* indicates that objects were found in subtree that passed all checks */ 11 16 3 check_aim bit (1) unaligned, /* do aim checks */ 11 17 3 found_inner_ring_object bit (1) unaligned, /* an inner ring object was detected */ 11 18 3 pad bit (32) unaligned, 11 19 2 dirname character (168), /* containing directory of object */ 11 20 2 ename character (32), /* entry name of object */ 11 21 2 type character (32), /* type of object */ 11 22 2 object_ring fixed binary (3), /* first ring bracket of object */ 11 23 2 sys_auth_ceiling bit (72), /* system auth ceiling */ 11 24 2 sys_auth_floor bit (72), /* system auth floor */ 11 25 2 user_auth bit (72), /* user's authorization */ 11 26 2 foreign_sys_name character (32), /* for error message */ 11 27 2 gen_acl_ptr pointer, /* ptr to general ACL array */ 11 28 2 dir_access bit (3), /* desired ACL for directories */ 11 29 2 seg_access bit (3), /* desired ACL for segments */ 11 30 2 effective_ring, /* minimum ring for object to allow transfer */ 11 31 2 bad_acl_idx fixed bin, /* index in ACL array which failed ACL checks */ 11 32 2 error_code fixed bin (35), /* standard error code */ 11 33 2 error_message (2) character (512) varying, /* contains an error message */ 11 34 2 accessfile_pathname character (168); /* collect access error mesages here if subtree checking */ 11 35 11 36 dcl imft_check_acl_ptr pointer; 11 37 11 38 dcl DRIVER_ACL_IDX fixed binary int static options (constant) initial (1); 11 39 dcl USER_ACL_IDX fixed binary int static options (constant) initial (2); 11 40 11 41 dcl IMFT_CHECK_ACL_VERSION_1 character (8) init ("IMFTCA01") internal static options (constant); 11 42 11 43 /* END INCLUDE FILE ... _imft_check_acl.incl.pl1 */ 1780 1781 12 1 /* BEGIN INCLUDE FILE ... _imft_cri.incl.pl1 */ 12 2 /* Created: April 1982 by G. Palter */ 12 3 12 4 /* Data structure used by read/write_command/reply_record and get_abort_info control orders */ 12 5 12 6 dcl 1 icri aligned based (icri_ptr), 12 7 2 version character (8), 12 8 2 timeout fixed binary (35), /* # of seconds to wait for read/write to complete */ 12 9 2 pad bit (36), 12 10 2 record_info, 12 11 3 record_ptr pointer, /* -> record to write or buffer where it will be read */ 12 12 3 record_type fixed binary, /* type of record read/written */ 12 13 3 record_max_lth fixed binary (21), /* size of buffer when reading records */ 12 14 3 record_lth fixed binary (21); /* length of record read/written in characters */ 12 15 12 16 dcl icri_ptr pointer; 12 17 12 18 dcl ICRI_VERSION_1 character (8) static options (constant) initial ("cri_1.00"); 12 19 12 20 /* END INCLUDE FILE ... _imft_cri.incl.pl1 */ 1782 1783 13 1 /* BEGIN INCLUDE FILE ... _imft_driver_info.incl.pl1 */ 13 2 13 3 /* Created: April 1982 by G. Palter */ 13 4 /* Modified: July 1982 by G. Palter for true AIM support */ 13 5 /* Modified: February 1983 by Robert Coren to add single_switch and old_version flags */ 13 6 /* Modified: August 1983 by Robert Coren to add access_floor */ 13 7 13 8 /* format: style4 */ 13 9 13 10 13 11 /****^ HISTORY COMMENTS: 13 12* 1) change(87-11-15,Oke), approve(88-08-01,MCR7948), audit(88-10-14,Farley), 13 13* install(88-10-14,MR12.2-1165): 13 14* Added variables to support in-dial and out-dial driver configurations. 13 15* 2) change(88-07-12,Beattie), approve(88-08-01,MCR7948), 13 16* audit(88-10-14,Farley), install(88-10-14,MR12.2-1165): 13 17* Add imft_version to local and foreign system structures. 13 18* END HISTORY COMMENTS */ 13 19 13 20 13 21 /* Description of an IMFT driver process */ 13 22 13 23 dcl 1 imft_driver_info aligned based (imft_driver_info_ptr), 13 24 2 function fixed binary, /* type of driver (file transfer) */ 13 25 2 flags, 13 26 3 input_driver bit (1) unaligned, /* ON => this driver is receiving input */ 13 27 3 debug_mode bit (1) unaligned, /* ON => someone is debugging the driver in test mode */ 13 28 3 automatic_operation bit (1) unaligned, /* ON => running without operator intervention */ 13 29 3 auto_go bit (1) unaligned, /* ON => start processing output requests immediately */ 13 30 3 auto_receive bit (1) unaligned, /* ON => start receiving input requests immediately */ 13 31 3 single_switch bit (1) unaligned, /* ON => same switch for input and output */ 13 32 3 old_version bit (1) unaligned, /* ON => foreign system uses old (HASP-only) software */ 13 33 3 copy_data bit (1) unaligned, /* ON => imft_io_ will copy all data records to vfiles */ 13 34 3 remote_request_allowed bit (1) unaligned, /* ON => foreign system is allowed to request transfers */ 13 35 3 explicit_access_required bit (1) unaligned, /* ON => remote request requires explicit ACL term for driver */ 13 36 3 idle_line_drop bit (1) unaligned, /* ON => drop when idle and dialup when something to do */ 13 37 3 validate_system_id bit (1) unaligned, /* ON => validate foreign system ident/pass in PNT */ 13 38 3 debug_connect bit (1) unaligned, /* ON => display data during connection phase in master log */ 13 39 3 dial_service bit (1) unaligned, /* ON => connect only when there are requests to transfer */ 13 40 3 pad bit (22) unaligned, 13 41 2 sleep_time fixed bin, /* connect retry wait */ 13 42 2 idle_delay_count fixed bin, /* number of idles til line drop */ 13 43 2 idle_delay fixed bin, /* the idle counter */ 13 44 2 min_time_to_log fixed bin (35), /* transfer must take at least this time to put est time in log */ 13 45 2 io_info, /* data required to connect to the remote system */ 13 46 3 input_attach_description character (256) unaligned, 13 47 3 output_attach_description character (256) unaligned, 13 48 3 in_dial_qualifier character (256) unaligned, 13 49 3 out_dial_text character (256) unaligned, 13 50 3 trigger_text character (256) unaligned, 13 51 2 local_system, /* our system's description ... */ 13 52 3 name character (32) unaligned, /* ... system name */ 13 53 3 password character (8) aligned, /* ... card input password */ 13 54 3 imft_version character (8), /* ... version of driver software */ 13 55 3 access_ceiling bit (72), /* ... maximum AIM level permitted for transfer */ 13 56 3 access_floor bit (72), /* ... minimum AIM level permitted for transfer */ 13 57 3 aim_attributes_ptr pointer, /* ... -> definition of AIM attributes on system */ 13 58 2 foreign_system, /* descirption of foreign system (see above) */ 13 59 3 name character (32) unaligned, 13 60 3 password character (8) aligned, 13 61 3 imft_version character (8), 13 62 3 access_ceiling bit (72), 13 63 3 access_floor bit (72), 13 64 3 aim_attributes_ptr pointer; 13 65 13 66 dcl imft_driver_info_ptr pointer; 13 67 13 68 13 69 /* Presently available types of IMFT driver (with short descriptions) */ 13 70 13 71 dcl FILE_TRANSFER initial (1) /* file transfer driver */ 13 72 fixed binary static options (constant); 13 73 13 74 dcl FUNCTION_NAMES (1) character (32) static options (constant) initial ( 13 75 "file transfer"); 13 76 13 77 /* END INCLUDE FILE ... _imft_driver_info.incl.pl1 */ 1784 1785 14 1 /* BEGIN INCLUDE FILE ... _imft_fis_info.incl.pl1 */ 14 2 /* Created: April 1982 by G. Palter */ 14 3 14 4 /* Describes the I/O switches on which input is expected: no more than 10 switches may be specified (due to PL/I 14 5* restrictions on static storage) */ 14 6 14 7 dcl 1 fis_info aligned based (fis_info_ptr), 14 8 2 version character (8), 14 9 2 n_iocbs fixed binary, /* # of I/O switches */ 14 10 2 iocbs (10) pointer, /* -> the I/O switches */ 14 11 2 wait_list, /* ipc_$block input structure */ 14 12 3 n_channels fixed binary, /* # of IPC channels */ 14 13 3 pad bit (36), 14 14 3 event_channels (10) fixed binary (71); /* the channels */ 14 15 14 16 dcl fis_info_ptr pointer; 14 17 14 18 dcl FIS_INFO_VERSION_1 character (8) static options (constant) initial ("fis_1.00"); 14 19 14 20 /* END INCLUDE FILE ... _imft_fis_info.incl.pl1 */ 1786 1787 15 1 /* BEGIN INCLUDE FILE ... _imft_ft_commands.incl.pl1 */ 15 2 15 3 /* Created: April 1982 by G. Palter */ 15 4 /* Modified: July 1982 by G. Palter for true AIM support */ 15 5 /* Modified: March 1983 by Robert Coren to add remote request record */ 15 6 /* Modified: April 1983 by Robert Coren to add eof_reply record */ 15 7 15 8 15 9 /****^ HISTORY COMMENTS: 15 10* 1) change(88-11-10,Beattie), approve(88-08-01,PBF7948), 15 11* audit(88-11-14,Farley), install(88-11-14,MR12.2-1214): 15 12* Change declaration of request_number to match up with what is 15 13* coming from request_descriptor structure to prevent size condtions. 15 14* END HISTORY COMMENTS */ 15 15 15 16 15 17 /* Command and reply control records used by the IMFT file transfer protocol */ 15 18 15 19 15 20 /* Command/reply types */ 15 21 15 22 dcl (IMFT_BOF initial (11), /* start a file/subtree transfer */ 15 23 IMFT_EOF initial (12), /* end of a file/subtree transfer */ 15 24 IMFT_REMOTE_REQUEST initial (13)) /* request for remote transfer */ 15 25 fixed binary (7) unaligned unsigned static options (constant); 15 26 15 27 15 28 /* File/subtree transfer command record */ 15 29 15 30 dcl 1 bof_command aligned based (bof_command_ptr), 15 31 2 global, /* data pertaining to both systems */ 15 32 3 object_type fixed binary (2), /* type of object (segment/directory/MSF) */ 15 33 3 object_access_class bit (72), /* access class of the object we transmitted */ 15 34 3 request_number fixed binary (35), /* daemon's sequence number for this request */ 15 35 3 queue fixed binary, /* priority queue */ 15 36 3 flags aligned, 15 37 4 notify bit (1) unaligned, /* ON => send notifications when successfull */ 15 38 4 continued bit (1) unaligned, /* ON => this is continuation of a previous request */ 15 39 4 restarted bit (1) unaligned, /* ON => this is a restart of a previous request */ 15 40 4 priority_request bit (1) unaligned, /* ON => this request was given high priority */ 15 41 4 pad bit (32) unaligned, 15 42 2 local_system, /* data pertaining to local (source) system */ 15 43 3 local_user character (32) unaligned, /* Person.Project of user who requested the transfer */ 15 44 3 local_user_authorization bit (72), /* process authorization of the user who issued request */ 15 45 3 local_user_ring fixed binary, /* ring of execution of user when he issued request */ 15 46 3 local_dirname character (168) unaligned, /* where the branch is on the local system */ 15 47 3 local_ename character (32) unaligned, /* ... */ 15 48 2 foreign_system like ft_request.request; /* data pertaining to foreign (target) system */ 15 49 15 50 dcl bof_command_ptr pointer; 15 51 15 52 15 53 /* Remote request command record */ 15 54 15 55 dcl 1 remote_request aligned based (rem_req_ptr), 15 56 2 global, 15 57 3 request_number fixed binary (35), /* sequence # of this request */ 15 58 3 queue fixed binary, /* priority queue in which this request was submitted */ 15 59 3 flags, 15 60 4 priority_request bit (1) unaligned, 15 61 4 pad bit (35) unaligned, 15 62 2 local_system, 15 63 3 local_user character (32) aligned, /* Person.Project of user who submitted the request */ 15 64 3 local_user_authorization bit (72), /* process authorization of user who issued the request */ 15 65 3 local_user_ring fixed binary, /* ring of execution of user when request issued */ 15 66 2 request_info like ft_request; /* defined in _imft_ft_request.incl.pl1 */ 15 67 15 68 dcl rem_req_ptr pointer; 15 69 15 70 15 71 /* File/subtree transfer reply record */ 15 72 15 73 dcl 1 bof_reply aligned based (bof_reply_ptr), 15 74 2 request_number fixed binary (35), /* sequence # of the request for which this is the reply */ 15 75 2 abort_request bit (1) aligned, /* ON => remote system refuses to accept this file/subtree */ 15 76 2 abort_message character (1024) varying; /* reason why the remote system rejects the request */ 15 77 15 78 dcl bof_reply_ptr pointer; 15 79 15 80 15 81 /* File_subtree end-of-file command record */ 15 82 15 83 dcl 1 eof_command aligned based (eof_command_ptr), 15 84 2 request_number fixed binary (35), 15 85 2 backup_errors bit (1) aligned; /* ON => errors reported by backup_dump_ */ 15 86 15 87 dcl eof_command_ptr pointer; 15 88 15 89 15 90 /* File/subtree end-of-file reply record */ 15 91 15 92 dcl 1 eof_reply aligned based (eof_reply_ptr), 15 93 2 request_number fixed binary (35), /* sequence # of the request whose completion this acknowledges */ 15 94 2 error bit (1) aligned; /* ON => remote system was unable to load the object successfully */ 15 95 15 96 dcl eof_reply_ptr pointer; 15 97 15 98 15 99 /* Types of objects which can be transmitted by IMFT */ 15 100 15 101 dcl (LINK initial (0), /* links actually aren't allowed, but... */ 15 102 SEGMENT initial (1), 15 103 DIRECTORY initial (2), /* actually the entire subtree is transferred */ 15 104 MSF initial (3)) 15 105 fixed binary (2) static options (constant); 15 106 15 107 dcl OBJECT_TYPES (0:3) character (32) static options (constant) initial ( 15 108 "link", "segment", "subtree", "multisegment file"); 15 109 15 110 /* END INCLUDE FILE ... _imft_ft_commands.incl.pl1 */ 1788 1789 16 1 /* BEGIN INCLUDE FILE ... _imft_ft_request.incl.pl1 */ 16 2 16 3 /* Created: April 1982 by G. Palter */ 16 4 /* Modified: March 1983 by Robert Coren, for requests for remote transfer */ 16 5 16 6 16 7 /****^ HISTORY COMMENTS: 16 8* 1) change(88-06-22,Beattie), approve(88-08-01,MCR7948), 16 9* audit(88-10-14,Farley), install(88-10-14,MR12.2-1165): 16 10* Add flags to support extend, update and delete operations. 16 11* END HISTORY COMMENTS */ 16 12 16 13 16 14 /* IMFT file transfer request definition */ 16 15 16 16 dcl 1 ft_request aligned based (ft_request_ptr), 16 17 2 header like queue_msg_hdr, 16 18 2 request, /* see _imft_ft_commands.incl.pl1 */ 16 19 3 version character (8), 16 20 3 foreign_user character (32) unaligned, /* Person.Project at other Multics for reload access check */ 16 21 3 foreign_dirname character (168) unaligned, /* where to put the branch on the other system */ 16 22 3 foreign_ename character (32) unaligned, /* ... */ 16 23 3 flags, 16 24 4 foreign_user_given bit (1) unaligned, /* ON => forreign_user different from local user */ 16 25 4 foreign_path_given bit (1) unaligned, /* ON => foreign pathname different from local */ 16 26 4 directory_creation_mode bit (2) unaligned, /* controls whether directories are replaced/merged */ 16 27 4 remote_transfer bit (1) unaligned, /* ON => request for transfer from foreign system */ 16 28 4 include_files bit (1) unaligned, /* ON => match files when interpreting starname */ 16 29 4 include_subtrees bit (1) unaligned, /* ON => match subtrees when interpreting starname */ 16 30 4 chase_control bit (2) unaligned, /* controls chasing of links when submitting remote request */ 16 31 4 delete bit (1) unaligned, /* delete source object after good transfer */ 16 32 4 extend bit (1) unaligned, /* place this data at end of current segment */ 16 33 4 update bit (1) unaligned, /* replace contents of current segment with this data */ 16 34 4 pad bit (24) unaligned; 16 35 16 36 dcl ft_request_ptr pointer; 16 37 16 38 dcl FT_REQUEST_VERSION_1 character (8) static options (constant) initial ("ftr_1.00"); 16 39 16 40 dcl FT_GENERIC_TYPE character (32) static options (constant) initial ("imft"); 16 41 dcl FT_MESSAGE_TYPE fixed binary static options (constant) initial (5); 16 42 16 43 dcl (REPLACE_DIRECTORIES initial ("10"b), /* replace entry on target if namedup and source is a dir */ 16 44 MERGE_DIRECTORIES initial ("11"b)) /* merge target and source dirs; replace if target not dir */ 16 45 bit (2) aligned static options (constant); 16 46 16 47 dcl (DEFAULT_CHASE initial ("00"b), /* chase non-starnames; don't chase starnames */ 16 48 NEVER_CHASE initial ("01"b), /* never chase any links */ 16 49 ALWAYS_CHASE initial ("10"b)) /* always chase links */ 16 50 bit (2) aligned static options (constant); 16 51 16 52 /* END INCLUDE FILE ... _imft_ft_request.incl.pl1 */ 1790 1791 17 1 /* BEGIN INCLUDE FILE ... _imft_std_commands.incl.pl1 */ 17 2 17 3 /* Created: April 1982 by G. Palter */ 17 4 /* Modified: July 1982 by G. Palter to add true AIM support */ 17 5 /* Modified: March 1983 by Robert Coren to add local_io_error abort code */ 17 6 /* Modified: August 1983 by Robert Coren to add access_floor to AIM2 record */ 17 7 17 8 17 9 /****^ HISTORY COMMENTS: 17 10* 1) change(88-08-12,Beattie), approve(88-08-01,MCR7948), 17 11* audit(88-10-14,Farley), install(88-10-14,MR12.2-1165): 17 12* Add imft_version to sync_record structure to inform other driver of this 17 13* driver's version of the IMFT software. 17 14* END HISTORY COMMENTS */ 17 15 17 16 17 17 /* Standard command and reply control records used by IMFT drivers */ 17 18 17 19 17 20 /* Standard command/reply types */ 17 21 17 22 dcl (IMFT_DATA initial (0), /* data record */ 17 23 IMFT_SYNC1 initial (1), /* first half of synchronization sequence */ 17 24 IMFT_SYNC2 initial (2), /* second half of synchronization sequence */ 17 25 IMFT_ABORT initial (3), /* abort the current operation */ 17 26 IMFT_LOGOUT initial (4), /* one side requests that the other logout */ 17 27 IMFT_RESYNCHRONIZE initial (5), /* reply requesting resynchronization */ 17 28 IMFT_AIM1 initial (6), /* first half of establsihing AIM ceiling */ 17 29 IMFT_AIM2 initial (7)) /* second half of establishing AIM ceiling */ 17 30 fixed binary (7) unaligned unsigned static options (constant); 17 31 17 32 17 33 /* Synchronization control record: sent as the SYNC1 command and reply and as the SYNC2 command; the SYNC2 reply is a 17 34* zero-length record which is only sent if the SYNC2 command indicates success */ 17 35 17 36 dcl 1 sync_record aligned based (sync_record_ptr), 17 37 2 my_userid character (32), /* Person_id of system sending this record */ 17 38 2 my_password character (8), /* scrambled card input passowrd */ 17 39 2 code fixed binary (35), /* non-zero code => validation failed; break the connection */ 17 40 2 correct_userid character (32), /* Person_id that was expected if incorrect */ 17 41 2 imft_version character (8); /* version of IMFT being used by driver */ 17 42 17 43 dcl sync_record_ptr pointer; 17 44 17 45 17 46 /* Abort command record */ 17 47 17 48 dcl 1 abort_command aligned based (abort_command_ptr), 17 49 2 reason fixed binary, /* reason to abort this operation */ 17 50 2 code fixed binary (35); /* real error code for an I/O error */ 17 51 17 52 dcl abort_command_ptr pointer; 17 53 17 54 dcl (IMFT_ABORT_IO_ERROR initial (1), /* I/O error */ 17 55 IMFT_ABORT_ABORTED initial (2), /* random fault */ 17 56 IMFT_ABORT_DEFERRED initial (3), /* operator deferred request */ 17 57 IMFT_ABORT_CANCELLED initial (4), /* operator cancelled request */ 17 58 IMFT_ABORT_SAVED initial (5), /* operator saved the request silently */ 17 59 IMFT_ABORT_RESTARTED initial (6), /* operator restarted the request */ 17 60 IMFT_ABORT_LOCAL_IO_ERROR initial (7)) /* I/O error on local system */ 17 61 fixed binary static options (constant); 17 62 17 63 17 64 /* AIM ceiling control records: the AIM1 command and reply are the aim_attributes structures defining the attributes on 17 65* the system; the AIM2 command/reply record follows */ 17 66 17 67 dcl 1 aim2_record aligned based (aim2_record_ptr), 17 68 2 code fixed binary (35), /* non-zero => AIM ceiling can not be established */ 17 69 2 computed_ceiling bit (72), /* ceiling computed by other system (before translation) */ 17 70 2 computed_floor bit (72), /* floor computed by other system (before translation) */ 17 71 2 flags unaligned, 17 72 3 explicit_ceiling_given bit (1), /* ON => an explicit access ceiling follows */ 17 73 3 explicit_floor_given bit (1), /* ON => an explicit access floor follows */ 17 74 3 pad bit (34), 17 75 2 explicit_ceiling bit (72), /* the explicitly requested ceiling (before translation) */ 17 76 2 explicit_floor bit (72); /* the explicitly requested floor (before translation) */ 17 77 17 78 /* The following version of the structure is used for pre-version 3.0 IMFT */ 17 79 17 80 dcl 1 v2_aim2_record aligned based (aim2_record_ptr), 17 81 2 code fixed binary (35), /* non-zero => AIM ceiling can not be established */ 17 82 2 computed_ceiling bit (72), /* ceiling computed by other system (before translation) */ 17 83 2 explicit_ceiling_given bit (1), /* ON => an explicit access ceiling follows */ 17 84 2 explicit_ceiling bit (72); /* the explicitly requested ceiling (before translation) */ 17 85 17 86 dcl aim2_record_ptr pointer; 17 87 17 88 /* END INCLUDE FILE ... _imft_std_commands.incl.pl1 */ 1792 1793 18 1 /* BEGIN INCLUDE FILE ... iodd_msg_constants.incl.pl1 */ 18 2 /* Created: April 1982 by G. Palter */ 18 3 18 4 /* Types of messages which may be written by iodd_msg_ */ 18 5 18 6 dcl (LOG initial (0), /* log the message */ 18 7 NORMAL initial (1), /* normal message */ 18 8 ERROR initial (2)) /* an error message */ 18 9 fixed binary static options (constant); 18 10 18 11 18 12 /* Where the message is to be written */ 18 13 18 14 dcl (BOTH initial (0), /* write message to master and slave */ 18 15 MASTER initial (1), /* write message to master only */ 18 16 SLAVE initial (2)) /* write message to slave only */ 18 17 fixed binary static options (constant); 18 18 18 19 /* END INCLUDE FILE ... iodd_msg_constants.incl.pl1 */ 1794 1795 19 1 /* BEGIN INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 19 2 /* Created: June 1983 by G. Palter */ 19 3 19 4 /* Options for the mail_system_$deliver_message and mail_system_$redistribute_message entrypoints */ 19 5 19 6 dcl 1 deliver_options aligned based (deliver_options_ptr), 19 7 2 version character (8) unaligned, 19 8 2 delivery_mode fixed binary, /* deliver as an ordinary/interactive/express message */ 19 9 2 queueing_mode fixed binary, /* when to queue the message */ 19 10 2 queued_notification_mode fixed binary, /* when to notify sender about queued mail success/failure */ 19 11 2 flags, 19 12 3 abort bit (1) unaligned, /* ON => don't send it if any fatal errors are detected */ 19 13 3 send_if_empty bit (1) unaligned, /* ON => send the message even if its body is empty */ 19 14 3 recipient_notification bit (1) unaligned, /* ON => send "You have mail." notification */ 19 15 3 acknowledge bit (1) unaligned, /* ON => request ACK message when recipients read it */ 19 16 3 queue_mailing_lists bit (1) unaligned, /* ON => always queue the message for mailing lists */ 19 17 3 mbz bit (31) unaligned; /* must be set to ""b by the caller */ 19 18 19 19 dcl DELIVER_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsdlo02"); 19 20 19 21 dcl deliver_options_ptr pointer; 19 22 19 23 /* Defined modes of delivery */ 19 24 19 25 dcl (ORDINARY_DELIVERY initial (1), /* send as an ordinary message */ 19 26 INTERACTIVE_DELIVERY initial (2), /* send as an interactive message */ 19 27 EXPRESS_DELIVERY initial (3)) /* send as an express interactive message; ie: deliver the 19 28* message only if the user is logged in */ 19 29 fixed binary static options (constant); 19 30 19 31 /* Defined modes for queuing mail on transient errors */ 19 32 19 33 dcl (NEVER_QUEUE initial (1), /* never queue: convert into a fatal error */ 19 34 QUEUE_FOREIGN_WHEN_NEEDED initial (2), /* never queue local mail; queue foreign mail on error */ 19 35 QUEUE_WHEN_NEEDED initial (3), /* queue all mail on any transient error */ 19 36 ALWAYS_QUEUE_FOREIGN initial (4), /* queue local mail on error; always queue foreign mail */ 19 37 ALWAYS_QUEUE initial (5)) /* always queue all mail */ 19 38 fixed binary static options (constant); 19 39 19 40 /* Defined modes of notification of success/failure to deliver queued mail */ 19 41 19 42 dcl (NEVER_NOTIFY initial (1), /* never notify the sender */ 19 43 NOTIFY_ON_ERROR initial (2), /* notify the sender only if it can not be delivered */ 19 44 ALWAYS_NOTIFY initial (3)) /* always notify the sender */ 19 45 fixed binary static options (constant); 19 46 19 47 /* Definition of the recipients of a message and the results of the attempted transmission */ 19 48 19 49 dcl 1 recipients_info aligned based (recipients_info_ptr), 19 50 2 header, 19 51 3 version character (8) unaligned, 19 52 3 area_ptr pointer, /* -> area for following structures; null => system free */ 19 53 3 expanded_recipients_result_list_ptr pointer, /* set -> expanded_recipients_result_list (if any) */ 19 54 3 n_recipients fixed binary, /* set to total # of recipients after expanding lists */ 19 55 3 n_unique_recipients fixed binary, /* set to total # of unique recipients */ 19 56 3 n_failed_recipients fixed binary, /* set to # of recipients that failed or would fail */ 19 57 3 n_lists fixed binary, /* # of address lists of recipients */ 19 58 2 lists (recipients_info_n_lists refer (recipients_info.n_lists)), 19 59 3 address_list_ptr pointer, /* -> an address list containing recipients */ 19 60 3 recipients_result_list_ptr pointer; /* set -> recipients_result_list for this address list */ 19 61 19 62 dcl RECIPIENTS_INFO_VERSION_2 character (8) static options (constant) initial ("mlsrcpt2"); 19 63 19 64 dcl (recipients_info_ptr, recipients_result_list_ptr, expanded_recipients_result_list_ptr) pointer; 19 65 19 66 dcl (recipients_info_n_lists, recipients_result_list_n_addresses, expanded_recipients_result_list_n_entries) 19 67 fixed binary; /* used to allocate these structures */ 19 68 19 69 19 70 /* Data structure returned by the mail system recording the results of the mailing for one of the input address lists */ 19 71 19 72 dcl 1 recipients_result_list aligned based (recipients_result_list_ptr), 19 73 2 n_addresses fixed binary, /* set to # of address in corresponding address list */ 19 74 2 pad bit (36), 19 75 2 results (recipients_result_list_n_addresses refer (recipients_result_list.n_addresses)), 19 76 3 code fixed binary (35), /* set to describe results of attempted delivery */ 19 77 3 expanded_list_info, /* set to identify any failing addresses found in the 19 78* expansion of this address ... */ 19 79 4 first_entry_idx fixed binary (18) unaligned unsigned, 19 80 /* ... index of first such address in structure below ... */ 19 81 4 n_entries fixed binary (18) unaligned unsigned,/* ... # of such addresses there for this address */ 19 82 3 duplicate_info, /* set to identify the prior address (if any) for which this 19 83* is a duplicate ... */ 19 84 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 19 85 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 19 86 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 19 87* being queued due to a transient error */ 19 88 19 89 19 90 /* Describes fatal or transient errors for those recipients which are part of mailing lists of named groups in one of the 19 91* caller's address lists */ 19 92 19 93 dcl 1 expanded_recipients_result_list aligned based (expanded_recipients_result_list_ptr), 19 94 2 n_entries fixed binary, /* set to # of failing expanded recipients */ 19 95 2 pad bit (36), 19 96 2 entries (expanded_recipients_result_list_n_entries refer (expanded_recipients_result_list.n_entries)), 19 97 3 address_ptr pointer, /* -> the failing address from the list/group */ 19 98 3 code fixed binary (35), /* set to describe why delivery failed */ 19 99 3 parent_address, /* set to identify the original recipient of whose expansion 19 100* this address is a part ... */ 19 101 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 19 102 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 19 103 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 19 104* being queued due to a transient error */ 19 105 19 106 /* END INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 1796 1797 20 1 /* BEGIN INCLUDE FILE . . . mseg_message_info.incl.pl1 BIM 1984-10-10 */ 20 2 /* format: style3,idind30 */ 20 3 20 4 /* structure returned when message is read from a message segment */ 20 5 20 6 20 7 dcl mseg_message_info_ptr pointer; 20 8 20 9 dcl 1 mseg_message_info based (mseg_message_info_ptr) aligned, 20 10 2 version char (8) aligned, 20 11 2 message_code fixed bin, 20 12 2 control_flags unaligned, 20 13 3 own bit (1), 20 14 3 delete bit (1), 20 15 3 pad bit (34), 20 16 2 ms_ptr ptr, /* pointer to message */ 20 17 2 ms_len fixed bin (24), /* length of message in bits */ 20 18 2 ms_id bit (72), /* unique ID of message */ 20 19 /* input in some cases */ 20 20 2 ms_access_class bit (72), /* message access class */ 20 21 2 sender_id char (32) unaligned,/* process-group ID of sender */ 20 22 2 sender_process_id bit (36) aligned, /* if nonzero, process that sent */ 20 23 2 sender_level fixed bin, /* validation level of sender */ 20 24 2 sender_authorization bit (72), /* access authorization of message sender */ 20 25 2 sender_max_authorization bit (72), /* max authorization of sending process */ 20 26 2 sender_audit bit (36) aligned; /* audit flags */ 20 27 20 28 declare MSEG_MESSAGE_INFO_V1 char (8) aligned init ("msegmi01") int static options (constant); 20 29 20 30 declare ( 20 31 MSEG_READ_FIRST init (1), 20 32 MSEG_READ_LAST init (2), 20 33 MSEG_READ_SPECIFIED init (3), 20 34 MSEG_READ_BEFORE_SPECIFIED init (4), 20 35 MSEG_READ_AFTER_SPECIFIED init (5)) 20 36 fixed bin int static options (constant); 20 37 20 38 declare (MSEG_READ_OWN init ("1"b), 20 39 MSEG_READ_DELETE init ("01"b) 20 40 ) bit (36) aligned internal static options (constant); 20 41 20 42 /* END INCLUDE FILE . . . mseg_message_info.incl.pl1 */ 1798 1799 21 1 /* BEGIN INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 21 2 21 3 /* This is the message header used for standard system queue messages, namely: 21 4* IO daemon requests, absentee requests, retrieval requests. 21 5**/ 21 6 21 7 /* Written by Jerry Whitmore, Spring 1978. 21 8* Modified by T. Casey, November 1978, to add values for state. 21 9* Modified by R. Kovalcik, June 1982, defer_until_process_terminataion 21 10**/ 21 11 21 12 dcl 1 queue_msg_hdr based aligned, /* standard header for all system queue messages */ 21 13 2 msg_time fixed bin (71), /* date and time of request */ 21 14 2 hdr_version fixed bin, /* version of this declaration */ 21 15 2 dirname char (168), /* directory name */ 21 16 2 ename char (32), /* entry name of file requested */ 21 17 2 message_type fixed bin, /* message format descriptor */ 21 18 /* 0 = absentee request */ 21 19 /* 1 = print request */ 21 20 /* 2 = punch request */ 21 21 /* 3 = tape request */ 21 22 /* 4 = retrieval request */ 21 23 2 bit_flags, 21 24 3 delete_sw bit (1) unal, /* delete file when done */ 21 25 3 notify bit (1) unal, /* user wants to be notified */ 21 26 3 defer_until_process_termination bit (1) unal, /* don't process request until process terminates */ 21 27 3 padding bit (33) unal, 21 28 2 state fixed bin, /* stage of processing after being queued: 21 29* 0 = initial unprocessed state, 1 = deferred, 21 30* 2 = in state transition, 3 = eligible, 4 = running, 21 31* 5 = bumped, 6 = deferred_until_process_termination */ 21 32 2 orig_queue fixed bin, /* queue the request was submitted to */ 21 33 2 std_length fixed bin, /* length of std msg for this type */ 21 34 2 dupt_lock bit (36) aligned, /* lock word for defer until process termination */ 21 35 2 hdr_pad (3) fixed bin; 21 36 21 37 dcl queue_msg_hdr_version_1 fixed bin int static options (constant) init (1); /* current version of the header */ 21 38 21 39 /* Values for queue_msg_hdr.state */ 21 40 21 41 dcl STATE_UNPROCESSED fixed bin int static options (constant) init (0); 21 42 dcl STATE_DEFERRED fixed bin int static options (constant) init (1); 21 43 dcl STATE_TRANSITION fixed bin int static options (constant) init (2); 21 44 dcl STATE_ELIGIBLE fixed bin int static options (constant) init (3); 21 45 dcl STATE_RUNNING fixed bin int static options (constant) init (4); 21 46 dcl STATE_BUMPED fixed bin int static options (constant) init (5); 21 47 dcl STATE_DUPT fixed bin int static options (constant) init (6); 21 48 21 49 /* END INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 1800 1801 22 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 22 2 22 3 /* This include file contains structures for the hcs_$star_, 22 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 22 5* 22 6* Written 23 October 1978 by Monte Davidoff. 22 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 22 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 22 9**/ 22 10 22 11 /* automatic */ 22 12 22 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 22 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 22 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 22 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 22 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 22 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 22 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 22 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 22 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 22 22 22 23 /* based */ 22 24 22 25 /* hcs_$star_ entry structure */ 22 26 22 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 22 28 2 type fixed binary (2) unsigned unaligned, 22 29 /* storage system type */ 22 30 2 nnames fixed binary (16) unsigned unaligned, 22 31 /* number of names of entry that match star_name */ 22 32 2 nindex fixed binary (18) unsigned unaligned; 22 33 /* index of first name in star_names */ 22 34 22 35 /* hcs_$star_ name structure */ 22 36 22 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 22 38 22 39 /* hcs_$star_list_ branch structure */ 22 40 22 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 22 42 2 type fixed binary (2) unsigned unaligned, 22 43 /* storage system type */ 22 44 2 nnames fixed binary (16) unsigned unaligned, 22 45 /* number of names of entry that match star_name */ 22 46 2 nindex fixed binary (18) unsigned unaligned, 22 47 /* index of first name in star_list_names */ 22 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 22 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 22 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 22 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 22 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 22 53 2 pad bit (7) unaligned, 22 54 2 records fixed binary (18) unsigned unaligned; 22 55 /* records used by branch */ 22 56 22 57 /* hcs_$star_dir_list_ branch structure */ 22 58 22 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 22 60 2 type fixed binary (2) unsigned unaligned, 22 61 /* storage system type */ 22 62 2 nnames fixed binary (16) unsigned unaligned, 22 63 /* number of names of entry that match star_name */ 22 64 2 nindex fixed binary (18) unsigned unaligned, 22 65 /* index of first name in star_list_names */ 22 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 22 67 2 pad bit (36) unaligned, 22 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 22 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 22 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 22 71 2 bit_count fixed binary (24) unaligned; 22 72 /* bit count of the branch */ 22 73 22 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 22 75 22 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 22 77 2 type fixed binary (2) unsigned unaligned, 22 78 /* storage system type */ 22 79 2 nnames fixed binary (16) unsigned unaligned, 22 80 /* number of names of entry that match star_name */ 22 81 2 nindex fixed binary (18) unsigned unaligned, 22 82 /* index of first name in star_list_names */ 22 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 22 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 22 85 2 pathname_len fixed binary (18) unsigned unaligned, 22 86 /* length of the pathname of the link */ 22 87 2 pathname_index fixed binary (18) unsigned unaligned; 22 88 /* index of start of pathname in star_list_names */ 22 89 22 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 22 91 22 92 declare star_list_names char (32) based (star_list_names_ptr) 22 93 dimension (star_links (star_branch_count + star_link_count).nindex 22 94 + star_links (star_branch_count + star_link_count).nnames 22 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 22 96 * binary ( 22 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 22 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 22 99 22 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 22 101 22 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 22 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 22 104 22 105 /* internal static */ 22 106 22 107 /* star_select_sw values */ 22 108 22 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 22 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 22 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 22 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 22 113 fixed binary (3) internal static options (constant) initial (5); 22 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 22 115 fixed binary (3) internal static options (constant) initial (7); 22 116 22 117 /* storage system types */ 22 118 22 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 22 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 22 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 22 122 22 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 1802 1803 23 1 /* BEGIN INCLUDE FILE sub_error_info.incl.pl1 */ 23 2 /* format: style2 */ 23 3 23 4 /* The include file condition_info_header must be used with this file */ 23 5 23 6 declare sub_error_info_ptr pointer; 23 7 declare 1 sub_error_info aligned based (sub_error_info_ptr), 23 8 2 header aligned like condition_info_header, 23 9 2 retval fixed bin (35), /* return value */ 23 10 2 name char (32), /* module name */ 23 11 2 info_ptr ptr; 23 12 23 13 declare sub_error_info_version_1 23 14 internal static options (constant) fixed bin init (1); 23 15 23 16 /* END INCLUDE FILE sub_error_info.incl.pl1 */ 1804 1805 end imft_receive_object_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 03/15/89 0800.1 imft_receive_object_.pl1 >special_ldd>install>MR12.3-1025>imft_receive_object_.pl1 1760 1 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 1762 2 10/14/83 1606.6 acl_structures.incl.pl1 >ldd>include>acl_structures.incl.pl1 1764 3 11/21/83 1219.2 backup_control.incl.pl1 >ldd>include>backup_control.incl.pl1 1766 4 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 1768 5 03/24/82 1347.2 condition_info_header.incl.pl1 >ldd>include>condition_info_header.incl.pl1 1770 6 10/14/83 1606.7 copy_error_info.incl.pl1 >ldd>include>copy_error_info.incl.pl1 1772 7 10/14/83 1606.7 copy_flags.incl.pl1 >ldd>include>copy_flags.incl.pl1 1774 8 10/14/83 1606.7 copy_options.incl.pl1 >ldd>include>copy_options.incl.pl1 1776 9 03/15/89 0759.4 create_branch_info.incl.pl1 >special_ldd>install>MR12.3-1025>create_branch_info.incl.pl1 1778 10 10/10/88 0909.4 fs_star_.incl.pl1 >ldd>include>fs_star_.incl.pl1 1780 11 10/18/88 1204.1 _imft_check_acl.incl.pl1 >ldd>include>_imft_check_acl.incl.pl1 1782 12 05/28/82 1334.9 _imft_cri.incl.pl1 >ldd>include>_imft_cri.incl.pl1 1784 13 10/18/88 1204.1 _imft_driver_info.incl.pl1 >ldd>include>_imft_driver_info.incl.pl1 1786 14 05/28/82 1334.9 _imft_fis_info.incl.pl1 >ldd>include>_imft_fis_info.incl.pl1 1788 15 11/14/88 1527.8 _imft_ft_commands.incl.pl1 >ldd>include>_imft_ft_commands.incl.pl1 1790 16 10/18/88 1204.1 _imft_ft_request.incl.pl1 >ldd>include>_imft_ft_request.incl.pl1 1792 17 10/18/88 1204.1 _imft_std_commands.incl.pl1 >ldd>include>_imft_std_commands.incl.pl1 1794 18 05/28/82 1334.9 iodd_msg_constants.incl.pl1 >ldd>include>iodd_msg_constants.incl.pl1 1796 19 10/27/83 2104.2 mlsys_deliver_info.incl.pl1 >ldd>include>mlsys_deliver_info.incl.pl1 1798 20 01/10/85 2002.8 mseg_message_info.incl.pl1 >ldd>include>mseg_message_info.incl.pl1 1800 21 08/31/82 1636.3 queue_msg_hdr.incl.pl1 >ldd>include>queue_msg_hdr.incl.pl1 1802 22 06/10/82 1045.5 star_structures.incl.pl1 >ldd>include>star_structures.incl.pl1 1804 23 07/18/81 1100.0 sub_error_info.incl.pl1 >ldd>include>sub_error_info.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. ALWAYS_CHASE constant bit(2) initial dcl 16-47 ref 989 1050 A_EXTENDED_ACCESS constant bit(36) initial dcl 1696 ref 942 942 BACKUP_CONTROL_VERSION_5 000104 constant char(8) initial packed unaligned dcl 3-60 ref 284 COPY_OPTIONS_VERSION_1 000102 constant char(8) initial packed unaligned dcl 8-28 ref 352 DEFAULT_CHASE constant bit(2) initial dcl 16-47 ref 1050 DRIVER_ACL_IDX constant fixed bin(17,0) initial dcl 11-38 ref 183 670 723 767 821 955 1076 1150 1189 1300 1305 1319 1326 ENTRY_TYPE_DIRECTORY 000072 constant char(32) initial packed unaligned dcl 10-518 ref 1102 1106 ENTRY_TYPE_MSF 000062 constant char(32) initial packed unaligned dcl 10-518 ref 746 1114 ENTRY_TYPE_SEGMENT 000052 constant char(32) initial packed unaligned dcl 10-518 ref 746 1114 ERROR 000316 constant fixed bin(17,0) initial dcl 18-6 set ref 89* 117* 144* 1440* FIS_INFO_VERSION_1 000044 constant char(8) initial packed unaligned dcl 14-18 ref 54 FT_MESSAGE_TYPE constant fixed bin(17,0) initial dcl 16-41 ref 962 FT_REQUEST_VERSION_1 000002 constant char(8) initial packed unaligned dcl 16-38 ref 970 GENERAL_ACL_VERSION_1 000106 constant char(8) initial packed unaligned dcl 2-72 ref 181 HCS_DONT_CHASE 000303 constant fixed bin(1,0) initial dcl 1694 set ref 1045* 1058* ICRI_VERSION_1 000046 constant char(8) initial packed unaligned dcl 12-18 ref 157 269 386 461 500 1371 IMFT_ABORT constant fixed bin(7,0) initial packed unsigned unaligned dcl 17-22 ref 527 IMFT_ABORT_ABORTED constant fixed bin(17,0) initial dcl 17-54 ref 536 IMFT_ABORT_CANCELLED constant fixed bin(17,0) initial dcl 17-54 ref 543 IMFT_ABORT_DEFERRED constant fixed bin(17,0) initial dcl 17-54 ref 540 IMFT_ABORT_IO_ERROR constant fixed bin(17,0) initial dcl 17-54 ref 529 530 IMFT_ABORT_LOCAL_IO_ERROR constant fixed bin(17,0) initial dcl 17-54 ref 529 IMFT_ABORT_RESTARTED constant fixed bin(17,0) initial dcl 17-54 ref 538 IMFT_ABORT_SAVED constant fixed bin(17,0) initial dcl 17-54 ref 540 IMFT_BOF constant fixed bin(7,0) initial packed unsigned unaligned dcl 15-22 ref 170 192 271 463 1373 IMFT_CHECK_ACL_VERSION_1 000050 constant char(8) initial packed unaligned dcl 11-41 ref 184 IMFT_EOF constant fixed bin(7,0) initial packed unsigned unaligned dcl 15-22 ref 388 520 IMFT_LOGOUT constant fixed bin(7,0) initial packed unsigned unaligned dcl 17-22 ref 168 514 IMFT_RECEIVE_OBJECT_ 000142 constant char(32) initial packed unaligned dcl 1658 set ref 89* 117* 144* 171* 353 550* 580* 1417* 1440* IMFT_REMOTE_REQUEST constant fixed bin(7,0) initial packed unsigned unaligned dcl 15-22 ref 170 IMFT_SYNC1 constant fixed bin(7,0) initial packed unsigned unaligned dcl 17-22 ref 165 508 IMFT_SYNC2 constant fixed bin(7,0) initial packed unsigned unaligned dcl 17-22 ref 165 508 INTERACTIVE_DELIVERY 000316 constant fixed bin(17,0) initial dcl 19-25 set ref 1461* LOG 000303 constant fixed bin(17,0) initial dcl 18-6 set ref 233* 396* 402* 445* 475* 1368* 1402* MASTER 000317 constant fixed bin(17,0) initial dcl 18-14 set ref 89* 117* 144* 171* 233* 396* 402* 445* 475* 550* 580* 1368* 1402* 1417* 1440* MSEG_MESSAGE_INFO_V1 000000 constant char(8) initial dcl 20-28 ref 1229 MSF constant fixed bin(2,0) initial dcl 15-101 ref 325 NORMAL 000317 constant fixed bin(17,0) initial dcl 18-6 set ref 171* 550* 580* 1417* NO_ERROR 000303 constant fixed bin(35,0) initial dcl 1660 set ref 171* 233* 396* 402* 434* 445* 475* 536* 538* 540* 543* 545* 550* 580* 658* 691* 730* 742* 755* 942* 1004* 1007* 1084* 1096* 1102* 1111* 1123* 1171* 1276 1280 1357 1368* 1402* 1417* 1584* NO_OBJ_FND_SATISFY_REQ_STR 000127 constant char(42) initial packed unaligned dcl 1661 set ref 1004* 1007* OBJECT_TYPES 000004 constant char(32) initial array packed unaligned dcl 15-107 set ref 233* 257* 371* 1538* 1564* ONE_MINUTE constant fixed bin(17,0) initial dcl 1659 ref 158 270 387 462 501 1372 ORDINARY_DELIVERY 000317 constant fixed bin(17,0) initial dcl 19-25 set ref 1543* 1569* P_code parameter fixed bin(35,0) dcl 1595 in procedure "imft_receive_object_" set ref 45 50* 55* 60* 68* 91* 119* 146* 173* 552* 1416* 1442* P_code parameter fixed bin(35,0) dcl 1476 in procedure "analyze_backup_results" ref 1473 P_fis_info_ptr parameter pointer dcl 1593 ref 45 49 P_imft_driver_info_ptr parameter pointer dcl 1592 ref 45 48 REPLACE_DIRECTORIES constant bit(2) initial dcl 16-43 ref 328 REQ_TERMED_STR 000111 constant char(54) initial packed unaligned dcl 1663 set ref 687* 737* 1091* 1167* 1365* RW_ACCESS constant bit(3) initial packed unaligned dcl 1-11 ref 667 721 1188 RW_ACCESS_BIN 000304 constant fixed bin(5,0) initial dcl 1-36 set ref 87* R_ACCESS 000275 constant bit(3) initial packed unaligned dcl 1-11 set ref 451* 1073 1147 SMA_ACCESS constant bit(3) initial packed unaligned dcl 1-11 ref 104 666 720 1187 S_ACCESS constant bit(3) initial packed unaligned dcl 1-11 ref 817 1072 1146 USER_ACL_IDX constant fixed bin(17,0) initial dcl 11-39 ref 426 671 724 822 835 836 1077 1151 1191 W_ACCESS 000110 constant bit(3) initial packed unaligned dcl 1-11 set ref 655* 853 858 858 abort_command based structure level 1 dcl 17-48 abort_command_ptr 004662 automatic pointer dcl 17-52 set ref 528* 529 529 530 530 530 534 536 538 540 540 543 abort_message 2 000321 automatic varying char(1024) level 2 dcl 1609 set ref 177* 467* 1363* abort_request 1 000321 automatic bit(1) level 2 dcl 1609 set ref 176* 1362* access_ceiling 522 based bit(72) level 3 dcl 13-23 ref 187 230 431 access_class 20 000223 internal static bit(72) level 2 dcl 1671 set ref 110* access_floor 524 based bit(72) level 3 dcl 13-23 ref 188 access_mode 000527 automatic bit(36) dcl 884 set ref 936* access_name 3 based char(32) array level 3 packed packed unaligned dcl 2-7 set ref 183* 426* 671* 724* 767* 822* 955* 1077* 1151* 1191* 1300* 1305* 1319* 1326* access_required parameter bit(3) packed unaligned dcl 789 ref 786 818 853 858 858 acl_count 004652 automatic fixed bin(17,0) dcl 2-5 set ref 179* 180 180 182 acl_ptr 004650 automatic pointer dcl 2-4 set ref 128* 180* 181 182 183 186 426 562 563 564* 671 682 683 684 724 734 735 736 767 822 835 836 955 1077 1088 1089 1090 1151 1162 1163 1164 1191 1201 1202 1203 1300 1305 1319 1326 acs_write_bracket 004425 automatic fixed bin(3,0) dcl 1653 set ref 301 452 656 841* addr builtin function dcl 1757 ref 115 115 159 162 162 196 272 275 275 343 343 367 367 389 392 392 410 464 472 472 502 505 505 595 595 604 673 673 726 726 824 824 1079 1079 1153 1153 1193 1193 1227 1230 1374 1377 1377 1461 after builtin function dcl 1757 ref 798 aim_attributes_ptr 550 based pointer level 3 in structure "imft_driver_info" dcl 13-23 in procedure "imft_receive_object_" set ref 227* 245* 307 428* aim_attributes_ptr 526 based pointer level 3 in structure "imft_driver_info" dcl 13-23 in procedure "imft_receive_object_" set ref 227* 245* 308 428* aim_check_$equal 000512 constant entry external dcl 1698 ref 701 aim_translations 32 000012 internal static structure level 3 dcl 1667 allow_dir_overwrite 36(08) 000012 internal static bit(1) level 4 packed packed unaligned dcl 1667 set ref 291* auto_mseg_message_info 001702 automatic structure level 1 dcl 1037 set ref 1227 backup_code 004713 automatic fixed bin(35,0) dcl 1479 set ref 1499* 1507* 1559* backup_control based structure level 1 dcl 3-8 backup_errors 1 based bit(1) level 2 dcl 15-83 ref 1484 backup_errors_detected 004002 automatic bit(1) dcl 1632 set ref 348 371 384 396 396 396* 611* 1482* 1534* 1572* backup_load_ 000514 constant entry external dcl 1699 ref 343 backup_message 004714 automatic varying char(20) dcl 1480 set ref 1500* 1509* 1560* bad_acl_idx 121 001140 automatic fixed bin(17,0) level 2 dcl 1613 set ref 670* 677* 723* 730 821* 1076* 1084 1150* 1157* 1189* 1197* before builtin function dcl 1757 ref 240 440 798 bit_flags 66 000540 automatic structure level 3 in structure "local_ft_request" dcl 894 in procedure "submit_request" bit_flags 104 000726 automatic structure level 4 in structure "local_rr" dcl 1611 in procedure "imft_receive_object_" bitcnt 16 000223 internal static fixed bin(24,0) level 2 dcl 1671 set ref 108* bof_command based structure level 1 dcl 15-30 ref 196 bof_reply based structure level 1 dcl 15-73 branch_info 000223 internal static structure level 1 dcl 1671 set ref 115 115 caller_name 2 004431 automatic char(32) level 2 packed packed unaligned dcl 1672 set ref 353* chase_control 000531 automatic bit(2) packed unaligned dcl 886 in procedure "submit_request" set ref 977* 989 1050 1050 chase_control 210(07) 000726 automatic bit(2) level 5 in structure "local_rr" packed packed unaligned dcl 1611 in procedure "imft_receive_object_" set ref 977 chase_sw 1(02) 000223 internal static bit(1) level 3 packed packed unaligned dcl 1671 set ref 100* check_aim 2(02) 001140 automatic bit(1) level 3 packed packed unaligned dcl 1613 set ref 668* 722* 819* 1074* 1148* check_star_name_$entry 000516 constant entry external dcl 1700 ref 982 ci 000106 automatic structure level 1 dcl 592 set ref 595 595 cleanup 004612 stack reference condition dcl 1754 ref 132 900 clock builtin function dcl 1757 ref 1213 code 1 based fixed bin(35,0) level 2 in structure "abort_command" dcl 17-48 in procedure "imft_receive_object_" set ref 530* 530* 534* code 001740 automatic fixed bin(35,0) level 2 in structure "ios_status" dcl 1615 in procedure "imft_receive_object_" set ref 336 336* code 000104 automatic fixed bin(35,0) dcl 1602 in procedure "imft_receive_object_" set ref 87* 89* 91 115* 116 117* 119 142* 143 144* 146 162* 163 163* 227* 230 241* 242 242* 245* 248 250* 275* 276 276* 343* 345* 392* 393 393* 428* 431 441* 442 442* 472* 473 473* 505* 506 506* 606* 607 608 612* 673* 674 674* 675 676 678* 681* 684* 685* 687 691 697* 698 698* 726* 727 727* 728 729 733* 736* 742 767 767 805* 807 807 815 824* 825 825* 826 828 832* 836* 838* 852 856* 858 858 933* 934 934* 936* 938 938* 949* 950 953* 982* 983 989* 992* 994 994* 1045* 1046 1046* 1052* 1053 1053* 1058* 1060 1079* 1080 1080* 1081 1081 1087* 1090* 1096 1129* 1130 1130* 1153* 1154 1154* 1155 1156 1158* 1161* 1164* 1166* 1167 1171 1193* 1194 1194* 1195 1196 1203* 1239* 1240 1240* 1300 1300 1319 1319 1325* 1377* 1378 1378* 1416 code_message 000100 automatic char(100) dcl 1431 in procedure "io_error" set ref 1434* 1436* 1437* code_message 005340 automatic char(100) dcl 1556 in procedure "notify_backup_failure" set ref 1559* 1560* code_message 001744 automatic char(100) dcl 1622 in procedure "imft_receive_object_" set ref 612* 613* 685* 687* 737* 1091* 1166* 1167* 1325* 1326* code_message 000100 automatic char(100) dcl 1262 in procedure "abort_single_request" set ref 1276* 1278* 1280* code_message 000100 automatic char(100) dcl 1346 in procedure "reject_request" set ref 1357* 1360* 1363 1365* 1368* code_message 000100 automatic char(100) dcl 1394 in procedure "abort_reception" set ref 1396* 1398* 1400* 1402* condition_info based structure level 1 dcl 4-14 condition_info_header based structure level 1 dcl 5-6 continue_to_signal_ 000520 constant entry external dcl 1701 ref 599 convert builtin function dcl 1757 ref 925 942 convert_aim_attributes_ 000522 constant entry external dcl 1702 ref 249 convert_authorization_$to_string_short 000524 constant entry external dcl 1703 ref 703 704 convert_status_code_ 000526 constant entry external dcl 1704 ref 612 685 1166 1276 1325 1357 1396 1434 1559 copy_ 000530 constant entry external dcl 1705 ref 367 copy_error_info based structure level 1 dcl 6-8 copy_flags based structure level 1 dcl 7-8 copy_items 157 004431 automatic structure level 2 dcl 1672 set ref 351* copy_options based structure level 1 dcl 8-12 copy_options_ptr based pointer level 2 dcl 6-8 ref 604 copy_sw 1(01) 000223 internal static bit(1) level 3 packed packed unaligned dcl 1671 set ref 99* count 2 based fixed bin(17,0) level 2 dcl 2-7 set ref 180* 182* 563 682 734 1088 1162 1201 cpo 004431 automatic structure level 1 dcl 1672 set ref 367 367 604 create_branch_info based structure level 1 dcl 9-17 create_branch_version_2 constant fixed bin(17,0) initial dcl 9-35 ref 96 cu_$arg_list_ptr 000532 constant entry external dcl 1706 ref 1459 1459 current_ring 004426 automatic fixed bin(3,0) dcl 1653 set ref 78* 841 1233 currentsize builtin function dcl 1757 ref 273 390 465 965 1231 1375 data_iocb 6 000012 internal static pointer level 3 dcl 1667 set ref 295* data_iocb_ptr 000100 automatic pointer dcl 1599 set ref 65* 67 162* 275* 295 392* 472* 505* 1377* debug_mode 1(01) based bit(1) level 3 packed packed unaligned dcl 13-23 ref 1444 debug_sw 36(01) 000012 internal static bit(1) level 4 packed packed unaligned dcl 1667 set ref 288* delete 156(03) 004431 automatic bit(1) level 3 in structure "cpo" packed packed unaligned dcl 1672 in procedure "imft_receive_object_" set ref 356* delete 172(09) 000540 automatic bit(1) level 4 in structure "local_ft_request" packed packed unaligned dcl 894 in procedure "submit_request" set ref 966* delete 210(09) 000726 automatic bit(1) level 5 in structure "local_rr" packed packed unaligned dcl 1611 in procedure "imft_receive_object_" set ref 966 1184 delete_acl_entry based structure level 1 dcl 2-63 dir_access 116 001140 automatic bit(3) level 2 dcl 1613 set ref 666* 720* 817* 1072* 1146* 1187* dir_access_class 000100 automatic bit(72) dcl 646 set ref 697* 701* 703* dir_access_class_text 000102 automatic char(256) packed unaligned dcl 647 set ref 702* 703* 706 706* dir_quota 22 000223 internal static fixed bin(18,0) level 2 dcl 1671 set ref 111* dir_sw 1 000223 internal static bit(1) level 3 packed packed unaligned dcl 1671 set ref 98* directory_acl_entry based structure level 1 dcl 2-54 directory_creation_mode 210(02) 000726 automatic bit(2) level 5 in structure "local_rr" packed packed unaligned dcl 1611 in procedure "imft_receive_object_" set ref 1223 directory_creation_mode 177(02) 000121 automatic bit(2) level 4 in structure "local_bof_command" packed packed unaligned dcl 1608 in procedure "imft_receive_object_" set ref 328 directory_creation_mode 172(02) 000540 automatic bit(2) level 4 in structure "local_ft_request" packed packed unaligned dcl 894 in procedure "submit_request" set ref 1223* 1225* dirname 3 000540 automatic char(168) level 3 in structure "local_ft_request" dcl 894 in procedure "submit_request" set ref 1215* dirname 21 000726 automatic char(168) level 4 in structure "local_rr" dcl 1611 in procedure "imft_receive_object_" set ref 412 dirname 3 001140 automatic char(168) level 2 in structure "imft_chk_acl" dcl 1613 in procedure "imft_receive_object_" set ref 664* 718* 798* 810* 853* 1070* 1144* divide builtin function dcl 1757 ref 1536 effective_ring 120 001140 automatic fixed bin(17,0) level 2 dcl 1613 set ref 669* 820* 1075* 1149* ename 73 000726 automatic char(32) level 4 in structure "local_rr" dcl 1611 in procedure "imft_receive_object_" set ref 413 ename 55 001140 automatic char(32) level 2 in structure "imft_chk_acl" dcl 1613 in procedure "imft_receive_object_" set ref 665* 719* 800* 811* 1071* 1145* ename 55 000540 automatic char(32) level 3 in structure "local_ft_request" dcl 894 in procedure "submit_request" set ref 1216* enforce_minimum_ring 36(13) 000012 internal static bit(1) level 4 packed packed unaligned dcl 1667 set ref 300* entries 3 based structure array level 2 dcl 2-7 set ref 682 734 1088 1162 1201 entry_bit_count 001270 automatic fixed bin(24,0) dcl 1030 set ref 1045* 1058* entry_bound 157(07) 004431 automatic bit(1) level 3 packed packed unaligned dcl 1672 set ref 354* entry_idx 000536 automatic fixed bin(17,0) dcl 891 set ref 996* 997* entry_type 001271 automatic fixed bin(2,0) dcl 1031 set ref 1045* 1050 1058* 1223 eof_command based structure level 1 dcl 15-83 eof_command_ptr 004660 automatic pointer dcl 15-87 set ref 522* 1484 eof_reply based structure level 1 dcl 15-92 errfile_attached 004000 automatic bit(1) dcl 1629 set ref 130* 337* 572 576* 1521* errfile_bc 004712 automatic fixed bin(24,0) dcl 1478 set ref 1490* 1492 1536 errfile_dname 000246 internal static char(168) packed unaligned dcl 1674 set ref 84* 86* 87* 113* 115* 574* 575* 1490* 1518* 1519* errfile_ename 000320 internal static char(32) packed unaligned dcl 1675 set ref 85* 86* 87* 574* 575* 1490* 1518* 1519* errfile_lth 004730 automatic fixed bin(21,0) dcl 1531 set ref 1536* 1543 1543 errfile_pathname 000330 internal static char(168) packed unaligned dcl 1676 set ref 86* 89* 335* errfile_ptr 003776 automatic pointer dcl 1628 set ref 87* 88 94* 128* 567 568* 569* 1490* 1492 1543 error 1 000724 automatic bit(1) level 2 dcl 1610 set ref 384* error_code 122 001140 automatic fixed bin(35,0) level 2 dcl 1613 set ref 674 727 825 1080 1154 1194 error_file based char packed unaligned dcl 1530 in procedure "report_backup_errors" set ref 1543* error_file 36(05) 000012 internal static bit(1) level 4 in structure "static_backup_control" packed packed unaligned dcl 1667 in procedure "imft_receive_object_" set ref 289* error_message 123 001140 automatic varying char(512) array level 2 dcl 1613 set ref 730 737* 1084 1091* error_name 170 000012 internal static char(65) level 3 packed packed unaligned dcl 1667 set ref 1560* error_table_$ai_restricted 000464 external static fixed bin(35,0) dcl 1680 set ref 710* error_table_$bad_arg 000466 external static fixed bin(35,0) dcl 1681 ref 60 68 error_table_$fatal_error 000470 external static fixed bin(35,0) dcl 1682 ref 173 552 error_table_$link 000472 external static fixed bin(35,0) dcl 1683 set ref 1062* error_table_$moderr 000474 external static fixed bin(35,0) dcl 1684 ref 767 858 1300 1319 error_table_$noentry 000476 external static fixed bin(35,0) dcl 1685 ref 807 852 1499 error_table_$unimplemented_version 000500 external static fixed bin(35,0) dcl 1686 ref 55 676 729 828 1081 1156 1196 error_table_$unsupported_operation 000502 external static fixed bin(35,0) dcl 1687 ref 608 error_table_$user_not_found 000504 external static fixed bin(35,0) dcl 1688 ref 767 858 1300 1319 expand_pathname_ 000534 constant entry external dcl 1707 ref 663 1143 extend 172(10) 000540 automatic bit(1) level 4 in structure "local_ft_request" packed packed unaligned dcl 894 in procedure "submit_request" set ref 967* extend 177(10) 000121 automatic bit(1) level 4 in structure "local_bof_command" packed packed unaligned dcl 1608 in procedure "imft_receive_object_" set ref 233* 257* 315 348 357 371* 713 752* 1538* 1564* extend 157(08) 004431 automatic bit(1) level 3 in structure "cpo" packed packed unaligned dcl 1672 in procedure "imft_receive_object_" set ref 357* extend 210(10) 000726 automatic bit(1) level 5 in structure "local_rr" packed packed unaligned dcl 1611 in procedure "imft_receive_object_" set ref 445* 967 1108 1108* 1114 1121* find_condition_info_ 000536 constant entry external dcl 1708 ref 595 first 36(06) 000012 internal static bit(1) level 4 packed packed unaligned dcl 1667 set ref 290* first_call 000010 internal static bit(1) initial dcl 1665 set ref 82 123* fis_info based structure level 1 dcl 14-7 fis_info_ptr 004656 automatic pointer dcl 14-16 set ref 49* 54 59 59 59 64 65 142* flags 177 000121 automatic structure level 3 in structure "local_bof_command" dcl 1608 in procedure "imft_receive_object_" flags 156 004431 automatic structure level 2 in structure "cpo" dcl 1672 in procedure "imft_receive_object_" set ref 355* flags 210 000726 automatic structure level 4 in structure "local_rr" dcl 1611 in procedure "imft_receive_object_" flags 2 001140 automatic structure level 2 in structure "imft_chk_acl" dcl 1613 in procedure "imft_receive_object_" flags 172 000540 automatic structure level 3 in structure "local_ft_request" dcl 894 in procedure "submit_request" flags 5 000121 automatic structure level 3 in structure "local_bof_command" dcl 1608 in procedure "imft_receive_object_" flags 1 based structure level 2 in structure "imft_driver_info" dcl 13-23 in procedure "imft_receive_object_" foreign_backup_errors 004003 automatic bit(1) dcl 1633 set ref 371* 396 396* 396 1484* 1486* 1513 foreign_dirname 110 000540 automatic char(168) level 3 in structure "local_ft_request" packed packed unaligned dcl 894 in procedure "submit_request" set ref 1219* foreign_dirname 115 000121 automatic char(168) level 3 in structure "local_bof_command" packed packed unaligned dcl 1608 in procedure "imft_receive_object_" set ref 206 foreign_dirname 126 000726 automatic char(168) level 4 in structure "local_rr" packed packed unaligned dcl 1611 in procedure "imft_receive_object_" set ref 416* 1219 foreign_ename 167 000121 automatic char(32) level 3 in structure "local_bof_command" packed packed unaligned dcl 1608 in procedure "imft_receive_object_" set ref 207 foreign_ename 200 000726 automatic char(32) level 4 in structure "local_rr" packed packed unaligned dcl 1611 in procedure "imft_receive_object_" set ref 416* 1129* 1130 foreign_ename 162 000540 automatic char(32) level 3 in structure "local_ft_request" packed packed unaligned dcl 894 in procedure "submit_request" set ref 1220* foreign_ename 001260 automatic char(32) packed unaligned dcl 1028 in procedure "process_single_request" set ref 1129* 1220 foreign_equalname 004266 automatic char(168) packed unaligned dcl 1644 set ref 416* 418* 445* foreign_full_pathname 004152 automatic char(168) packed unaligned dcl 1638 set ref 209* 215* 233* 313 foreign_path_given 172(01) 000540 automatic bit(1) level 4 in structure "local_ft_request" packed packed unaligned dcl 894 in procedure "submit_request" set ref 976* 1128 1218 foreign_path_given 210(01) 000726 automatic bit(1) level 5 in structure "local_rr" packed packed unaligned dcl 1611 in procedure "imft_receive_object_" set ref 416 445* 976 foreign_path_given 177(01) 000121 automatic bit(1) level 4 in structure "local_bof_command" packed packed unaligned dcl 1608 in procedure "imft_receive_object_" set ref 205 233* 318 foreign_sys_name 104 001140 automatic char(32) level 2 dcl 1613 set ref 185* foreign_system 103 000121 automatic structure level 2 in structure "local_bof_command" dcl 1608 in procedure "imft_receive_object_" foreign_system 530 based structure level 2 in structure "imft_driver_info" dcl 13-23 in procedure "imft_receive_object_" foreign_system_name 004224 automatic varying char(32) dcl 1639 set ref 52* 163 171* 185 233* 250 257* 276 371* 393 396* 434 445* 473 506 509* 515* 534 536 538 540 543 545 550* 706* 800 853* 858* 924 1244* 1378 1461 1513* 1538* 1543 1560* 1564* 1569 foreign_user 105 000121 automatic char(32) level 3 in structure "local_bof_command" packed packed unaligned dcl 1608 in procedure "imft_receive_object_" set ref 218 foreign_user 116 000726 automatic char(32) level 4 in structure "local_rr" packed packed unaligned dcl 1611 in procedure "imft_receive_object_" set ref 420 foreign_user 100 000540 automatic char(32) level 3 in structure "local_ft_request" packed packed unaligned dcl 894 in procedure "submit_request" set ref 972* foreign_user_given 172 000540 automatic bit(1) level 4 in structure "local_ft_request" packed packed unaligned dcl 894 in procedure "submit_request" set ref 973* foreign_user_given 210 000726 automatic bit(1) level 5 in structure "local_rr" packed packed unaligned dcl 1611 in procedure "imft_receive_object_" set ref 420 445* foreign_user_given 177 000121 automatic bit(1) level 4 in structure "local_bof_command" packed packed unaligned dcl 1608 in procedure "imft_receive_object_" set ref 218 233* foreign_user_id 004370 automatic varying char(32) dcl 1649 set ref 222* 424* 822 858* 862* 971 972 found 165 000012 internal static bit(1) level 3 dcl 1667 set ref 1497 ft_request based structure level 1 dcl 16-16 gen_acl_ptr 114 001140 automatic pointer level 2 dcl 1613 set ref 186* general_acl based structure level 1 dcl 2-7 set ref 180 563 general_acl_entry based structure level 1 unaligned dcl 2-12 general_delete_acl_entry based structure level 1 dcl 2-35 general_extended_acl_entry based structure level 1 dcl 2-23 get_authorization_ 000540 constant entry external dcl 1709 ref 110 get_equal_name_ 000542 constant entry external dcl 1710 ref 1129 get_group_id_ 000544 constant entry external dcl 1711 ref 75 get_pdir_ 000546 constant entry external dcl 1712 ref 84 get_ring_ 000550 constant entry external dcl 1713 ref 78 get_system_free_area_ 000552 constant entry external dcl 1714 ref 72 global 000121 automatic structure level 2 in structure "local_bof_command" dcl 1608 in procedure "imft_receive_object_" global 000726 automatic structure level 2 in structure "local_rr" dcl 1611 in procedure "imft_receive_object_" have_starname 000532 automatic bit(1) packed unaligned dcl 887 set ref 983* 986 1050 1102 1106 1273 hbound builtin function dcl 1757 ref 59 682 734 1088 1162 1201 hcs_$create_branch_ 000554 constant entry external dcl 1715 ref 115 hcs_$get_access_class 000556 constant entry external dcl 1716 ref 697 hcs_$get_link_target 000560 constant entry external dcl 1717 ref 805 1052 hcs_$get_user_access_modes 000562 constant entry external dcl 1718 ref 936 hcs_$initiate_count 000564 constant entry external dcl 1720 ref 1490 hcs_$make_seg 000566 constant entry external dcl 1723 ref 87 hcs_$set_bc 000570 constant entry external dcl 1724 ref 575 1519 hcs_$star_ 000572 constant entry external dcl 1725 ref 989 992 hcs_$status_minf 000574 constant entry external dcl 1726 ref 1045 1058 hcs_$terminate_noname 000576 constant entry external dcl 1727 ref 94 568 hcs_$truncate_file 000600 constant entry external dcl 1728 ref 574 1518 hdr_version 2 000540 automatic fixed bin(17,0) level 3 dcl 894 set ref 961* header 000540 automatic structure level 2 in structure "local_ft_request" dcl 894 in procedure "submit_request" header 16 000726 automatic structure level 3 in structure "local_rr" dcl 1611 in procedure "imft_receive_object_" header based structure level 2 in structure "backup_control" dcl 3-8 in procedure "imft_receive_object_" header based structure level 2 in structure "sub_error_info" dcl 23-7 in procedure "imft_receive_object_" header 000012 internal static structure level 2 in structure "static_backup_control" dcl 1667 in procedure "imft_receive_object_" icri based structure level 1 dcl 12-6 idx 000105 automatic fixed bin(17,0) dcl 1603 set ref 682* 683 684 686* 734* 735 736 737* 1088* 1089 1090 1091* 1162* 1163 1164 1165* 1201* 1202 1203 1204* ignore_code 000106 automatic fixed bin(35,0) dcl 1604 set ref 94* 331* 332* 333* 568* 574* 575* 595* 599* 663* 703* 704* 913* 917* 1012* 1014* 1143* 1461* 1490* 1518* 1519* 1543* 1569* ignore_fb21 000107 automatic fixed bin(21,0) dcl 1605 set ref 467* 613* 706* 752* 767* 772* 853* 858* 862* 951* 1108* 1121* 1300* 1305* 1319* 1326* 1538* 1560* 1564* imft_check_acl based structure level 1 dcl 11-11 imft_chk_acl 001140 automatic structure level 1 dcl 1613 set ref 673 673 726 726 824 824 1079 1079 1153 1153 1193 1193 imft_convert_status_code_$decode 000604 constant entry external dcl 1730 ref 530 imft_data_$queue_dirname 000510 external static char(168) packed unaligned dcl 1692 set ref 933* 934* 936* 938* imft_debug_ 000000 stack reference condition dcl 1754 ref 1444 imft_driver_info based structure level 1 dcl 13-23 imft_driver_info_ptr 004654 automatic pointer dcl 13-66 set ref 48* 52 187 188 227 227 230 245 245 307 308 380 396 428 428 431 434 467 858 951 1444 1484 imft_et_$timeout 000506 external static fixed bin(35,0) dcl 1690 ref 1444 imft_find_input_switch_ 000606 constant entry external dcl 1731 ref 142 imft_mail_interface_$deliver_message 000610 constant entry external dcl 1732 ref 1461 1543 1569 imft_pnt_interface_$validate_personid 000612 constant entry external dcl 1735 ref 241 441 imft_read_abort_ 004620 stack reference condition dcl 1754 ref 341 imft_remote_logout_ 004626 stack reference condition dcl 1754 ref 168 517 imft_resynchronize_driver_ 004634 stack reference condition dcl 1754 ref 165 511 imft_util_$check_object_acl 000614 constant entry external dcl 1736 ref 673 726 824 1079 1153 1193 include_files 210(05) 000726 automatic bit(1) level 5 packed packed unaligned dcl 1611 set ref 1102 include_subtrees 210(06) 000726 automatic bit(1) level 5 packed packed unaligned dcl 1611 set ref 1106 index builtin function dcl 1757 ref 748 1117 info_ptr 116 based pointer level 2 in structure "sub_error_info" dcl 23-7 in procedure "imft_receive_object_" ref 603 604 608 info_ptr 14 000106 automatic pointer level 2 in structure "ci" dcl 592 in procedure "copy_sub_err_handler" set ref 596 info_string 3 based varying char(256) level 3 dcl 23-7 set ref 613 613* input_buffer 001775 automatic char(2048) packed unaligned dcl 1623 set ref 159 160 196 410 502 503 ioa_$general_rs 000616 constant entry external dcl 1737 ref 1459 ioa_$rsnnl 000620 constant entry external dcl 1738 ref 467 613 706 752 767 772 853 858 862 951 1108 1121 1300 1305 1319 1326 1538 1560 1564 iocbs 4 based pointer array level 2 dcl 14-7 ref 59 64 65 iod_info_$driver_access_name 000602 constant entry external dcl 1729 ref 949 iodd_msg_ 000622 constant entry external dcl 1739 ref 89 117 144 171 233 396 402 445 475 550 580 1368 1402 1417 1440 ios_$attach 000624 constant entry external dcl 1740 ref 335 ios_$detach 000626 constant entry external dcl 1741 ref 573 1488 ios_status 001740 automatic structure level 1 dcl 1615 set ref 335* 573* 1488* iox_$control 000630 constant entry external dcl 1742 ref 162 275 392 472 505 1377 length builtin function dcl 1757 ref 77 160 503 link_dirname 000100 automatic char(168) packed unaligned dcl 791 set ref 805* 810 812* link_ename 000152 automatic char(32) packed unaligned dcl 792 set ref 805* 811 812* linkage_error 000000 stack reference condition dcl 1754 ref 929 931 loaded 166 000012 internal static bit(1) level 3 dcl 1667 set ref 1504 local_bof_command 000121 automatic structure level 1 dcl 1608 set ref 196* local_bof_reply 000321 automatic structure level 1 dcl 1609 set ref 272 273 464 465 1374 1375 local_dirname 000162 automatic char(168) packed unaligned dcl 793 in procedure "validate_acs" set ref 798* 801* 805* local_dirname 21 000121 automatic char(168) level 3 in structure "local_bof_command" packed packed unaligned dcl 1608 in procedure "imft_receive_object_" set ref 209* 213 local_dirname 000760 automatic char(168) packed unaligned dcl 1027 in procedure "process_single_request" set ref 1039* 1041* 1045* 1052* 1056* 1058* 1070 1143* 1215 local_dirname 004100 automatic char(168) packed unaligned dcl 1638 in procedure "imft_receive_object_" set ref 206* 208* 213* 215* 362 412* 414* 658 663* 687* 706* 717* 718 989* 992* 997* 1010* local_ename 73 000121 automatic char(32) level 3 in structure "local_bof_command" packed packed unaligned dcl 1608 in procedure "imft_receive_object_" set ref 209* 214 local_ename 000234 automatic char(32) packed unaligned dcl 794 in procedure "validate_acs" set ref 800* 801* 805* local_ename 001230 automatic char(32) packed unaligned dcl 1028 in procedure "process_single_request" set ref 1040* 1041* 1045* 1052* 1057* 1058* 1071 1129* 1130 1216 local_entname 004235 automatic char(32) packed unaligned dcl 1640 set ref 207* 208* 214* 215* 315* 361 363 717* 719 local_eof_reply 000724 automatic structure level 1 dcl 1610 set ref 389 390 local_error_message 000202 automatic char(1024) packed unaligned dcl 648 in procedure "validate_access" set ref 678* 687* 706* 710* 752* 755* 767* 772* local_error_message 000140 automatic char(1024) packed unaligned dcl 593 in procedure "copy_sub_err_handler" set ref 613* 615* local_error_message 001272 automatic char(1024) packed unaligned dcl 1033 in procedure "process_single_request" set ref 1108* 1111* 1121* 1123* 1158* 1167* 1198* 1205* 1300* 1305* 1319* 1326* local_error_message 000127 automatic char(1024) packed unaligned dcl 882 in procedure "submit_request" set ref 951* 953* local_error_message 000244 automatic char(1024) packed unaligned dcl 795 in procedure "validate_acs" set ref 832* 838* 853* 858* 862* local_ft_request 000540 automatic structure level 1 dcl 894 set ref 959* 965 1230 1231 local_full_pathname 004026 automatic char(168) packed unaligned dcl 1638 set ref 208* 215* 233* 257* 318 371* 414* 418 445* 509* 515* 1365* 1400* 1437* 1513* 1538* 1560* 1564* local_icri 000110 automatic structure level 1 dcl 1607 set ref 162 162 275 275 392 392 472 472 505 505 1377 1377 local_pathname 000644 automatic char(168) packed unaligned dcl 796 in procedure "validate_acs" set ref 801* 812* 862* local_pathname 000602 automatic char(168) packed unaligned dcl 649 in procedure "validate_access" set ref 717* 737* 767* local_pathname 001032 automatic char(168) packed unaligned dcl 1027 in procedure "process_single_request" set ref 1041* 1046* 1053* 1062* 1084* 1091* 1096* 1123* 1130* 1167* 1240* 1244* 1319* 1326* local_personid 004014 automatic char(32) packed unaligned dcl 1635 set ref 240* 241* 242 440* 441* 442 local_request_number 004245 automatic fixed bin(35,0) dcl 1641 set ref 198* 383 411* 445* 467* 475* 580* 1368* local_rr 000726 automatic structure level 1 dcl 1611 set ref 410* local_starname 004246 automatic char(32) packed unaligned dcl 1642 set ref 413* 414* 982* 989* 992* 1010* local_system 506 based structure level 2 in structure "imft_driver_info" dcl 13-23 in procedure "imft_receive_object_" local_system 6 000121 automatic structure level 2 in structure "local_bof_command" dcl 1608 in procedure "imft_receive_object_" local_system 3 000726 automatic structure level 2 in structure "local_rr" dcl 1611 in procedure "imft_receive_object_" local_type 004256 automatic char(32) packed unaligned dcl 1643 set ref 748* 750* 752* 1117* 1119* 1121* local_user 3 000726 automatic char(32) level 3 in structure "local_rr" dcl 1611 in procedure "imft_receive_object_" set ref 422 424 445* local_user 6 000121 automatic char(32) level 3 in structure "local_bof_command" packed packed unaligned dcl 1608 in procedure "imft_receive_object_" set ref 220 222 233* local_user_access_id 004415 automatic char(32) packed unaligned dcl 1652 set ref 923* 936* local_user_authorization 13 000726 automatic bit(72) level 3 in structure "local_rr" dcl 1611 in procedure "imft_receive_object_" set ref 428* local_user_authorization 16 000121 automatic bit(72) level 3 in structure "local_bof_command" dcl 1608 in procedure "imft_receive_object_" set ref 225 227* local_user_id 004401 automatic varying char(32) dcl 1649 set ref 223* 425* 426 671 724 772* 798 798 853* 858* 923 971 1077 1151 1191 local_user_ring 20 000121 automatic fixed bin(17,0) level 3 in structure "local_bof_command" dcl 1608 in procedure "imft_receive_object_" set ref 656 local_user_ring 15 000726 automatic fixed bin(17,0) level 3 in structure "local_rr" dcl 1611 in procedure "imft_receive_object_" set ref 452 mail_access_class 004024 automatic bit(72) dcl 1636 set ref 227* 230* 428* 431* 1234 1235 1461* 1543* 1569* mail_destination 004004 automatic char(32) packed unaligned dcl 1635 set ref 218* 220* 223 233* 240 420* 422* 425 440 445* 1232 1461* 1543* 1569* mail_message 005772 automatic varying char(1024) dcl 1557 set ref 1560* 1569 mail_subject 004731 automatic varying char(1024) dcl 1532 in procedure "report_backup_errors" set ref 1538* 1543 mail_subject 005371 automatic varying char(1024) dcl 1557 in procedure "notify_backup_failure" set ref 1564* 1569 master_iocb_ptr 000102 automatic pointer dcl 1600 set ref 64* 67 max builtin function dcl 1757 ref 452 656 841 mbz1 1(05) 000223 internal static bit(31) level 3 packed packed unaligned dcl 1671 set ref 103* mbz2 2(03) 000223 internal static bit(33) level 2 packed packed unaligned dcl 1671 set ref 105* message_segment_$close 000634 constant entry external dcl 1744 ref 913 1012 message_segment_$open 000632 constant entry external dcl 1743 ref 933 message_type 65 000540 automatic fixed bin(17,0) level 3 dcl 894 set ref 962* minimum_ring 31 000012 internal static fixed bin(17,0) level 3 dcl 1667 set ref 301* mode 2 000223 internal static bit(3) level 2 packed packed unaligned dcl 1671 set ref 104* ms_access_class 11 based bit(72) level 2 dcl 20-9 set ref 1234* ms_id 7 based bit(72) level 2 dcl 20-9 set ref 1237* ms_len 6 based fixed bin(24,0) level 2 dcl 20-9 set ref 1231* ms_ptr 4 based pointer level 2 dcl 20-9 set ref 1230* mseg_message_info based structure level 1 dcl 20-9 set ref 1228* mseg_message_info_ptr 004664 automatic pointer dcl 20-7 set ref 1227* 1228 1229 1230 1231 1232 1233 1234 1234 1235 1236 1237 1239* msg_time 000540 automatic fixed bin(71,0) level 3 dcl 894 set ref 1213* 1243* my_group_id 004350 automatic char(32) packed unaligned dcl 1647 set ref 75* 77 77 107 my_user_id 004360 automatic char(30) packed unaligned dcl 1648 set ref 77* 183 772* n_iocbs 2 based fixed bin(17,0) level 2 dcl 14-7 ref 59 59 n_not_submitted 004430 automatic fixed bin(17,0) dcl 1656 set ref 467 467* 467 475 475* 475 980* 1284* 1284 n_submitted 004427 automatic fixed bin(17,0) dcl 1655 set ref 467* 467 475* 475 979* 1248* 1248 name 106 based char(32) level 2 in structure "sub_error_info" dcl 23-7 in procedure "imft_receive_object_" ref 598 name 506 based char(32) level 3 in structure "imft_driver_info" packed packed unaligned dcl 13-23 in procedure "imft_receive_object_" set ref 396* 467* 858* 951* name 530 based char(32) level 3 in structure "imft_driver_info" packed packed unaligned dcl 13-23 in procedure "imft_receive_object_" ref 52 new_path 112 000012 internal static char(168) level 3 packed packed unaligned dcl 1667 set ref 315* 318* 321* nindex 0(18) based fixed bin(18,0) array level 2 packed packed unsigned unaligned dcl 22-27 ref 997 nnames 0(02) based fixed bin(16,0) array level 2 packed packed unsigned unaligned dcl 22-27 ref 903 1001 no_primary_sw 164 000012 internal static bit(1) level 4 packed packed unaligned dcl 1667 set ref 324* notify 5 000121 automatic bit(1) level 4 in structure "local_bof_command" packed packed unaligned dcl 1608 in procedure "imft_receive_object_" set ref 257 371 1433 notify 000131 automatic bit(1) packed unaligned dcl 1263 in procedure "abort_single_request" set ref 1265* 1271* 1280 1290 notify 104(01) 000726 automatic bit(1) level 5 in structure "local_rr" packed packed unaligned dcl 1611 in procedure "imft_receive_object_" set ref 963 1242 notify 66(01) 000540 automatic bit(1) level 4 in structure "local_ft_request" packed packed unaligned dcl 894 in procedure "submit_request" set ref 963* notify_msg based char packed unaligned dcl 1456 set ref 1461* notify_msg_buffer 002775 automatic char(2048) packed unaligned dcl 1624 set ref 1459* 1461 notify_msg_buffer_used 000100 automatic fixed bin(21,0) dcl 1457 set ref 1459* 1461 1461 null builtin function dcl 1757 ref 67 67 88 128 562 564 567 569 595 595 603 898 902 904 907 909 987 1003 1492 object 40 000012 internal static structure level 2 dcl 1667 object_access_class 1 000121 automatic bit(72) level 3 dcl 1608 set ref 245* 245* 249* 701* 704* object_access_class_text 000654 automatic char(256) packed unaligned dcl 650 set ref 702* 704* 706 706* object_in_progress 004001 automatic bit(1) dcl 1631 set ref 130* 155* 190* 482* 579 582* 1433 object_ring 75 001140 automatic fixed bin(3,0) level 2 dcl 1613 set ref 841 object_type 000121 automatic fixed bin(2,0) level 3 dcl 1608 set ref 233 257 325 371 1538 1564 octal_string 004340 automatic char(32) dcl 1645 set ref 249* 250 old_version 1(06) based bit(1) level 3 packed packed unaligned dcl 13-23 ref 380 1484 operation 2 based char(32) level 2 dcl 6-8 ref 608 options 36 000012 internal static structure level 3 dcl 1667 set ref 287* orig_queue 70 000540 automatic fixed bin(17,0) level 3 dcl 894 set ref 964* p_code parameter fixed bin(35,0) dcl 1343 in procedure "reject_request" set ref 1340 1352 1357 1357* 1365 p_code parameter fixed bin(35,0) dcl 1258 in procedure "abort_single_request" set ref 1255 1268 1276 1276* 1280 1290* 1291* p_code parameter fixed bin(35,0) dcl 1391 in procedure "abort_reception" set ref 1388 1396 1396* p_dirname parameter char packed unaligned dcl 1025 ref 1022 1039 p_ename parameter char packed unaligned dcl 1025 ref 1022 1040 p_idx parameter fixed bin(17,0) dcl 765 in procedure "set_va_dir_sma_error_message" ref 762 767 767 p_idx parameter fixed bin(17,0) dcl 1298 in procedure "set_dir_s_error_message" ref 1295 1300 1300 1305 1305 p_idx parameter fixed bin(17,0) dcl 1315 in procedure "set_dir_sma_error_message" ref 1312 1319 1319 1326 1326 p_io_code parameter fixed bin(35,0) dcl 1428 set ref 1425 1434 1434* 1440* 1442 1444 p_message parameter char packed unaligned dcl 1260 in procedure "abort_single_request" set ref 1255 1268 1280* 1290* 1291* p_message parameter char packed unaligned dcl 1344 in procedure "reject_request" set ref 1340 1352 1363 1365* 1368* p_message parameter char packed unaligned dcl 1429 in procedure "io_error" set ref 1425 1437* 1440* p_message parameter char packed unaligned dcl 1392 in procedure "abort_reception" set ref 1388 1400* 1402* p_pathname parameter char packed unaligned dcl 1259 set ref 1255 1268 1280* parent_ac_sw 1(04) 000223 internal static bit(1) level 3 packed packed unaligned dcl 1671 set ref 102* parent_dirname 001104 automatic char(168) packed unaligned dcl 1027 in procedure "process_single_request" set ref 1143* 1144 parent_dirname 000754 automatic char(168) packed unaligned dcl 651 in procedure "validate_access" set ref 663* 664 697 parent_ename 001026 automatic char(32) packed unaligned dcl 652 in procedure "validate_access" set ref 663* 665 697 parent_ename 001240 automatic char(32) packed unaligned dcl 1028 in procedure "process_single_request" set ref 1143* 1145 path 40 000012 internal static char(168) level 3 packed packed unaligned dcl 1667 set ref 313* pathname_ 000636 constant entry external dcl 1745 ref 86 113 208 209 215 315 414 416 717 801 812 934 938 1041 preattached 36(04) 000012 internal static bit(1) level 4 packed packed unaligned dcl 1667 set ref 293* priv_code 000537 automatic fixed bin(35,0) dcl 892 set ref 897* 917 930* 1014 priv_upgrade_sw 1(03) 000223 internal static bit(1) level 3 packed packed unaligned dcl 1671 set ref 101* queue 4 000121 automatic fixed bin(17,0) level 3 in structure "local_bof_command" dcl 1608 in procedure "imft_receive_object_" set ref 233* 257* 371* 1538* 1560* 1564* queue 1 000726 automatic fixed bin(17,0) level 3 in structure "local_rr" dcl 1611 in procedure "imft_receive_object_" set ref 445* 925 942 964 1244* queue_admin_$add_index 000642 constant entry external dcl 1747 ref 1239 queue_ename 000117 automatic char(32) packed unaligned dcl 881 set ref 925* 933* 934* 936* 938* queue_index 000100 automatic fixed bin(17,0) dcl 878 set ref 896* 912 913* 914* 933* 1012* 1239* queue_mode 000530 automatic bit(36) dcl 885 set ref 936* 942 queue_msg_hdr based structure level 1 dcl 21-12 queue_msg_hdr_version_1 constant fixed bin(17,0) initial dcl 21-37 ref 961 queue_picture automatic picture(1) packed unaligned dcl 883 ref 925 942 quota 17 000223 internal static fixed bin(18,0) level 2 dcl 1671 set ref 109* raw 156(01) 004431 automatic bit(1) level 3 packed packed unaligned dcl 1672 set ref 359* real_dirname 001156 automatic char(168) packed unaligned dcl 1027 set ref 1052* 1056 real_ename 001250 automatic char(32) packed unaligned dcl 1028 set ref 1052* 1057 reason based fixed bin(17,0) level 2 dcl 17-48 ref 529 529 530 536 538 540 540 543 record_info 4 000110 automatic structure level 2 dcl 1607 record_lth 10 000110 automatic fixed bin(21,0) level 3 dcl 1607 set ref 273* 390* 465* 1375* record_max_lth 7 000110 automatic fixed bin(21,0) level 3 dcl 1607 set ref 160* 503* record_ptr 4 000110 automatic pointer level 3 dcl 1607 set ref 159* 272* 389* 464* 502* 522 528 1374* record_type 6 000110 automatic fixed bin(17,0) level 3 dcl 1607 set ref 165 165 168 170 170 171* 192 271* 388* 463* 508 508 514 520 527 550* 1373* remote_request based structure level 1 dcl 15-55 ref 410 remote_request_allowed 1(08) based bit(1) level 3 packed packed unaligned dcl 13-23 ref 434 reported_dir_sma_warning 000535 automatic bit(1) packed unaligned dcl 890 set ref 984* 1184 1317* reported_error 000534 automatic bit(1) packed unaligned dcl 889 set ref 988* 1004 1286* request 76 based structure level 2 in structure "ft_request" dcl 16-16 in procedure "imft_receive_object_" request 76 000540 automatic structure level 2 in structure "local_ft_request" dcl 894 in procedure "submit_request" request 114 based structure level 3 in structure "remote_request" dcl 15-55 in procedure "imft_receive_object_" request 114 000726 automatic structure level 3 in structure "local_rr" dcl 1611 in procedure "imft_receive_object_" request_count 37 000012 internal static fixed bin(17,0) level 3 dcl 1667 set ref 311* request_id 001672 automatic char(19) packed unaligned dcl 1034 set ref 1243* 1244 request_id_ 000640 constant entry external dcl 1746 ref 1243 request_info 16 000726 automatic structure level 2 dcl 1611 request_number 000726 automatic fixed bin(35,0) level 3 in structure "local_rr" dcl 1611 in procedure "imft_receive_object_" set ref 411 request_number 000321 automatic fixed bin(35,0) level 2 in structure "local_bof_reply" dcl 1609 in procedure "imft_receive_object_" set ref 198* 411* request_number 3 000121 automatic fixed bin(35,0) level 3 in structure "local_bof_command" dcl 1608 in procedure "imft_receive_object_" set ref 198 233* 402* 1402* request_number 000724 automatic fixed bin(35,0) level 2 in structure "local_eof_reply" dcl 1610 in procedure "imft_receive_object_" set ref 383* request_type 000101 automatic char(24) packed unaligned dcl 879 set ref 924* 925 942 949* requests 40 based structure array level 2 dcl 3-8 restore_access_class 36(12) 000012 internal static bit(1) level 4 packed packed unaligned dcl 1667 set ref 297* rings 3 000223 internal static fixed bin(3,0) array level 2 dcl 1671 set ref 106* 106* 106* rtrim builtin function dcl 1757 ref 52 77 183 222 223 242 250 424 425 442 925 942 1130 1130 1232 1363 seg_access 117 001140 automatic bit(3) level 2 dcl 1613 set ref 667* 721* 818* 1073* 1147* 1188* segment_acl_entry based structure level 1 dcl 2-45 send_to_user 000131 automatic bit(1) packed unaligned dcl 1347 set ref 1349* 1355* 1365 sender_authorization 25 based bit(72) level 2 dcl 20-9 set ref 1234* sender_id 13 based char(32) level 2 packed packed unaligned dcl 20-9 set ref 1232* sender_level 24 based fixed bin(17,0) level 2 dcl 20-9 set ref 1233* sender_max_authorization 27 based bit(72) level 2 dcl 20-9 set ref 1235* sender_process_id 23 based bit(36) level 2 dcl 20-9 set ref 1236* shortinfo 004412 automatic char(8) dcl 1650 set ref 612* 685* 1166* 1276* 1325* 1357* 1396* 1434* 1559* source 003775 automatic fixed bin(17,0) dcl 1626 set ref 142* 150 source_attributes_ptr 32 000012 internal static pointer level 4 dcl 1667 set ref 307* source_dir 12 004431 automatic char(168) level 2 packed packed unaligned dcl 1672 set ref 360* source_name 64 004431 automatic char(32) level 2 packed packed unaligned dcl 1672 set ref 361* star_ALL_ENTRIES 000314 constant fixed bin(2,0) initial dcl 22-111 set ref 989* star_BRANCHES_ONLY 000316 constant fixed bin(2,0) initial dcl 22-110 set ref 992* star_DIRECTORY constant fixed bin(2,0) initial unsigned dcl 22-121 ref 1223 star_LINK constant fixed bin(2,0) initial unsigned dcl 22-119 ref 1050 star_entries based structure array level 1 dcl 22-27 ref 908 1002 star_entry_count 004666 automatic fixed bin(17,0) dcl 22-14 set ref 903 908 989* 992* 996 1001 1002 star_entry_ptr 004670 automatic pointer dcl 22-15 set ref 898* 903 907 908 909* 987* 989* 992* 997 1001 1002 1003* star_names based char(32) array packed unaligned dcl 22-37 set ref 903 997* 1001 star_names_ptr 004672 automatic pointer dcl 22-19 set ref 898* 902 903 904* 987* 989* 992* 997 1001 1003* static_backup_control 000012 internal static structure level 1 dcl 1667 set ref 343 343 status_code 104 based fixed bin(35,0) level 3 in structure "sub_error_info" dcl 23-7 in procedure "imft_receive_object_" ref 606 status_code 167 000012 internal static fixed bin(35,0) level 3 in structure "static_backup_control" dcl 1667 in procedure "imft_receive_object_" set ref 1507 status_code 14 based fixed bin(35,0) array level 3 in structure "general_acl" dcl 2-7 in procedure "imft_receive_object_" ref 683 684 735 736 835 836 1089 1090 1163 1164 1202 1203 std_length 71 000540 automatic fixed bin(17,0) level 3 dcl 894 set ref 965* string builtin function dcl 1757 set ref 287* 323* 351* 355* sub_error_ 004642 stack reference condition dcl 1754 ref 365 368 sub_error_info based structure level 1 dcl 23-7 sub_error_info_ptr 004674 automatic pointer dcl 23-6 set ref 596* 598 603 604 606 608 613 613 submitted_a_request 000533 automatic bit(1) packed unaligned dcl 888 set ref 988* 1004 1249* substr builtin function dcl 1757 ref 77 748 1117 1244 sum builtin function dcl 1757 ref 903 1001 switches 1 000223 internal static structure level 2 in structure "branch_info" packed packed unaligned dcl 1671 in procedure "imft_receive_object_" switches 164 000012 internal static structure level 3 in structure "static_backup_control" dcl 1667 in procedure "imft_receive_object_" set ref 323* sys_auth_ceiling 76 001140 automatic bit(72) level 2 dcl 1613 set ref 187* sys_auth_floor 100 001140 automatic bit(72) level 2 dcl 1613 set ref 188* system_area based area(1024) dcl 1619 ref 180 563 903 908 1001 1002 system_area_ptr 001742 automatic pointer dcl 1620 set ref 72* 180 563 903 908 989* 992* 1001 1002 system_privilege_$ring1_priv_off 000646 constant entry external dcl 1749 ref 917 1014 system_privilege_$ring1_priv_on 000644 constant entry external dcl 1748 ref 930 tape_entry 2 000012 internal static entry variable level 3 dcl 1667 set ref 285* target_attributes_ptr 34 000012 internal static pointer level 4 dcl 1667 set ref 308* target_dir 74 004431 automatic char(168) level 2 packed packed unaligned dcl 1672 set ref 362* target_name 146 004431 automatic char(32) level 2 packed packed unaligned dcl 1672 set ref 363* temp_dname 000412 internal static char(168) packed unaligned dcl 1678 set ref 113* 315* 360 temp_ename 000402 internal static char(32) packed unaligned dcl 1677 set ref 112* 113* 115* term_$refname 000650 constant entry external dcl 1750 ref 331 332 333 the_message_id 001700 automatic bit(72) dcl 1035 set ref 1239* timeout 2 000110 automatic fixed bin(35,0) level 2 dcl 1607 set ref 158* 270* 387* 462* 501* 1372* transfer_ring 001036 automatic fixed bin(3,0) dcl 653 set ref 656* 669 translate_access_class 36(14) 000012 internal static bit(1) level 4 packed packed unaligned dcl 1667 set ref 306* translate_aim_attributes_ 000652 constant entry external dcl 1751 ref 227 245 428 transmit_driver_id 000107 automatic char(32) packed unaligned dcl 880 set ref 949* 955 trim_sw 164(01) 000012 internal static bit(1) level 4 packed packed unaligned dcl 1667 set ref 325* 328* type 65 001140 automatic char(32) level 2 dcl 1613 set ref 746 746 748 748 750 1102 1106 1114 1114 1117 1117 1119 unique_chars_ 000654 constant entry external dcl 1752 ref 85 112 unspec builtin function dcl 1757 set ref 959* 1228* update 177(11) 000121 automatic bit(1) level 4 in structure "local_bof_command" packed packed unaligned dcl 1608 in procedure "imft_receive_object_" set ref 233* 257* 315 348 358 371* 713 752* 1538* 1564* update 157(09) 004431 automatic bit(1) level 3 in structure "cpo" packed packed unaligned dcl 1672 in procedure "imft_receive_object_" set ref 358* update 210(11) 000726 automatic bit(1) level 5 in structure "local_rr" packed packed unaligned dcl 1611 in procedure "imft_receive_object_" set ref 445* 968 1108 1108* 1114 1121* update 172(11) 000540 automatic bit(1) level 4 in structure "local_ft_request" packed packed unaligned dcl 894 in procedure "submit_request" set ref 968* user_auth 102 001140 automatic bit(72) level 2 dcl 1613 set ref 225* user_ring 004414 automatic fixed bin(3,0) dcl 1651 set ref 452* 936 1075 1149 userid 6 000223 internal static char(32) level 2 dcl 1671 set ref 107* version 000012 internal static char(8) level 3 in structure "static_backup_control" packed packed unaligned dcl 1667 in procedure "imft_receive_object_" set ref 284* version 76 000540 automatic char(8) level 3 in structure "local_ft_request" dcl 894 in procedure "submit_request" set ref 970* version 000110 automatic char(8) level 2 in structure "local_icri" dcl 1607 in procedure "imft_receive_object_" set ref 157* 269* 386* 461* 500* 1371* version based char(8) level 2 in structure "general_acl" dcl 2-7 in procedure "imft_receive_object_" set ref 181* version 000223 internal static fixed bin(17,0) level 2 in structure "branch_info" dcl 1671 in procedure "imft_receive_object_" set ref 96* version 001140 automatic char(8) level 2 in structure "imft_chk_acl" dcl 1613 in procedure "imft_receive_object_" set ref 184* version 004431 automatic char(8) level 2 in structure "cpo" dcl 1672 in procedure "imft_receive_object_" set ref 352* version based char(8) level 2 in structure "fis_info" dcl 14-7 in procedure "imft_receive_object_" ref 54 version based char(8) level 2 in structure "mseg_message_info" dcl 20-9 in procedure "imft_receive_object_" set ref 1229* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACL_VERSION_1 internal static fixed bin(17,0) initial dcl 2-77 ALWAYS_NOTIFY internal static fixed bin(17,0) initial dcl 19-42 ALWAYS_QUEUE internal static fixed bin(17,0) initial dcl 19-33 ALWAYS_QUEUE_FOREIGN internal static fixed bin(17,0) initial dcl 19-33 A_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 BOTH internal static fixed bin(17,0) initial dcl 18-14 DATA_INITIATE internal static fixed bin(17,0) initial dcl 10-414 DATA_TYPE internal static fixed bin(17,0) initial dcl 10-414 DELETE_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 2-67 DELIVER_OPTIONS_VERSION_2 internal static char(8) initial packed unaligned dcl 19-19 DIRECTORY internal static fixed bin(2,0) initial dcl 15-101 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 DIR_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 2-67 ENTRY_CHASE_ALL_LINKS internal static bit(36) initial dcl 10-152 ENTRY_CHASE_NONSTAR_LINKS internal static bit(36) initial dcl 10-152 ENTRY_DONT_CHASE_LINKS internal static bit(36) initial dcl 10-152 ENTRY_DONT_LIST_SUBENTRIES internal static bit(36) initial dcl 10-152 ENTRY_DONT_RETURN internal static bit(36) initial dcl 10-152 ENTRY_DONT_SELECT_MDIRS internal static bit(36) initial dcl 10-152 ENTRY_DONT_SELECT_NONNULL internal static bit(36) initial dcl 10-152 ENTRY_DONT_SELECT_NONOBJECTS internal static bit(36) initial dcl 10-152 ENTRY_DONT_SELECT_NON_MDIRS internal static bit(36) initial dcl 10-152 ENTRY_DONT_SELECT_NULL internal static bit(36) initial dcl 10-152 ENTRY_DONT_SELECT_OBJECTS internal static bit(36) initial dcl 10-152 ENTRY_INAEE internal static bit(36) initial dcl 10-152 ENTRY_INASE internal static bit(36) initial dcl 10-152 ENTRY_LIST_SUBENTRIES internal static bit(36) initial dcl 10-152 ENTRY_RETURN internal static bit(36) initial dcl 10-152 ENTRY_SELECT_ALL_DIRS internal static bit(36) initial dcl 10-152 ENTRY_SELECT_ALL_FILES internal static bit(36) initial dcl 10-152 ENTRY_SELECT_NULL_NONNULL internal static bit(36) initial dcl 10-152 ENTRY_TYPE_ARCHIVE internal static char(32) initial packed unaligned dcl 10-518 ENTRY_TYPE_ARCHIVE_COMP internal static char(32) initial packed unaligned dcl 10-518 ENTRY_TYPE_DM_FILE internal static char(32) initial packed unaligned dcl 10-518 ENTRY_TYPE_LINK internal static char(32) initial packed unaligned dcl 10-518 ENTRY_TYPE_MSF_COMP internal static char(32) initial packed unaligned dcl 10-518 ENTRY_TYPE_UNKNOWN internal static char(32) initial packed unaligned dcl 10-518 ENTRY_TYPE_UNSET internal static char(32) initial packed unaligned dcl 10-518 ERROR_ABORT internal static fixed bin(17,0) initial dcl 10-285 ERROR_OK internal static fixed bin(17,0) initial dcl 10-285 ERROR_REJECT internal static fixed bin(17,0) initial dcl 10-285 ERROR_STOP internal static fixed bin(17,0) initial dcl 10-285 EXPRESS_DELIVERY internal static fixed bin(17,0) initial dcl 19-25 E_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 FILE_TRANSFER internal static fixed bin(17,0) initial dcl 13-71 FT_GENERIC_TYPE internal static char(32) initial packed unaligned dcl 16-40 FUNCTION_NAMES internal static char(32) initial array packed unaligned dcl 13-74 GENERAL_DELETE_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 2-72 GENERAL_EXTENDED_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 2-72 HANDLER_ABORT internal static fixed bin(17,0) initial dcl 10-253 HANDLER_DONT_COUNT internal static fixed bin(17,0) initial dcl 10-253 HANDLER_DONT_EXPAND internal static fixed bin(17,0) initial dcl 10-253 HANDLER_EXPAND internal static fixed bin(17,0) initial dcl 10-253 HANDLER_EXPAND_DONT_COUNT internal static fixed bin(17,0) initial dcl 10-253 HANDLER_OK internal static fixed bin(17,0) initial dcl 10-253 HANDLER_REJECT internal static fixed bin(17,0) initial dcl 10-253 HANDLER_STOP internal static fixed bin(17,0) initial dcl 10-253 IMFT_AIM1 internal static fixed bin(7,0) initial packed unsigned unaligned dcl 17-22 IMFT_AIM2 internal static fixed bin(7,0) initial packed unsigned unaligned dcl 17-22 IMFT_DATA internal static fixed bin(7,0) initial packed unsigned unaligned dcl 17-22 IMFT_RESYNCHRONIZE internal static fixed bin(7,0) initial packed unsigned unaligned dcl 17-22 LINK internal static fixed bin(2,0) initial dcl 15-101 MERGE_DIRECTORIES internal static bit(2) initial dcl 16-43 MSEG_READ_AFTER_SPECIFIED internal static fixed bin(17,0) initial dcl 20-30 MSEG_READ_BEFORE_SPECIFIED internal static fixed bin(17,0) initial dcl 20-30 MSEG_READ_DELETE internal static bit(36) initial dcl 20-38 MSEG_READ_FIRST internal static fixed bin(17,0) initial dcl 20-30 MSEG_READ_LAST internal static fixed bin(17,0) initial dcl 20-30 MSEG_READ_OWN internal static bit(36) initial dcl 20-38 MSEG_READ_SPECIFIED internal static fixed bin(17,0) initial dcl 20-30 M_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 NEVER_CHASE internal static bit(2) initial dcl 16-47 NEVER_NOTIFY internal static fixed bin(17,0) initial dcl 19-42 NEVER_QUEUE internal static fixed bin(17,0) initial dcl 19-33 NOTIFY_ON_ERROR internal static fixed bin(17,0) initial dcl 19-42 N_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 PATH_ALLOW_ALL_STAR_NAMES internal static bit(36) initial dcl 10-133 PATH_ALLOW_ARCHIVE_COMPONENTS internal static bit(36) initial dcl 10-133 PATH_ALLOW_ARCHIVE_COMP_STAR_NAMES internal static bit(36) initial dcl 10-133 PATH_ALLOW_ARCHIVE_STAR_NAMES internal static bit(36) initial dcl 10-133 PATH_ALLOW_BRANCH_STAR_NAMES internal static bit(36) initial dcl 10-133 PATH_ALLOW_DIR_STAR_NAMES internal static bit(36) initial dcl 10-133 PATH_ALLOW_ENTRY_STAR_NAMES internal static bit(36) initial dcl 10-133 PATH_ALLOW_NONDIR_STAR_NAMES internal static bit(36) initial dcl 10-133 QUEUE_FOREIGN_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 19-33 QUEUE_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 19-33 RECIPIENTS_INFO_VERSION_2 internal static char(8) initial packed unaligned dcl 19-62 REW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEGMENT internal static fixed bin(2,0) initial dcl 15-101 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-30 SEG_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 2-67 SLAVE internal static fixed bin(17,0) initial dcl 18-14 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SORT_BY_EXTENDED_ENTRY_TYPE internal static fixed bin(17,0) initial dcl 10-388 SORT_BY_NAME internal static fixed bin(17,0) initial dcl 10-388 SORT_BY_STANDARD_ENTRY_TYPE internal static fixed bin(17,0) initial dcl 10-388 SORT_ENTRIES_BEFORE_SUBENTRIES internal static fixed bin(17,0) initial dcl 10-388 SORT_FORWARD internal static fixed bin(17,0) initial dcl 10-388 SORT_OFF internal static fixed bin(17,0) initial dcl 10-388 SORT_REVERSE internal static fixed bin(17,0) initial dcl 10-388 STANDARD_ENTRY_TYPES internal static char(32) initial array packed unaligned dcl 10-530 STAR_DATA_VERSION_1 internal static char(8) initial packed unaligned dcl 10-425 STAR_EXCLUDE_NAMES_VERSION_1 internal static char(8) initial packed unaligned dcl 10-236 STAR_EXTENDED_ENTRY_VERSION_1 internal static char(8) initial packed unaligned dcl 10-195 STAR_MATCH_NAMES_VERSION_1 internal static char(8) initial packed unaligned dcl 10-216 STAR_OPTIONS_VERSION_1 internal static char(8) initial packed unaligned dcl 10-102 STAR_PATHS_VERSION_1 internal static char(8) initial packed unaligned dcl 10-116 STATE_BUMPED internal static fixed bin(17,0) initial dcl 21-46 STATE_DEFERRED internal static fixed bin(17,0) initial dcl 21-42 STATE_DUPT internal static fixed bin(17,0) initial dcl 21-47 STATE_ELIGIBLE internal static fixed bin(17,0) initial dcl 21-44 STATE_RUNNING internal static fixed bin(17,0) initial dcl 21-45 STATE_TRANSITION internal static fixed bin(17,0) initial dcl 21-43 STATE_UNPROCESSED internal static fixed bin(17,0) initial dcl 21-41 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 aim2_record based structure level 1 dcl 17-67 aim2_record_ptr automatic pointer dcl 17-86 backup_control_ptr automatic pointer dcl 3-56 backup_control_request_count automatic fixed bin(17,0) dcl 3-58 bof_command_ptr automatic pointer dcl 15-50 bof_reply_ptr automatic pointer dcl 15-78 condition_info_header_ptr automatic pointer dcl 5-4 condition_info_ptr automatic pointer dcl 4-10 condition_info_version_1 internal static fixed bin(17,0) initial dcl 4-30 copy_options_ptr automatic pointer dcl 8-10 delete_acl based structure level 1 dcl 2-58 delete_acl_array based structure array level 1 dcl 2-64 deliver_options based structure level 1 dcl 19-6 deliver_options_ptr automatic pointer dcl 19-21 directory_acl based structure level 1 dcl 2-49 directory_acl_array based structure array level 1 dcl 2-55 eof_reply_ptr automatic pointer dcl 15-96 exclude_names based structure level 1 dcl 10-236 exclude_names_size automatic fixed bin(17,0) dcl 10-236 expanded_recipients_result_list based structure level 1 dcl 19-93 expanded_recipients_result_list_n_entries automatic fixed bin(17,0) dcl 19-66 expanded_recipients_result_list_ptr automatic pointer dcl 19-64 extended_entry_types based structure level 1 dcl 10-195 extended_entry_types_size automatic fixed bin(17,0) dcl 10-195 ft_request_ptr automatic pointer dcl 16-36 general_delete_acl based structure level 1 dcl 2-30 general_extended_acl based structure level 1 dcl 2-18 icri_ptr automatic pointer dcl 12-16 imft_check_acl_ptr automatic pointer dcl 11-36 match_names based structure level 1 dcl 10-216 match_names_size automatic fixed bin(17,0) dcl 10-216 recipients_info based structure level 1 dcl 19-49 recipients_info_n_lists automatic fixed bin(17,0) dcl 19-66 recipients_info_ptr automatic pointer dcl 19-64 recipients_result_list based structure level 1 dcl 19-72 recipients_result_list_n_addresses automatic fixed bin(17,0) dcl 19-66 recipients_result_list_ptr automatic pointer dcl 19-64 rem_req_ptr automatic pointer dcl 15-68 segment_acl based structure level 1 dcl 2-40 segment_acl_array based structure array level 1 dcl 2-46 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 22-114 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 22-109 star_LINKS_ONLY_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 22-112 star_SEGMENT internal static fixed bin(2,0) initial unsigned dcl 22-120 star_branch_count automatic fixed bin(17,0) dcl 22-13 star_data based structure level 1 dcl 10-435 star_dataP automatic pointer dcl 10-435 star_dir_list_branch based structure array level 1 dcl 22-59 star_link_count automatic fixed bin(17,0) dcl 22-17 star_link_pathname based char packed unaligned dcl 22-102 star_links based structure array level 1 dcl 22-76 star_linkx automatic fixed bin(17,0) dcl 22-18 star_list_branch based structure array level 1 dcl 22-41 star_list_branch_ptr automatic pointer dcl 22-16 star_list_names based char(32) array packed unaligned dcl 22-92 star_list_names_ptr automatic pointer dcl 22-20 star_options based structure level 1 dcl 10-26 star_optionsP automatic pointer dcl 10-26 star_paths based structure level 1 dcl 10-116 star_paths_size automatic fixed bin(17,0) dcl 10-116 star_select_sw automatic fixed bin(3,0) dcl 22-21 sub_error_info_version_1 internal static fixed bin(17,0) initial dcl 23-13 sync_record based structure level 1 dcl 17-36 sync_record_ptr automatic pointer dcl 17-43 v2_aim2_record based structure level 1 dcl 17-80 NAMES DECLARED BY EXPLICIT CONTEXT. ABORT_SINGLE_JOIN 015704 constant label dcl 1273 ref 1266 CONTINUE_TO_SIGNAL 007636 constant label dcl 599 ref 603 604 COPY_OPERATION_FINISHED 005156 constant label dcl 371 ref 608 617 COULD_NOT_STATUS_BRANCH 013634 constant label dcl 1046 ref 1060 END_COPY_HANDLER 010001 constant label dcl 619 ref 601 PROCESS_NEXT_STAR_ENTRY 013360 constant label dcl 999 ref 1287 REJECT_JOIN 016401 constant label dcl 1357 ref 1350 RETURN_FROM_BACKUP_LOAD 005041 constant label dcl 345 ref 523 RETURN_FROM_RECEIVE_OBJECT 006511 constant label dcl 487 ref 147 150 174 553 1419 1447 VALIDATE_ACS_ERROR 011650 constant label dcl 830 ref 815 WAIT_FOR_NEXT_OBJECT 006510 constant label dcl 484 ref 1382 1407 abort_reception 016735 constant entry internal dcl 1388 ref 336 536 538 540 543 545 1584 abort_single_request 015637 constant entry internal dcl 1255 ref 1046 1053 1062 1084 1123 1130 1240 abort_single_request_no_notify 015663 constant entry internal dcl 1268 ref 1096 analyze_backup_results 017501 constant entry internal dcl 1473 ref 345 analyze_read_abort 006516 constant entry internal dcl 497 ref 341 cleanup_handler 007367 constant entry internal dcl 559 ref 132 487 1380 1405 copy_sub_err_handler 007605 constant entry internal dcl 589 ref 365 fatal_ica_error 017107 constant entry internal dcl 1413 ref 676 729 828 1081 1156 1196 imft_receive_object_ 002355 constant entry external dcl 45 io_error 017156 constant entry internal dcl 1425 ref 163 276 393 473 506 534 1378 notify_backup_failure 020126 constant entry internal dcl 1553 ref 1501 1510 notify_user 017337 constant entry internal dcl 1453 ref 257 371 509 515 615 687 737 1091 1167 1198 1205 1244 1280 1365 1400 1437 1513 nulle 020375 constant entry internal dcl 1581 ref 285 process_single_request 013523 constant entry internal dcl 1022 ref 997 1010 reject_request 016346 constant entry internal dcl 1340 ref 242 250 434 442 658 678 698 710 730 755 832 838 934 938 942 953 994 1007 1102 1111 1158 1290 reject_request_no_notify 016365 constant entry internal dcl 1352 ref 691 742 1004 1171 1291 report_backup_errors 017750 constant entry internal dcl 1527 ref 1492 set_acs_error_message 011724 constant entry internal dcl 849 ref 830 837 set_dir_s_error_message 016050 constant entry internal dcl 1295 ref 1157 1165 set_dir_sma_error_message 016171 constant entry internal dcl 1312 ref 1197 1204 set_va_dir_sma_error_message 011213 constant entry internal dcl 762 ref 677 686 submit_request 012135 constant entry internal dcl 875 ref 454 validate_access 010003 constant entry internal dcl 643 ref 255 validate_acs 011331 constant entry internal dcl 786 ref 451 655 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 21636 22514 20443 21646 Length 23674 20443 656 1143 1172 454 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME imft_receive_object_ 3760 external procedure is an external procedure. on unit on line 132 64 on unit on unit on line 341 156 on unit on unit on line 365 406 on unit analyze_read_abort internal procedure shares stack frame of on unit on line 341. cleanup_handler 118 internal procedure is called by several nonquick procedures. copy_sub_err_handler internal procedure shares stack frame of on unit on line 365. validate_access 764 internal procedure is declared options(non_quick). set_va_dir_sma_error_message internal procedure shares stack frame of internal procedure validate_access. validate_acs 602 internal procedure is called by several nonquick procedures. set_acs_error_message internal procedure shares stack frame of internal procedure validate_acs. submit_request 1403 internal procedure enables or reverts conditions. on unit on line 900 70 on unit on unit on line 929 64 on unit process_single_request internal procedure shares stack frame of internal procedure submit_request. abort_single_request 138 internal procedure is called during a stack extension. set_dir_s_error_message internal procedure shares stack frame of internal procedure submit_request. set_dir_sma_error_message internal procedure shares stack frame of internal procedure submit_request. reject_request 162 internal procedure is called during a stack extension. abort_reception 154 internal procedure is called during a stack extension. fatal_ica_error 106 internal procedure is called by several nonquick procedures. io_error 152 internal procedure is called during a stack extension. notify_user 106 internal procedure is declared options(variable). analyze_backup_results internal procedure shares stack frame of external procedure imft_receive_object_. report_backup_errors internal procedure shares stack frame of external procedure imft_receive_object_. notify_backup_failure internal procedure shares stack frame of external procedure imft_receive_object_. nulle 86 internal procedure is assigned to an entry variable, and is declared options(variable). STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 first_call imft_receive_object_ 000012 static_backup_control imft_receive_object_ 000223 branch_info imft_receive_object_ 000246 errfile_dname imft_receive_object_ 000320 errfile_ename imft_receive_object_ 000330 errfile_pathname imft_receive_object_ 000402 temp_ename imft_receive_object_ 000412 temp_dname imft_receive_object_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME abort_reception 000100 code_message abort_reception abort_single_request 000100 code_message abort_single_request 000131 notify abort_single_request imft_receive_object_ 000100 data_iocb_ptr imft_receive_object_ 000102 master_iocb_ptr imft_receive_object_ 000104 code imft_receive_object_ 000105 idx imft_receive_object_ 000106 ignore_code imft_receive_object_ 000107 ignore_fb21 imft_receive_object_ 000110 local_icri imft_receive_object_ 000121 local_bof_command imft_receive_object_ 000321 local_bof_reply imft_receive_object_ 000724 local_eof_reply imft_receive_object_ 000726 local_rr imft_receive_object_ 001140 imft_chk_acl imft_receive_object_ 001740 ios_status imft_receive_object_ 001742 system_area_ptr imft_receive_object_ 001744 code_message imft_receive_object_ 001775 input_buffer imft_receive_object_ 002775 notify_msg_buffer imft_receive_object_ 003775 source imft_receive_object_ 003776 errfile_ptr imft_receive_object_ 004000 errfile_attached imft_receive_object_ 004001 object_in_progress imft_receive_object_ 004002 backup_errors_detected imft_receive_object_ 004003 foreign_backup_errors imft_receive_object_ 004004 mail_destination imft_receive_object_ 004014 local_personid imft_receive_object_ 004024 mail_access_class imft_receive_object_ 004026 local_full_pathname imft_receive_object_ 004100 local_dirname imft_receive_object_ 004152 foreign_full_pathname imft_receive_object_ 004224 foreign_system_name imft_receive_object_ 004235 local_entname imft_receive_object_ 004245 local_request_number imft_receive_object_ 004246 local_starname imft_receive_object_ 004256 local_type imft_receive_object_ 004266 foreign_equalname imft_receive_object_ 004340 octal_string imft_receive_object_ 004350 my_group_id imft_receive_object_ 004360 my_user_id imft_receive_object_ 004370 foreign_user_id imft_receive_object_ 004401 local_user_id imft_receive_object_ 004412 shortinfo imft_receive_object_ 004414 user_ring imft_receive_object_ 004415 local_user_access_id imft_receive_object_ 004425 acs_write_bracket imft_receive_object_ 004426 current_ring imft_receive_object_ 004427 n_submitted imft_receive_object_ 004430 n_not_submitted imft_receive_object_ 004431 cpo imft_receive_object_ 004650 acl_ptr imft_receive_object_ 004652 acl_count imft_receive_object_ 004654 imft_driver_info_ptr imft_receive_object_ 004656 fis_info_ptr imft_receive_object_ 004660 eof_command_ptr imft_receive_object_ 004662 abort_command_ptr imft_receive_object_ 004664 mseg_message_info_ptr imft_receive_object_ 004666 star_entry_count imft_receive_object_ 004670 star_entry_ptr imft_receive_object_ 004672 star_names_ptr imft_receive_object_ 004674 sub_error_info_ptr imft_receive_object_ 004712 errfile_bc analyze_backup_results 004713 backup_code analyze_backup_results 004714 backup_message analyze_backup_results 004730 errfile_lth report_backup_errors 004731 mail_subject report_backup_errors 005340 code_message notify_backup_failure 005371 mail_subject notify_backup_failure 005772 mail_message notify_backup_failure io_error 000100 code_message io_error notify_user 000100 notify_msg_buffer_used notify_user on unit on line 365 000106 ci copy_sub_err_handler 000140 local_error_message copy_sub_err_handler reject_request 000100 code_message reject_request 000131 send_to_user reject_request submit_request 000100 queue_index submit_request 000101 request_type submit_request 000107 transmit_driver_id submit_request 000117 queue_ename submit_request 000127 local_error_message submit_request 000527 access_mode submit_request 000530 queue_mode submit_request 000531 chase_control submit_request 000532 have_starname submit_request 000533 submitted_a_request submit_request 000534 reported_error submit_request 000535 reported_dir_sma_warning submit_request 000536 entry_idx submit_request 000537 priv_code submit_request 000540 local_ft_request submit_request 000760 local_dirname process_single_request 001032 local_pathname process_single_request 001104 parent_dirname process_single_request 001156 real_dirname process_single_request 001230 local_ename process_single_request 001240 parent_ename process_single_request 001250 real_ename process_single_request 001260 foreign_ename process_single_request 001270 entry_bit_count process_single_request 001271 entry_type process_single_request 001272 local_error_message process_single_request 001672 request_id process_single_request 001700 the_message_id process_single_request 001702 auto_mseg_message_info process_single_request validate_access 000100 dir_access_class validate_access 000102 dir_access_class_text validate_access 000202 local_error_message validate_access 000602 local_pathname validate_access 000654 object_access_class_text validate_access 000754 parent_dirname validate_access 001026 parent_ename validate_access 001036 transfer_ring validate_access validate_acs 000100 link_dirname validate_acs 000152 link_ename validate_acs 000162 local_dirname validate_acs 000234 local_ename validate_acs 000244 local_error_message validate_acs 000644 local_pathname validate_acs THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as r_ne_as alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac tra_ext_1 mpfx2 signal_op enable_op shorten_stack ext_entry int_entry int_entry_desc op_alloc_ op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. aim_check_$equal backup_load_ check_star_name_$entry continue_to_signal_ convert_aim_attributes_ convert_authorization_$to_string_short convert_status_code_ copy_ cu_$arg_list_ptr expand_pathname_ find_condition_info_ get_authorization_ get_equal_name_ get_group_id_ get_pdir_ get_ring_ get_system_free_area_ hcs_$create_branch_ hcs_$get_access_class hcs_$get_link_target hcs_$get_user_access_modes hcs_$initiate_count hcs_$make_seg hcs_$set_bc hcs_$star_ hcs_$status_minf hcs_$terminate_noname hcs_$truncate_file imft_convert_status_code_$decode imft_find_input_switch_ imft_mail_interface_$deliver_message imft_pnt_interface_$validate_personid imft_util_$check_object_acl ioa_$general_rs ioa_$rsnnl iod_info_$driver_access_name iodd_msg_ ios_$attach ios_$detach iox_$control message_segment_$close message_segment_$open pathname_ queue_admin_$add_index request_id_ system_privilege_$ring1_priv_off system_privilege_$ring1_priv_on term_$refname translate_aim_attributes_ unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$ai_restricted error_table_$bad_arg error_table_$fatal_error error_table_$link error_table_$moderr error_table_$noentry error_table_$unimplemented_version error_table_$unsupported_operation error_table_$user_not_found imft_data_$queue_dirname imft_et_$timeout LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 45 002351 48 002362 49 002366 50 002371 52 002372 54 002412 55 002416 56 002420 59 002421 60 002426 61 002430 64 002431 65 002433 67 002435 68 002445 69 002447 72 002450 75 002456 77 002465 78 002502 82 002511 84 002514 85 002522 86 002553 87 002573 88 002630 89 002634 91 002673 92 002676 94 002677 96 002710 98 002713 99 002715 100 002717 101 002721 102 002723 103 002725 104 002727 105 002731 106 002733 107 002737 108 002742 109 002743 110 002744 111 002752 112 002754 113 003004 115 003024 116 003053 117 003055 119 003110 120 003113 123 003114 128 003116 130 003121 132 003123 140 003145 142 003146 143 003165 144 003167 146 003222 147 003225 150 003226 155 003231 157 003232 158 003234 159 003236 160 003240 162 003242 163 003273 165 003336 168 003353 170 003363 171 003373 173 003435 174 003441 176 003442 177 003443 179 003444 180 003446 181 003457 183 003462 184 003514 185 003517 186 003523 187 003525 188 003531 190 003534 192 003536 196 003542 198 003545 205 003550 206 003553 207 003556 208 003561 209 003601 211 003621 213 003622 214 003625 215 003630 218 003656 220 003665 222 003670 223 003710 225 003730 227 003733 230 003753 233 003761 240 004074 241 004104 242 004121 245 004175 248 004216 249 004220 250 004231 253 004324 255 004325 257 004331 269 004404 270 004406 271 004410 272 004413 273 004415 275 004417 276 004453 284 004516 285 004522 287 004525 288 004526 289 004530 290 004532 291 004534 293 004536 295 004540 297 004542 300 004544 301 004546 306 004550 307 004552 308 004555 311 004560 313 004562 315 004565 318 004610 321 004617 323 004622 324 004624 325 004626 328 004634 331 004645 332 004665 333 004707 335 004726 336 004765 337 005006 341 005010 343 005026 345 005041 348 005043 351 005061 352 005062 353 005065 354 005070 355 005072 356 005073 357 005075 358 005102 359 005107 360 005111 361 005115 362 005120 363 005123 365 005126 367 005144 368 005155 371 005156 380 005240 383 005244 384 005246 386 005251 387 005253 388 005255 389 005260 390 005262 392 005264 393 005320 394 005363 396 005364 402 005457 405 005515 410 005516 411 005521 412 005524 413 005527 414 005532 416 005552 418 005576 420 005601 422 005610 424 005613 425 005633 426 005653 428 005676 431 005717 434 005725 440 005763 441 005774 442 006011 445 006065 451 006175 452 006203 454 006210 461 006214 462 006216 463 006220 464 006223 465 006225 467 006227 472 006317 473 006353 475 006416 482 006507 484 006510 487 006511 490 006515 497 006516 500 006517 501 006522 502 006524 503 006526 505 006530 506 006562 508 006627 509 006641 511 006665 512 006670 514 006671 515 006675 517 006721 518 006724 520 006725 522 006731 523 006733 527 006736 528 006742 529 006744 530 006751 534 006765 535 007031 536 007033 538 007071 540 007137 543 007207 545 007255 547 007311 550 007313 552 007355 553 007362 555 007365 559 007366 562 007374 563 007401 564 007407 567 007412 568 007416 569 007427 572 007432 573 007434 574 007462 575 007511 576 007540 579 007542 580 007544 582 007602 585 007604 589 007605 595 007606 596 007626 598 007631 599 007636 601 007646 603 007647 604 007653 606 007661 607 007663 608 007664 611 007677 612 007702 613 007715 615 007765 617 007776 619 010001 643 010002 655 010010 656 010017 658 010025 663 010051 664 010076 665 010102 666 010105 667 010107 668 010111 669 010113 670 010115 671 010117 673 010142 674 010156 675 010163 676 010164 677 010174 678 010203 681 010221 682 010223 683 010234 684 010241 685 010242 686 010255 687 010264 689 010321 691 010324 697 010346 698 010402 701 010425 702 010444 703 010452 704 010474 706 010516 710 010603 713 010621 717 010625 718 010645 719 010651 720 010654 721 010656 722 010660 723 010662 724 010664 726 010707 727 010723 728 010730 729 010731 730 010741 731 010774 733 010775 734 010777 735 011010 736 011015 737 011016 740 011053 742 011056 746 011100 748 011111 750 011127 752 011132 755 011175 760 011212 762 011213 767 011215 772 011274 776 011327 786 011330 798 011336 800 011425 801 011447 805 011467 807 011517 810 011525 811 011530 812 011533 815 011553 817 011556 818 011560 819 011566 820 011570 821 011571 822 011573 824 011616 825 011632 826 011637 828 011640 830 011650 832 011651 835 011667 836 011675 837 011676 838 011677 841 011715 845 011723 849 011724 852 011725 853 011732 856 012003 857 012005 858 012006 862 012100 865 012133 875 012134 896 012142 897 012143 898 012145 900 012151 902 012165 903 012173 904 012224 907 012230 908 012234 909 012236 912 012242 913 012245 914 012256 917 012260 921 012273 923 012274 924 012313 925 012331 929 012411 930 012427 931 012436 933 012437 934 012465 936 012534 938 012576 942 012645 949 012745 950 012770 951 012773 953 013024 955 013042 959 013051 961 013054 962 013056 963 013060 964 013065 965 013067 966 013071 967 013075 968 013101 970 013105 971 013107 972 013115 973 013121 976 013123 977 013127 979 013133 980 013134 982 013135 983 013152 984 013156 986 013157 987 013160 988 013163 989 013165 992 013234 994 013277 996 013322 997 013333 999 013360 1001 013362 1002 013413 1003 013416 1004 013422 1007 013444 1008 013461 1010 013462 1012 013476 1014 013510 1018 013522 1022 013523 1039 013541 1040 013547 1041 013553 1045 013573 1046 013631 1050 013660 1052 013671 1053 013721 1056 013747 1057 013752 1058 013755 1060 014013 1061 014016 1062 014017 1070 014043 1071 014047 1072 014052 1073 014054 1074 014056 1075 014060 1076 014062 1077 014064 1079 014107 1080 014123 1081 014130 1084 014142 1087 014176 1088 014201 1089 014212 1090 014217 1091 014220 1094 014255 1096 014260 1102 014305 1106 014337 1108 014351 1111 014426 1114 014443 1117 014457 1119 014475 1121 014500 1123 014543 1128 014563 1129 014566 1130 014612 1133 014716 1143 014717 1144 014744 1145 014750 1146 014753 1147 014755 1148 014757 1149 014761 1150 014763 1151 014765 1153 015010 1154 015024 1155 015031 1156 015032 1157 015042 1158 015051 1161 015067 1162 015071 1163 015102 1164 015107 1165 015110 1166 015116 1167 015132 1169 015167 1171 015172 1184 015214 1187 015222 1188 015224 1189 015226 1191 015230 1193 015253 1194 015267 1195 015274 1196 015275 1197 015305 1198 015314 1201 015325 1202 015340 1203 015345 1204 015346 1205 015354 1207 015365 1213 015370 1215 015372 1216 015375 1218 015400 1219 015403 1220 015407 1223 015412 1225 015423 1227 015425 1228 015430 1229 015433 1230 015437 1231 015441 1232 015444 1233 015472 1234 015475 1235 015502 1236 015505 1237 015506 1239 015511 1240 015526 1242 015554 1243 015560 1244 015571 1248 015631 1249 015633 1251 015635 1255 015636 1265 015657 1266 015661 1268 015662 1271 015703 1273 015704 1276 015707 1278 015727 1280 015732 1284 015775 1286 016000 1287 016003 1290 016006 1291 016030 1293 016047 1295 016050 1300 016052 1305 016125 1310 016170 1312 016171 1317 016173 1319 016175 1325 016254 1326 016266 1332 016344 1340 016345 1349 016361 1350 016363 1352 016364 1355 016400 1357 016401 1360 016421 1362 016424 1363 016427 1365 016475 1368 016535 1371 016606 1372 016611 1373 016613 1374 016616 1375 016620 1377 016622 1378 016656 1380 016723 1382 016731 1388 016734 1396 016750 1398 016767 1400 016772 1402 017025 1405 017076 1407 017103 1413 017106 1416 017114 1417 017120 1419 017152 1425 017155 1433 017171 1434 017177 1436 017215 1437 017220 1440 017253 1442 017313 1444 017320 1447 017333 1453 017336 1459 017344 1461 017422 1464 017477 1473 017501 1482 017503 1484 017504 1486 017514 1488 017515 1490 017543 1492 017605 1497 017615 1499 017620 1500 017622 1501 017627 1502 017630 1504 017631 1507 017633 1509 017635 1510 017642 1511 017643 1513 017644 1518 017672 1519 017720 1521 017746 1523 017747 1527 017750 1534 017751 1536 017753 1538 017757 1543 020040 1546 020124 1553 020126 1559 020127 1560 020142 1564 020216 1569 020277 1572 020370 1573 020373 1581 020374 1584 020402 1586 020422 ----------------------------------------------------------- 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