1 /* BEGIN INCLUDE FILE dm_cm_file_header.incl.pl1 */ 2 3 /* DESCRIPTION: 4 5 This include file contains the cm_file_header and collection_id_table 6 structure. These structures are stored as elements in the Header Collection 7 of a file and contain per-file, as opposed to per-collection, information. 8 9 The cm_file_header structure is always stored in the element whose 10 identifier is CM_FILE_HEADER_ELEMENT_ID, declared in 11 dm_cm_hdr_col_ids.incl.pl1. 12 13 The collection_id_table is an array of identifiers of each collection 14 in the file, excepting the Header Collection. The identifier of a 15 collection is the same as the identifier of the element which holds that 16 collection's collection_header, described in dm_cm_collection_header.incl.pl1. 17 The identifier of the element in which the collection_id_table is 18 stored is cm_file_header.collection_id_table_element_id. 19 20 A file also has a reservation map for determining which controls 21 intervals have been reserved by a collection. It is divided into 22 several blocks, or fragments. The file_reservation_map is actually an 23 array of element identifiers of the fragments of the map. The 24 file_reservation_map is stored in the element whose identifier is 25 cm_file_header.allocation_map_element_id (quite a misnomer). The number 26 of fragments of the map is cm_file_header.number_of_blocks. The size 27 of each is fragment is cm_file_header.number_of_control_intervals_per_block 28 bits long, representing equally as many control intervals. The 29 file_reservation_map is described in dm_cm_reservation_map.incl.pl1. 30 cm_file_header.highest_numbered_ci is the number of the control 31 interval in the file with the highest control interval number. It is not 32 yet used or maintained. 33 34 */ 35 36 /* HISTORY: 37 Written by Matthew Pierret, 03/23/82. 38 Modified: 39 04/08/82 by Matthew Pierret: Removed storage method constants. 40 05/18/82 by Matthew Pierret: Made the array of collections an array of element 41 ids referring to collection_header's. Reduced buffer length to 120, 42 enough bytes to hold the collmgr_header with 25 collection header 43 element ids. 44 06/03/82 by Matthew Pierret: Added collmgr_header_header. 45 07/01/82 by Matthew Pierret: Removed collmgr_header_header. Changed to version A 46 made fixed length, split off array of collection_ids (also known as 47 element_ids of collection_headers). 48 10/29/82 by Matthew Pierret: Changed from collmgr_header to cm_file_header. 49 09/18/84 by Matthew Pierret: Added DESCRIPTION section. Moved constants to 50 dm_cm_hdr_col_ids.incl.pl1. 51 */ 52 53 /* format: style2,ind3,ll79 */ 54 55 dcl 1 cm_file_header aligned based (cm_file_header_ptr), 56 2 version char (8), 57 2 highest_numbered_ci 58 fixed bin (24) uns, 59 2 number_of_collections 60 fixed bin (17) unal, 61 2 number_of_blocks fixed bin (17) unal, 62 2 number_of_control_intervals_per_block 63 fixed bin (17), 64 2 allocation_map_element_id 65 bit (36) aligned, 66 2 collection_id_table_element_id 67 bit (36) aligned; 68 69 dcl cm_file_header_ptr ptr; 70 dcl CM_FILE_HEADER_VERSION_1 71 char (8) aligned init ("cm_fhdr1") 72 int static options (constant); 73 74 75 dcl collection_id_table (cit_number_of_collections) 76 bit (36) aligned 77 based (collection_id_table_ptr); 78 79 dcl collection_id_table_ptr 80 ptr; 81 dcl cit_number_of_collections 82 fixed bin (17); 83 84 85 86 /* ----------End include file dm_cm_file_header.incl.pl1---------- */ 87