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.