1 /* ---------- BEGIN include file tape_archive_table_dcl.incl.pl1 ---------- */
  2 
  3 /* Version 2 lengthened volume names from 6 to 32 characters */
  4 /* Version 3 introduced density field, workspace strategy for updates, */
  5 /* and the mount lock, which is less of a lock than a retain indicator. */
  6 /* Version 4 expanded density field to an array for independent volume set */
  7 /* densities and added uid fields for table deletion checking. */
  8 /* Modified 09/21/80 by C. D. Tavares for version 3 */
  9 /* Modified 12/9/81 by CDT to add highest_mount_type field */
 10 /* Last modified 83-03-16 by S. G. Harris (UNCA) for version 4. */
 11 /* Modified 09/16/83 by S. Krupp to add the TAPE_ARCHIVE_IO_MODULE
 12    declaration for conversion to the mtape_ I/O module. */
 13 
 14 dcl 1 tape_archive_table aligned based (table_ptr),         /* online segment for tape_archive command */
 15     2 nonvolatile_part aligned,                             /* temp table moving doesn't touch these */
 16       3 version_number fixed bin,                           /* of table */
 17       3 magic_constant char (8),                            /* "ta table" */
 18       3 compaction_warning_threshold float bin,             /* when to suggest compaction to user */
 19       3 auto_compaction_threshold float bin,                /* when to compact when user doesn't take hint */
 20       3 table_is_consistent bit (1) unaligned,              /* update in progress indicator */
 21       3 lock bit (36),                                      /* allows shared tape archives */
 22       3 lock_reason fixed bin,                              /* reason seg already locked, for failure msg */
 23       3 locker_id char (32),                                /* userid of locking process, for failure msg */
 24       3 io_module_name char (32),                           /* tape_ansi_ or tape_ibm_ */
 25       3 recovery_info_offset bit (18) aligned,              /* holds address of workspace for table updates */
 26       3 perm_table_uid bit (36),                            /* used to prevent table deletion */
 27       3 future_expansion (6) bit (36),                      /* ... */
 28     2 volatile_part aligned,                                /* these can get altered due to temp table moves */
 29       3 n_components fixed bin,                             /* number valid (undeleted) components in archive */
 30       3 n_component_slots fixed bin,                        /* number of used component slots in table */
 31       3 n_queued_requests fixed bin,                        /* number requests to be performed next mount */
 32       3 n_request_slots fixed bin,                          /* number of used request slots in table */
 33       3 next_mount_type fixed bin,                          /* read only, write, or compact */
 34       3 date_time_tape_modified bit (36),                   /* last time tape written on */
 35       3 date_time_last_compacted bit (36),                  /* last time tape compacted */
 36       3 total_records fixed bin (35),                       /* data out on tape, in Multics records */
 37       3 dead_records fixed bin (35),                        /* records wasted (deletions, replacements) */
 38       3 incomplete_write_op_last bit (1),                   /* ON if determined that user or sys crashed while writing tape */
 39       3 last_tape_file_no fixed bin,                        /* number of last file existing on volume set */
 40       3 last_table_no fixed bin,                            /* number of copies of online table on this volume set */
 41       3 mount_lock bit (36) aligned,                        /* set to lock_id while volume set mounted */
 42       3 highest_mount_type fixed bin,                       /* max of next_mount_type since retained */
 43       3 future_expansion (6) bit (36),                      /* ... */
 44       3 tape_info aligned,
 45         4 density (2) fixed bin (17) unal,                  /* post version 3 volume set densities */
 46         4 active_set fixed bin,                             /* which of the two is most current */
 47         4 n_volumes_in_set (2) fixed bin,                   /* how many reels comprise volume set */
 48         4 volume_set (2) aligned,
 49           5 volume_id (8) char (168),                       /* physical reel and slot info */
 50       3 component_table (0 refer (tape_archive_table.n_component_slots)) aligned like component,
 51       3 request_queue (0 refer (tape_archive_table.n_request_slots)) aligned like request;
 52 
 53 dcl 1 component aligned based (component_ptr),              /* format of one component entry */
 54     2 entry_status_descriptor like entry_status_descriptor aligned,
 55     2 previous_instance_backchain fixed bin,                /* index of file it replaced, if any */
 56     2 associated_request_index fixed bin,                   /* if extract pending, index of request with dirpath */
 57     2 date_time_deleted bit (36) aligned,                   /* if logically deleted, when. */
 58     2 future_expansion (5) bit (36) aligned;                /* ... */
 59 
 60 dcl 1 request aligned based (request_ptr),                  /* format of a queued request */
 61     2 entry_status_descriptor like entry_status_descriptor aligned,
 62     2 directory_name char (168) unaligned,                  /* in Multics file system */
 63     2 requested_ops unaligned,
 64       3 append bit (1) unaligned,                           /* add to tape */
 65       3 replace bit (1) unaligned,                          /* replace to tape */
 66       3 extract bit (1) unaligned,                          /* extract from tape */
 67       3 delete bit (1) unaligned,                           /* delete from tape or file system */
 68       3 force bit (1) unaligned,                            /* forcibly do any of the above */
 69       3 single_name bit (1) unaligned,                      /* append/extract with only given name */
 70       3 future_expansion bit (30) unaligned,
 71     2 existing_reference fixed bin,                         /* index of component block, if exists (e.g. read) */
 72     2 future_expansion (4) bit (36) aligned;
 73 
 74 dcl 1 entry_status_descriptor aligned based,
 75     2 valid bit (1) unaligned,                              /* an undeleted component or request if on */
 76     2 no_final_newline bit (1) unaligned,                   /* ON if last char in file was not newline */
 77     2 safety_switch bit (1) unaligned,                      /* reflects safety switch of file while online */
 78     2 pad bit (33) unaligned,
 79     2 file_info aligned,                                    /* main tape file for this entry */
 80       3 tape_file_name char (17),
 81       3 entry_name char (32) unaligned,                     /* for Multics file system */
 82       3 date_time_archived bit (36),                        /* when it was put on tape */
 83       3 recording_mode char (8) aligned,                    /* "ascii", "binary", "ebcdic", etc. */
 84       3 date_time_branch_modified bit (36),                 /* last modified while in file system */
 85       3 date_time_dumped bit (36),                          /* by backup facility */
 86       3 bitcount_author char (32),                          /* last person who modified it while online */
 87       3 file_length fixed bin (35),                         /* in Multics pages */
 88       3 attribute_file_no fixed bin,                        /* file number of attribute file on tape */
 89       3 n_tape_records fixed bin (35),                      /* number of logical records on tape for this file */
 90     2 uid bit (36) aligned,                                 /* used to prevent table deletion */
 91     2 future_expansion bit (36) aligned;
 92 
 93 dcl 1 workspace based (workspace_ptr) aligned,              /* to prevent update inconsistencies */
 94     2 workspace_id char (8),                                /* "wrkspace" */
 95     2 component_no fixed bin,
 96     2 request_no fixed bin,
 97     2 n_queued_requests fixed bin,
 98     2 dead_records fixed bin,
 99     2 total_records fixed bin,
100     2 n_components fixed bin,
101     2 n_request_slots fixed bin,
102     2 next_mount_type fixed bin,
103     2 future_expansion (70) fixed bin (35),
104     2 tape_info_copy aligned like tape_archive_table.tape_info,
105     2 future_expansion2 (16) fixed bin (35),
106     2 component_copy like component aligned,
107     2 future_expansion3 (16) fixed bin (35),
108     2 request_copy like request aligned;
109 
110 dcl 1 based_tape_info based (tape_info_ptr) like tape_archive_table.tape_info aligned;
111 
112 dcl (table_ptr, component_ptr, request_ptr, workspace_ptr, tape_info_ptr) pointer;
113 
114 dcl ((None initial (0),                                     /* next scheduled processing flags */
115      Delete initial (1),
116      Read initial (2),
117      Write initial (3),
118      Compact initial (4),
119 
120      Examine initial (1),                                   /* current lock reason flags */
121      Modify initial (2),
122      Process_tape initial (3),
123 
124      Deletion initial (1),                                  /* pending_operation flags */
125      Extraction initial (2),
126      Replacement initial (3),
127      Cancellation initial (4),
128      Deletion_cancellation initial (5),
129      Volume_alteration initial (6),
130      Table_creation initial (7),
131      Table_copy initial (8),
132 
133      Default_density initial (1600),
134 
135      tape_archive_version_4 initial (4)) fixed bin,
136 
137      TAPE_ARCHIVE_IO_MODULE char(6) init("mtape_"),
138 
139      Lock_reasons (0:3) char (24) initial
140     ("no discernable reason", "table examination", "table modification", "tape processing"),
141 
142      Magic_constant char (8) initial ("ta table"),
143      Magic_workspace_constant char (8) initial ("wrkspace")) static options (constant);
144 
145 /* ---------------- END include file tape_archive_table_dcl.incl.pl1 ---------------- */