Smart RESTART - How sequential file-based commit works ?
search cancel

Smart RESTART - How sequential file-based commit works ?

book

Article ID: 236613

calendar_today

Updated On:

Products

Smart Restart

Issue/Introduction

How sequential file-based commit works ?

Environment

z/OS Batch environment

Cause

Client need to use the restart facility to minimize the impact of z/OS batch application failures 

Resolution

COMMIT control based on the number of records read from a sequential file

Program Flow

The program reads the file SEQ001 sequentially. For each record read:
a) Updates the corresponding record in the VSAMKS file;
b) Update corresponding record in DB2 TABLE;
c) Writes a line to the REPORT file.

JCL 

//JOB00001 JOB (1),SMRT,CLASS=A,MSGCLASS=X                             

//* ALLOCATE GDG FILE USED AS OUTPUT IN THE NEXT STEP                   

//DEFINE    EXEC PGM=IEFBR14                                            

//OUTFILE   DD DSN=VALOD02.DEMO.RAI.DEMOPK.REPORT(+1),                 

//          DISP=(,CATLG,DELETE),UNIT=SYSDA,SPACE=(TRK,(15,15),RLSE),         

//          DCB=(LRECL=80,RECFM=FB,BLKSIZE=0)                           

//SYSPRINT  DD SYSOUT=*                                                 

/*                                                                      

//*--------------------------------------------------------------------*

//* RUN COBOL APPLICATION WITH SMART/RESTART                            

//*--------------------------------------------------------------------*

//MAIN     EXEC PGM=SAMPLEO1                                            

//*                                                                     

//STEPLIB  DD DISP=SHR,DSN=SHARE.USER.LOAD                              

//         DD DISP=SHR,DSN=SHARE.RAI.R200.DCAEXIT                       

//         DD DISP=SHR,DSN=SHARE.RAI.R200.CRAILOAD                      

//         DD DISP=SHR,DSN=SHARE.RAI.R200.CRAIDCA                       

//         DD DISP=SHR,DSN=DB66.PRIVATE.SDSNEXIT                        

//         DD DISP=SHR,DSN=SHARE.DB2.DB2C10.SDSNLOAD                    

//         DD DISP=SHR,DSN=CEE.SCEERUN                                  

//         DD DISP=SHR,DSN=CEE.SCEERUN2                                 

//*                                                                     

//*SRSOFF   DD DUMMY       <------------------                          

//*                                                                     

//SYSOUT   DD SYSOUT=*                                                  

//SRSPRINT DD SYSOUT=*                                                  

//SRSDUMP  DD DUMMY                                                     

//SYSUDUMP DD SYSOUT=*                                                  

//*                                                                     

//SRSCHECK DD DISP=SHR,DSN=SHARE.USER.DCACKPTV                          

//*SRSSKIP  DD DISP=SHR,DSN=SHARE.USER.DCASKIP                          

//*                                                                     

//SEQ001   DD DISP=SHR,DSN=SHARE.USER.SEQ001                            

//VSAMKS   DD DISP=SHR,DSN=SHARE.USER.VSAMKS                            

//REPORT   DD DISP=OLD,DSN=SHARE.USER.REPORT(+1)                       

//RAINPUT  DD *                                                         

  PRINT_CNTL(YES)            -----+                                                   

  MSGDD(SRSPRINT)                 |                                      

  MSG_DISPLAY(DEBUG)              |                                      

*                                 |                                      

  DBMS(DB2)                        >        GENERAL USE PARAMETERS. CAN BE CONFIGURED IN THE SYSTEM DEFAULT PANELS                                     

  RMI(SRSRDB2)                    |                                      

  ATTACH(RRSAF)                   |                                      

  SYSTEM(DB66)                    |                                      

  PLANEXIT(NONE)                  |                                      

  INIT_STYLE(END)                 |                                      

  VERIFY_JID(NO)             -----+                                      

*                                                                      

* CLEAR_CKPT(BEFORE)                                      --> FORCE CHECKPOINT FILE CLEAN

*                                                                      

  PLAN(DEMORAI)                                                        

  COMMIT_FILE(COUNT,SEQ001,10)                            --> PERFORMS A COMMIT EVERY 10 RECORDS (SEQ001) READ

  VSAM_SEQ_OUT(REPOSITION)                                --> REPOSITIONS VSAM FILES THAT HAVE BEEN SET AS OUTPUT

  RECOVER(ONLY,(VSAMKS))                                  --> RECOVERY FOR NON-SEQUENTIAL VSAM FILES

  REPOSITION(ALL)                                         --> REPOSITIONS SEQUENCE FILES

  REPO_STYLE(AT,ALL)                                      --> IN CASE OF A RE-EXECUTION, POSITION IN THE CURRENT RECORD

**

 

 

 

Additional Information

Smart/RESTART Architecture and Components