IXHLL |
0(0) |
2 |
Index record length. The length of the index record is equal
to the length of the control interval minus 7. |
IXHFLPLN |
2(2) |
1 |
Index entry control information length. This is the length
of the last three of the four fields in an index entry. (The length
of the first field is variable.) The length of the control information
is 3, 4, or 5 bytes. |
IXHPTLS |
3(3) |
1 |
Vertical-pointer-length indicator.
The fourth field in an
index entry is a vertical pointer to a control interval.
In an index-set
record, the pointer is a binary number that designates a control interval
in the index. The number is calculated by dividing the RBA of the
control interval by the length of the control interval. To permit
for a possibly large index, the pointer is always 3 bytes.
In
a sequence-set record, the pointer is a binary number, beginning at
0, and calculated the same as for index-set record, that designates
a control interval in the data control area governed by the sequence-set
record. A free-control-interval entry is nothing more than a vertical
pointer. There are as many index entries and free-control-interval
entries in a sequence-set record as there are control intervals in
a control area. Depending on the number of control intervals in a
control area, the pointer is 1, 2, or 3 bytes.
An IXHPTLS value
of X'01' indicates a 1-byte pointer; X'03' indicates
a 2-byte pointer; X'07' indicates a 3-byte pointer.
|
IXHBRBA |
4(4) |
4 |
Base RBA. In an index-set record, this is the beginning RBA
of the index. Its value is 0. The RBA of a control interval in the
index is calculated by multiplying index control interval length times
the vertical pointer and adding the result to the base RBA.
In
a sequence-set record, this is the RBA of the control area governed
by the record. The RBA of a control interval in the control area is
calculated by multiplying data control interval length times the vertical
pointer and adding the result to the base RBA. Thus, the first control
interval in a control area has the same RBA as the control area (length
times 0, plus base RBA, equals base RBA).
Exception: For an extended-addressable KSDS, this
field is a relative control interval number instead of a RBA.
|
IXHBCI |
4(4) |
4 |
|
IXHFINXT |
4(4) |
4 |
Doubly defined with IXHBRBA. Set only in an
index-set record. It is the CI# of the next index-set record in the
free index-set record LIFO chain. This field in the first 2nd-level
index record (CI #2) has the CI# of the most recently freed index-set
record or, if Flag byte = X'80', the index-set record that
was interrupted during CA reclaim. |
IXHHP |
8(8) |
4 |
Horizontal-pointer RBA. This is the RBA of the next index record
in the same level as this record. The next index record contains keys
next in ascending sequence after the keys in this record.
Exception: For an extended-addressable KSDS, this
field is a relative control interval number instead of a RBA.
|
IXHFSNXT |
12(C) |
|
Set in the first 2nd-level index record (CI #2) and the free
sequence-set records. It is the CI# of the next sequence-set record
in the free sequence-set record LIFO chain. This field in the first
2nd-level index record has the CI# of the most recently freed sequence-set
record or, if Flag byte = X’80’, the sequence-set record
that was interrupted during CA reclaim. |
IXHLV |
16(10) |
1 |
Level number. The sequence set is the first level of an index,
and each of its records has an IXHLV of 1. Records in the next higher
level have a 2, and so on. |
|
17(11) |
1 |
Flag byte
- X'80' -- CA reclaim is in progress. Set only in index
CI #2.
- X'40' -- CA reclaim is committed. Set only in the index
record one level above the vertical chain of index records to be reclaimed.
- X'20' -- CA reclaim is pending. Set in all index reccords
that will be reclaimed. This flag stays ON until this index record
is reused.
- X'10' -- Index record removed from horizontal chain for
CA Reclaim. This flag stays ON until this index record is reused.
- X'08' -- Index CI #2 itself is logically in the IXHFINXT
chain. This flag is set only in index CI #2.
- X'04' -- IXHHBACK is valid and can be referenced.
|
IXHFSO |
18(12) |
2 |
Displacement to the unused space in the record. In an index-set
record, this is the length of the header (24). There are no free control
interval entries.
In a sequence-set record, the displacement is
equal to 24, plus the length of free control interval entries, if
any.
|
IXHLEO |
20(14) |
2 |
Displacement to the control information in the last index entry.
The last (leftmost) index entry contains the highest key in the index
record. In a search, if the search-argument key is greater than the
highest key in the preceding index record but less than or equal to
the highest key in this index record, then this index record governs
either the index records in the next lower level that have the range
of the search-argument key or the control area in which a data record
having the search-argument key is stored. |
IXHSEO |
22(16) |
2 |
Displacement to the control information in the last (leftmost)
index entry in the first (rightmost) section. Index entries are divided
into sections to simplify a quick search. Individual entries are not
examined until the right section is located. |
IXHHBACK |
24(18) |
4 |
Point to the preceding index CI in the horizontal
chain. Only set in the reclaimed index CI. |