Index entries

Following the index block header is a table of index entries. The format of an index entry is:
Bytes
Description
Byte 0:
Entry identifier, as follows:
X'21'
Normal index entry (non-duplicate entry). In a set of duplicate index entries, this identifier marks the last index entry of the set.
X'22'
Duplicate index entry. This entry is a duplicate of the next index entry. Index entries can be duplicates of one another until one marked by the X'21' identifier is reached.

A duplicate index entry can exist only in a level-1 index block and only for data set profiles with the same name.

X'23'
Alias index entry.
Figure 1. Example overview of an alias index block
A graphical representation of a level-1 index block.
Byte 1:
Type of profile for this index entry, as follows:
X'01'
Group
X'02'
User
X'04'
Data set
X'05'
General resource
Bytes 2-3:
Length of this index entry
Bytes 4-5:
Offset from the beginning of the entry to the segment data area for regular index entries, and offset from the beginning of the entry to the base profile data area for alias index.
Bytes 6-7:
Front-end compression count. Number of leftmost characters that are suppressed from the profile name in the index entry's name field. To save space in the database, RACF® suppresses the leftmost characters that are identical to those in the preceding index entry.

To find the suppressed characters, trace the index entries backward to the one with front-end compression count of zero. In this index entry, all leftmost characters would still be intact in its name field.

The first index entry of the index block always has a front-end compression count of zero. A name that is the same as one in the previous entry might be totally compressed.

Figure 2 shows an example of front-end compression counts.

Figure 2. Example of front-end compression in an index block

Note: Not all entry names are necessarily compressed at all times. For example, when a new name is added, it might not be compressed until the database is reformatted (such as through the IRRUT400 utility).
Bytes 8-9:
Length of index entry name
Bytes 10-11:
Reserved
Bytes 12-n:
Index entry name, 0-255 bytes. Bytes 8-9 contain the actual length.

An index entry name corresponds to either a profile name or application identity, but it does not always match letter by letter or byte by byte. It might be compressed (see Bytes 6-7, for example), or some of its characters might be substituted by RACF for internal purposes (such as to save space or to facilitate the search).

For an alias index entry, the first 3 bytes of the entry name are non-EBCDIC and specifies the particular alias field within the template as follows:
  • Byte 0: Template identifier. Describes the type of base profile that is associated with this alias entry.
  • Byte 1: Segment identifier. See Table 1.
  • Byte 2: Field identifier. See the template descriptions in z/OS Security Server RACF Macros and Interfaces for field identifiers.

In an upper-level (that is, not level 1) index block, the index entry name might correspond to the entry name of the last index entry of the next-lower level block. Its rightmost characters might be compressed if RACF determines that they are not essential to finding the correct index block at the next-lower block.

An index entry name of 255 bytes of X'FF' signifies the end of index blocks for that level number.

Bytes n+1:
Segment data area. In an upper-level regular or alias index block, the segment data area has this format:
Byte 0:
X'62' Identifier byte
Bytes 1-6:
RBA of the next-lower-level index block
In a regular level-1 index block, the segment data area has this format:
Byte 0:
Number of segment-data fields in this data area. This is also the number of segments in this profile.
Bytes 1-7:
Segment-data field. This field is repeated successively for each segment in the profile. The format of a segment-data field is:
Byte 0:
Segment Identifier. See Table 1 for a list of identifiers. Profile type is indicated in Byte 1 of the index entry.
Bytes 1-6:
RBA of the segment.
In an alias level-1 index block, the segment data area has this format:
Bytes 0–1:
Number of base profile fields in this data area.
Bytes 2–n:
Base profile data field. This field is repeated successively for each base profile reference for this application identity.
Bytes 2–3
Denotes the 1–8 character length of the user or group profile name immediately following this field.
Bytes 4–m:
Base profile name.
Table 1. Segment identifiers
Group User Data set General
  • X'01'—BASE
  • X'02'—DFP
  • X'03'—OMVS
  • X'04'—OVM
  • X'05'—TME
  • X'06'—CSDATA
  • X'01'—BASE
  • X'02'—DFP
  • X'03'—TSO
  • X'04'—CICS®
  • X'05'—LANGUAGE
  • X'06'—OPERPARM
  • X'07'—WORKATTR
  • X'08'—OMVS
  • X'09'—NETVIEW
  • X'0A'—DCE
  • X'0B'—OVM
  • X'0C'—LNOTES
  • X'0D'—NDS
  • X'0E'—KERB
  • X'0F'—PROXY
  • X'10'—EIM
  • X'11'—CSDATA
  • X'01'—BASE
  • X'02'—DFP
  • X'03'—TME
  • X'01'—BASE
  • X'02'—SESSION
  • X'03'—DLFDATA
  • X'04'—SSIGNON
  • X'05'—STDATA
  • X'06'—SVFMR
  • X'07'—CERTDATA
  • X'08'—TME
  • X'09'—KERB
  • X'0A'—PROXY
  • X'0B'—EIM
  • X'0C'—ALIAS
  • X'0D'—CDTINFO
  • X'0E'—ICTX
  • X'0F'—CFDEF
  • X'10'—SIGVER
  • X'11'—ICSF

Figure 3 shows an example of a normal index entry in a level-1 index block for a user profile named USR26, which contains three segments: Base, TSO, and DFP.

Figure 3. Example of index entry for USR26 with a base, TSO, and DFP segment