Issue :
After successful termination of the REORG utility, programs start to abend due to database corruption in index or calc sets. Records may not be found when doing symbolic reads through an index due to an invalid symbolic key being stored within the index.
Environment:
CA IDMS release 18.0, 18.5 and 19.0 on z/OS, z/VSE.
Cause:
The REORG utility was run using a subschema that rearranges the physical sequence of the elements in a record relative to the sequence defined in the associated schema. The portions of the database to most likely be affected are index keys within the index structure and the sequence of records within the CALC chain where duplicate calckeys are used.
Example : assume the following database record and (index) set definition :
ADD
RECORD NAME IS CUSTOMER-REC VERSION IS 1.
02 CUST-KEY-ALPHA.
03 CUST-BANKID PIC 9(5).
03 CUST-NOM-ALPHA PIC X(24).
02 CUST-N-PSN PIC 9(13).
02 CUST-PSN PIC 9.
02 CUST-TY-MAR PIC 99.
02 CUST-O-NAME PIC 99.
02 CUST-AG-REL PIC 9(5).
02 CUST-FIL-040 PIC X(40).
ADD
SET NAME IS IX-CUST-BANK
ORDER IS SORTED
MODE IS INDEX BLOCK CONTAINS 35 KEYS
OWNER IS SYSTEM
WITHIN AREA INDEX-AREA
MEMBER IS CUSTOMER-REC
MANDATORY AUTOMATIC
KEY IS (
CUST-BANKID ASCENDING
CUST-PSN ASCENDING
CUST-NOM-ALPHA ASCENDING )
DUPLICATES ARE LAST
NATURAL SEQUENCE
UNCOMPRESSED
.
The REORG utility is executed using a subschema which defines the CUSTOMER-REC as follows :
ADD
RECORD NAME IS CUSTOMER-REC
ELEMENTS ARE CUST-KEY-ALPHA
CUST-N-PSN
CUST-O-NAME
CUST-PSN
CUST-AG-REL
CUST-TY-MAR
CUST-FIL-040
.
As you can see, this subschema definition rearranges the record elements of the CUSTOMER-REC.
The REORG job will complete successfully, but the IX-CUST-BANK set will be built incorrectly because of this subschema. The utility was never intended to support such subschemas.
Resolution :
Rerun the REORG using a subschema that defines the elements in the same sequence as the associated schema. This would require a subschema that does not use the ELEMENTS ARE clause in the definition of its records.
In order to avoid unconscious usage of such subschemas with the REORG utility, you can apply the following PTFs :
- for CA IDMS release 18.0 : RO87768
- for CA IDMS release 18.5 : RO87756
- for CA IDMS release 19.0 : RO87776
After application of these PTFs, the REORG utility will terminate with an UT003038 message :
UT003038 SUBSCHEMA <subschema-name> CONTAINS SEGMENTED RECORD <record-name>
Note: If the subschema contains an ELEMENTS ARE clause that defines the elements in the same order that they appear in the schema, the above apars will still issue the UT003038 message. With the apar applied, there must be no ELEMENTS ARE clause at all for REORG not to issue the message.