z/OS DFSMS Using Data Sets
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Header Portion

z/OS DFSMS Using Data Sets
SC23-6855-00

The first 24 bytes of an index record is the header, which gives control information about the index record. Table 1 shows its format. All lengths and displacements are in bytes. The discussions in the following two sections amplify the meaning and use of some of the fields in the header.

Table 1. Format of the Header of an Index Record
Field Offset Length Description
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.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014