What does an 1143 abort code mean and what should I do about it?
During the processing of a DML command that involves an index, it is frequently necessary for IDMS to locate a record's entry in the index's SR8 structure, which is done by using the record's index pointer, or existing currencies, to locate a specific SR8 record to begin the search for the current data record's dbkey. If the dbkey is not located in the index structure the DBMS is unable to continue the requested function and abends the associated task with a code of 1143.
The seriousness of this abend depends on the type of run-unit receiving the error and its frequency. If the abend occurs for a retrieval task and concurrent updating of the database is occurring, these errors can be ignored when the CV is defined with RETRIEVAL NOLOCK in the SYSTEM statement and the abending task can be immediately rerun successfully. This scenario is typically an indication that the current record of the retrieval run-unit was involved in a concurrent update operation that affected it or the original SR8 that contained its index entry. The integrity of the index will be intact and no corrective actions are required.
Turning on OPT00216 will cause an 1143 for a Retrieval Run-unit to return an xx57 error-status to the program rather than abend the task with 1143.
However these abends within update run-units or retrieval run-units where the error reoccurs during rerun attempts may indicate an index structure that has been corrupted. The only solution is to rebuild the index using the MAINTAIN INDEX utility. The index(s) should be rebuilt using the REBUILD FROM MEMBERS or the REBUILD FROM ALLROWS options. Never use the REBUILD FROM INDEX option as that will access the corrupt index structure resulting in the rebuilt index to still reflect an invalid structure.