Joinkeys applications of DFSORT is a very useful application to match and merge files. The below example joins two input datasets based on a key. The two datasets may have the keys in different data formats, so we can use various data conversion techniques of SORT using INREC in the JNF*CNTL files. Matched records, Records which are only present in dataset 1 and records which are present only in dataset 2 can be segregated using this technique.
//JS010 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//IN1 DD DSN=ATOM.INPUT.DATASET1,DISP=SHR
//IN2 DD DSN=ATOM.INPUT.DATASET2,DISP=SHR
//SYMNAMES DD *
IN1_CUST_ZD,3,6,ZD
IN2_CUST_PD,6,4,PD
IN2_CUST_ZD,=,6,ZD
//JNF1CNTL DD *
INREC OVERLAY=(IN1_CUST_ZD:IN1_CUST_ZD,TO=ZDF,LENGTH=6)
//JNF2CNTL DD *
INREC OVERLAY=(IN2_CUST_PD:IN2_CUST_PD,TO=ZDF,LENGTH=6)
//OUT1 DD SYSOUT=*
//OUT2 DD SYSOUT=*
//OUT12 DD DSN=ATOM.OUTPUT.DATASET.MATCHED,
// RECFM=FB,
// LRECL=13,
// DSORG=PS,
// AVGREC=U,
// SPACE=(TRK,(800,100),RLSE),
// DISP=(NEW,CATLG,KEEP),
// UNIT=SYSDA
//SYSIN DD *
JOINKEYS F1=IN1,FIELDS=(IN1_CUST_ZD,A)
JOINKEYS F2=IN2,FIELDS=(IN2_CUST_ZD,A)
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:1,8,F2:1,256,?)
OPTION COPY
OUTFIL FNAMES=OUT12,INCLUDE=(265,1,CH,EQ,C'B'),
BUILD=(1:1,8,9:21,3,PD,TO=ZDF,LENGTH=5)
OUTFIL FNAMES=OUT1,INCLUDE=(265,1,CH,EQ,C'1'),
BUILD=(1,8)
OUTFIL FNAMES=OUT2,INCLUDE=(265,1,CH,EQ,C'2'),
BUILD=(9,256)
/*
//JS010 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//IN1 DD DSN=ATOM.INPUT.DATASET1,DISP=SHR
//IN2 DD DSN=ATOM.INPUT.DATASET2,DISP=SHR
//SYMNAMES DD *
IN1_CUST_ZD,3,6,ZD
IN2_CUST_PD,6,4,PD
IN2_CUST_ZD,=,6,ZD
//JNF1CNTL DD *
INREC OVERLAY=(IN1_CUST_ZD:IN1_CUST_ZD,TO=ZDF,LENGTH=6)
//JNF2CNTL DD *
INREC OVERLAY=(IN2_CUST_PD:IN2_CUST_PD,TO=ZDF,LENGTH=6)
//OUT1 DD SYSOUT=*
//OUT2 DD SYSOUT=*
//OUT12 DD DSN=ATOM.OUTPUT.DATASET.MATCHED,
// RECFM=FB,
// LRECL=13,
// DSORG=PS,
// AVGREC=U,
// SPACE=(TRK,(800,100),RLSE),
// DISP=(NEW,CATLG,KEEP),
// UNIT=SYSDA
//SYSIN DD *
JOINKEYS F1=IN1,FIELDS=(IN1_CUST_ZD,A)
JOINKEYS F2=IN2,FIELDS=(IN2_CUST_ZD,A)
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:1,8,F2:1,256,?)
OPTION COPY
OUTFIL FNAMES=OUT12,INCLUDE=(265,1,CH,EQ,C'B'),
BUILD=(1:1,8,9:21,3,PD,TO=ZDF,LENGTH=5)
OUTFIL FNAMES=OUT1,INCLUDE=(265,1,CH,EQ,C'1'),
BUILD=(1,8)
OUTFIL FNAMES=OUT2,INCLUDE=(265,1,CH,EQ,C'2'),
BUILD=(9,256)
/*
No comments:
Post a Comment