1 /* BEGIN INCLUDE FILE dm_cm_basic_ci.incl.pl1 */
 2 
 3 /* DESCRIPTION:
 4 
 5         The collection_manager_ manages the structure of the addressable
 6    portion of a control interval.  The addressable portion is that portion of
 7    a control interval which the file_manager_ will allow the
 8    collection_manager_ to address.  In this description control interval will
 9    be used to mean the addressable portion of a control interval.
10 
11         A control interval is divided into four parts: the header, the datum
12    position table (also known as the slot table or slots), un-used space and
13    used space.  The beginning of the header is at offset 0, and the end of the
14    used space is at the end of the control interval (curently offset 4072).
15    Pictoriarly, a control interval is structured as follows:
16 
17    ----------------------------------------------------------------------
18    |        || | | | | | ||               ||   | / / |       |/|   |    |
19    | Header || | slot  | || un-used space ||   |/ / /|       |/|   |    |
20    |        || | table | ||               ||   | / / |       |/|   |    |
21    |        || | | | | | ||               ||   |/ / /|       |/|   |    |
22    ----------------------------------------------------------------------
23                                            ^ ^    ^      ^    ^  ^   ^
24                                            | |    |      |    |  |   |
25                                            | |...........|.......|...|
26                         start of used space|      |           |      |
27                                                   |           |  each|
28                                           scattered free space|  is a used
29                                                                  datum
30 
31       The basic_control_interval structure describes the header
32    (basic_control_interval.header, bci_header) and the slots
33    (basic_control_interval.datum_position_table, datum_slot for one only).
34    Each datum_slot contains the offset (in bytes) and the length (in bits) of
35    a datum in the used space.  If the offset is equal to FREE_SLOT (declared
36    in dm_cm_basic_ci_const.incl.pl1), the slot is un-used.  The slot also
37    contains flags describing the type of datum (see dm_cm_datum.incl.pl1).
38 */
39 
40 /* HISTORY:
41 Written by Matthew Pierret, 02/07/82.
42 Modified:
43 03/25/82 by Matthew Pierret: Fixed alignment differences basic_control_interval
44             and its sub-structures.
45 06/14/82 by Matthew Pierret: Removed common header and buffers. Changed
46             basic_ci_header to bci_header. Added previous_control_interval.
47 07/12/82 by Matthew Pierret: Changed collection_id to be bit (36) aligned.
48 10/29/82 by Matthew Pierret: Added flags to datum slots.
49 11/10/82 by Matthew Pierret: Removed continued_datum_is_present flag, as it
50             is not used.
51 03/28/84 by Matthew Pierret: Added the constants BCI_HEADER_LENGTH_IN_BYTES
52             and DATUM_POSITION_TABLE_OFFSET_IN_BYTES.
53 */
54 
55 /* format: style2 */
56      dcl     1 basic_control_interval
57                                     aligned based (basic_control_interval_ptr),
58                2 header             like bci_header,
59                2 datum_position_table
60                                     (0 refer (basic_control_interval.number_of_datums)) like datum_slot;
61 
62 
63      dcl     1 bci_header           aligned based (bci_header_ptr),
64                2 layout_type        char (4) aligned,
65                2 collection_id      bit (36) aligned,
66                2 next_control_interval
67                                     fixed bin (24) uns unal,
68                2 previous_control_interval
69                                     fixed bin (24) uns unal,
70                2 flags              unal,
71                  3 continuation_datum_is_present
72                                     bit (1) unal,
73                  3 free_slot_is_present
74                                     bit (1) unal,
75                  3 must_be_zero     bit (4) unal,           /* reserved */
76                2 scattered_free_space
77                                     fixed bin (17) unal,
78                2 start_of_used_space
79                                     fixed bin (17) unal,
80                2 number_of_datums   fixed bin (17) unal;
81 
82      dcl     1 datum_slot           aligned based (datum_slot_ptr),
83                2 flags              unal,
84                  3 special_format_datum
85                                     bit (1) unal,           /* reserved */
86                  3 is_continued     bit (1) unal,
87                  3 is_continuation  bit (1) unal,
88                  3 mbz              bit (1) unal,           /* reserved */
89                2 offset_in_bytes    fixed bin (15) uns unal,
90                2 length_in_bits     fixed bin (17) uns unal;
91 
92      dcl     basic_control_interval_ptr
93                                     ptr;
94      dcl     bci_header_ptr         ptr;
95      dcl     datum_slot_ptr         ptr;
96 
97      dcl     BASIC_CI_LAYOUT_1      char (4) aligned init ("bci1") internal static options (constant);
98 
99 /* END INCLUDE FILE dm_cm_basic_ci.incl.pl1 */