Secondary index definitions

It is not necessary to run a DBDGEN for an index DBD unless you want to process it as a stand-alone database or it defines an index with non-unique keys. If an index DBD describes non-unique keys, it must be generated prior to zeroloading the database.

A maximum of 32 secondary indices can be defined for one database. These can all be defined for the same source and target segment. The primary index in a HIDAM database is not a secondary index.

The source segment can be different to the target segment. As with mainframe IMS, if the source segment is different than the target, it must be an eventual child of the target segment.

The XDFLD operands of NAME, SEGMENT, CONST, SRCH, SUBSEQ, DDATA and NULLVAL are supported. Hex and binary value NULLVAL definitions, for example, X'40' or B'00000001', are compared exactly as stated.

User data is supported; however, a new operand is required on the XDFLD statement. XDFLD operands of UBYTES and, optionally, USTART, are used to indicate the length and starting position of user data in the index record.

The source segment can be a fixed or variable length segment.

The START and BYTES options for a /CK field are supported.

Shared secondary indices are supported (the CONST operand), although they must be defined as separate members and are physically stored in separate files. No checking is performed to ensure the shared indices would meet the restrictions for sharing.

The combined lengths of CONST, SRCH and SUBSEQ fields are supported up to their maximum 240 bytes.

The combined lengths of CONST, SRCH, SUBSEQ, DDATA and user data cannot exceed 1,536 bytes. This maximum is reduced to 1,532 bytes if the index has non-unique keys.

An index DBD describes an index with non-unique keys if there is an OVFLW keyword on the DATASET macro in the index DBD or the sequence FIELD specifies multiple keys (SEQ,M).

The XDFLD SRCH fields are only available in an SSA for a target segment when the corresponding alternate processing sequence is used or the source segment is the same as the target segment.