Select 3 Record Types
Posted: Wed May 08, 2013 11:04 pm
I want to check a file for at least 1 occurrence of 3 record types that start in column 1 (000,188 & 999). If the file doesn't contain at least 1 occurrence of these records, the job should receive a RC=4. I was able to achieve this task, but I needed to execute two steps. Is it possible to achieve this in only 1 step?
//STEP1 EXEC PGM=SYNCTOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD *
000
188
188
188
188
188
188
188
999
//OUT1 DD DSN=&&HEADER,DISP=(,CATLG,DELETE),
// SPACE=(CYL,(1,1),RLSE),UNIT=TEST,DCB=(LRECL=80,RECFM=FB)
//OUT2 DD DSN=&&DATA,DISP=(,CATLG,DELETE),
// SPACE=(CYL,(1,1),RLSE),UNIT=TEST,DCB=(LRECL=80,RECFM=FB)
//OUT3 DD DSN=&&TRAILER,DISP=(,CATLG,DELETE),
// UNIT=TEST,SPACE=(CYL,(1,1),RLSE),DCB=(LRECL=80,RECFM=FB)
//TOOLIN DD *
SORT FROM(IN) TO(OUT1) USING(CTL1)
SORT FROM(IN) TO(OUT2) USING(CTL2)
SORT FROM(IN) TO(OUT3) USING(CTL3)
//CTL1CNTL DD *
SORT FIELDS=COPY,STOPAFT=1
INCLUDE COND=(1,3,CH,EQ,C'000')
//*
//CTL2CNTL DD *
SORT FIELDS=COPY,STOPAFT=1
INCLUDE COND=(1,3,CH,EQ,C'188')
//*
//CTL3CNTL DD *
SORT FIELDS=COPY,STOPAFT=1
INCLUDE COND=(1,3,CH,EQ,C'999')
//*
//STEP2 EXEC PGM=SYNCTOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=*.STEP1.OUT1,DISP=SHR
// DD DSN=*.STEP1.OUT2,DISP=SHR
// DD DSN=*.STEP1.OUT3,DISP=SHR
//TOOLIN DD *
COUNT FROM(IN) NOTEQUAL(03) RC4
/*
//STEP1 EXEC PGM=SYNCTOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD *
000
188
188
188
188
188
188
188
999
//OUT1 DD DSN=&&HEADER,DISP=(,CATLG,DELETE),
// SPACE=(CYL,(1,1),RLSE),UNIT=TEST,DCB=(LRECL=80,RECFM=FB)
//OUT2 DD DSN=&&DATA,DISP=(,CATLG,DELETE),
// SPACE=(CYL,(1,1),RLSE),UNIT=TEST,DCB=(LRECL=80,RECFM=FB)
//OUT3 DD DSN=&&TRAILER,DISP=(,CATLG,DELETE),
// UNIT=TEST,SPACE=(CYL,(1,1),RLSE),DCB=(LRECL=80,RECFM=FB)
//TOOLIN DD *
SORT FROM(IN) TO(OUT1) USING(CTL1)
SORT FROM(IN) TO(OUT2) USING(CTL2)
SORT FROM(IN) TO(OUT3) USING(CTL3)
//CTL1CNTL DD *
SORT FIELDS=COPY,STOPAFT=1
INCLUDE COND=(1,3,CH,EQ,C'000')
//*
//CTL2CNTL DD *
SORT FIELDS=COPY,STOPAFT=1
INCLUDE COND=(1,3,CH,EQ,C'188')
//*
//CTL3CNTL DD *
SORT FIELDS=COPY,STOPAFT=1
INCLUDE COND=(1,3,CH,EQ,C'999')
//*
//STEP2 EXEC PGM=SYNCTOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=*.STEP1.OUT1,DISP=SHR
// DD DSN=*.STEP1.OUT2,DISP=SHR
// DD DSN=*.STEP1.OUT3,DISP=SHR
//TOOLIN DD *
COUNT FROM(IN) NOTEQUAL(03) RC4
/*