COMPILATION LISTING OF SEGMENT ta_list_table_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 02/16/84 1255.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_list_table_: proc (table_ptr, arg_array, table_entry, code); 19 20 /* This subroutine prints a listing of the contents of a tape archive using 21* the information in the table, including pending requests which have not yet 22* been processed. 23* 24* Written 05/09/77 by C. D. Tavares. 25* Modified 04/11/79 by CDT to add control args and clean up interaction 26* between control args. 27* Modified 09/24/79 by CDT to implement star convention and 28* fix up interactions between deleted components and -pending. 29* Modified 09/03/80 by CDT to add density field in header. 30* Modified 12/9/81 by CDT for highest_mount_type stuff 31* Last modified 83-03-16 by S. G. Harris (UNCA) for version 4. 32* Modified 6/83 by S. Krupp for conversion to mtape_ (to print vol_type 33* rather than io_module in header). 34**/ 35 36 dcl table_entry char (*) parameter, 37 arg_array (*) char (168) parameter, 38 code fixed bin (35) parameter; 39 40 /* AUTOMATIC */ 41 42 dcl brief bit (1) aligned, 43 component_control fixed bin, 44 (dta_string, dtem_string, dtd_string) char (16), 45 dtlc_string char (32), 46 dttm_string char (32), 47 extra_line char (176), 48 header_printed fixed bin, 49 header_wanted fixed bin, 50 (i, j) fixed bin, 51 key_chars char (4) varying, 52 long bit (1) aligned, 53 match bit (1) aligned, 54 mode_char char (1), 55 nargs fixed bin, 56 n_comp_names fixed bin, 57 print_extra_line bit (1) aligned, 58 vol_type char(32), 59 volset fixed bin; 60 61 dcl 1 comp_name_struc (dim (arg_array, 1)) automatic, /* adjustable */ 62 2 comp_name char (32), 63 2 comp_name_used bit (1) aligned, 64 2 comp_name_is_starname bit (1) aligned; 65 66 67 /* STATIC */ 68 69 dcl my_lock_id bit (36) aligned static initial ((36)"1"b); 70 71 72 /* CONSTANTS */ 73 74 dcl (Never_wanted initial (0), /* header_wanted */ 75 Whenever_wanted initial (1), 76 Always_wanted initial (2), 77 78 No_components initial (0), /* component_control */ 79 Pending_components initial (1), 80 Usual_components initial (2), 81 All_components initial (3), 82 83 No_header initial (0), 84 Partial_header initial (1), 85 Full_header initial (2)) fixed bin static options (constant); 86 87 88 /* EXTERNAL STATIC */ 89 90 dcl (error_table_$badopt, 91 error_table_$inconsistent) ext fixed bin (35) static; 92 93 /* BUILTINS */ 94 95 dcl (addr, dim, max, null, string, substr) builtin; 96 97 /* ENTRIES */ 98 99 dcl check_star_name_$entry ext entry (char (*), fixed bin (35)), 100 com_err_ ext entry options (variable), 101 com_err_$suppress_name ext entry options (variable), 102 com_err_var entry variable options (variable), 103 date_time_$fstime ext entry (bit (36) aligned, char (*)), 104 get_lock_id_ ext entry returns (bit (36) aligned), 105 ioa_ ext entry options (variable), 106 match_star_name_ ext entry (char (*), char (*), fixed bin (35)); 107 108 /* INCLUDE FILES */ 109 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 ---------------- */ 110 111 112 if my_lock_id = (36)"1"b then 113 my_lock_id = get_lock_id_ (); 114 115 nargs = dim (arg_array, 1); 116 117 brief, long = ""b; 118 n_comp_names = 0; 119 component_control = Usual_components; 120 header_wanted = Whenever_wanted; 121 header_printed = No_header; 122 123 do i = 1 to nargs; 124 if substr (arg_array (i), 1, 1) = "-" then do; 125 comp_name_used (i) = "1"b; 126 if (arg_array (i) = "-bf") | (arg_array (i) = "-brief") then 127 brief = "1"b; 128 else if (arg_array (i) = "-lg") | (arg_array (i) = "-long") then 129 long = "1"b; 130 else if (arg_array (i) = "-nhe") | (arg_array (i) = "-no_header") then 131 if header_wanted = Whenever_wanted then 132 header_wanted = Never_wanted; 133 else call crump (error_table_$inconsistent, "-header and -no_header"); 134 else if (arg_array (i) = "-he") | (arg_array (i) = "-header") then 135 if header_wanted = Whenever_wanted then 136 header_wanted = Always_wanted; 137 else call crump (error_table_$inconsistent, "-header and -no_header"); 138 else if (arg_array (i) = "-all") | (arg_array (i) = "-a") then 139 if component_control = Usual_components then 140 component_control = All_components; 141 else call crump (error_table_$inconsistent, "-all and -pending"); 142 else if arg_array (i) = "-pending" then 143 if component_control = Usual_components then 144 component_control = Pending_components; 145 else call crump (error_table_$inconsistent, "-all and -pending"); 146 else call crump (error_table_$badopt, arg_array (i)); 147 end; 148 149 else do; 150 call check_star_name_$entry (arg_array (i), code); 151 if code > 2 then 152 call crump (code, arg_array (i)); 153 n_comp_names = n_comp_names + 1; 154 (nostrz): comp_name (n_comp_names) = arg_array (i); 155 comp_name_used (n_comp_names) = ""b; 156 comp_name_is_starname (n_comp_names) = (code > 0); 157 end; 158 end; 159 160 161 if brief & long then 162 call crump (error_table_$inconsistent, "-brief and -long"); 163 164 if header_wanted = Always_wanted then 165 if n_comp_names = 0 then 166 if component_control = Usual_components then 167 component_control = No_components; 168 169 170 /* Begin examining the table. We take a small chance of printing garbage by 171* doing this operation without locking the table, but the table-of-contents 172* operation should be available without write permission to the table 173* segment, so we make this concession to convenience. */ 174 175 176 if header_wanted = Always_wanted then 177 call print_header (Partial_header); 178 179 if component_control = All_components then j = tape_archive_table.n_component_slots; 180 else j = tape_archive_table.n_components; 181 if j + tape_archive_table.n_queued_requests = 0 then do; 182 if long then call print_header (Partial_header); 183 if header_printed = No_header then 184 call ioa_ ("^a is empty.", table_entry); 185 return; 186 end; 187 188 if tape_archive_table.n_queued_requests = 0 then 189 if component_control = Pending_components then do; 190 if header_printed = No_header then 191 call ioa_ ("No pending requests in ^a.", table_entry); 192 return; 193 end; 194 195 196 do i = 1 to tape_archive_table.n_component_slots; 197 198 component_ptr = addr (tape_archive_table.component_table (i)); 199 200 if component_table (i).entry_status_descriptor.valid | (component_control = All_components) then do; 201 202 match = (component_control > No_components) & (n_comp_names = 0); 203 204 do j = 1 to n_comp_names; 205 if match & comp_name_used (j) then; /* don't bother making ext call */ 206 else if comp_name_is_starname (j) then do; 207 call match_star_name_ (component_table (i).entry_name, comp_name (j), code); 208 if code = 0 then 209 match, comp_name_used (j) = "1"b; 210 end; 211 else if component_table (i).entry_name = comp_name (j) then 212 match, comp_name_used (j) = "1"b; 213 end; 214 215 if component_control = Pending_components then 216 if component.associated_request_index = 0 then /* no pending replacement or extraction for this one */ 217 if component.date_time_deleted ^= (36)"1"b then /* and also not in the process of deletion */ 218 match = ""b; /* only wants pending requests */ 219 220 if component_control ^= All_components then 221 if component.date_time_deleted then 222 if component.date_time_deleted ^= (36)"1"b then /* really deleted, not just pending */ 223 match = ""b; /* doesn't want deleted components */ 224 225 if match then do; 226 call print_header (Full_header); 227 print_extra_line = ""b; 228 229 if component.associated_request_index > 0 then do; 230 if component.valid then do; 231 request_ptr = 232 addr (request_queue 233 (component.associated_request_index)); 234 if string (request.requested_ops) then do; 235 print_extra_line = "1"b; 236 if request.extract then 237 extra_line = "into " || 238 request.directory_name; 239 else extra_line = "from " || 240 request.directory_name; 241 end; 242 end; 243 244 if ^component.valid then 245 mode_char = substr 246 (component.recording_mode, 1, 1); 247 /* no mode associated with deaders */ 248 else if request.extract then 249 mode_char = substr (component.recording_mode, 1, 1); 250 /* no mode associated with extractions */ 251 else mode_char = substr (request.recording_mode, 1, 1); 252 end; 253 254 else do; 255 request_ptr = null; 256 mode_char = substr (component.recording_mode, 1, 1); 257 end; 258 259 if ^component.valid then do; 260 key_chars = "---"; 261 print_extra_line = "1"b; 262 if component.date_time_deleted then do; 263 call date_time_$fstime (component.date_time_deleted, dtd_string); 264 extra_line = "deleted " || dtd_string; 265 end; 266 else extra_line = "subsequently replaced"; 267 end; 268 269 else if component.associated_request_index = 0 then 270 if component.date_time_deleted = (36)"1"b then key_chars = "d"; 271 else key_chars = ""; 272 else if request.extract then 273 if request.delete then 274 if request.force then key_chars = "xdf"; 275 else key_chars = "xd"; 276 else if request.force then key_chars = "xf"; 277 else key_chars = "x"; 278 else if request.replace then 279 if request.delete then 280 if request.force then key_chars = "rdf"; 281 else key_chars = "rd"; 282 else key_chars = "r"; 283 else if request.delete then key_chars = "d"; 284 else key_chars = ""; 285 286 if long then do; 287 288 call date_time_$fstime (component.date_time_archived, dta_string); 289 call date_time_$fstime (component.date_time_branch_modified, dtem_string); 290 if component.date_time_dumped = ""b then dtd_string = ""; 291 else call date_time_$fstime (component.date_time_dumped, dtd_string); 292 293 call ioa_ ("^5a^34a^17a (^1a) ^3d^3x^a^/^-^5x^16a^2(^6x^16a^)^[^/^-^5x(^1a)^;^]", 294 key_chars, component.entry_name, 295 component.tape_file_name, mode_char, component.file_length, 296 component.bitcount_author, dta_string, dtem_string, dtd_string, 297 print_extra_line, extra_line); 298 end; 299 300 else call ioa_ ("^5a^[^34a(^a)^;^a^]", key_chars, 301 print_extra_line, component.entry_name, extra_line); 302 end; 303 end; 304 end; 305 306 do i = 1 to tape_archive_table.n_request_slots; 307 308 if request_queue (i).entry_status_descriptor.valid then /* invalid requests are never interesting */ 309 if request_queue (i).existing_reference = 0 then do; /* if nonzero, we got this above */ 310 311 match = (component_control > No_components) & (n_comp_names = 0); 312 313 do j = 1 to n_comp_names; 314 if match & comp_name_used (j) then; /* don't bother making ext call */ 315 else if comp_name_is_starname (j) then do; 316 call match_star_name_ (request_queue (i).entry_name, comp_name (j), code); 317 if code = 0 then 318 match, comp_name_used (j) = "1"b; 319 end; 320 else if request_queue (i).entry_name = comp_name (j) then 321 match, comp_name_used (j) = "1"b; 322 end; 323 324 if match then do; 325 call print_header (Full_header); 326 327 request_ptr = addr (tape_archive_table.request_queue (i)); 328 329 if request.delete then /* by now there are only appends left */ 330 if request.force then key_chars = "adf"; 331 else key_chars = "ad"; 332 else key_chars = "a"; 333 334 call ioa_ ("^5a^34a(from ^a)", key_chars, 335 request.entry_name, request.directory_name); 336 end; 337 end; 338 end; 339 340 if (header_printed ^= No_header) then com_err_var = com_err_$suppress_name; 341 else com_err_var = com_err_; 342 343 do j = 1 to n_comp_names; 344 if ^comp_name_used (j) then do; 345 if header_printed = Partial_header then call print_header (Full_header); 346 call com_err_var (0, "tape_archive", "^[^5x^;^]^a not found in ^a", 347 (header_printed ^= No_header), arg_array (j), table_entry); 348 end; 349 end; 350 351 return; 352 353 print_header: proc (part_to_print); 354 355 dcl part_to_print fixed bin parameter; 356 357 dcl i fixed bin; 358 359 if header_wanted = Never_wanted then goto fini; 360 goto skip_already_printed_part (header_printed); 361 362 363 skip_already_printed_part (0): /* nothing yet printed */ 364 if ^brief | (header_wanted = Always_wanted) then 365 call ioa_ ("^/^[No^s^;^d^] component^[^;s^] in ^a^[^2s^;; ^d pending request^[^;s^]^]. 366 ^[No requests^;Only deletions^;Extractions^;Replacements/additions^;Compaction^] pending.^[ 367 ^[Both volume sets are^;Primary volume set is^] currently mounted.^;^]", 368 (tape_archive_table.n_components = 0), 369 tape_archive_table.n_components, 370 (tape_archive_table.n_components = 1), 371 table_entry, 372 (tape_archive_table.n_queued_requests = 0), 373 tape_archive_table.n_queued_requests, 374 (tape_archive_table.n_queued_requests = 1), 375 tape_archive_table.next_mount_type + 1, 376 (tape_archive_table.mount_lock = my_lock_id), 377 (tape_archive_table.highest_mount_type = Compact)); 378 379 if long then do; 380 call ioa_ ("^/Auto compaction limit = ^.2f^/Compaction warning limit = ^.2f 381 Waste factor: ^d/^d pages = ^.2f", 382 tape_archive_table.auto_compaction_threshold, tape_archive_table.compaction_warning_threshold, 383 tape_archive_table.dead_records, tape_archive_table.total_records, 384 tape_archive_table.dead_records / max (1, tape_archive_table.total_records)); 385 386 /* call ioa_ ("^/I/O Module: ^a", tape_archive_table.io_module_name); */ 387 388 if tape_archive_table.io_module_name = "tape_ansi_" 389 then vol_type = "ansi"; 390 else vol_type = "ibm"; 391 392 if tape_archive_table.date_time_tape_modified = ""b then dttm_string = "Volume set never mounted."; 393 else call date_time_$fstime (tape_archive_table.date_time_tape_modified, dttm_string); 394 if tape_archive_table.date_time_last_compacted = ""b then dtlc_string = "Volume set never compacted."; 395 else call date_time_$fstime (tape_archive_table.date_time_last_compacted, dtlc_string); 396 397 call ioa_ ("^/Date-time tape modified: ^a^/Date-time tape compacted: ^a", 398 dttm_string, dtlc_string); 399 400 call ioa_ ("^/Tapes Labeled:^17x^a^/Current volume set density: ^2x^d bpi^/Alternate volume set density: ^d bpi", 401 vol_type, 402 tape_archive_table.tape_info.density (tape_archive_table.active_set), 403 tape_archive_table.tape_info.density (3 - tape_archive_table.active_set)); 404 405 do i = 1 to 2; 406 if i = 1 then volset = tape_archive_table.active_set; 407 else volset = 3 - tape_archive_table.active_set; 408 409 call ioa_ ("^/^[Current^;Alternate^] volume set contains ^[no^s^;^d^] tape^[s^;^]^[:^;.^]", 410 i, (tape_archive_table.n_volumes_in_set (volset) = 0), 411 tape_archive_table.n_volumes_in_set (volset), 412 (tape_archive_table.n_volumes_in_set (volset) ^= 1), 413 (tape_archive_table.n_volumes_in_set (volset) ^= 0)); 414 415 call ioa_ ("^4x^v( ^a^)", tape_archive_table.n_volumes_in_set (volset), 416 tape_archive_table.volume_set (volset).volume_id (*)); 417 end; 418 419 end; 420 421 422 skip_already_printed_part (1): /* most of header already printed */ 423 if part_to_print <= 1 then goto fini; 424 425 if long then 426 call ioa_ ("^/REQ COMPONENT^25xFILENAME (MODE)^7xLEN BC AUTHOR 427 ^-^5xDATE ARCHIVED^9xDATE MODIFIED^9xDATE DUMPED^/"); 428 else if ^brief then call ioa_ ("^/REQ COMPONENT^/"); 429 430 skip_already_printed_part (2): /* already all been done */ 431 fini: 432 header_printed = max (header_printed, part_to_print); 433 434 return; 435 end print_header; 436 437 crump: proc (code, reason); 438 439 dcl (code fixed bin (35), 440 reason char (*)) parameter; 441 442 call com_err_ (code, "tape_archive", reason); 443 goto returner; 444 end crump; 445 446 returner: 447 return; 448 449 end ta_list_table_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 02/16/84 1249.4 ta_list_table_.pl1 >spec>on>mtape>ta_list_table_.pl1 110 1 02/16/84 1230.3 tape_archive_table_dcl.incl.pl1 >spec>on>mtape>tape_archive_table_dcl.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. All_components constant fixed bin(17,0) initial dcl 74 ref 138 179 200 220 Always_wanted constant fixed bin(17,0) initial dcl 74 ref 134 164 176 363 Compact constant fixed bin(17,0) initial dcl 1-114 ref 363 Full_header constant fixed bin(17,0) initial dcl 74 set ref 226* 325* 345* Never_wanted constant fixed bin(17,0) initial dcl 74 ref 130 359 No_components constant fixed bin(17,0) initial dcl 74 ref 164 202 311 No_header constant fixed bin(17,0) initial dcl 74 ref 121 183 190 340 346 Partial_header constant fixed bin(17,0) initial dcl 74 set ref 176* 182* 345 Pending_components constant fixed bin(17,0) initial dcl 74 ref 142 188 215 Usual_components constant fixed bin(17,0) initial dcl 74 ref 119 138 142 164 Whenever_wanted constant fixed bin(17,0) initial dcl 74 ref 120 130 134 active_set 65 based fixed bin(17,0) level 4 dcl 1-14 ref 400 400 406 407 addr builtin function dcl 95 ref 198 231 327 arg_array parameter char(168) array unaligned dcl 36 set ref 18 61 115 124 126 126 128 128 130 130 134 134 138 138 142 146* 150* 151* 154 346* associated_request_index 41 based fixed bin(17,0) level 2 dcl 1-53 ref 215 229 231 269 auto_compaction_threshold 4 based float bin(27) level 3 dcl 1-14 set ref 380* bitcount_author 23 based char(32) level 4 dcl 1-53 set ref 293* brief 000100 automatic bit(1) dcl 42 set ref 117* 126* 161 363 428 check_star_name_$entry 000016 constant entry external dcl 99 ref 150 code parameter fixed bin(35,0) dcl 36 in procedure "ta_list_table_" set ref 18 150* 151 151* 156 207* 208 316* 317 code parameter fixed bin(35,0) dcl 439 in procedure "crump" set ref 437 442* com_err_ 000020 constant entry external dcl 99 ref 341 442 com_err_$suppress_name 000022 constant entry external dcl 99 ref 340 com_err_var 000240 automatic entry variable dcl 99 set ref 340* 341* 346 comp_name 000237 automatic char(32) array level 2 packed unaligned dcl 61 set ref 154* 207* 211 316* 320 comp_name_is_starname 11 000237 automatic bit(1) array level 2 dcl 61 set ref 156* 206 315 comp_name_struc 000237 automatic structure array level 1 unaligned dcl 61 comp_name_used 10 000237 automatic bit(1) array level 2 dcl 61 set ref 125* 155* 205 208* 211* 314 317* 320* 344 compaction_warning_threshold 3 based float bin(27) level 3 dcl 1-14 set ref 380* component based structure level 1 dcl 1-53 component_control 000101 automatic fixed bin(17,0) dcl 42 set ref 119* 138 138* 142 142* 164 164* 179 188 200 202 215 220 311 component_ptr 000244 automatic pointer dcl 1-112 set ref 198* 215 215 220 220 229 230 231 244 244 248 256 259 262 263 269 269 288 289 290 291 293 293 293 293 300 component_table 1330 based structure array level 3 dcl 1-14 set ref 198 date_time_$fstime 000024 constant entry external dcl 99 ref 263 288 289 291 393 395 date_time_archived 16 based bit(36) level 4 dcl 1-53 set ref 288* date_time_branch_modified 21 based bit(36) level 4 dcl 1-53 set ref 289* date_time_deleted 42 based bit(36) level 2 dcl 1-53 set ref 215 220 220 262 263* 269 date_time_dumped 22 based bit(36) level 4 dcl 1-53 set ref 290 291* date_time_last_compacted 46 based bit(36) level 3 dcl 1-14 set ref 394 395* date_time_tape_modified 45 based bit(36) level 3 dcl 1-14 set ref 392 393* dead_records 50 based fixed bin(35,0) level 3 dcl 1-14 set ref 380* 380 delete 112(03) based bit(1) level 3 packed unaligned dcl 1-60 ref 272 278 283 329 density 64 based fixed bin(17,0) array level 4 packed unaligned dcl 1-14 set ref 400* 400* dim builtin function dcl 95 ref 61 115 directory_name 40 based char(168) level 2 packed unaligned dcl 1-60 set ref 236 239 334* dta_string 000102 automatic char(16) unaligned dcl 42 set ref 288* 293* dtd_string 000112 automatic char(16) unaligned dcl 42 set ref 263* 264 290* 291* 293* dtem_string 000106 automatic char(16) unaligned dcl 42 set ref 289* 293* dtlc_string 000116 automatic char(32) unaligned dcl 42 set ref 394* 395* 397* dttm_string 000126 automatic char(32) unaligned dcl 42 set ref 392* 393* 397* entry_name based char(32) array level 6 in structure "tape_archive_table" packed unaligned dcl 1-14 in procedure "ta_list_table_" set ref 316* 320 entry_name 1336 based char(32) array level 6 in structure "tape_archive_table" packed unaligned dcl 1-14 in procedure "ta_list_table_" set ref 207* 211 entry_name 6 based char(32) level 4 in structure "component" packed unaligned dcl 1-53 in procedure "ta_list_table_" set ref 293* 300* entry_name 6 based char(32) level 4 in structure "request" packed unaligned dcl 1-60 in procedure "ta_list_table_" set ref 334* entry_status_descriptor based structure array level 4 in structure "tape_archive_table" dcl 1-14 in procedure "ta_list_table_" entry_status_descriptor based structure level 2 in structure "request" dcl 1-60 in procedure "ta_list_table_" entry_status_descriptor based structure level 1 dcl 1-74 in procedure "ta_list_table_" entry_status_descriptor based structure level 2 in structure "component" dcl 1-53 in procedure "ta_list_table_" entry_status_descriptor 1330 based structure array level 4 in structure "tape_archive_table" dcl 1-14 in procedure "ta_list_table_" error_table_$badopt 000012 external static fixed bin(35,0) dcl 90 set ref 146* error_table_$inconsistent 000014 external static fixed bin(35,0) dcl 90 set ref 133* 137* 141* 145* 161* existing_reference based fixed bin(17,0) array level 4 dcl 1-14 set ref 308 extra_line 000136 automatic char(176) unaligned dcl 42 set ref 236* 239* 264* 266* 293* 300* extract 112(02) based bit(1) level 3 packed unaligned dcl 1-60 ref 236 248 272 file_info 1 based structure level 3 in structure "component" dcl 1-53 in procedure "ta_list_table_" file_info 1331 based structure array level 5 in structure "tape_archive_table" dcl 1-14 in procedure "ta_list_table_" file_info 1 based structure level 3 in structure "request" dcl 1-60 in procedure "ta_list_table_" file_info based structure array level 5 in structure "tape_archive_table" dcl 1-14 in procedure "ta_list_table_" file_length 33 based fixed bin(35,0) level 4 dcl 1-53 set ref 293* force 112(04) based bit(1) level 3 packed unaligned dcl 1-60 ref 272 276 278 329 get_lock_id_ 000026 constant entry external dcl 99 ref 112 header_printed 000212 automatic fixed bin(17,0) dcl 42 set ref 121* 183 190 340 345 346 360 430* 430 header_wanted 000213 automatic fixed bin(17,0) dcl 42 set ref 120* 130 130* 134 134* 164 176 359 363 highest_mount_type 55 based fixed bin(17,0) level 3 dcl 1-14 ref 363 i 000214 automatic fixed bin(17,0) dcl 42 in procedure "ta_list_table_" set ref 123* 124 125 126 126 128 128 130 130 134 134 138 138 142 146 150 151 154* 196* 198 200 207 211* 306* 308 308 316 320 327* i 000270 automatic fixed bin(17,0) dcl 357 in procedure "print_header" set ref 405* 406 409* io_module_name 20 based char(32) level 3 dcl 1-14 ref 388 ioa_ 000030 constant entry external dcl 99 ref 183 190 293 300 334 363 380 397 400 409 415 425 428 j 000215 automatic fixed bin(17,0) dcl 42 set ref 179* 180* 181 204* 205 206 207 208 211 211* 313* 314 315 316 317 320 320* 343* 344 346* key_chars 000216 automatic varying char(4) dcl 42 set ref 260* 269* 271* 272* 275* 276* 277* 278* 281* 282* 283* 284* 293* 300* 329* 331* 332* 334* long 000220 automatic bit(1) dcl 42 set ref 117* 128* 161 182 286 379 425 match 000221 automatic bit(1) dcl 42 set ref 202* 205 208* 211* 215* 220* 225 311* 314 317* 320* 324 match_star_name_ 000032 constant entry external dcl 99 ref 207 316 max builtin function dcl 95 ref 380 430 mode_char 000222 automatic char(1) unaligned dcl 42 set ref 244* 248* 251* 256* 293* mount_lock 54 based bit(36) level 3 dcl 1-14 ref 363 my_lock_id 000010 internal static bit(36) initial dcl 69 set ref 112 112* 363 n_comp_names 000224 automatic fixed bin(17,0) dcl 42 set ref 118* 153* 153 154 155 156 164 202 204 311 313 343 n_component_slots 41 based fixed bin(17,0) level 3 dcl 1-14 ref 179 196 231 308 308 316 320 327 n_components 40 based fixed bin(17,0) level 3 dcl 1-14 set ref 180 363 363* 363 n_queued_requests 42 based fixed bin(17,0) level 3 dcl 1-14 set ref 181 188 363 363* 363 n_request_slots 43 based fixed bin(17,0) level 3 dcl 1-14 ref 306 n_volumes_in_set 66 based fixed bin(17,0) array level 4 dcl 1-14 set ref 409 409* 409 409 415* nargs 000223 automatic fixed bin(17,0) dcl 42 set ref 115* 123 next_mount_type 44 based fixed bin(17,0) level 3 dcl 1-14 ref 363 nonvolatile_part based structure level 2 dcl 1-14 null builtin function dcl 95 ref 255 part_to_print parameter fixed bin(17,0) dcl 355 ref 353 422 430 print_extra_line 000225 automatic bit(1) dcl 42 set ref 227* 235* 261* 293* 300* reason parameter char unaligned dcl 439 set ref 437 442* recording_mode 17 based char(8) level 4 in structure "component" dcl 1-53 in procedure "ta_list_table_" ref 244 248 256 recording_mode 17 based char(8) level 4 in structure "request" dcl 1-60 in procedure "ta_list_table_" ref 251 replace 112(01) based bit(1) level 3 packed unaligned dcl 1-60 ref 278 request based structure level 1 dcl 1-60 request_ptr 000246 automatic pointer dcl 1-112 set ref 231* 234 236 236 239 248 251 255* 272 272 272 276 278 278 278 283 327* 329 329 334 334 request_queue based structure array level 3 dcl 1-14 set ref 231 327 requested_ops 112 based structure level 2 packed unaligned dcl 1-60 ref 234 string builtin function dcl 95 ref 234 substr builtin function dcl 95 ref 124 244 248 251 256 table_entry parameter char unaligned dcl 36 set ref 18 183* 190* 346* 363* table_ptr parameter pointer dcl 1-112 ref 18 179 180 181 188 196 198 200 207 211 231 306 308 308 316 320 327 363 363 363 363 363 363 363 363 363 380 380 380 380 380 380 388 392 393 394 395 400 400 400 400 406 407 409 409 409 409 415 415 tape_archive_table based structure level 1 dcl 1-14 tape_file_name 1 based char(17) level 4 dcl 1-53 set ref 293* tape_info 64 based structure level 3 dcl 1-14 total_records 47 based fixed bin(35,0) level 3 dcl 1-14 set ref 380* 380 valid based bit(1) level 3 in structure "component" packed unaligned dcl 1-53 in procedure "ta_list_table_" ref 230 244 259 valid 1330 based bit(1) array level 5 in structure "tape_archive_table" packed unaligned dcl 1-14 in procedure "ta_list_table_" set ref 200 valid based bit(1) array level 5 in structure "tape_archive_table" packed unaligned dcl 1-14 in procedure "ta_list_table_" set ref 308 vol_type 000226 automatic char(32) unaligned dcl 42 set ref 388* 390* 400* volatile_part 40 based structure level 2 dcl 1-14 volset 000236 automatic fixed bin(17,0) dcl 42 set ref 406* 407* 409 409 409 409 415 415 volume_id 70 based char(168) array level 5 dcl 1-14 set ref 415* volume_set 70 based structure array level 4 dcl 1-14 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Cancellation internal static fixed bin(17,0) initial dcl 1-114 Default_density internal static fixed bin(17,0) initial dcl 1-114 Delete 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 Modify internal static fixed bin(17,0) initial 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 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 tape_archive_version_4 internal static fixed bin(17,0) initial dcl 1-114 tape_info_ptr automatic pointer dcl 1-112 workspace based structure level 1 dcl 1-93 workspace_ptr automatic pointer dcl 1-112 NAMES DECLARED BY EXPLICIT CONTEXT. crump 003470 constant entry internal dcl 437 ref 133 137 141 145 146 151 161 fini 003461 constant label dcl 430 ref 359 422 print_header 002704 constant entry internal dcl 353 ref 176 182 226 325 345 returner 002703 constant label dcl 446 ref 443 skip_already_printed_part 000000 constant label array(0:2) dcl 363 ref 360 ta_list_table_ 000533 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 3700 3734 3547 3710 Length 4152 3547 34 202 130 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ta_list_table_ 446 external procedure is an external procedure. print_header internal procedure shares stack frame of external procedure ta_list_table_. crump internal procedure shares stack frame of external procedure ta_list_table_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 my_lock_id ta_list_table_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ta_list_table_ 000100 brief ta_list_table_ 000101 component_control ta_list_table_ 000102 dta_string ta_list_table_ 000106 dtem_string ta_list_table_ 000112 dtd_string ta_list_table_ 000116 dtlc_string ta_list_table_ 000126 dttm_string ta_list_table_ 000136 extra_line ta_list_table_ 000212 header_printed ta_list_table_ 000213 header_wanted ta_list_table_ 000214 i ta_list_table_ 000215 j ta_list_table_ 000216 key_chars ta_list_table_ 000220 long ta_list_table_ 000221 match ta_list_table_ 000222 mode_char ta_list_table_ 000223 nargs ta_list_table_ 000224 n_comp_names ta_list_table_ 000225 print_extra_line ta_list_table_ 000226 vol_type ta_list_table_ 000236 volset ta_list_table_ 000237 comp_name_struc ta_list_table_ 000240 com_err_var ta_list_table_ 000244 component_ptr ta_list_table_ 000246 request_ptr ta_list_table_ 000270 i print_header THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as r_ne_as alloc_cs call_var_desc call_ext_out_desc call_ext_out return alloc_auto_adj shorten_stack ext_entry_desc divide_fx1 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_star_name_$entry com_err_ com_err_$suppress_name date_time_$fstime get_lock_id_ ioa_ match_star_name_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$inconsistent LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000526 61 000546 207 000560 112 000562 115 000573 117 000600 118 000602 119 000603 120 000605 121 000607 123 000611 124 000621 125 000641 126 000646 128 000661 130 000673 133 000711 134 000735 137 000753 138 000777 141 001015 142 001036 145 001050 146 001071 147 001112 150 001113 151 001134 153 001160 154 001161 155 001204 156 001206 158 001211 161 001213 164 001242 176 001254 179 001261 180 001272 181 001277 182 001303 183 001307 185 001335 188 001336 190 001343 192 001366 196 001367 198 001377 200 001405 202 001413 204 001422 205 001431 206 001441 207 001444 208 001475 210 001505 211 001506 213 001526 215 001530 220 001542 225 001553 226 001555 227 001557 229 001560 230 001563 231 001567 234 001603 235 001605 236 001607 239 001626 241 001643 244 001644 248 001652 251 001661 252 001663 255 001664 256 001666 259 001670 260 001673 261 001677 262 001701 263 001703 264 001720 265 001733 266 001735 267 001740 269 001741 271 001753 272 001755 275 001774 276 002001 277 002011 278 002016 281 002034 282 002041 283 002046 284 002056 286 002057 288 002061 289 002077 290 002115 291 002124 293 002141 298 002230 300 002231 304 002271 306 002273 308 002305 311 002327 313 002336 314 002345 315 002355 316 002360 317 002416 319 002426 320 002427 322 002454 324 002456 325 002460 327 002462 329 002476 331 002511 332 002516 334 002522 338 002555 340 002557 341 002567 343 002574 344 002603 345 002607 346 002614 349 002700 351 002702 446 002703 353 002704 359 002706 360 002710 363 002712 379 003027 380 003031 388 003104 390 003117 392 003122 393 003130 394 003145 395 003156 397 003173 400 003216 405 003263 406 003271 407 003301 409 003307 415 003360 417 003416 422 003420 425 003424 428 003443 430 003461 434 003467 437 003470 442 003501 443 003530 ----------------------------------------------------------- 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