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.