SETS command

The Set a Backout Point (SETS) command is used to define points in your application at which to preserve the state of the DL/I databases before initiating a set of DL/I requests to perform a function. Your application can issue a ROLS command later if it cannot complete the function.

Format

Read syntax diagramSkip visual syntax diagramEXECDLISETS TOKEN( mytoken)AREA( data_area)

Options

TOKEN(mytoken)
A 4-byte token associated with the current processing point.
AREA(data_area)
The name of the area to be restored to the program when a SETS command is issued. The first 2 bytes of the data-area field contain the length of the data-area, including the length itself. The second 2 bytes must be set to X'0000'.

Usage

You can use the SETS command to define multiple points at which to preserve the state of the DL/I databases and to return to these points later. For example, you can use the SETS command to allow your program to handle situations that can occur when PSB scheduling completed without all of the referenced DL/I databases being available.

The SETS command applies only to DL/I full-function databases. If a logical unit of work (LUW) is updating types of recoverable resources other than full-function databases, for example VSAM files, the SETS command has no effect on the non-DL/I resources. The backout points are not CICS® commit points; they are intermediate backout points that apply only to DBCTL resources. It is up to you to ensure the consistency of all the resources involved.

Example

EXEC DLI SETS TOKEN(mytoken) AREA(data_area)

Explanation

This example shows how to specify the SETS command.

Restrictions

Restrictions for the SETS command:

  • To use this command you must first define an I/O PCB for your program.
  • You cannot reestablish position in the midst of nonunique keys or nonkeyed segments.
  • In batch, you can only use this command when the system log is stored on direct access storage and dynamic backout has been specified. You must also specify BKO=Y in the parm field of your JCL when you execute the program.
  • It is rejected when the PSB contains a DEDB or MSDB PCB, or when the call is made to a DB2® database.
  • It is valid, but not functional, if unsupported PCBs exist in the PSB or if the program uses an external subsystem.