How sequential file-based commit works ?
z/OS Batch environment
Client need to use the restart facility to minimize the impact of z/OS batch application failures
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
**