COMPILATION LISTING OF SEGMENT ta_delete_ 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.2 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_delete_: proc (table_ptr, arg_array, force, table_name, code); 19 20 /* This subroutine handles the delete key of tape_archive. */ 21 22 /* Written 06/28/77 by C. D. Tavares. 23* Modified 09/24/79 by CDT to implement star convention and fix a few minor 24* bugs. 25* Last modified 09/21/80 by CDT to implement table workspace strategy 26* (indivisible updates). 27**/ 28 29 /* PARAMETERS */ 30 31 dcl arg_array (*) char (168) parameter, 32 force bit (1) aligned parameter, 33 table_name char (*) parameter, 34 code fixed bin (35) parameter; 35 36 /* AUTOMATIC */ 37 38 dcl answer char (4) varying, 39 arg char (168), 40 component_slot fixed bin, 41 dirname char (168), 42 ename char (32), 43 i fixed bin, 44 locked bit (1) aligned, 45 request_slot fixed bin; 46 47 /* CONDITIONS */ 48 49 dcl cleanup condition; 50 51 /* EXTERNAL STATIC */ 52 53 dcl (error_table_$arg_ignored, 54 error_table_$noarg) ext fixed bin (35) static; 55 56 dcl sys_info$max_seg_size ext fixed bin (35) static; 57 58 /* INTERNAL STATIC */ 59 60 dcl system_free_ptr pointer static initial (null); 61 62 /* BASED */ 63 64 dcl system_free_area area (sys_info$max_seg_size) based (system_free_ptr); 65 66 /* ENTRIES */ 67 68 dcl check_star_name_$entry ext entry (char (*), fixed bin (35)), 69 com_err_ ext entry options (variable), 70 command_query_ ext entry options (variable), 71 get_system_free_area_ ext entry returns (pointer); 72 73 dcl ta_table_mgr_$find_component ext entry (pointer, char (*), char (*), bit (1) aligned, fixed bin, fixed bin, fixed bin (35)), 74 ta_table_mgr_$lock ext entry (pointer, char (*), fixed bin, fixed bin (35)), 75 ta_table_mgr_$star_list ext entry (pointer, char (*), fixed bin, pointer, fixed bin (35)), 76 ta_table_mgr_$unlock ext entry (pointer, fixed bin (35)), 77 ta_table_mgr_$setup_workspace ext entry (pointer, fixed bin, fixed bin, pointer), 78 ta_table_mgr_$complete_table_op ext entry (pointer); 79 80 /* BUILTINS */ 81 82 dcl (addr, dim, null, substr) builtin; 83 84 1 1 /* ---------- BEGIN include file tape_archive_table_dcl.incl.pl1 ---------- */ 1 2 1 3 /* Version 2 lengthened volume names from 6 to 32 characters */ 1 4 /* Version 3 introduced density field, workspace strategy for updates, */ 1 5 /* and the mount lock, which is less of a lock than a retain indicator. */ 1 6 /* Version 4 expanded density field to an array for independent volume set */ 1 7 /* densities and added uid fields for table deletion checking. */ 1 8 /* Modified 09/21/80 by C. D. Tavares for version 3 */ 1 9 /* Modified 12/9/81 by CDT to add highest_mount_type field */ 1 10 /* Last modified 83-03-16 by S. G. Harris (UNCA) for version 4. */ 1 11 /* Modified 09/16/83 by S. Krupp to add the TAPE_ARCHIVE_IO_MODULE 1 12* declaration for conversion to the mtape_ I/O module. */ 1 13 1 14 dcl 1 tape_archive_table aligned based (table_ptr), /* online segment for tape_archive command */ 1 15 2 nonvolatile_part aligned, /* temp table moving doesn't touch these */ 1 16 3 version_number fixed bin, /* of table */ 1 17 3 magic_constant char (8), /* "ta table" */ 1 18 3 compaction_warning_threshold float bin, /* when to suggest compaction to user */ 1 19 3 auto_compaction_threshold float bin, /* when to compact when user doesn't take hint */ 1 20 3 table_is_consistent bit (1) unaligned, /* update in progress indicator */ 1 21 3 lock bit (36), /* allows shared tape archives */ 1 22 3 lock_reason fixed bin, /* reason seg already locked, for failure msg */ 1 23 3 locker_id char (32), /* userid of locking process, for failure msg */ 1 24 3 io_module_name char (32), /* tape_ansi_ or tape_ibm_ */ 1 25 3 recovery_info_offset bit (18) aligned, /* holds address of workspace for table updates */ 1 26 3 perm_table_uid bit (36), /* used to prevent table deletion */ 1 27 3 future_expansion (6) bit (36), /* ... */ 1 28 2 volatile_part aligned, /* these can get altered due to temp table moves */ 1 29 3 n_components fixed bin, /* number valid (undeleted) components in archive */ 1 30 3 n_component_slots fixed bin, /* number of used component slots in table */ 1 31 3 n_queued_requests fixed bin, /* number requests to be performed next mount */ 1 32 3 n_request_slots fixed bin, /* number of used request slots in table */ 1 33 3 next_mount_type fixed bin, /* read only, write, or compact */ 1 34 3 date_time_tape_modified bit (36), /* last time tape written on */ 1 35 3 date_time_last_compacted bit (36), /* last time tape compacted */ 1 36 3 total_records fixed bin (35), /* data out on tape, in Multics records */ 1 37 3 dead_records fixed bin (35), /* records wasted (deletions, replacements) */ 1 38 3 incomplete_write_op_last bit (1), /* ON if determined that user or sys crashed while writing tape */ 1 39 3 last_tape_file_no fixed bin, /* number of last file existing on volume set */ 1 40 3 last_table_no fixed bin, /* number of copies of online table on this volume set */ 1 41 3 mount_lock bit (36) aligned, /* set to lock_id while volume set mounted */ 1 42 3 highest_mount_type fixed bin, /* max of next_mount_type since retained */ 1 43 3 future_expansion (6) bit (36), /* ... */ 1 44 3 tape_info aligned, 1 45 4 density (2) fixed bin (17) unal, /* post version 3 volume set densities */ 1 46 4 active_set fixed bin, /* which of the two is most current */ 1 47 4 n_volumes_in_set (2) fixed bin, /* how many reels comprise volume set */ 1 48 4 volume_set (2) aligned, 1 49 5 volume_id (8) char (168), /* physical reel and slot info */ 1 50 3 component_table (0 refer (tape_archive_table.n_component_slots)) aligned like component, 1 51 3 request_queue (0 refer (tape_archive_table.n_request_slots)) aligned like request; 1 52 1 53 dcl 1 component aligned based (component_ptr), /* format of one component entry */ 1 54 2 entry_status_descriptor like entry_status_descriptor aligned, 1 55 2 previous_instance_backchain fixed bin, /* index of file it replaced, if any */ 1 56 2 associated_request_index fixed bin, /* if extract pending, index of request with dirpath */ 1 57 2 date_time_deleted bit (36) aligned, /* if logically deleted, when. */ 1 58 2 future_expansion (5) bit (36) aligned; /* ... */ 1 59 1 60 dcl 1 request aligned based (request_ptr), /* format of a queued request */ 1 61 2 entry_status_descriptor like entry_status_descriptor aligned, 1 62 2 directory_name char (168) unaligned, /* in Multics file system */ 1 63 2 requested_ops unaligned, 1 64 3 append bit (1) unaligned, /* add to tape */ 1 65 3 replace bit (1) unaligned, /* replace to tape */ 1 66 3 extract bit (1) unaligned, /* extract from tape */ 1 67 3 delete bit (1) unaligned, /* delete from tape or file system */ 1 68 3 force bit (1) unaligned, /* forcibly do any of the above */ 1 69 3 single_name bit (1) unaligned, /* append/extract with only given name */ 1 70 3 future_expansion bit (30) unaligned, 1 71 2 existing_reference fixed bin, /* index of component block, if exists (e.g. read) */ 1 72 2 future_expansion (4) bit (36) aligned; 1 73 1 74 dcl 1 entry_status_descriptor aligned based, 1 75 2 valid bit (1) unaligned, /* an undeleted component or request if on */ 1 76 2 no_final_newline bit (1) unaligned, /* ON if last char in file was not newline */ 1 77 2 safety_switch bit (1) unaligned, /* reflects safety switch of file while online */ 1 78 2 pad bit (33) unaligned, 1 79 2 file_info aligned, /* main tape file for this entry */ 1 80 3 tape_file_name char (17), 1 81 3 entry_name char (32) unaligned, /* for Multics file system */ 1 82 3 date_time_archived bit (36), /* when it was put on tape */ 1 83 3 recording_mode char (8) aligned, /* "ascii", "binary", "ebcdic", etc. */ 1 84 3 date_time_branch_modified bit (36), /* last modified while in file system */ 1 85 3 date_time_dumped bit (36), /* by backup facility */ 1 86 3 bitcount_author char (32), /* last person who modified it while online */ 1 87 3 file_length fixed bin (35), /* in Multics pages */ 1 88 3 attribute_file_no fixed bin, /* file number of attribute file on tape */ 1 89 3 n_tape_records fixed bin (35), /* number of logical records on tape for this file */ 1 90 2 uid bit (36) aligned, /* used to prevent table deletion */ 1 91 2 future_expansion bit (36) aligned; 1 92 1 93 dcl 1 workspace based (workspace_ptr) aligned, /* to prevent update inconsistencies */ 1 94 2 workspace_id char (8), /* "wrkspace" */ 1 95 2 component_no fixed bin, 1 96 2 request_no fixed bin, 1 97 2 n_queued_requests fixed bin, 1 98 2 dead_records fixed bin, 1 99 2 total_records fixed bin, 1 100 2 n_components fixed bin, 1 101 2 n_request_slots fixed bin, 1 102 2 next_mount_type fixed bin, 1 103 2 future_expansion (70) fixed bin (35), 1 104 2 tape_info_copy aligned like tape_archive_table.tape_info, 1 105 2 future_expansion2 (16) fixed bin (35), 1 106 2 component_copy like component aligned, 1 107 2 future_expansion3 (16) fixed bin (35), 1 108 2 request_copy like request aligned; 1 109 1 110 dcl 1 based_tape_info based (tape_info_ptr) like tape_archive_table.tape_info aligned; 1 111 1 112 dcl (table_ptr, component_ptr, request_ptr, workspace_ptr, tape_info_ptr) pointer; 1 113 1 114 dcl ((None initial (0), /* next scheduled processing flags */ 1 115 Delete initial (1), 1 116 Read initial (2), 1 117 Write initial (3), 1 118 Compact initial (4), 1 119 1 120 Examine initial (1), /* current lock reason flags */ 1 121 Modify initial (2), 1 122 Process_tape initial (3), 1 123 1 124 Deletion initial (1), /* pending_operation flags */ 1 125 Extraction initial (2), 1 126 Replacement initial (3), 1 127 Cancellation initial (4), 1 128 Deletion_cancellation initial (5), 1 129 Volume_alteration initial (6), 1 130 Table_creation initial (7), 1 131 Table_copy initial (8), 1 132 1 133 Default_density initial (1600), 1 134 1 135 tape_archive_version_4 initial (4)) fixed bin, 1 136 1 137 TAPE_ARCHIVE_IO_MODULE char(6) init("mtape_"), 1 138 1 139 Lock_reasons (0:3) char (24) initial 1 140 ("no discernable reason", "table examination", "table modification", "tape processing"), 1 141 1 142 Magic_constant char (8) initial ("ta table"), 1 143 Magic_workspace_constant char (8) initial ("wrkspace")) static options (constant); 1 144 1 145 /* ---------------- END include file tape_archive_table_dcl.incl.pl1 ---------------- */ 85 86 2 1 /* --------------- BEGIN include file tape_archive_star.incl.pl1 --------------- */ 2 2 2 3 dcl 1 ta_filesys_star_info aligned based (ta_filesys_star_ptr), 2 4 2 n_entries fixed bin, 2 5 2 ename (ta_star_match_count refer (ta_filesys_star_info.n_entries)) char (32) unaligned; 2 6 2 7 dcl 1 ta_component_star_info aligned based (ta_component_star_ptr), 2 8 2 n_entries fixed bin, 2 9 2 entry (ta_star_match_count refer (ta_component_star_info.n_entries)), 2 10 3 ename char (32) unaligned, 2 11 3 type fixed bin, 2 12 3 table_idx fixed bin; 2 13 2 14 dcl ta_star_match_count fixed bin, 2 15 ta_filesys_star_ptr pointer, 2 16 ta_component_star_ptr pointer; 2 17 2 18 dcl (Component initial (1), 2 19 Request initial (2)) fixed bin static options (constant); 2 20 2 21 /* ---------------- END include file tape_archive_star.incl.pl1 ---------------- */ 87 88 3 1 /* BEGIN INCLUDE FILE status_info_branch.incl.pl1 */ 3 2 dcl 1 status_info_branch, /* structure returned for branch */ 3 3 2 type bit(2), /* 0=link, 1=seg, 2=dir */ 3 4 2 nnames bit(16), /* number of names for this entry */ 3 5 2 nrp bit(18), /* ??????? */ 3 6 2 dtm bit(36), /* date and time last modified */ 3 7 2 dtu bit(36), /* date and time last used */ 3 8 2 mode bit(5), /* user's access mode */ 3 9 2 pad bit(13), 3 10 2 records bit(18); /* number of records used */ 3 11 /* END INCLUDE FILE status_info_branch.incl.pl1 */ 89 90 4 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 4 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 4 3 /* version number changed to 4, 08/10/78 WOS */ 4 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 4 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 4 6 4 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 4 8 2 version fixed bin, /* version of this structure - must be set, see below */ 4 9 2 switches aligned, /* various bit switch values */ 4 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 4 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 4 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 4 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 4 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 4 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 4 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 4 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 4 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 4 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 4 20 4 21 /* Limit of data defined for version 2 */ 4 22 4 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 4 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 4 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 4 26 /* minimum of 30 seconds required for repeat */ 4 27 /* otherwise, no repeat will occur */ 4 28 /* Limit of data defined for version 4 */ 4 29 4 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 4 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 4 32 4 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 4 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 4 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 4 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 4 37 4 38 /* END INCLUDE FILE query_info.incl.pl1 */ 91 92 93 94 /* ta_delete_: proc... */ 95 96 locked = ""b; 97 98 if system_free_ptr = null then 99 system_free_ptr = get_system_free_area_ (); 100 101 102 if dim (arg_array, 1) = 0 then do; 103 code = error_table_$noarg; 104 call com_err_ (code, "tape_archive"); 105 return; 106 end; 107 108 query_info.version = query_info_version_5; 109 query_info.yes_or_no_sw = "1"b; 110 111 do i = 1 to dim (arg_array, 1); 112 113 arg = arg_array (i); 114 115 /* Following line handles control args */ 116 117 if substr (arg, 1, 1) = "-" then 118 call com_err_ (error_table_$arg_ignored, "tape_archive", arg); 119 120 /* Following line handles args which should be component_names */ 121 122 else call process_filearg (arg); 123 end; 124 125 code = 0; 126 return_hard: 127 return; 128 129 process_filearg: proc (component_name); 130 131 dcl component_name char (*) parameter; 132 133 ename = component_name; 134 135 call check_star_name_$entry (ename, code); 136 if code = 0 then 137 call delete_one (dirname, ename); 138 139 else if (code = 1) | (code = 2) then begin; /* arbitrary starname or "**" */ 140 /* the begin keeps the current procedure fast by limiting 141* the scope of the following cleanup handler. */ 142 143 dcl i fixed bin; 144 145 if code = 2 then do; /* user specified "**" or equivalent */ 146 call command_query_ (addr (query_info), answer, "tape_archive", 147 "Do you really want to delete all components in ^a??", table_name); 148 if answer = "no" then return; 149 end; 150 151 ta_component_star_ptr = null; 152 153 on cleanup begin; 154 if ta_component_star_ptr ^= null then 155 free ta_component_star_info in (system_free_area); 156 end; 157 158 call ta_table_mgr_$star_list (table_ptr, ename, Component, ta_component_star_ptr, code); 159 if code ^= 0 then goto not_processed; 160 161 do i = 1 to ta_component_star_info.n_entries; 162 call delete_one (dirname, ta_component_star_info (i).ename); 163 end; 164 165 free ta_component_star_info in (system_free_area); 166 end; 167 168 else 169 not_processed: call com_err_ (code, "tape_archive", """^a"" not processed.", component_name); 170 171 return; 172 173 delete_one: proc (dirname, ename); 174 175 dcl (dirname, ename) char (*) parameter; 176 177 on cleanup call ta_table_mgr_$unlock (table_ptr, code); 178 179 locked = "1"b; 180 call ta_table_mgr_$lock (table_ptr, table_name, Modify, code); 181 if code ^= 0 then do; 182 call com_err_ (code, "tape_archive", 183 "Arguments from ""^a"" could not be processed.", arg); 184 goto return_hard; 185 end; 186 187 call ta_table_mgr_$find_component (table_ptr, table_name, ename, "1"b, /* should be there */ 188 component_slot, request_slot, code); 189 if code ^= 0 then goto unlock_and_return; /* msg already printed */ 190 191 component_ptr = addr (component_table (component_slot)); 192 193 if component.safety_switch then 194 if ^force then do; 195 call command_query_ (addr (query_info), answer, "tape_archive", 196 "Component ^a is protected. Do you wish to delete it?? ", ename); 197 if answer = "no" then goto unlock_and_return; 198 end; 199 200 call ta_table_mgr_$setup_workspace (table_ptr, component_slot, request_slot, workspace_ptr); 201 202 component_ptr = addr (workspace_ptr -> workspace.component_copy); 203 component.date_time_deleted = (36)"1"b; /* make it nonzero, use it as "to be deleted" flag */ 204 205 workspace_ptr -> workspace.dead_records = workspace_ptr -> workspace.dead_records + component.file_length; 206 workspace_ptr -> workspace.n_queued_requests = workspace_ptr -> workspace.n_queued_requests + 1; 207 208 if workspace_ptr -> workspace.next_mount_type < Delete then 209 workspace_ptr -> workspace.next_mount_type = Delete; 210 211 call ta_table_mgr_$complete_table_op (table_ptr); 212 213 unlock_and_return: 214 call ta_table_mgr_$unlock (table_ptr, code); 215 return; 216 217 end delete_one; 218 end process_filearg; 219 end ta_delete_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 02/16/84 1249.3 ta_delete_.pl1 >spec>on>mtape>ta_delete_.pl1 85 1 02/16/84 1230.3 tape_archive_table_dcl.incl.pl1 >spec>on>mtape>tape_archive_table_dcl.incl.pl1 87 2 12/14/79 1519.0 tape_archive_star.incl.pl1 >ldd>include>tape_archive_star.incl.pl1 89 3 05/06/74 1751.6 status_info_branch.incl.pl1 >ldd>include>status_info_branch.incl.pl1 91 4 03/11/83 1204.3 query_info_.incl.pl1 >ldd>include>query_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. Component 000016 constant fixed bin(17,0) initial dcl 2-18 set ref 158* Delete constant fixed bin(17,0) initial dcl 1-114 ref 208 208 Modify 000015 constant fixed bin(17,0) initial dcl 1-114 set ref 180* addr builtin function dcl 82 ref 146 146 191 195 195 202 answer 000100 automatic varying char(4) dcl 38 set ref 146* 148 195* 197 answer_iocbp 6 000250 automatic pointer initial level 2 dcl 4-7 set ref 4-7* arg 000102 automatic char(168) unaligned dcl 38 set ref 113* 117 117* 122* 182* arg_array parameter char(168) array unaligned dcl 31 ref 18 102 111 113 check_star_name_$entry 000016 constant entry external dcl 68 ref 135 cleanup 000000 stack reference condition dcl 49 ref 153 177 code parameter fixed bin(35,0) dcl 31 set ref 18 103* 104* 125* 135* 136 139 139 145 158* 159 168* 177* 180* 181 182* 187* 189 213* com_err_ 000020 constant entry external dcl 68 ref 104 117 168 182 command_query_ 000022 constant entry external dcl 68 ref 146 195 component based structure level 1 dcl 1-53 component_copy 1404 based structure level 2 dcl 1-93 set ref 202 component_name parameter char unaligned dcl 131 set ref 129 133 168* component_ptr 000242 automatic pointer dcl 1-112 set ref 191* 193 202* 203 205 component_slot 000154 automatic fixed bin(17,0) dcl 38 set ref 187* 191 200* component_table 1330 based structure array level 3 dcl 1-14 set ref 191 cp_escape_control 1(02) 000250 automatic bit(2) initial level 3 packed unaligned dcl 4-7 set ref 4-7* date_time_deleted 42 based bit(36) level 2 dcl 1-53 set ref 203* dead_records 5 based fixed bin(17,0) level 2 dcl 1-93 set ref 205* 205 dim builtin function dcl 82 ref 102 111 dirname 000155 automatic char(168) unaligned dcl 38 in procedure "ta_delete_" set ref 136* 162* dirname parameter char unaligned dcl 175 in procedure "delete_one" ref 173 ename parameter char unaligned dcl 175 in procedure "delete_one" set ref 173 187* 195* ename 1 based char(32) array level 3 in structure "ta_component_star_info" packed unaligned dcl 2-7 in procedure "ta_delete_" set ref 162* ename 000227 automatic char(32) unaligned dcl 38 in procedure "ta_delete_" set ref 133* 135* 136* 158* entry 1 based structure array level 2 dcl 2-7 entry_status_descriptor based structure level 1 dcl 1-74 in procedure "ta_delete_" entry_status_descriptor based structure level 2 in structure "component" dcl 1-53 in procedure "ta_delete_" error_table_$arg_ignored 000012 external static fixed bin(35,0) dcl 53 set ref 117* error_table_$noarg 000014 external static fixed bin(35,0) dcl 53 ref 103 explanation_len 14 000250 automatic fixed bin(21,0) initial level 2 dcl 4-7 set ref 4-7* explanation_ptr 12 000250 automatic pointer initial level 2 dcl 4-7 set ref 4-7* file_info 1 based structure level 3 dcl 1-53 file_length 33 based fixed bin(35,0) level 4 dcl 1-53 ref 205 force parameter bit(1) dcl 31 ref 18 193 get_system_free_area_ 000024 constant entry external dcl 68 ref 98 i 000100 automatic fixed bin(17,0) dcl 143 in begin block on line 139 set ref 161* 162* i 000237 automatic fixed bin(17,0) dcl 38 in procedure "ta_delete_" set ref 111* 113* literal_sw 1(05) 000250 automatic bit(1) initial level 3 packed unaligned dcl 4-7 set ref 4-7* locked 000240 automatic bit(1) dcl 38 set ref 96* 179* n_entries based fixed bin(17,0) level 2 dcl 2-7 ref 154 161 165 n_queued_requests 4 based fixed bin(17,0) level 2 dcl 1-93 set ref 206* 206 next_mount_type 11 based fixed bin(17,0) level 2 dcl 1-93 set ref 208 208* null builtin function dcl 82 ref 98 4-7 4-7 4-7 151 154 padding 1(07) 000250 automatic bit(29) initial level 3 packed unaligned dcl 4-7 set ref 4-7* prompt_after_explanation 1(06) 000250 automatic bit(1) initial level 3 packed unaligned dcl 4-7 set ref 4-7* query_code 3 000250 automatic fixed bin(35,0) initial level 2 dcl 4-7 set ref 4-7* query_info 000250 automatic structure level 1 dcl 4-7 set ref 146 146 195 195 query_info_version_5 constant fixed bin(17,0) initial dcl 4-35 ref 108 question_iocbp 4 000250 automatic pointer initial level 2 dcl 4-7 set ref 4-7* repeat_time 10 000250 automatic fixed bin(71,0) initial level 2 dcl 4-7 set ref 4-7* request based structure level 1 dcl 1-60 request_slot 000241 automatic fixed bin(17,0) dcl 38 set ref 187* 200* safety_switch 0(02) based bit(1) level 3 packed unaligned dcl 1-53 ref 193 status_code 2 000250 automatic fixed bin(35,0) initial level 2 dcl 4-7 set ref 4-7* substr builtin function dcl 82 ref 117 suppress_name_sw 1(01) 000250 automatic bit(1) initial level 3 packed unaligned dcl 4-7 set ref 4-7* suppress_spacing 1(04) 000250 automatic bit(1) initial level 3 packed unaligned dcl 4-7 set ref 4-7* switches 1 000250 automatic structure level 2 dcl 4-7 system_free_area based area dcl 64 ref 154 165 system_free_ptr 000010 internal static pointer initial dcl 60 set ref 98 98* 154 165 ta_component_star_info based structure level 1 dcl 2-7 set ref 154 165 ta_component_star_ptr 000246 automatic pointer dcl 2-14 set ref 151* 154 154 158* 161 162 165 ta_table_mgr_$complete_table_op 000040 constant entry external dcl 73 ref 211 ta_table_mgr_$find_component 000026 constant entry external dcl 73 ref 187 ta_table_mgr_$lock 000030 constant entry external dcl 73 ref 180 ta_table_mgr_$setup_workspace 000036 constant entry external dcl 73 ref 200 ta_table_mgr_$star_list 000032 constant entry external dcl 73 ref 158 ta_table_mgr_$unlock 000034 constant entry external dcl 73 ref 177 213 table_name parameter char unaligned dcl 31 set ref 18 146* 180* 187* table_ptr parameter pointer dcl 1-112 set ref 18 158* 177* 180* 187* 191 200* 211* 213* tape_archive_table based structure level 1 dcl 1-14 tape_info 64 based structure level 3 dcl 1-14 version 000250 automatic fixed bin(17,0) level 2 dcl 4-7 set ref 108* volatile_part 40 based structure level 2 dcl 1-14 workspace based structure level 1 dcl 1-93 workspace_ptr 000244 automatic pointer dcl 1-112 set ref 200* 202 205 205 206 206 208 208 yes_or_no_sw 1 000250 automatic bit(1) initial level 3 packed unaligned dcl 4-7 set ref 109* 4-7* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Cancellation internal static fixed bin(17,0) initial dcl 1-114 Compact internal static fixed bin(17,0) initial dcl 1-114 Default_density internal static fixed bin(17,0) initial dcl 1-114 Deletion internal static fixed bin(17,0) initial dcl 1-114 Deletion_cancellation internal static fixed bin(17,0) initial dcl 1-114 Examine internal static fixed bin(17,0) initial dcl 1-114 Extraction internal static fixed bin(17,0) initial dcl 1-114 Lock_reasons internal static char(24) initial array unaligned dcl 1-114 Magic_constant internal static char(8) initial unaligned dcl 1-114 Magic_workspace_constant internal static char(8) initial unaligned dcl 1-114 None internal static fixed bin(17,0) initial dcl 1-114 Process_tape internal static fixed bin(17,0) initial dcl 1-114 Read internal static fixed bin(17,0) initial dcl 1-114 Replacement internal static fixed bin(17,0) initial dcl 1-114 Request internal static fixed bin(17,0) initial dcl 2-18 TAPE_ARCHIVE_IO_MODULE internal static char(6) initial unaligned dcl 1-114 Table_copy internal static fixed bin(17,0) initial dcl 1-114 Table_creation internal static fixed bin(17,0) initial dcl 1-114 Volume_alteration internal static fixed bin(17,0) initial dcl 1-114 Write internal static fixed bin(17,0) initial dcl 1-114 based_tape_info based structure level 1 dcl 1-110 query_info_version_3 internal static fixed bin(17,0) initial dcl 4-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 4-34 query_info_version_6 internal static fixed bin(17,0) initial dcl 4-36 request_ptr automatic pointer dcl 1-112 status_info_branch automatic structure level 1 packed unaligned dcl 3-2 sys_info$max_seg_size external static fixed bin(35,0) dcl 56 ta_filesys_star_info based structure level 1 dcl 2-3 ta_filesys_star_ptr automatic pointer dcl 2-14 ta_star_match_count automatic fixed bin(17,0) dcl 2-14 tape_archive_version_4 internal static fixed bin(17,0) initial dcl 1-114 tape_info_ptr automatic pointer dcl 1-112 NAMES DECLARED BY EXPLICIT CONTEXT. delete_one 000677 constant entry internal dcl 173 ref 136 162 not_processed 000636 constant label dcl 168 ref 159 process_filearg 000332 constant entry internal dcl 129 ref 122 return_hard 000331 constant label dcl 126 ref 184 ta_delete_ 000115 constant entry external dcl 18 unlock_and_return 001252 constant label dcl 213 ref 189 197 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1476 1540 1276 1506 Length 2022 1276 42 246 177 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ta_delete_ 260 external procedure is an external procedure. process_filearg internal procedure shares stack frame of external procedure ta_delete_. begin block on line 139 116 begin block enables or reverts conditions. on unit on line 153 64 on unit delete_one 152 internal procedure enables or reverts conditions. on unit on line 177 70 on unit STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 system_free_ptr ta_delete_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 139 000100 i begin block on line 139 ta_delete_ 000100 answer ta_delete_ 000102 arg ta_delete_ 000154 component_slot ta_delete_ 000155 dirname ta_delete_ 000227 ename ta_delete_ 000237 i ta_delete_ 000240 locked ta_delete_ 000241 request_slot ta_delete_ 000242 component_ptr ta_delete_ 000244 workspace_ptr ta_delete_ 000246 ta_component_star_ptr ta_delete_ 000250 query_info ta_delete_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. set_stack 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_ get_system_free_area_ 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_$arg_ignored error_table_$noarg LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000110 4 7 000130 96 000160 98 000161 102 000173 103 000203 104 000207 105 000227 108 000230 109 000232 111 000234 113 000245 117 000263 122 000315 123 000325 125 000327 126 000331 129 000332 133 000343 135 000350 136 000366 139 000406 145 000415 146 000422 148 000465 151 000476 153 000500 154 000514 156 000527 158 000530 159 000562 161 000571 162 000601 163 000624 165 000626 166 000634 139 000635 168 000636 171 000675 173 000676 177 000717 179 000747 180 000752 181 001001 182 001005 184 001041 187 001044 189 001111 191 001115 193 001123 195 001131 197 001175 200 001203 202 001221 203 001226 205 001230 206 001234 208 001235 211 001242 213 001252 215 001265 ----------------------------------------------------------- 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