Backing out to a prior commit point: ROLL, ROLB, and ROLS calls
When a program determines that some of its processing is invalid, you can use these calls
to remove the effects of its incorrect processing: Roll Back calls ROLL,
ROLS using a database PCB, ROLS with no I/O area or token, and
ROLB.
When you issue one of these calls, IMS does the following:
- Backs out the database updates that the program has made since the program’s most recent commit point.
- Cancels the non-express output messages that the program has created since the program’s most recent commit point.
The main difference among these calls is that ROLB returns control to the
application program after backing out updates and canceling output messages, ROLS
does not return control to the application program, and ROLL terminates the program
with a user abend code of 0778. ROLB can return to the program the first message
segment since the most recent commit point, but ROLL and ROLS
cannot.
The ROLL and ROLB calls, and the ROLS call
without a token specified, are valid when the PSB contains PCBs for Generalized Sequential Access
Method (GSAM) data sets. However, segments inserted in the GSAM data sets since the last commit
point are not backed out by these calls. An extended checkpoint-restart can be used to reposition
the GSAM data sets when restarting.
You can use a ROLS call either to back out to the prior commit point or to back
out to an intermediate backout point established by a prior SETS call. This topic refers only to the form of
ROLS that backs out to the prior commit point.