After issuing a modify statement on a system owned index set to include a symbolic, we began to receive an end of set condition on a system owned index set.
MODIFY SET EMP-NAME-NDX MODE IS INDEX USING INDEX-SYMBOLICNAME.
The index INDEX-SETNAME became inaccessible (DB-END-OF-SET) even though there were indexed records. 0326 and 0307 errors are possible in this case.
How is this happening?
IDMS has determined that the compiler is working as designed. If the WITHIN AREA is not specified, the area name in the SOR-046 record is not filled in and this causes the schema compiler to use the member area mapping to determine the page range for the index's SR7.
Once a symbolic is used, a hard relationship is established to the area because symbolics are defined on an area basis. Besides establishing a relation between the area record and the SOR-046 record through the SYMNAME-200 and SYMSET-202 records it also causes the area name to get filled in within the SOR-046. At that point IDMS has no way of knowing if a WITHIN AREA clause had at one time been omitted, so subsequent displays of the set will contain the WITHIN AREA statement.
If the original set definition had no WITHIN AREA statement on the OWNER clause, and if replacing the INDEX BLOCK CONTAINS clause with an index symbolic, the index owner should specify the WITHIN AREA statement to ensure that the index retains the same page range it had before the change.