1 /* Begin include file mstb_format.incl.pl1 */
 2 
 3 /* Modified 1984-07-23 BIM for V3: new hash function, checksums. */
 4 /* Modified 1984-08-08 EJS to make comp_header an even number of
 5    words long.  This is required so that MSTB entries end up on
 6    an even word boundary. */
 7 
 8 /* format: style3 */
 9 
10 /***** NOTE NOTE NOTE
11 
12        These tables have locks. Otherwise, checksum calculation
13        would be an incredible complexity.
14 
15        It could, however be done. If the AS is split into multiple
16        processes, the following can be done:
17 
18        1)    use stacq to maintain counters.
19        2)    use entry locks on the individual entries.
20        3)    use the pclocks on the components
21              to validate checksum entries.
22 
23        With any luck, we will have FAMIS files at our disposal
24        by the time the AS splits, and all of this will be
25        unnecessary.
26 
27        --BIM 1984-07-23 */
28 
29 declare   (hdrp, segp, ep)    pointer;
30 
31 declare   1 mt_header         aligned based (hdrp),
32             2 header          aligned,                      /* data mstb_mgr_ owns */
33               3 comp_hdr      aligned like comp_header,
34               3 lock          bit (36) aligned,             /* file lock */
35               3 pclock        fixed bin (35),               /* change count, used for passive locking */
36               3 mti           aligned like ms_table_info,
37               3 (number_components, entries_per_component, entry_offset)
38                               unsigned fixed binary (18),
39               3 (total_entries, deleted_entries, used_entries)
40                               fixed binary (35),
41               3 perm_data_checksum
42                               fixed bin (35),               /* sum of n_components, entries_per_component, entry_offset, total_entries, header_size, entry_size */
43               3 meters,                                     /* only maintained if mti.keep_meters is on */
44                 4 searches    fixed binary (35),
45                 4 entries_examined
46                               fixed binary (35),
47               3 pad           (12) bit (36) aligned,        /* 50 words to end of this */
48             2 header_data     (0 refer (mt_header.mti.header_size)) bit (36) aligned;
49 
50 declare   1 comp_header       aligned based (segp),         /* 16 words */
51             2 type            character (32),
52             2 (dt_created, dt_updated)
53                               fixed binary (71),
54             2 component       unsigned fixed binary (18),
55             2 pad (3) bit (36); /* Pad out to 16 words. */
56 
57 declare   1 entry             aligned based (ep),           /* 10 + entry size */
58             2 header          aligned,
59               3 flags         unaligned,
60                 4 (used, deleted, inconsistent)
61                               bit (1),
62                 4 pad         bit (15),
63               3 checksum      fixed bin (18) unsigned unaligned,
64                                                             /* checksums ENTIRE entry, including header */
65               3 lock          bit (36) aligned,             /* unused for now */
66               3 key           character (32) unaligned,
67             2 entry_data      (mt_header.mti.entry_size) bit (36) aligned;
68 
69 
70 
71 /* End include file mstb_format.incl.pl1 */