COMPILATION LISTING OF SEGMENT ta_load_table_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 03/25/85 1524.7 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 /* ****************************************************** 10* * * 11* * * 12* * Copyright (c) 1972 by Massachusetts Institute of * 13* * Technology and Honeywell Information Systems, Inc. * 14* * * 15* * * 16* ****************************************************** */ 17 18 /* format: style1,^inddcls,ifthenstmt,ifthendo,ifthen,indcomtxt,dclind5 */ 19 ta_load_table_: proc (table_ptr, arg_array, table_name, code); 20 21 /* This procedure implements the load_table key of tape_archive. */ 22 23 /* Written 06/29/77 by C. D. Tavares. 24* Modified 09/24/79 to work if the final table on tape has a tape error smack 25* in the middle of it. 26* Modified 09/03/80 by CDT to fix ref thru null ptr and to warn user if volid 27* supplied by user doesn't match volid in loaded table (source of problems 28* when volumes shipped to other sites and given other volids). 29* Modified 10/24/80 by CDT to add tape_ibm_ capability. 30* Modified 12/9/81 by CDT for highest_mount_type stuff. 31* Modified 12/17/81 by CDT to make it upgrade the table to the current 32* version before checking the table for consistency. 33* BIM 3/82 -density control argument. 34* Last modified 83-03-16 by S. G. Harris (UNCA) for version 4. 35* Modified 7/83 by S. Krupp for conversion to mtape_. 36* Modified 01/09/84 by J. A. Bush to enable the referencing dir search rule 37* for finding I/O module 38* Modified 85-2-14 by C Spitzer. Correct algorithm for finding the last good 39* table on the tape. Use volume ids from command line rather than from table. 40* Take out -retain implying -ring. 41**/ 42 43 dcl (arg_array (*) char (168), 44 table_name char (*), 45 code fixed bin (35)) parameter; 46 47 /* AUTOMATIC */ 48 49 dcl answer char (256) varying, 50 attach_description char (256), 51 date_time_string char (24), 52 density fixed bin, 53 dname char (168), 54 ename char (32), 55 got_older_table bit (1), 56 i fixed bin, 57 iom_ctl_arg bit (1) aligned, 58 max_chars_in_seg fixed bin (21), 59 n_chars_read fixed bin (21), 60 n_table_volids fixed bin, 61 n_volids fixed bin, 62 n_words_read fixed bin (18), 63 open_description char (256), 64 retain_sw bit (1) aligned, 65 table_volid char (168), 66 tape_input_switch pointer, 67 temp_seg_ptrs (2) pointer, 68 last_good_copy_ptr pointer, 69 ptr_active fixed bin, 70 file_number fixed bin, 71 table_file_number fixed bin, 72 volume_type char (32), 73 volid (8) char (32), 74 vt_ctl_arg bit (1) aligned; 75 1 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 1 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 1 3 /* version number changed to 4, 08/10/78 WOS */ 1 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 1 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 1 6 1 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 1 8 2 version fixed bin, /* version of this structure - must be set, see below */ 1 9 2 switches aligned, /* various bit switch values */ 1 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 1 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 1 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 1 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 1 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 1 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 1 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 1 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 1 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 1 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 1 20 1 21 /* Limit of data defined for version 2 */ 1 22 1 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 1 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 1 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 1 26 /* minimum of 30 seconds required for repeat */ 1 27 /* otherwise, no repeat will occur */ 1 28 /* Limit of data defined for version 4 */ 1 29 1 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 1 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 1 32 1 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 1 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 1 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 1 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 1 37 1 38 /* END INCLUDE FILE query_info.incl.pl1 */ 76 77 78 /* ENTRIES */ 79 80 dcl (com_err_, 81 com_err_$suppress_name, 82 command_query_, 83 ioa_, 84 ioa_$rsnnl) entry options (variable), 85 date_time_$fstime entry (bit (36) aligned, char (*)), 86 get_lock_id_ entry returns (bit (36) aligned), 87 (release_temp_segments_, 88 get_temp_segments_) entry (char (*), pointer dimension (*), 89 fixed bin (35)), 90 hcs_$fs_get_path_name entry (ptr, char (*), fixed bin, char (*), 91 fixed bin (35)), 92 hcs_$set_bc_seg entry (pointer, fixed bin (24), fixed bin (35)), 93 hcs_$set_safety_sw_seg entry (pointer, bit (1) aligned, fixed bin (35)), 94 hcs_$terminate_noname entry (ptr, fixed bin (35)), 95 hcs_$truncate_seg entry (pointer, fixed bin (18), fixed bin (35)), 96 resource_info_$canonicalize_name 97 entry (char (*), char (*), char (*), 98 fixed bin (35)); 99 100 dcl ta_table_mgr_$find_and_verify 101 entry (char (*), char (*), ptr, bit (1) aligned, 102 fixed bin (35)); 103 2 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 2 2 2 3 /* Written 05/04/78 by C. D. Tavares */ 2 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 2 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 2 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 2 7 2 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 2 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 2 10 iox_$close entry (pointer, fixed bin (35)), 2 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 2 12 iox_$delete_record entry (pointer, fixed bin (35)), 2 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 2 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 2 15 iox_$err_not_attached entry options (variable), 2 16 iox_$err_not_closed entry options (variable), 2 17 iox_$err_no_operation entry options (variable), 2 18 iox_$err_not_open entry options (variable), 2 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 2 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 2 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 2 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 2 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 2 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 2 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 2 28 iox_$propagate entry (pointer), 2 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 2 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 2 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 2 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 2 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 2 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 2 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 2 40 2 41 dcl (iox_$user_output, 2 42 iox_$user_input, 2 43 iox_$user_io, 2 44 iox_$error_output) external static pointer; 2 45 2 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 104 105 106 /* EXTERNAL STATIC */ 107 108 dcl (error_table_$bad_arg, 109 error_table_$badopt, 110 error_table_$noarg, 111 error_table_$no_file, 112 error_table_$not_detached, 113 error_table_$short_record, 114 error_table_$too_many_args) 115 ext fixed bin (35) static, 116 sys_info$max_seg_size ext fixed bin (35) static; 117 118 /* CONSTANTS */ 119 120 dcl TABLE_PREFIX char (13) int static options (constant) init ("ONLINE-TABLE-"); 121 dcl myname char (32) int static options (constant) init ("tape_archive"); 122 3 1 /* Begin include file ..... iox_modes.incl.pl1 */ 3 2 3 3 /* Written by C. D. Tavares, 03/17/75 */ 3 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 3 5 3 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 3 7 ("stream_input", "stream_output", "stream_input_output", 3 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 3 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 3 10 "direct_input", "direct_output", "direct_update"); 3 11 3 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 3 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 3 14 3 15 dcl (Stream_input initial (1), 3 16 Stream_output initial (2), 3 17 Stream_input_output initial (3), 3 18 Sequential_input initial (4), 3 19 Sequential_output initial (5), 3 20 Sequential_input_output initial (6), 3 21 Sequential_update initial (7), 3 22 Keyed_sequential_input initial (8), 3 23 Keyed_sequential_output initial (9), 3 24 Keyed_sequential_update initial (10), 3 25 Direct_input initial (11), 3 26 Direct_output initial (12), 3 27 Direct_update initial (13)) fixed bin int static options (constant); 3 28 3 29 /* End include file ..... iox_modes.incl.pl1 */ 123 124 125 /* CONDITION */ 126 127 dcl cleanup condition; 128 129 /* BUILTINS */ 130 131 dcl (addr, binary, char, codeptr, dim, divide, fixed, hbound, length, min, null, substr, unspec) builtin; 132 133 /* BASED VARIABLES */ 134 4 1 /* ---------- BEGIN include file tape_archive_table_dcl.incl.pl1 ---------- */ 4 2 4 3 /* Version 2 lengthened volume names from 6 to 32 characters */ 4 4 /* Version 3 introduced density field, workspace strategy for updates, */ 4 5 /* and the mount lock, which is less of a lock than a retain indicator. */ 4 6 /* Version 4 expanded density field to an array for independent volume set */ 4 7 /* densities and added uid fields for table deletion checking. */ 4 8 /* Modified 09/21/80 by C. D. Tavares for version 3 */ 4 9 /* Modified 12/9/81 by CDT to add highest_mount_type field */ 4 10 /* Last modified 83-03-16 by S. G. Harris (UNCA) for version 4. */ 4 11 /* Modified 09/16/83 by S. Krupp to add the TAPE_ARCHIVE_IO_MODULE 4 12* declaration for conversion to the mtape_ I/O module. */ 4 13 4 14 dcl 1 tape_archive_table aligned based (table_ptr), /* online segment for tape_archive command */ 4 15 2 nonvolatile_part aligned, /* temp table moving doesn't touch these */ 4 16 3 version_number fixed bin, /* of table */ 4 17 3 magic_constant char (8), /* "ta table" */ 4 18 3 compaction_warning_threshold float bin, /* when to suggest compaction to user */ 4 19 3 auto_compaction_threshold float bin, /* when to compact when user doesn't take hint */ 4 20 3 table_is_consistent bit (1) unaligned, /* update in progress indicator */ 4 21 3 lock bit (36), /* allows shared tape archives */ 4 22 3 lock_reason fixed bin, /* reason seg already locked, for failure msg */ 4 23 3 locker_id char (32), /* userid of locking process, for failure msg */ 4 24 3 io_module_name char (32), /* tape_ansi_ or tape_ibm_ */ 4 25 3 recovery_info_offset bit (18) aligned, /* holds address of workspace for table updates */ 4 26 3 perm_table_uid bit (36), /* used to prevent table deletion */ 4 27 3 future_expansion (6) bit (36), /* ... */ 4 28 2 volatile_part aligned, /* these can get altered due to temp table moves */ 4 29 3 n_components fixed bin, /* number valid (undeleted) components in archive */ 4 30 3 n_component_slots fixed bin, /* number of used component slots in table */ 4 31 3 n_queued_requests fixed bin, /* number requests to be performed next mount */ 4 32 3 n_request_slots fixed bin, /* number of used request slots in table */ 4 33 3 next_mount_type fixed bin, /* read only, write, or compact */ 4 34 3 date_time_tape_modified bit (36), /* last time tape written on */ 4 35 3 date_time_last_compacted bit (36), /* last time tape compacted */ 4 36 3 total_records fixed bin (35), /* data out on tape, in Multics records */ 4 37 3 dead_records fixed bin (35), /* records wasted (deletions, replacements) */ 4 38 3 incomplete_write_op_last bit (1), /* ON if determined that user or sys crashed while writing tape */ 4 39 3 last_tape_file_no fixed bin, /* number of last file existing on volume set */ 4 40 3 last_table_no fixed bin, /* number of copies of online table on this volume set */ 4 41 3 mount_lock bit (36) aligned, /* set to lock_id while volume set mounted */ 4 42 3 highest_mount_type fixed bin, /* max of next_mount_type since retained */ 4 43 3 future_expansion (6) bit (36), /* ... */ 4 44 3 tape_info aligned, 4 45 4 density (2) fixed bin (17) unal, /* post version 3 volume set densities */ 4 46 4 active_set fixed bin, /* which of the two is most current */ 4 47 4 n_volumes_in_set (2) fixed bin, /* how many reels comprise volume set */ 4 48 4 volume_set (2) aligned, 4 49 5 volume_id (8) char (168), /* physical reel and slot info */ 4 50 3 component_table (0 refer (tape_archive_table.n_component_slots)) aligned like component, 4 51 3 request_queue (0 refer (tape_archive_table.n_request_slots)) aligned like request; 4 52 4 53 dcl 1 component aligned based (component_ptr), /* format of one component entry */ 4 54 2 entry_status_descriptor like entry_status_descriptor aligned, 4 55 2 previous_instance_backchain fixed bin, /* index of file it replaced, if any */ 4 56 2 associated_request_index fixed bin, /* if extract pending, index of request with dirpath */ 4 57 2 date_time_deleted bit (36) aligned, /* if logically deleted, when. */ 4 58 2 future_expansion (5) bit (36) aligned; /* ... */ 4 59 4 60 dcl 1 request aligned based (request_ptr), /* format of a queued request */ 4 61 2 entry_status_descriptor like entry_status_descriptor aligned, 4 62 2 directory_name char (168) unaligned, /* in Multics file system */ 4 63 2 requested_ops unaligned, 4 64 3 append bit (1) unaligned, /* add to tape */ 4 65 3 replace bit (1) unaligned, /* replace to tape */ 4 66 3 extract bit (1) unaligned, /* extract from tape */ 4 67 3 delete bit (1) unaligned, /* delete from tape or file system */ 4 68 3 force bit (1) unaligned, /* forcibly do any of the above */ 4 69 3 single_name bit (1) unaligned, /* append/extract with only given name */ 4 70 3 future_expansion bit (30) unaligned, 4 71 2 existing_reference fixed bin, /* index of component block, if exists (e.g. read) */ 4 72 2 future_expansion (4) bit (36) aligned; 4 73 4 74 dcl 1 entry_status_descriptor aligned based, 4 75 2 valid bit (1) unaligned, /* an undeleted component or request if on */ 4 76 2 no_final_newline bit (1) unaligned, /* ON if last char in file was not newline */ 4 77 2 safety_switch bit (1) unaligned, /* reflects safety switch of file while online */ 4 78 2 pad bit (33) unaligned, 4 79 2 file_info aligned, /* main tape file for this entry */ 4 80 3 tape_file_name char (17), 4 81 3 entry_name char (32) unaligned, /* for Multics file system */ 4 82 3 date_time_archived bit (36), /* when it was put on tape */ 4 83 3 recording_mode char (8) aligned, /* "ascii", "binary", "ebcdic", etc. */ 4 84 3 date_time_branch_modified bit (36), /* last modified while in file system */ 4 85 3 date_time_dumped bit (36), /* by backup facility */ 4 86 3 bitcount_author char (32), /* last person who modified it while online */ 4 87 3 file_length fixed bin (35), /* in Multics pages */ 4 88 3 attribute_file_no fixed bin, /* file number of attribute file on tape */ 4 89 3 n_tape_records fixed bin (35), /* number of logical records on tape for this file */ 4 90 2 uid bit (36) aligned, /* used to prevent table deletion */ 4 91 2 future_expansion bit (36) aligned; 4 92 4 93 dcl 1 workspace based (workspace_ptr) aligned, /* to prevent update inconsistencies */ 4 94 2 workspace_id char (8), /* "wrkspace" */ 4 95 2 component_no fixed bin, 4 96 2 request_no fixed bin, 4 97 2 n_queued_requests fixed bin, 4 98 2 dead_records fixed bin, 4 99 2 total_records fixed bin, 4 100 2 n_components fixed bin, 4 101 2 n_request_slots fixed bin, 4 102 2 next_mount_type fixed bin, 4 103 2 future_expansion (70) fixed bin (35), 4 104 2 tape_info_copy aligned like tape_archive_table.tape_info, 4 105 2 future_expansion2 (16) fixed bin (35), 4 106 2 component_copy like component aligned, 4 107 2 future_expansion3 (16) fixed bin (35), 4 108 2 request_copy like request aligned; 4 109 4 110 dcl 1 based_tape_info based (tape_info_ptr) like tape_archive_table.tape_info aligned; 4 111 4 112 dcl (table_ptr, component_ptr, request_ptr, workspace_ptr, tape_info_ptr) pointer; 4 113 4 114 dcl ((None initial (0), /* next scheduled processing flags */ 4 115 Delete initial (1), 4 116 Read initial (2), 4 117 Write initial (3), 4 118 Compact initial (4), 4 119 4 120 Examine initial (1), /* current lock reason flags */ 4 121 Modify initial (2), 4 122 Process_tape initial (3), 4 123 4 124 Deletion initial (1), /* pending_operation flags */ 4 125 Extraction initial (2), 4 126 Replacement initial (3), 4 127 Cancellation initial (4), 4 128 Deletion_cancellation initial (5), 4 129 Volume_alteration initial (6), 4 130 Table_creation initial (7), 4 131 Table_copy initial (8), 4 132 4 133 Default_density initial (1600), 4 134 4 135 tape_archive_version_4 initial (4)) fixed bin, 4 136 4 137 TAPE_ARCHIVE_IO_MODULE char(6) init("mtape_"), 4 138 4 139 Lock_reasons (0:3) char (24) initial 4 140 ("no discernable reason", "table examination", "table modification", "tape processing"), 4 141 4 142 Magic_constant char (8) initial ("ta table"), 4 143 Magic_workspace_constant char (8) initial ("wrkspace")) static options (constant); 4 144 4 145 /* ---------------- END include file tape_archive_table_dcl.incl.pl1 ---------------- */ 135 5 1 /* BEGIN INCLUDE FILE mtape_file_status.incl.pl1. Created 02/02/83 by J. A. Bush */ 5 2 /* format: style4 */ 5 3 /* This include file defines the structures returned by the "file_status" ("fst"), 5 4* and the "file_set_status" ("fsst") control operations */ 5 5 5 6 dcl fst_ptr ptr; /* Pointer to the file_status info structure */ 5 7 dcl fsst_ptr ptr; /* Pointer to the file_set_status info structure */ 5 8 dcl f_statp ptr; /* Pointer to file_status structure */ 5 9 5 10 dcl fst_version_1 char (8) int static options (constant) init ("fstv0001"); 5 11 dcl fsst_version_1 char (8) int static options (constant) init ("fsstv001"); 5 12 5 13 dcl mtape_fsst_nfiles fixed bin; /* Set this variable before allocating mtape_fsst structure */ 5 14 5 15 dcl 1 mtape_fst aligned based (fst_ptr), /* "file_status" info structure */ 5 16 2 version char (8), /* Current version */ 5 17 2 file_type fixed bin, /* Use rcp_volume_formats.incl.pl1 for decode */ 5 18 2 f_stat like file_status; /* See file_status structure below */ 5 19 5 20 dcl 1 mtape_fsst aligned based (fsst_ptr), /* "file_set_status" info structure */ 5 21 2 version char (8), /* Current version */ 5 22 2 file_set_id char (32), /* File set identifier */ 5 23 2 file_type fixed bin, /* Use rcp_volume_formats.incl.pl1 for decode */ 5 24 2 nfiles fixed bin, /* # of files in file set */ 5 25 2 fs_stat (mtape_fsst_nfiles refer (mtape_fsst.nfiles)) like file_status; /* See file_status structure below */ 5 26 5 27 dcl 1 file_status based (f_statp) aligned, /* file status info template */ 5 28 2 file_state fixed bin, /* 0 => Never opened; 1 => File not currently open; 5 29* 2 => File open; 3 => File open & locked for error */ 5 30 2 error_code fixed bin (35), /* Error code if file_state = 3 */ 5 31 2 file_id char (32), /* File name or identifier */ 5 32 2 file_seq fixed bin, /* File sequence number */ 5 33 2 begin_vol_index fixed bin, /* Index to volume file begins on */ 5 34 2 end_vol_index fixed bin, /* Index to volume file ends on */ 5 35 2 file_sections fixed bin, /* Number of file sections within file */ 5 36 2 generation fixed bin, /* File generation number */ 5 37 2 gen_version fixed bin, /* File generation version number */ 5 38 2 creation char (6), /* File creation date (" yyddd") */ 5 39 2 expiration char (6), /* File expiration date (" yyddd") */ 5 40 2 file_format char (3), /* File/block format, PFM dependent */ 5 41 2 block_len fixed bin, /* Maximum block length (in 9 bit bytes) */ 5 42 2 reclen fixed bin (21), /* Maximum record length (in 9 bit bytes) */ 5 43 2 recording_mode char (6), /* ASCII, EBCDIC, BCD, etc */ 5 44 2 block_count fixed bin (35), /* # of blocks in this file */ 5 45 2 read_errors fixed bin (35), /* # of read errors encountered reading this file */ 5 46 2 write_errors fixed bin (35); /* # of write errors encountered writing this file */ 5 47 5 48 /* END INCLUDE FILE mtape_file_status.incl.pl1 */ 136 137 138 /* BASED */ 139 140 dcl based_table (n_words_read) bit (36) aligned based; 141 dcl 1 automatic_fst aligned like mtape_fst; 142 143 got_older_table = "0"b; 144 145 call iox_$find_iocb ("ta_tape_input_", tape_input_switch, code); 146 if code ^= 0 then do; 147 call com_err_ (code, myname, "Searching for the tape input switch."); 148 goto end_processing; 149 end; 150 151 max_chars_in_seg = sys_info$max_seg_size * 4; 152 query_info.version = query_info_version_5; 153 154 if tape_archive_table.n_component_slots 155 + tape_archive_table.n_request_slots > 0 then do; 156 query_info.yes_or_no_sw = "1"b; 157 call command_query_ 158 (addr (query_info), answer, myname, 159 "^a already exists. Do you wish to overwrite it?? ", 160 table_name); 161 if answer = "no" then return; 162 end; 163 164 volume_type = ""; 165 n_volids = 0; 166 volid (*) = ""; 167 density = 0; 168 retain_sw = ""b; 169 iom_ctl_arg, vt_ctl_arg = "0"b; 170 171 do i = 1 to dim (arg_array, 1); 172 if arg_array (i) = "-io_module" | arg_array (i) = "-iom" | 173 arg_array (i) = "-volume_type" | arg_array (i) = "-vt" 174 then do; 175 if arg_array (i) = "-io_module" | arg_array (i) = "-iom" 176 then iom_ctl_arg = "1"b; 177 else vt_ctl_arg = "1"b; 178 i = i + 1; 179 if i > dim (arg_array, 1) then do; 180 call com_err_ 181 (error_table_$noarg, myname, 182 "^[I/O module^;Volume type^] must follow ^a", 183 iom_ctl_arg, arg_array (i - 1)); 184 return; 185 end; 186 187 if (iom_ctl_arg & ^(arg_array (i) = "tape_ansi_" | arg_array (i) = "tape_ibm_")) | 188 (vt_ctl_arg & ^(arg_array (i) = "ansi" | arg_array (i) = "ibm")) 189 then do; 190 call com_err_ 191 (error_table_$bad_arg, myname, 192 "^[I/O module^;Volume type^] ^a not supported.", 193 iom_ctl_arg, volume_type); 194 return; 195 end; 196 197 (nostrz): if iom_ctl_arg 198 then do; 199 if arg_array (i) = "tape_ansi_" 200 then volume_type = "ansi"; 201 else volume_type = "ibm"; 202 end; 203 else volume_type = arg_array (i); 204 205 end; 206 207 else if arg_array (i) = "-retain" then do; 208 i = i + 1; 209 if i > dim (arg_array, 1) then retain_sw = "1"b; 210 else if arg_array (i) = "all" then retain_sw = "1"b; 211 else if arg_array (i) = "none" then retain_sw = ""b; 212 else do; 213 call com_err_ 214 (error_table_$badopt, myname, 215 "^a; Use -retain all or -retain none.", 216 arg_array (i)); 217 return; 218 end; 219 end; 220 221 else if arg_array (i) = "-density" 222 | arg_array (i) = "-den" 223 then do; 224 i = i + 1; 225 if i > hbound (arg_array, 1) 226 then do; 227 call com_err_ (error_table_$noarg, myname, "-density requires a density number."); 228 return; 229 end; 230 density = binary (arg_array (i)); 231 end; 232 233 else if char (arg_array (i), 1) = "-" then do; 234 call com_err_ 235 (error_table_$badopt, myname, 236 arg_array (i)); 237 return; 238 end; 239 240 241 else do; 242 n_volids = n_volids + 1; 243 if n_volids > hbound (volid, 1) then do; 244 call com_err_ 245 (error_table_$too_many_args, 246 myname, 247 "Only ^d volume ids allowed.", 248 n_volids - 1); 249 return; 250 end; 251 252 (nostrz): volid (n_volids) = arg_array (i); 253 end; 254 end; 255 256 if n_volids = 0 then do; 257 query_info.yes_or_no_sw = ""b; 258 call command_query_ 259 (addr (query_info), answer, myname, 260 "Enter volume name of first volume: "); 261 262 volid (1) = answer; 263 n_volids = 1; 264 end; 265 266 if density = 0 then density = Default_density; 267 268 tape_archive_table.n_volumes_in_set (tape_archive_table.active_set) = n_volids; 269 tape_archive_table.volume_set (tape_archive_table.active_set).volume_id (*) = volid (*); 270 271 do i = 1 to n_volids; 272 call resource_info_$canonicalize_name 273 ("tape_vol", (volid (i)), volid (i), code); 274 if code ^= 0 then do; 275 call com_err_ (code, myname, "Canonicalizing the volume ^a name.", volid (i)); 276 goto end_processing; 277 end; 278 end; 279 280 if volume_type = "" 281 then volume_type = "ansi"; /* default */ 282 283 temp_seg_ptrs = null; 284 285 on cleanup call cleanerup; 286 287 call get_temp_segments_ (myname, temp_seg_ptrs (*), code); 288 if code ^= 0 then do; 289 call com_err_ (code, myname, "Unable to get temporary segments."); 290 goto end_processing; 291 end; 292 293 ptr_active = 1; 294 last_good_copy_ptr = null; 295 296 call ioa_$rsnnl ("^a^v( ^a^) -density ^d -volume_type ^a", 297 attach_description, 0, TAPE_ARCHIVE_IO_MODULE, dim (volid, 1), 298 volid (*), density, volume_type); 299 300 call iox_$attach_ptr (tape_input_switch, attach_description, codeptr (ta_load_table_), code); 301 if code ^= 0 302 then if code ^= error_table_$not_detached 303 then do; 304 call com_err_ (code, myname, "Attaching the tape input switch."); 305 goto end_processing; 306 end; 307 308 open_description = "-mode binary -block 8192 -number 1"; 309 fst_ptr = addr (automatic_fst); 310 mtape_fst.version = fst_version_1; 311 file_number = 0; 312 313 call iox_$open_file (tape_input_switch, Sequential_input, open_description, ""b, code); 314 open_description = "-mode binary -block 8192"; 315 316 last_good_copy_ptr = null; /* read no tables yet */ 317 do while (code = 0); 318 file_number = file_number + 1; 319 call iox_$control (tape_input_switch, "file_status", fst_ptr, code); 320 if code = 0 321 then do; 322 if substr (mtape_fst.f_stat.file_id, 1, length (TABLE_PREFIX)) = TABLE_PREFIX 323 then do; 324 table_file_number = file_number; 325 call hcs_$truncate_seg (temp_seg_ptrs (ptr_active), 0, 0); 326 call iox_$read_record (tape_input_switch, 327 temp_seg_ptrs (ptr_active), max_chars_in_seg, n_chars_read, code); 328 if code = error_table_$short_record 329 then code = 0; 330 if code = 0 331 then do; 332 last_good_copy_ptr = temp_seg_ptrs (ptr_active); 333 ptr_active = 3 - ptr_active; 334 end; 335 end; 336 call iox_$close (tape_input_switch, code); 337 if code = 0 338 then call iox_$open_file (tape_input_switch, Sequential_input, open_description, ""b, code); 339 end; 340 end; /* do while */ 341 342 if code = error_table_$no_file 343 then code = 0; /* read to the EOT */ 344 345 if code ^= 0 then do; 346 call com_err_ (code, myname, "Searching for the table on the tape."); 347 end_processing: 348 call cleanerup; 349 return; 350 end; 351 352 if last_good_copy_ptr = null then do; 353 call com_err_ (error_table_$no_file, myname, "There is no valid table on the tape."); 354 call cleanerup; 355 return; 356 end; 357 358 if table_file_number ^= file_number 359 then got_older_table = "1"b; /* table wasn't last file on the tape */ 360 361 n_words_read = divide (n_chars_read + 3, 4, 18, 0); 362 363 unspec (table_ptr -> based_table) = 364 unspec (last_good_copy_ptr -> based_table); 365 366 call hcs_$truncate_seg (table_ptr, n_words_read, 0); 367 368 call hcs_$set_bc_seg (table_ptr, n_chars_read * 9, code); 369 370 call hcs_$set_safety_sw_seg (table_ptr, "1"b, code); 371 372 373 /* The following set of calls checks the table for consistency, upgrading the 374* version if necessary */ 375 376 call hcs_$fs_get_path_name (table_ptr, dname, 0, ename, code); 377 378 call ta_table_mgr_$find_and_verify 379 (dname, ename, table_ptr, "0"b, code); 380 if code ^= 0 then do; 381 call com_err_ (code, myname, 382 "^a>^a", dname, ename); 383 call cleanerup; 384 return; 385 end; 386 387 /* Kill the extra null refname put onto the segment by find_and_verify */ 388 389 call hcs_$terminate_noname (table_ptr, 0); 390 391 if got_older_table then do; 392 call date_time_$fstime (last_good_copy_ptr -> 393 tape_archive_table.date_time_tape_modified, 394 date_time_string); 395 call com_err_$suppress_name (0, myname, 396 "The most recent readable copy of ^a (^a) has been loaded.", 397 table_name, date_time_string); 398 end; 399 400 /* Now that we're sure we know where everything is, check the volume names in 401* the table for consistency with the names used to load this table. */ 402 403 n_table_volids = 404 tape_archive_table.n_volumes_in_set 405 (tape_archive_table.active_set); 406 407 if n_volids ^= n_table_volids then 408 call ioa_ 409 ("^a-- ^a contains ^[only ^;^]^d volumes in volume set.", 410 "tape_archive: Warning", table_name, 411 (n_table_volids < n_volids), n_table_volids); 412 413 do i = 1 to min (n_volids, n_table_volids); 414 call resource_info_$canonicalize_name ("tape_vol", 415 (tape_archive_table.volume_set 416 (tape_archive_table.active_set).volume_id (i)), 417 table_volid, code); 418 if code ^= 0 then do; 419 table_volid = 420 tape_archive_table.volume_set 421 (tape_archive_table.active_set).volume_id (i); 422 call com_err_ (code, myname, 423 "Canonicalizing volume name ""^a"" from table.", 424 table_volid); 425 end; 426 427 if volid (i) ^= table_volid then do; 428 call ioa_ 429 ("^a: ^a-- At least one volume name supplied (^a) 430 does not match volume name in table (^a).", 431 myname, "Warning", 432 volid (i), table_volid); 433 call ioa_ 434 ("^15xAn ""alter_volume"" operation may be indicated."); 435 i = 100; 436 end; 437 end; 438 439 tape_archive_table.density (tape_archive_table.active_set) = density; /* why force the user to alter? */ 440 call PUT_VOLUME_TYPE (volume_type); 441 442 call cleanerup; 443 return; 444 445 cleanerup: proc; 446 447 if temp_seg_ptrs (1) ^= null then 448 call release_temp_segments_ 449 (myname, temp_seg_ptrs (*), (0)); 450 451 call iox_$close (tape_input_switch, (0)); 452 453 if retain_sw 454 then do; 455 tape_archive_table.mount_lock = get_lock_id_ (); 456 tape_archive_table.highest_mount_type = Read; 457 end; 458 else call iox_$detach_iocb (tape_input_switch, (0)); 459 460 return; 461 end cleanerup; 462 463 464 PUT_VOLUME_TYPE: proc (volume_type); 465 466 dcl volume_type char (*); 467 468 if volume_type = "ansi" 469 then tape_archive_table.io_module_name = "tape_ansi_"; 470 else tape_archive_table.io_module_name = "tape_ibm_"; 471 472 end PUT_VOLUME_TYPE; 473 474 end ta_load_table_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 03/25/85 1508.3 ta_load_table_.pl1 >special_ldd>online>41-12>ta_load_table_.pl1 76 1 03/11/83 1204.3 query_info_.incl.pl1 >ldd>include>query_info.incl.pl1 104 2 05/23/83 0916.6 iox_dcls.incl.pl1 >ldd>include>iox_dcls.incl.pl1 123 3 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 135 4 02/16/84 1452.4 tape_archive_table_dcl.incl.pl1 >ldd>include>tape_archive_table_dcl.incl.pl1 136 5 02/16/84 1452.3 mtape_file_status.incl.pl1 >ldd>include>mtape_file_status.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. Default_density constant fixed bin(17,0) initial dcl 4-114 ref 266 Read constant fixed bin(17,0) initial dcl 4-114 ref 456 Sequential_input 000071 constant fixed bin(17,0) initial dcl 3-15 set ref 313* 337* TABLE_PREFIX 000014 constant char(13) initial unaligned dcl 120 ref 322 322 TAPE_ARCHIVE_IO_MODULE 000002 constant char(6) initial unaligned dcl 4-114 set ref 296* active_set 65 based fixed bin(17,0) level 4 dcl 4-14 ref 268 269 403 414 419 439 addr builtin function dcl 131 ref 157 157 258 258 309 answer 000100 automatic varying char(256) dcl 49 set ref 157* 161 258* 262 answer_iocbp 6 000702 automatic pointer initial level 2 dcl 1-7 set ref 1-7* arg_array parameter char(168) array unaligned dcl 43 set ref 19 171 172 172 172 172 175 175 179 180* 187 187 187 187 199 203 207 209 210 211 213* 221 221 225 230 233 234* 252 attach_description 000201 automatic char(256) unaligned dcl 49 set ref 296* 300* automatic_fst 000730 automatic structure level 1 dcl 141 set ref 309 based_table based bit(36) array dcl 140 set ref 363* 363 binary builtin function dcl 131 ref 230 char builtin function dcl 131 ref 233 cleanup 000720 stack reference condition dcl 127 ref 285 code parameter fixed bin(35,0) dcl 43 set ref 19 145* 146 147* 272* 274 275* 287* 288 289* 300* 301 301 304* 313* 317 319* 320 326* 328 328* 330 336* 337 337* 342 342* 345 346* 368* 370* 376* 378* 380 381* 414* 418 422* codeptr builtin function dcl 131 ref 300 300 com_err_ 000010 constant entry external dcl 80 ref 147 180 190 213 227 234 244 275 289 304 346 353 381 422 com_err_$suppress_name 000012 constant entry external dcl 80 ref 395 command_query_ 000014 constant entry external dcl 80 ref 157 258 component based structure level 1 dcl 4-53 cp_escape_control 1(02) 000702 automatic bit(2) initial level 3 packed unaligned dcl 1-7 set ref 1-7* date_time_$fstime 000022 constant entry external dcl 80 ref 392 date_time_string 000301 automatic char(24) unaligned dcl 49 set ref 392* 395* date_time_tape_modified 45 based bit(36) level 3 dcl 4-14 set ref 392* density 000307 automatic fixed bin(17,0) dcl 49 in procedure "ta_load_table_" set ref 167* 230* 266 266* 296* 439 density 64 based fixed bin(17,0) array level 4 in structure "tape_archive_table" packed unaligned dcl 4-14 in procedure "ta_load_table_" set ref 439* dim builtin function dcl 131 ref 171 179 209 296 296 divide builtin function dcl 131 ref 361 dname 000310 automatic char(168) unaligned dcl 49 set ref 376* 378* 381* ename 000362 automatic char(32) unaligned dcl 49 set ref 376* 378* 381* entry_status_descriptor based structure level 1 dcl 4-74 error_table_$bad_arg 000066 external static fixed bin(35,0) dcl 108 set ref 190* error_table_$badopt 000070 external static fixed bin(35,0) dcl 108 set ref 213* 234* error_table_$no_file 000074 external static fixed bin(35,0) dcl 108 set ref 342 353* error_table_$noarg 000072 external static fixed bin(35,0) dcl 108 set ref 180* 227* error_table_$not_detached 000076 external static fixed bin(35,0) dcl 108 ref 301 error_table_$short_record 000100 external static fixed bin(35,0) dcl 108 ref 328 error_table_$too_many_args 000102 external static fixed bin(35,0) dcl 108 set ref 244* explanation_len 14 000702 automatic fixed bin(21,0) initial level 2 dcl 1-7 set ref 1-7* explanation_ptr 12 000702 automatic pointer initial level 2 dcl 1-7 set ref 1-7* f_stat 3 based structure level 2 dcl 5-15 file_id 5 based char(32) level 3 dcl 5-15 ref 322 file_number 000567 automatic fixed bin(17,0) dcl 49 set ref 311* 318* 318 324 358 file_status based structure level 1 dcl 5-27 fst_ptr 000726 automatic pointer dcl 5-6 set ref 309* 310 319* 322 fst_version_1 000000 constant char(8) initial unaligned dcl 5-10 ref 310 get_lock_id_ 000024 constant entry external dcl 80 ref 455 get_temp_segments_ 000030 constant entry external dcl 80 ref 287 got_older_table 000372 automatic bit(1) unaligned dcl 49 set ref 143* 358* 391 hbound builtin function dcl 131 ref 225 243 hcs_$fs_get_path_name 000032 constant entry external dcl 80 ref 376 hcs_$set_bc_seg 000034 constant entry external dcl 80 ref 368 hcs_$set_safety_sw_seg 000036 constant entry external dcl 80 ref 370 hcs_$terminate_noname 000040 constant entry external dcl 80 ref 389 hcs_$truncate_seg 000042 constant entry external dcl 80 ref 325 366 highest_mount_type 55 based fixed bin(17,0) level 3 dcl 4-14 set ref 456* i 000373 automatic fixed bin(17,0) dcl 49 set ref 171* 172 172 172 172 175 175 178* 178 179 180 187 187 187 187 199 203 207 208* 208 209 210 211 213 221 221 224* 224 225 230 233 234 252* 271* 272 272 275* 413* 414 419 427 428 435* io_module_name 20 based char(32) level 3 dcl 4-14 set ref 468* 470* ioa_ 000016 constant entry external dcl 80 ref 407 428 433 ioa_$rsnnl 000020 constant entry external dcl 80 ref 296 iom_ctl_arg 000374 automatic bit(1) dcl 49 set ref 169* 175* 180* 187 190* 197 iox_$attach_ptr 000050 constant entry external dcl 2-8 ref 300 iox_$close 000052 constant entry external dcl 2-8 ref 336 451 iox_$control 000054 constant entry external dcl 2-8 ref 319 iox_$detach_iocb 000056 constant entry external dcl 2-8 ref 458 iox_$find_iocb 000060 constant entry external dcl 2-8 ref 145 iox_$open_file 000064 constant entry external dcl 2-8 ref 313 337 iox_$read_record 000062 constant entry external dcl 2-8 ref 326 last_good_copy_ptr 000564 automatic pointer dcl 49 set ref 294* 316* 332* 352 363 392 length builtin function dcl 131 ref 322 literal_sw 1(05) 000702 automatic bit(1) initial level 3 packed unaligned dcl 1-7 set ref 1-7* max_chars_in_seg 000375 automatic fixed bin(21,0) dcl 49 set ref 151* 326* min builtin function dcl 131 ref 413 mount_lock 54 based bit(36) level 3 dcl 4-14 set ref 455* mtape_fst based structure level 1 dcl 5-15 myname 000004 constant char(32) initial unaligned dcl 121 set ref 147* 157* 180* 190* 213* 227* 234* 244* 258* 275* 287* 289* 304* 346* 353* 381* 395* 422* 428* 447* n_chars_read 000376 automatic fixed bin(21,0) dcl 49 set ref 326* 361 368 n_component_slots 41 based fixed bin(17,0) level 3 dcl 4-14 ref 154 n_request_slots 43 based fixed bin(17,0) level 3 dcl 4-14 ref 154 n_table_volids 000377 automatic fixed bin(17,0) dcl 49 set ref 403* 407 407 407* 413 n_volids 000400 automatic fixed bin(17,0) dcl 49 set ref 165* 242* 242 243 244 252 256 263* 268 271 407 407 413 n_volumes_in_set 66 based fixed bin(17,0) array level 4 dcl 4-14 set ref 268* 403 n_words_read 000401 automatic fixed bin(18,0) dcl 49 set ref 361* 363 363 366* nonvolatile_part based structure level 2 dcl 4-14 null builtin function dcl 131 ref 283 294 316 352 1-7 1-7 1-7 447 open_description 000402 automatic char(256) unaligned dcl 49 set ref 308* 313* 314* 337* padding 1(07) 000702 automatic bit(29) initial level 3 packed unaligned dcl 1-7 set ref 1-7* prompt_after_explanation 1(06) 000702 automatic bit(1) initial level 3 packed unaligned dcl 1-7 set ref 1-7* ptr_active 000566 automatic fixed bin(17,0) dcl 49 set ref 293* 325 326 332 333* 333 query_code 3 000702 automatic fixed bin(35,0) initial level 2 dcl 1-7 set ref 1-7* query_info 000702 automatic structure level 1 dcl 1-7 set ref 157 157 258 258 query_info_version_5 constant fixed bin(17,0) initial dcl 1-35 ref 152 question_iocbp 4 000702 automatic pointer initial level 2 dcl 1-7 set ref 1-7* release_temp_segments_ 000026 constant entry external dcl 80 ref 447 repeat_time 10 000702 automatic fixed bin(71,0) initial level 2 dcl 1-7 set ref 1-7* request based structure level 1 dcl 4-60 resource_info_$canonicalize_name 000044 constant entry external dcl 80 ref 272 414 retain_sw 000502 automatic bit(1) dcl 49 set ref 168* 209* 210* 211* 453 status_code 2 000702 automatic fixed bin(35,0) initial level 2 dcl 1-7 set ref 1-7* substr builtin function dcl 131 ref 322 suppress_name_sw 1(01) 000702 automatic bit(1) initial level 3 packed unaligned dcl 1-7 set ref 1-7* suppress_spacing 1(04) 000702 automatic bit(1) initial level 3 packed unaligned dcl 1-7 set ref 1-7* switches 1 000702 automatic structure level 2 dcl 1-7 sys_info$max_seg_size 000104 external static fixed bin(35,0) dcl 108 ref 151 ta_table_mgr_$find_and_verify 000046 constant entry external dcl 100 ref 378 table_file_number 000570 automatic fixed bin(17,0) dcl 49 set ref 324* 358 table_name parameter char unaligned dcl 43 set ref 19 157* 395* 407* table_ptr parameter pointer dcl 4-112 set ref 19 154 154 268 268 269 269 363 366* 368* 370* 376* 378* 389* 403 403 414 414 419 419 439 439 455 456 468 470 table_volid 000503 automatic char(168) unaligned dcl 49 set ref 414* 419* 422* 427 428* tape_archive_table based structure level 1 dcl 4-14 tape_info 64 based structure level 3 dcl 4-14 tape_input_switch 000556 automatic pointer dcl 49 set ref 145* 300* 313* 319* 326* 336* 337* 451* 458* temp_seg_ptrs 000560 automatic pointer array dcl 49 set ref 283* 287* 325* 326* 332 447 447* unspec builtin function dcl 131 set ref 363* 363 version 000702 automatic fixed bin(17,0) level 2 in structure "query_info" dcl 1-7 in procedure "ta_load_table_" set ref 152* version based char(8) level 2 in structure "mtape_fst" dcl 5-15 in procedure "ta_load_table_" set ref 310* volatile_part 40 based structure level 2 dcl 4-14 volid 000601 automatic char(32) array unaligned dcl 49 set ref 166* 243 252* 262* 269 272 272* 275* 296 296 296* 427 428* volume_id 70 based char(168) array level 5 dcl 4-14 set ref 269* 414 419 volume_set 70 based structure array level 4 dcl 4-14 volume_type 000571 automatic char(32) unaligned dcl 49 in procedure "ta_load_table_" set ref 164* 190* 199* 201* 203* 280 280* 296* 440* volume_type parameter char unaligned dcl 466 in procedure "PUT_VOLUME_TYPE" ref 464 468 vt_ctl_arg 000701 automatic bit(1) dcl 49 set ref 169* 177* 187 yes_or_no_sw 1 000702 automatic bit(1) initial level 3 packed unaligned dcl 1-7 set ref 156* 257* 1-7* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Cancellation internal static fixed bin(17,0) initial dcl 4-114 Compact internal static fixed bin(17,0) initial dcl 4-114 Delete internal static fixed bin(17,0) initial dcl 4-114 Deletion internal static fixed bin(17,0) initial dcl 4-114 Deletion_cancellation internal static fixed bin(17,0) initial dcl 4-114 Direct_input internal static fixed bin(17,0) initial dcl 3-15 Direct_output internal static fixed bin(17,0) initial dcl 3-15 Direct_update internal static fixed bin(17,0) initial dcl 3-15 Examine internal static fixed bin(17,0) initial dcl 4-114 Extraction internal static fixed bin(17,0) initial dcl 4-114 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 3-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 3-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 3-15 Lock_reasons internal static char(24) initial array unaligned dcl 4-114 Magic_constant internal static char(8) initial unaligned dcl 4-114 Magic_workspace_constant internal static char(8) initial unaligned dcl 4-114 Modify internal static fixed bin(17,0) initial dcl 4-114 None internal static fixed bin(17,0) initial dcl 4-114 Process_tape internal static fixed bin(17,0) initial dcl 4-114 Replacement internal static fixed bin(17,0) initial dcl 4-114 Sequential_input_output internal static fixed bin(17,0) initial dcl 3-15 Sequential_output internal static fixed bin(17,0) initial dcl 3-15 Sequential_update internal static fixed bin(17,0) initial dcl 3-15 Stream_input internal static fixed bin(17,0) initial dcl 3-15 Stream_input_output internal static fixed bin(17,0) initial dcl 3-15 Stream_output internal static fixed bin(17,0) initial dcl 3-15 Table_copy internal static fixed bin(17,0) initial dcl 4-114 Table_creation internal static fixed bin(17,0) initial dcl 4-114 Volume_alteration internal static fixed bin(17,0) initial dcl 4-114 Write internal static fixed bin(17,0) initial dcl 4-114 based_tape_info based structure level 1 dcl 4-110 component_ptr automatic pointer dcl 4-112 f_statp automatic pointer dcl 5-8 fixed builtin function dcl 131 fsst_ptr automatic pointer dcl 5-7 fsst_version_1 internal static char(8) initial unaligned dcl 5-11 iox_$attach_loud 000000 constant entry external dcl 2-8 iox_$attach_name 000000 constant entry external dcl 2-8 iox_$close_file 000000 constant entry external dcl 2-8 iox_$delete_record 000000 constant entry external dcl 2-8 iox_$destroy_iocb 000000 constant entry external dcl 2-8 iox_$detach 000000 constant entry external dcl 2-8 iox_$err_no_operation 000000 constant entry external dcl 2-8 iox_$err_not_attached 000000 constant entry external dcl 2-8 iox_$err_not_closed 000000 constant entry external dcl 2-8 iox_$err_not_open 000000 constant entry external dcl 2-8 iox_$error_output external static pointer dcl 2-41 iox_$find_iocb_n 000000 constant entry external dcl 2-8 iox_$get_chars 000000 constant entry external dcl 2-8 iox_$get_line 000000 constant entry external dcl 2-8 iox_$look_iocb 000000 constant entry external dcl 2-8 iox_$modes 000000 constant entry external dcl 2-8 iox_$move_attach 000000 constant entry external dcl 2-8 iox_$open 000000 constant entry external dcl 2-8 iox_$position 000000 constant entry external dcl 2-8 iox_$propagate 000000 constant entry external dcl 2-8 iox_$put_chars 000000 constant entry external dcl 2-8 iox_$read_key 000000 constant entry external dcl 2-8 iox_$read_length 000000 constant entry external dcl 2-8 iox_$rewrite_record 000000 constant entry external dcl 2-8 iox_$seek_key 000000 constant entry external dcl 2-8 iox_$user_input external static pointer dcl 2-41 iox_$user_io external static pointer dcl 2-41 iox_$user_output external static pointer dcl 2-41 iox_$write_record 000000 constant entry external dcl 2-8 iox_modes internal static char(24) initial array dcl 3-6 mtape_fsst based structure level 1 dcl 5-20 mtape_fsst_nfiles automatic fixed bin(17,0) dcl 5-13 query_info_version_3 internal static fixed bin(17,0) initial dcl 1-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 1-34 query_info_version_6 internal static fixed bin(17,0) initial dcl 1-36 request_ptr automatic pointer dcl 4-112 short_iox_modes internal static char(4) initial array dcl 3-12 tape_archive_version_4 internal static fixed bin(17,0) initial dcl 4-114 tape_info_ptr automatic pointer dcl 4-112 workspace based structure level 1 dcl 4-93 workspace_ptr automatic pointer dcl 4-112 NAMES DECLARED BY EXPLICIT CONTEXT. PUT_VOLUME_TYPE 003470 constant entry internal dcl 464 ref 440 cleanerup 003363 constant entry internal dcl 445 ref 285 347 354 383 442 end_processing 002476 constant label dcl 347 ref 148 276 290 305 ta_load_table_ 000521 constant entry external dcl 19 ref 300 300 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4142 4250 3543 4152 Length 4614 3543 106 330 376 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ta_load_table_ 737 external procedure is an external procedure. on unit on line 285 64 on unit cleanerup 80 internal procedure is called by several nonquick procedures. PUT_VOLUME_TYPE internal procedure shares stack frame of external procedure ta_load_table_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ta_load_table_ 000100 answer ta_load_table_ 000201 attach_description ta_load_table_ 000301 date_time_string ta_load_table_ 000307 density ta_load_table_ 000310 dname ta_load_table_ 000362 ename ta_load_table_ 000372 got_older_table ta_load_table_ 000373 i ta_load_table_ 000374 iom_ctl_arg ta_load_table_ 000375 max_chars_in_seg ta_load_table_ 000376 n_chars_read ta_load_table_ 000377 n_table_volids ta_load_table_ 000400 n_volids ta_load_table_ 000401 n_words_read ta_load_table_ 000402 open_description ta_load_table_ 000502 retain_sw ta_load_table_ 000503 table_volid ta_load_table_ 000556 tape_input_switch ta_load_table_ 000560 temp_seg_ptrs ta_load_table_ 000564 last_good_copy_ptr ta_load_table_ 000566 ptr_active ta_load_table_ 000567 file_number ta_load_table_ 000570 table_file_number ta_load_table_ 000571 volume_type ta_load_table_ 000601 volid ta_load_table_ 000701 vt_ctl_arg ta_load_table_ 000702 query_info ta_load_table_ 000726 fst_ptr ta_load_table_ 000730 automatic_fst ta_load_table_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_l_a r_e_as call_ext_out_desc call_ext_out call_int_this call_int_other return enable ext_entry_desc int_entry any_to_any_tr THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ com_err_$suppress_name command_query_ date_time_$fstime get_lock_id_ get_temp_segments_ hcs_$fs_get_path_name hcs_$set_bc_seg hcs_$set_safety_sw_seg hcs_$terminate_noname hcs_$truncate_seg ioa_ ioa_$rsnnl iox_$attach_ptr iox_$close iox_$control iox_$detach_iocb iox_$find_iocb iox_$open_file iox_$read_record release_temp_segments_ resource_info_$canonicalize_name ta_table_mgr_$find_and_verify THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$badopt error_table_$no_file error_table_$noarg error_table_$not_detached error_table_$short_record error_table_$too_many_args sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 19 000514 1 7 000534 143 000564 145 000565 146 000614 147 000617 148 000643 151 000644 152 000650 154 000652 156 000657 157 000661 161 000717 164 000724 165 000727 166 000730 167 000744 168 000745 169 000746 171 000750 172 000765 175 001025 177 001032 178 001034 179 001035 180 001044 184 001110 187 001111 190 001143 194 001176 197 001177 199 001202 201 001212 202 001215 203 001216 205 001221 207 001222 208 001226 209 001227 210 001241 211 001255 213 001263 217 001317 219 001320 221 001321 224 001331 225 001332 227 001335 228 001361 230 001362 231 001400 233 001401 234 001410 237 001435 242 001436 243 001437 244 001442 249 001474 252 001475 254 001503 256 001505 257 001507 258 001511 262 001543 263 001547 266 001551 268 001555 269 001563 271 001613 272 001623 274 001661 275 001664 276 001716 278 001717 280 001721 283 001730 285 001743 287 001765 288 002007 289 002012 290 002036 293 002037 294 002041 296 002043 300 002116 301 002145 304 002153 305 002176 308 002177 309 002202 310 002204 311 002207 313 002210 314 002243 316 002246 317 002250 318 002253 319 002254 320 002304 322 002307 324 002314 325 002316 326 002335 328 002357 330 002365 332 002367 333 002373 336 002375 337 002406 340 002444 342 002445 345 002451 346 002453 347 002476 349 002502 352 002503 353 002507 354 002532 355 002536 358 002537 361 002544 363 002550 366 002557 368 002572 370 002611 376 002627 378 002662 380 002716 381 002721 383 002753 384 002757 389 002760 391 002772 392 002774 395 003012 403 003051 407 003057 413 003123 414 003135 418 003201 419 003204 422 003220 427 003250 428 003257 433 003316 435 003332 437 003334 439 003336 440 003352 442 003355 443 003361 445 003362 447 003370 451 003416 453 003431 455 003434 456 003446 457 003454 458 003455 460 003467 464 003470 468 003501 470 003516 472 003524 ----------------------------------------------------------- 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