In this topic, we described about the Checkpoint Call with detailed example.
One of the recovery functions. All database updates as reversible, or ‘uncommitted’, until the checkpoint executed in the application program. Checkpoint notifies IMS that all updates are permanent or committed.
This is known as a synchronization point. IMS synchronizes all database updates for the program. The application commits by issuing a checkpoint call. At the time of the checkpoint, three actions will take place
- IMS commits all the database updates and releases the records for the checkpoint.
- IMS sends a message to the operator containing the ID of the checkpoint
- IMS writes a log record containing checkpoint information, before and after images of the updated segments and the checkpoint id.
Until the application issues the checkpoint, all segments which have been updated are ‘en queued’. ‘en queued’ means any other programs attempting to access them will be forced to wait.
If no checkpoints are coded, the commit will occur when the program completes. The frequency of checkpoint is determined based on one of several factors:
- A specified time interval
- A specified number of database records were processed
- A specified number of database updates completed
When a checkpoint is issued, all database position is lost. IMS sets the position to the start of the database. The application program re-establishes position after a checkpoint call. The reposition can be done by issuing a GU to the last segment accessed before the checkpoint.
CALL ‘CBLTDLI’ USING WS-CHKP IO-PCB IO-AREA-LEN(length of largest db io-area) IO-AREA ( 8 digit checkpoint id) WS-LENGTH-n (length of ws area) WS-AREA-n (ws area to be saved)
Lets discuss about individual parameters.
- Database Program Control Block
- Specifies the DB PCB for the CHKP call.
- DB PCB will act as an input and output parameter.
- Known as Input-Output Area.
- Specifies the I/O area in CHKP Call.
- I/O Area parameter is an output parameter.
- If Replace calls completed successfully, IMS returns the requested segment in I/O area.
- If any path calls issued from the application program, the I/O area must be long enough to hold the longest path of concatenated segments.
- I/O area always contains left-justified segment data.
- The I/O area points to the first byte of this area.
DEDB databases have another option to determine the check point frequency called unit of the work (UOW) boundary.
If BMP is processing a DEDB, it is possible to have IMS notify the application program when a UOW boundary is crossed. By defining the boundary cross as the checkpoint interval, it triggers the application program to issue a checkpoint when the flow crosses boundary.
The basic advantage of setting UOW boundaries is not loosing database position during the process even though ‘FR’ status code returned. To receive notification of the crossing of a UOW boundary, the PSB must have a processing option of ‘P’. While issuing a checkpoint call, the following information must be provided to IMS:
- The ID of the checkpoint, an 8 character field which uniquely identifies the checkpoint. It is application program generated and usually consists of a combination of the program name and a counter.
- Areas of working storage in the application program that the program needs recovered in the event of a restart.
- The length of the largest IMS database io-area used by the program.