Syncpointing
To facilitate recovery in the event of abnormal termination of a CICS® task or of failure of the CICS system, the system programmer can, during CICS table generation, define specific resources (for example, files) as recoverable. If a task is terminated abnormally, these resources are restored to the condition they were in at the start of the task, and can then be rerun.
The process of restoring the resources associated with a task is termed backout.
If an individual task fails, backout is performed by the dynamic transaction backout program. If the CICS system fails, backout is performed as part of the emergency restart process. See Starting CICS with the START=INITIAL parameter which describes these facilities, which in general have no effect on the coding of application programs.
However, for long-running programs, it may be undesirable to have a large number of changes, accumulated over a period of time, exposed to the possibility of backout in the event of task or system failure. This possibility can be avoided by using the SYNCPOINT command to split the program into logically separate sections known as units of work (UOWs); the end of an UOW is referred to as a synchronization point (syncpoint). For more information about syncpoints, see Recovery and restart facilities .
If failure occurs after a syncpoint but before the task has been completed, only changes made after the syncpoint are backed out.
- SRRCMIT
- Commit—Equivalent to SYNCPOINT command.
- SRRBACK
- Backout—Equivalent to SYNCPOINT ROLLBACK command.
For further information about the SAA Resource Recovery interface, see SAA Common Programming Interface for Resource Recovery Reference manual.
UOWs should be entirely logically independent, not merely with regard to protected resources, but also with regard to execution flow. Typically, an UOW comprises a complete conversational operation bounded by SEND and RECEIVE commands. A browse is another example of an UOW; an ENDBR command must therefore precede the syncpoint.
In addition to a DL/I termination call being considered to be a syncpoint, the execution of a SYNCPOINT command causes CICS to issue a DL/I termination call. If a DL/I PSB is required in a subsequent UOW, it must be rescheduled using a program control block (PCB) call or a SCHEDULE command.
With distributed program link (DPL), it is possible to specify that a syncpoint is taken in the server program, to commit the server resources before returning control to the client. This is achieved by using the SYNCONRETURN option on the LINK command. For programming information about the SYNCONRETURN option, see "The SYNCONRETURN option for the server program" in Examples of distributed program link and CICS command summary.
A BMS logical message, started but not completed when a SYNCPOINT command is processed, is forced to completion by an implied SEND PAGE command. However, you should not rely on this because a logical message whose first page is incomplete is lost. You should also code an explicit SEND PAGE command before the SYNCPOINT command or before termination of the transaction.
Consult your system programmer if syncpoints are to be issued in a transaction that is eligible for transaction restart.