COMPILATION LISTING OF SEGMENT ta_extract_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 02/16/84 1254.4 mst Thu 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 ta_extract_: proc (table_ptr, arg_array, delete, force, table_name, code); 19 20 /* This subroutine handles the extract key of tape_archive. 21* 22* Written 05/10/77 by C. D. Tavares. 23* Modified 09/24/79 by CDT to implement star convention. 24* Modified 09/21/80 by CDT to implement table workspace strategy 25* (indivisible updates). 26* Last modified 83-03-24 by S. G. Harris (UNCA) for version 4. 27**/ 28 29 /* PARAMETERS */ 30 31 dcl arg_array (*) char (168) parameter, 32 delete bit (1) aligned parameter, 33 force bit (1) aligned parameter, 34 table_name char (*) parameter, 35 code fixed bin (35) parameter; 36 37 /* AUTOMATIC */ 38 39 dcl answer char (4) varying, 40 arg char (168), 41 component_slot fixed bin, 42 dirname char (168), 43 ename char (32), 44 i fixed bin, 45 request_slot fixed bin, 46 single_name_sw bit (1) aligned, 47 specific_component bit (1) aligned; 48 49 /* CONDITIONS */ 50 51 dcl cleanup condition; 52 53 /* INTERNAL STATIC */ 54 55 dcl system_free_ptr pointer static initial (null); 56 57 /* EXTERNAL STATIC */ 58 59 dcl error_table_$badopt ext fixed bin (35) static; 60 61 dcl sys_info$max_seg_size ext fixed bin (35) static; 62 63 /* ENTRIES */ 64 65 dcl check_star_name_$entry ext entry (char (*), fixed bin (35)), 66 command_query_ ext entry options (variable), 67 com_err_ ext entry options (variable), 68 expand_pathname_ ext entry (char (*), char (*), char (*), fixed bin (35)), 69 get_system_free_area_ ext entry returns (pointer), 70 hcs_$status_minf ext entry (char (*), char (*), fixed bin, fixed bin, fixed bin (24), fixed bin (35)); 71 72 dcl ta_table_mgr_$find_component ext entry (pointer, char (*), char (*), bit (1) aligned, fixed bin, fixed bin, fixed bin (35)), 73 ta_table_mgr_$lock ext entry (pointer, char (*), fixed bin, fixed bin (35)), 74 ta_table_mgr_$unlock ext entry (pointer, fixed bin (35)), 75 ta_table_mgr_$star_list ext entry (pointer, char (*), fixed bin, pointer, fixed bin (35)), 76 ta_table_mgr_$setup_workspace ext entry (pointer, fixed bin, fixed bin, pointer), 77 ta_table_mgr_$complete_table_op ext entry (pointer); 78 79 /* BASED */ 80 81 dcl system_free_area area (sys_info$max_seg_size) based (system_free_ptr); 82 83 /* BUILTINS */ 84 85 dcl (addr, dim, null, substr, unspec) builtin; 86 87 /* INCLUDE FILES */ 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 */ 88 89 2 1 /* BEGIN INCLUDE FILE status_info_branch.incl.pl1 */ 2 2 dcl 1 status_info_branch, /* structure returned for branch */ 2 3 2 type bit(2), /* 0=link, 1=seg, 2=dir */ 2 4 2 nnames bit(16), /* number of names for this entry */ 2 5 2 nrp bit(18), /* ??????? */ 2 6 2 dtm bit(36), /* date and time last modified */ 2 7 2 dtu bit(36), /* date and time last used */ 2 8 2 mode bit(5), /* user's access mode */ 2 9 2 pad bit(13), 2 10 2 records bit(18); /* number of records used */ 2 11 /* END INCLUDE FILE status_info_branch.incl.pl1 */ 90 91 3 1 /* ---------- BEGIN include file tape_archive_table_dcl.incl.pl1 ---------- */ 3 2 3 3 /* Version 2 lengthened volume names from 6 to 32 characters */ 3 4 /* Version 3 introduced density field, workspace strategy for updates, */ 3 5 /* and the mount lock, which is less of a lock than a retain indicator. */ 3 6 /* Version 4 expanded density field to an array for independent volume set */ 3 7 /* densities and added uid fields for table deletion checking. */ 3 8 /* Modified 09/21/80 by C. D. Tavares for version 3 */ 3 9 /* Modified 12/9/81 by CDT to add highest_mount_type field */ 3 10 /* Last modified 83-03-16 by S. G. Harris (UNCA) for version 4. */ 3 11 /* Modified 09/16/83 by S. Krupp to add the TAPE_ARCHIVE_IO_MODULE 3 12* declaration for conversion to the mtape_ I/O module. */ 3 13 3 14 dcl 1 tape_archive_table aligned based (table_ptr), /* online segment for tape_archive command */ 3 15 2 nonvolatile_part aligned, /* temp table moving doesn't touch these */ 3 16 3 version_number fixed bin, /* of table */ 3 17 3 magic_constant char (8), /* "ta table" */ 3 18 3 compaction_warning_threshold float bin, /* when to suggest compaction to user */ 3 19 3 auto_compaction_threshold float bin, /* when to compact when user doesn't take hint */ 3 20 3 table_is_consistent bit (1) unaligned, /* update in progress indicator */ 3 21 3 lock bit (36), /* allows shared tape archives */ 3 22 3 lock_reason fixed bin, /* reason seg already locked, for failure msg */ 3 23 3 locker_id char (32), /* userid of locking process, for failure msg */ 3 24 3 io_module_name char (32), /* tape_ansi_ or tape_ibm_ */ 3 25 3 recovery_info_offset bit (18) aligned, /* holds address of workspace for table updates */ 3 26 3 perm_table_uid bit (36), /* used to prevent table deletion */ 3 27 3 future_expansion (6) bit (36), /* ... */ 3 28 2 volatile_part aligned, /* these can get altered due to temp table moves */ 3 29 3 n_components fixed bin, /* number valid (undeleted) components in archive */ 3 30 3 n_component_slots fixed bin, /* number of used component slots in table */ 3 31 3 n_queued_requests fixed bin, /* number requests to be performed next mount */ 3 32 3 n_request_slots fixed bin, /* number of used request slots in table */ 3 33 3 next_mount_type fixed bin, /* read only, write, or compact */ 3 34 3 date_time_tape_modified bit (36), /* last time tape written on */ 3 35 3 date_time_last_compacted bit (36), /* last time tape compacted */ 3 36 3 total_records fixed bin (35), /* data out on tape, in Multics records */ 3 37 3 dead_records fixed bin (35), /* records wasted (deletions, replacements) */ 3 38 3 incomplete_write_op_last bit (1), /* ON if determined that user or sys crashed while writing tape */ 3 39 3 last_tape_file_no fixed bin, /* number of last file existing on volume set */ 3 40 3 last_table_no fixed bin, /* number of copies of online table on this volume set */ 3 41 3 mount_lock bit (36) aligned, /* set to lock_id while volume set mounted */ 3 42 3 highest_mount_type fixed bin, /* max of next_mount_type since retained */ 3 43 3 future_expansion (6) bit (36), /* ... */ 3 44 3 tape_info aligned, 3 45 4 density (2) fixed bin (17) unal, /* post version 3 volume set densities */ 3 46 4 active_set fixed bin, /* which of the two is most current */ 3 47 4 n_volumes_in_set (2) fixed bin, /* how many reels comprise volume set */ 3 48 4 volume_set (2) aligned, 3 49 5 volume_id (8) char (168), /* physical reel and slot info */ 3 50 3 component_table (0 refer (tape_archive_table.n_component_slots)) aligned like component, 3 51 3 request_queue (0 refer (tape_archive_table.n_request_slots)) aligned like request; 3 52 3 53 dcl 1 component aligned based (component_ptr), /* format of one component entry */ 3 54 2 entry_status_descriptor like entry_status_descriptor aligned, 3 55 2 previous_instance_backchain fixed bin, /* index of file it replaced, if any */ 3 56 2 associated_request_index fixed bin, /* if extract pending, index of request with dirpath */ 3 57 2 date_time_deleted bit (36) aligned, /* if logically deleted, when. */ 3 58 2 future_expansion (5) bit (36) aligned; /* ... */ 3 59 3 60 dcl 1 request aligned based (request_ptr), /* format of a queued request */ 3 61 2 entry_status_descriptor like entry_status_descriptor aligned, 3 62 2 directory_name char (168) unaligned, /* in Multics file system */ 3 63 2 requested_ops unaligned, 3 64 3 append bit (1) unaligned, /* add to tape */ 3 65 3 replace bit (1) unaligned, /* replace to tape */ 3 66 3 extract bit (1) unaligned, /* extract from tape */ 3 67 3 delete bit (1) unaligned, /* delete from tape or file system */ 3 68 3 force bit (1) unaligned, /* forcibly do any of the above */ 3 69 3 single_name bit (1) unaligned, /* append/extract with only given name */ 3 70 3 future_expansion bit (30) unaligned, 3 71 2 existing_reference fixed bin, /* index of component block, if exists (e.g. read) */ 3 72 2 future_expansion (4) bit (36) aligned; 3 73 3 74 dcl 1 entry_status_descriptor aligned based, 3 75 2 valid bit (1) unaligned, /* an undeleted component or request if on */ 3 76 2 no_final_newline bit (1) unaligned, /* ON if last char in file was not newline */ 3 77 2 safety_switch bit (1) unaligned, /* reflects safety switch of file while online */ 3 78 2 pad bit (33) unaligned, 3 79 2 file_info aligned, /* main tape file for this entry */ 3 80 3 tape_file_name char (17), 3 81 3 entry_name char (32) unaligned, /* for Multics file system */ 3 82 3 date_time_archived bit (36), /* when it was put on tape */ 3 83 3 recording_mode char (8) aligned, /* "ascii", "binary", "ebcdic", etc. */ 3 84 3 date_time_branch_modified bit (36), /* last modified while in file system */ 3 85 3 date_time_dumped bit (36), /* by backup facility */ 3 86 3 bitcount_author char (32), /* last person who modified it while online */ 3 87 3 file_length fixed bin (35), /* in Multics pages */ 3 88 3 attribute_file_no fixed bin, /* file number of attribute file on tape */ 3 89 3 n_tape_records fixed bin (35), /* number of logical records on tape for this file */ 3 90 2 uid bit (36) aligned, /* used to prevent table deletion */ 3 91 2 future_expansion bit (36) aligned; 3 92 3 93 dcl 1 workspace based (workspace_ptr) aligned, /* to prevent update inconsistencies */ 3 94 2 workspace_id char (8), /* "wrkspace" */ 3 95 2 component_no fixed bin, 3 96 2 request_no fixed bin, 3 97 2 n_queued_requests fixed bin, 3 98 2 dead_records fixed bin, 3 99 2 total_records fixed bin, 3 100 2 n_components fixed bin, 3 101 2 n_request_slots fixed bin, 3 102 2 next_mount_type fixed bin, 3 103 2 future_expansion (70) fixed bin (35), 3 104 2 tape_info_copy aligned like tape_archive_table.tape_info, 3 105 2 future_expansion2 (16) fixed bin (35), 3 106 2 component_copy like component aligned, 3 107 2 future_expansion3 (16) fixed bin (35), 3 108 2 request_copy like request aligned; 3 109 3 110 dcl 1 based_tape_info based (tape_info_ptr) like tape_archive_table.tape_info aligned; 3 111 3 112 dcl (table_ptr, component_ptr, request_ptr, workspace_ptr, tape_info_ptr) pointer; 3 113 3 114 dcl ((None initial (0), /* next scheduled processing flags */ 3 115 Delete initial (1), 3 116 Read initial (2), 3 117 Write initial (3), 3 118 Compact initial (4), 3 119 3 120 Examine initial (1), /* current lock reason flags */ 3 121 Modify initial (2), 3 122 Process_tape initial (3), 3 123 3 124 Deletion initial (1), /* pending_operation flags */ 3 125 Extraction initial (2), 3 126 Replacement initial (3), 3 127 Cancellation initial (4), 3 128 Deletion_cancellation initial (5), 3 129 Volume_alteration initial (6), 3 130 Table_creation initial (7), 3 131 Table_copy initial (8), 3 132 3 133 Default_density initial (1600), 3 134 3 135 tape_archive_version_4 initial (4)) fixed bin, 3 136 3 137 TAPE_ARCHIVE_IO_MODULE char(6) init("mtape_"), 3 138 3 139 Lock_reasons (0:3) char (24) initial 3 140 ("no discernable reason", "table examination", "table modification", "tape processing"), 3 141 3 142 Magic_constant char (8) initial ("ta table"), 3 143 Magic_workspace_constant char (8) initial ("wrkspace")) static options (constant); 3 144 3 145 /* ---------------- END include file tape_archive_table_dcl.incl.pl1 ---------------- */ 92 93 4 1 /* --------------- BEGIN include file tape_archive_star.incl.pl1 --------------- */ 4 2 4 3 dcl 1 ta_filesys_star_info aligned based (ta_filesys_star_ptr), 4 4 2 n_entries fixed bin, 4 5 2 ename (ta_star_match_count refer (ta_filesys_star_info.n_entries)) char (32) unaligned; 4 6 4 7 dcl 1 ta_component_star_info aligned based (ta_component_star_ptr), 4 8 2 n_entries fixed bin, 4 9 2 entry (ta_star_match_count refer (ta_component_star_info.n_entries)), 4 10 3 ename char (32) unaligned, 4 11 3 type fixed bin, 4 12 3 table_idx fixed bin; 4 13 4 14 dcl ta_star_match_count fixed bin, 4 15 ta_filesys_star_ptr pointer, 4 16 ta_component_star_ptr pointer; 4 17 4 18 dcl (Component initial (1), 4 19 Request initial (2)) fixed bin static options (constant); 4 20 4 21 /* ---------------- END include file tape_archive_star.incl.pl1 ---------------- */ 94 95 96 97 /* ta_extract_: proc... */ 98 99 if system_free_ptr = null then 100 system_free_ptr = get_system_free_area_ (); 101 102 single_name_sw = ""b; 103 specific_component = ""b; 104 query_info.version = query_info_version_5; 105 query_info.yes_or_no_sw = "1"b; 106 107 /* Following block handles control args */ 108 109 do i = 1 to dim (arg_array, 1); 110 111 arg = arg_array (i); 112 113 if substr (arg, 1, 1) = "-" then do; 114 if (arg = "-single_name" | arg = "-snm") then single_name_sw = "1"b; 115 116 else do; 117 code = error_table_$badopt; 118 call com_err_ (code, "tape_archive", "Arguments from ""^a"" were not processed.", 119 arg); 120 return; 121 end; 122 end; 123 124 else specific_component = "1"b; 125 end; 126 127 /* Following block handles args which should be storage system pathnames */ 128 129 if specific_component then 130 do i = 1 to dim (arg_array, 1); 131 132 arg = arg_array (i); 133 134 if substr (arg, 1, 1) ^= "-" then call process_filearg (arg); 135 end; 136 137 else /* user wants everything extracted */ 138 do i = 1 to tape_archive_table.n_component_slots; 139 if component_table (i).valid then 140 call process_filearg (component_table (i).entry_name); 141 end; 142 143 code = 0; 144 returner: return; 145 146 147 process_filearg: proc (component_name); 148 149 dcl component_name char (*) parameter; 150 151 call expand_pathname_ (component_name, dirname, ename, code); 152 if code ^= 0 then do; 153 not_processed: call com_err_ (code, "tape_archive", """^a"" not processed.", component_name); 154 return; 155 end; 156 157 call check_star_name_$entry (ename, code); 158 if code = 0 then do; 159 call extract_one (dirname, ename); 160 return; 161 end; 162 163 else if (code = 1) | (code = 2) then begin; /* arbitrary starname or "**" */ 164 /* the begin keeps the current procedure fast by limiting 165* the scope of the following cleanup handler. */ 166 167 dcl i fixed bin; 168 169 ta_component_star_ptr = null; 170 171 on cleanup begin; 172 if ta_component_star_ptr ^= null then 173 free ta_component_star_info in (system_free_area); 174 end; 175 176 call ta_table_mgr_$star_list (table_ptr, ename, Component, ta_component_star_ptr, code); 177 if code ^= 0 then goto not_processed; 178 179 do i = 1 to ta_component_star_info.n_entries; 180 call extract_one (dirname, ta_component_star_info (i).ename); 181 end; 182 183 free ta_component_star_info in (system_free_area); 184 end; 185 186 else goto not_processed; 187 return; 188 189 extract_one: proc (dirname, ename); 190 191 dcl (dirname, ename) char (*) parameter; 192 193 if ^force then do; 194 call hcs_$status_minf (dirname, ename, 1 /* chase */, 0, 0, code); 195 if code = 0 then call com_err_ (0, "tape_archive", "Warning - ^a>^a already exists.", dirname, ename); 196 end; 197 198 on cleanup call ta_table_mgr_$unlock (table_ptr, code); 199 200 call ta_table_mgr_$lock (table_ptr, table_name, Modify, code); 201 if code ^= 0 then do; 202 call com_err_ (code, "tape_archive", 203 "Arguments from ""^a"" could not be processed.", component_name); 204 goto returner; 205 end; 206 207 call ta_table_mgr_$find_component (table_ptr, table_name, ename, "1"b /* should be there */, component_slot, request_slot, code); 208 if code ^= 0 then do; 209 call ta_table_mgr_$unlock (table_ptr, code); 210 211 return; 212 end; 213 214 component_ptr = addr (component_table (component_slot)); 215 216 call ta_table_mgr_$setup_workspace (table_ptr, component_slot, request_slot, workspace_ptr); 217 218 if request_slot > workspace_ptr -> workspace.n_request_slots then 219 workspace_ptr -> workspace.n_request_slots = request_slot; 220 221 request_ptr = addr (workspace_ptr -> workspace.request_copy); 222 unspec (request) = ""b; /* clear out any old garbage */ 223 224 request.extract = "1"b; 225 if delete then do; 226 request.delete = "1"b; 227 if ^force then /* check safety switch */ 228 if component.safety_switch then do; 229 call command_query_ (addr (query_info), answer, "tape_archive", 230 "Component ^a is protected. Do you wish to delete it?? ", ename); 231 if answer = "no" then request.delete = "0"b; 232 end; 233 end; 234 request.force = force; 235 request.directory_name = dirname; 236 request.entry_name = ename; 237 request.single_name = single_name_sw; 238 request.existing_reference = component_slot; 239 request.valid = "1"b; 240 241 workspace_ptr -> workspace.component_copy.associated_request_index = request_slot; 242 if request.delete then 243 workspace_ptr -> workspace.dead_records = workspace_ptr -> workspace.dead_records + component.file_length; 244 workspace_ptr -> workspace.n_queued_requests = workspace_ptr -> workspace.n_queued_requests + 1; 245 if workspace_ptr -> workspace.next_mount_type < Read then 246 workspace_ptr -> workspace.next_mount_type = Read; 247 248 call ta_table_mgr_$complete_table_op (table_ptr); 249 250 call ta_table_mgr_$unlock (table_ptr, code); 251 end extract_one; 252 end process_filearg; 253 end ta_extract_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 02/16/84 1249.3 ta_extract_.pl1 >spec>on>mtape>ta_extract_.pl1 88 1 03/11/83 1204.3 query_info.incl.pl1 >ldd>include>query_info.incl.pl1 90 2 05/06/74 1751.6 status_info_branch.incl.pl1 >ldd>include>status_info_branch.incl.pl1 92 3 02/16/84 1230.3 tape_archive_table_dcl.incl.pl1 >spec>on>mtape>tape_archive_table_dcl.incl.pl1 94 4 12/14/79 1519.0 tape_archive_star.incl.pl1 >ldd>include>tape_archive_star.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. Component 000022 constant fixed bin(17,0) initial dcl 4-18 set ref 176* Modify 000021 constant fixed bin(17,0) initial dcl 3-114 set ref 200* Read constant fixed bin(17,0) initial dcl 3-114 ref 245 245 addr builtin function dcl 85 ref 214 221 229 229 answer 000100 automatic varying char(4) dcl 39 set ref 229* 231 answer_iocbp 6 000244 automatic pointer initial level 2 dcl 1-7 set ref 1-7* arg 000102 automatic char(168) unaligned dcl 39 set ref 111* 113 114 114 118* 132* 134 134* arg_array parameter char(168) array unaligned dcl 31 ref 18 109 111 129 132 associated_request_index 1445 based fixed bin(17,0) level 3 dcl 3-93 set ref 241* check_star_name_$entry 000014 constant entry external dcl 65 ref 157 cleanup 000000 stack reference condition dcl 51 ref 171 198 code parameter fixed bin(35,0) dcl 31 set ref 18 117* 118* 143* 151* 152 153* 157* 158 163 163 176* 177 194* 195 198* 200* 201 202* 207* 208 209* 250* com_err_ 000020 constant entry external dcl 65 ref 118 153 195 202 command_query_ 000016 constant entry external dcl 65 ref 229 component based structure level 1 dcl 3-53 component_copy 1404 based structure level 2 dcl 3-93 component_name parameter char unaligned dcl 149 set ref 147 151* 153* 202* component_ptr 000262 automatic pointer dcl 3-112 set ref 214* 227 242 component_slot 000154 automatic fixed bin(17,0) dcl 39 set ref 207* 214 216* 238 component_table 1330 based structure array level 3 dcl 3-14 set ref 214 cp_escape_control 1(02) 000244 automatic bit(2) initial level 3 packed unaligned dcl 1-7 set ref 1-7* dead_records 5 based fixed bin(17,0) level 2 dcl 3-93 set ref 242* 242 delete parameter bit(1) dcl 31 in procedure "ta_extract_" ref 18 225 delete 112(03) based bit(1) level 3 in structure "request" packed unaligned dcl 3-60 in procedure "ta_extract_" set ref 226* 231* 242 dim builtin function dcl 85 ref 109 129 directory_name 40 based char(168) level 2 packed unaligned dcl 3-60 set ref 235* dirname parameter char unaligned dcl 191 in procedure "extract_one" set ref 189 194* 195* 235 dirname 000155 automatic char(168) unaligned dcl 39 in procedure "ta_extract_" set ref 151* 159* 180* ename 1 based char(32) array level 3 in structure "ta_component_star_info" packed unaligned dcl 4-7 in procedure "ta_extract_" set ref 180* ename parameter char unaligned dcl 191 in procedure "extract_one" set ref 189 194* 195* 207* 229* 236 ename 000227 automatic char(32) unaligned dcl 39 in procedure "ta_extract_" set ref 151* 157* 159* 176* entry 1 based structure array level 2 dcl 4-7 entry_name 6 based char(32) level 4 in structure "request" packed unaligned dcl 3-60 in procedure "ta_extract_" set ref 236* entry_name 1336 based char(32) array level 6 in structure "tape_archive_table" packed unaligned dcl 3-14 in procedure "ta_extract_" set ref 139* entry_status_descriptor based structure level 1 dcl 3-74 in procedure "ta_extract_" entry_status_descriptor based structure level 2 in structure "component" dcl 3-53 in procedure "ta_extract_" entry_status_descriptor 1330 based structure array level 4 in structure "tape_archive_table" dcl 3-14 in procedure "ta_extract_" entry_status_descriptor based structure level 2 in structure "request" dcl 3-60 in procedure "ta_extract_" error_table_$badopt 000012 external static fixed bin(35,0) dcl 59 ref 117 existing_reference 113 based fixed bin(17,0) level 2 dcl 3-60 set ref 238* expand_pathname_ 000022 constant entry external dcl 65 ref 151 explanation_len 14 000244 automatic fixed bin(21,0) initial level 2 dcl 1-7 set ref 1-7* explanation_ptr 12 000244 automatic pointer initial level 2 dcl 1-7 set ref 1-7* extract 112(02) based bit(1) level 3 packed unaligned dcl 3-60 set ref 224* file_info 1331 based structure array level 5 in structure "tape_archive_table" dcl 3-14 in procedure "ta_extract_" file_info 1 based structure level 3 in structure "request" dcl 3-60 in procedure "ta_extract_" file_info 1 based structure level 3 in structure "component" dcl 3-53 in procedure "ta_extract_" file_length 33 based fixed bin(35,0) level 4 dcl 3-53 ref 242 force 112(04) based bit(1) level 3 in structure "request" packed unaligned dcl 3-60 in procedure "ta_extract_" set ref 234* force parameter bit(1) dcl 31 in procedure "ta_extract_" ref 18 193 227 234 get_system_free_area_ 000024 constant entry external dcl 65 ref 99 hcs_$status_minf 000026 constant entry external dcl 65 ref 194 i 000237 automatic fixed bin(17,0) dcl 39 in procedure "ta_extract_" set ref 109* 111* 129* 132* 137* 139 139* i 000100 automatic fixed bin(17,0) dcl 167 in begin block on line 163 set ref 179* 180* literal_sw 1(05) 000244 automatic bit(1) initial level 3 packed unaligned dcl 1-7 set ref 1-7* n_component_slots 41 based fixed bin(17,0) level 3 dcl 3-14 ref 137 n_entries based fixed bin(17,0) level 2 dcl 4-7 ref 172 179 183 n_queued_requests 4 based fixed bin(17,0) level 2 dcl 3-93 set ref 244* 244 n_request_slots 10 based fixed bin(17,0) level 2 dcl 3-93 set ref 218 218* next_mount_type 11 based fixed bin(17,0) level 2 dcl 3-93 set ref 245 245* null builtin function dcl 85 ref 99 1-7 1-7 1-7 169 172 padding 1(07) 000244 automatic bit(29) initial level 3 packed unaligned dcl 1-7 set ref 1-7* prompt_after_explanation 1(06) 000244 automatic bit(1) initial level 3 packed unaligned dcl 1-7 set ref 1-7* query_code 3 000244 automatic fixed bin(35,0) initial level 2 dcl 1-7 set ref 1-7* query_info 000244 automatic structure level 1 dcl 1-7 set ref 229 229 query_info_version_5 constant fixed bin(17,0) initial dcl 1-35 ref 104 question_iocbp 4 000244 automatic pointer initial level 2 dcl 1-7 set ref 1-7* repeat_time 10 000244 automatic fixed bin(71,0) initial level 2 dcl 1-7 set ref 1-7* request based structure level 1 dcl 3-60 set ref 222* request_copy 1474 based structure level 2 dcl 3-93 set ref 221 request_ptr 000264 automatic pointer dcl 3-112 set ref 221* 222 224 226 231 234 235 236 237 238 239 242 request_slot 000240 automatic fixed bin(17,0) dcl 39 set ref 207* 216* 218 218 241 requested_ops 112 based structure level 2 packed unaligned dcl 3-60 safety_switch 0(02) based bit(1) level 3 packed unaligned dcl 3-53 ref 227 single_name 112(05) based bit(1) level 3 packed unaligned dcl 3-60 set ref 237* single_name_sw 000241 automatic bit(1) dcl 39 set ref 102* 114* 237 specific_component 000242 automatic bit(1) dcl 39 set ref 103* 124* 129 status_code 2 000244 automatic fixed bin(35,0) initial level 2 dcl 1-7 set ref 1-7* substr builtin function dcl 85 ref 113 134 suppress_name_sw 1(01) 000244 automatic bit(1) initial level 3 packed unaligned dcl 1-7 set ref 1-7* suppress_spacing 1(04) 000244 automatic bit(1) initial level 3 packed unaligned dcl 1-7 set ref 1-7* switches 1 000244 automatic structure level 2 dcl 1-7 system_free_area based area dcl 81 ref 172 183 system_free_ptr 000010 internal static pointer initial dcl 55 set ref 99 99* 172 183 ta_component_star_info based structure level 1 dcl 4-7 set ref 172 183 ta_component_star_ptr 000270 automatic pointer dcl 4-14 set ref 169* 172 172 176* 179 180 183 ta_table_mgr_$complete_table_op 000042 constant entry external dcl 72 ref 248 ta_table_mgr_$find_component 000030 constant entry external dcl 72 ref 207 ta_table_mgr_$lock 000032 constant entry external dcl 72 ref 200 ta_table_mgr_$setup_workspace 000040 constant entry external dcl 72 ref 216 ta_table_mgr_$star_list 000036 constant entry external dcl 72 ref 176 ta_table_mgr_$unlock 000034 constant entry external dcl 72 ref 198 209 250 table_name parameter char unaligned dcl 31 set ref 18 200* 207* table_ptr parameter pointer dcl 3-112 set ref 18 137 139 139 176* 198* 200* 207* 209* 214 216* 248* 250* tape_archive_table based structure level 1 dcl 3-14 tape_info 64 based structure level 3 dcl 3-14 unspec builtin function dcl 85 set ref 222* valid based bit(1) level 3 in structure "request" packed unaligned dcl 3-60 in procedure "ta_extract_" set ref 239* valid 1330 based bit(1) array level 5 in structure "tape_archive_table" packed unaligned dcl 3-14 in procedure "ta_extract_" set ref 139 version 000244 automatic fixed bin(17,0) level 2 dcl 1-7 set ref 104* volatile_part 40 based structure level 2 dcl 3-14 workspace based structure level 1 dcl 3-93 workspace_ptr 000266 automatic pointer dcl 3-112 set ref 216* 218 218 221 241 242 242 244 244 245 245 yes_or_no_sw 1 000244 automatic bit(1) initial level 3 packed unaligned dcl 1-7 set ref 105* 1-7* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Cancellation internal static fixed bin(17,0) initial dcl 3-114 Compact internal static fixed bin(17,0) initial dcl 3-114 Default_density internal static fixed bin(17,0) initial dcl 3-114 Delete internal static fixed bin(17,0) initial dcl 3-114 Deletion internal static fixed bin(17,0) initial dcl 3-114 Deletion_cancellation internal static fixed bin(17,0) initial dcl 3-114 Examine internal static fixed bin(17,0) initial dcl 3-114 Extraction internal static fixed bin(17,0) initial dcl 3-114 Lock_reasons internal static char(24) initial array unaligned dcl 3-114 Magic_constant internal static char(8) initial unaligned dcl 3-114 Magic_workspace_constant internal static char(8) initial unaligned dcl 3-114 None internal static fixed bin(17,0) initial dcl 3-114 Process_tape internal static fixed bin(17,0) initial dcl 3-114 Replacement internal static fixed bin(17,0) initial dcl 3-114 Request internal static fixed bin(17,0) initial dcl 4-18 TAPE_ARCHIVE_IO_MODULE internal static char(6) initial unaligned dcl 3-114 Table_copy internal static fixed bin(17,0) initial dcl 3-114 Table_creation internal static fixed bin(17,0) initial dcl 3-114 Volume_alteration internal static fixed bin(17,0) initial dcl 3-114 Write internal static fixed bin(17,0) initial dcl 3-114 based_tape_info based structure level 1 dcl 3-110 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 status_info_branch automatic structure level 1 packed unaligned dcl 2-2 sys_info$max_seg_size external static fixed bin(35,0) dcl 61 ta_filesys_star_info based structure level 1 dcl 4-3 ta_filesys_star_ptr automatic pointer dcl 4-14 ta_star_match_count automatic fixed bin(17,0) dcl 4-14 tape_archive_version_4 internal static fixed bin(17,0) initial dcl 3-114 tape_info_ptr automatic pointer dcl 3-112 NAMES DECLARED BY EXPLICIT CONTEXT. extract_one 000767 constant entry internal dcl 189 ref 159 180 not_processed 000516 constant label dcl 153 ref 163 177 process_filearg 000452 constant entry internal dcl 147 ref 134 139 returner 000451 constant label dcl 144 ref 204 ta_extract_ 000132 constant entry external dcl 18 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2006 2052 1574 2016 Length 2336 1574 44 250 211 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ta_extract_ 274 external procedure is an external procedure. process_filearg internal procedure shares stack frame of external procedure ta_extract_. begin block on line 163 96 begin block enables or reverts conditions. on unit on line 171 64 on unit extract_one 164 internal procedure enables or reverts conditions. on unit on line 198 70 on unit STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 system_free_ptr ta_extract_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 163 000100 i begin block on line 163 ta_extract_ 000100 answer ta_extract_ 000102 arg ta_extract_ 000154 component_slot ta_extract_ 000155 dirname ta_extract_ 000227 ename ta_extract_ 000237 i ta_extract_ 000240 request_slot ta_extract_ 000241 single_name_sw ta_extract_ 000242 specific_component ta_extract_ 000244 query_info ta_extract_ 000262 component_ptr ta_extract_ 000264 request_ptr ta_extract_ 000266 workspace_ptr ta_extract_ 000270 ta_component_star_ptr ta_extract_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. enter_begin leave_begin call_ext_out_desc call_ext_out call_int_this_desc call_int_other_desc return tra_ext enable ext_entry_desc int_entry int_entry_desc free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_star_name_$entry com_err_ command_query_ expand_pathname_ get_system_free_area_ hcs_$status_minf ta_table_mgr_$complete_table_op ta_table_mgr_$find_component ta_table_mgr_$lock ta_table_mgr_$setup_workspace ta_table_mgr_$star_list ta_table_mgr_$unlock THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000124 1 7 000145 99 000175 102 000207 103 000210 104 000211 105 000213 109 000215 111 000233 113 000251 114 000255 117 000270 118 000273 120 000326 122 000327 124 000330 125 000332 129 000334 132 000353 134 000371 135 000405 137 000410 139 000423 141 000445 143 000447 144 000451 147 000452 151 000463 152 000513 153 000516 154 000560 157 000561 158 000576 159 000601 160 000615 163 000616 169 000625 171 000630 172 000644 174 000657 176 000660 177 000712 179 000721 180 000731 181 000754 183 000756 184 000764 187 000765 189 000766 193 001007 194 001014 195 001054 198 001123 200 001153 201 001203 202 001207 204 001245 207 001250 208 001315 209 001321 211 001332 214 001333 216 001341 218 001356 221 001364 222 001366 224 001371 225 001373 226 001377 227 001401 229 001407 231 001453 234 001464 235 001473 236 001501 237 001506 238 001513 239 001515 241 001517 242 001522 244 001532 245 001533 248 001540 250 001550 251 001563 ----------------------------------------------------------- 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