CHECKPOINTING & RESTART IN BATCH PROGRAMS IN CASE OF ABENDS
The Concept of Check pointing is to Save the data permanently in the database till the Last Checkpoint in case of an Abend in the Program after taking a Checkpoint. In the case of an abend the DBA will automatically back out (reverse) the changes made to the Database after the Checkpoint. So if we RESTART the Program after an abend, the program will use the Last Check pointing Information for restarting. There are various ways for Checkpoint/Restart.
1. With the Help of a Restart File: -
This type of Check pointing will need a Restart File. In this type, while taking each Checkpoint we will store the Checkpoint ID, with the Necessary Save Area in CC5DAP database. The Checkpoint ID will be usually the Time at which that particular Checkpoint was taken. For Restarting this type of Programs, there will be two Steps.
The first step will put the Stored CC5DAP data corresponding to the Last Checkpoint to a Restart File.
The Second Step will read this Restart File, correctly gets positioned in the Database where the Last Checkpoint was taken (for e.g.:- if it is a Sequential execution in a database), and starts Execution from that point.
2. With the Help of a BMP(Batch Message Processing) Record:-
This is the Latest Technique being used for taking Checkpoint. In this case NO Restart File or CC5 Database is required for Restarting the Program in case of an abend. It uses a BMP Record to get back all the information about the last Checkpoint.
Here the Checkpoint Id will be 8 characters (4 character Program Identification ID + Sequence Id).
For e.g.: - if your Program is BMD001CP, you can put the Program Identification ID as 'BMD1'. The
Sequence Id contains the number of the Last Checkpoint.
(e.g.:- if it is the 19th Checkpoint, Sequence ID will be 0019).
During Restart of the Program, it will automatically read the corresponding BMP Record and gets all stored information regarding the Last Checkpoint.
Comments
we can implement this tech nick in program also rit...by using commit frequence..:)