Transactions can be aborted with an ERNN error code, where NN is a two-digit numeric code. This document describes how to debug and resolve those errors, using ER01 and ER33 as specific examples.
If a transaction gets a non-zero minor status from an ERASE command, and the next DML command is anything other than 'ROLLBACK' or 'ROLLBACK CONTINUE', the task will be aborted with abend code 'ERNN', where 'NN' is the minor status returned to the erase command.
The general form of these messages (ERNN) is documented as message ABNDERNN in section one of the CA IDMS Messages and Codes manual, as follows:
"Reason: A nonzero status has occurred in a previous ERASE command which was not followed by a ROLLBACK or ROLLBACK CONTINUE command. The run unit is aborted, forcing a rollback to preserve the integrity of the database. <NN> is the minor code of the previous call."
The specific values for the minor code must be researched in section titled "CA IDMS Minor Codes" in the chapter documenting "CA IDMS Status Codes" within the Messages and Codes manual.
To avoid these messages, it is important to always check the error-status after ERASE, and to issue a ROLLBACK after a non-zero status code. Specifically, an ER01 means the preceding Erase got an 0201; an ER33 means the preceding erase got an 0233. An 0201 indicates that a required area was not readied.
An 0233 indicates that one or more sets in which the object record participates, either as owner or as member, have not been included in the subschema being used for this transaction. Consequently, when the subschema was compiled, it established an access restriction that prohibits the use of ERASE with the object record.
To correct these ERNN errors, the minor code associated with the error must be researched and the appropriate corrective action taken.
For an ER01, that means changing the program to READY in an UPDATE USAGE-MODE all areas that could be updated by the ERASE operation.
For an ER33 it means updating the subschema to include all sets in which a record participates, if it is to be used to ERASE that record.