MERGE Operator
Merges multiple input files (MERGE Operator) Example
Scenario -Merges the employee details and separates employee details based on the country code "IN", "US".
INPUT1 - MATEPK.INPUT.PSFILE
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
001 PAWAN MAINFRAME JPM AP IN
002 SRINIVAS TESTING ORACLE TG IN
003 SRIDHAR SAS CG OR US
004 VENKATESH ABAP CSC CA US
005 RAVI HADOOP CTS FL US
006 PRASAD HR INFOSYS MI US
007 RAJA TESTING IBM CA US
INPUT2 - MATEPK.INPUT.PSFILE4
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
008 KUMAR SAP BASIS TCS TN IN
009 RAMESH SAP SD ORACLE MN US
010 RAVINDER SAP ABAP INFOTECH AK US
JCL -
----+----1----+----2----+----3----+----4----+----5----+
//MATEPKME JOB (123),'MATEPK',CLASS=A,MSGCLASS=A,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*
//STEP01 EXEC PGM=ICETOOL
//INDD01 DD DSN=MATEPK.INPUT.PSFILE,DISP=SHR
//INDD02 DD DSN=MATEPK.INPUT.PSFILE4,DISP=SHR
//OUTDD1 DD DSN=MATEPK.OUTPUT.PSFILE3,
// DISP=(NEW,CATLG,DELETE),VOLUME=SER=DEVHD4,
// SPACE=(TRK,(1,1),RLSE),UNIT=SYSDA,
// DCB=(DSORG=PS,RECFM=FB,LRECL=80,BLKSIZE=800)
//OUTDD2 DD DSN=MATEPK.OUTPUT.PSFILE4,
// DISP=(NEW,CATLG,DELETE),VOLUME=SER=DEVHD4,
// SPACE=(TRK,(1,1),RLSE),UNIT=SYSDA,
// DCB=(DSORG=PS,RECFM=FB,LRECL=80,BLKSIZE=800)
//TOOLIN DD *
MERGE FROM(INDD01,INDD02) USING(CTL1)
/*
//CTL1CNTL DD *
MERGE FIELDS=(1,3,ZD,A)
OUTFIL FNAMES=OUTDD1,INCLUDE(60,2,CH,EQ,C'IN')
OUTFIL FNAMES=OUTDD2,INCLUDE(60,2,CH,EQ,C'US')
/*
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//
OUTPUT1 - MATEPK.OUTPUT.PSFILE3
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
001 PAWAN MAINFRAME JPM AP IN
002 SRINIVAS TESTING ORACLE TG IN
008 KUMAR SAP BASIS TCS TN IN
OUTPUT2 - MATEPK.OUTPUT.PSFILE4
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
003 SRIDHAR SAS CG OR US
004 VENKATESH ABAP CSC CA US
005 RAVI HADOOP CTS FL US
006 PRASAD HR INFOSYS MI US
007 RAJA TESTING IBM CA US
009 RAMESH SAP SD ORACLE MN US
010 RAVINDER SAP ABAP INFOTECH AK US
TOOLMSG (SDSF SPOOL) - Verify TOOLMSG for the return code of the submitted job.
Explaining Example -
- INDD01,INDD02 - Specifies the ddnames for input files.
- OUTDD1,OUTDD2 - Specifies the ddnames for output files.
- TOOLIN DD * - Specifies the ICETOOL statements for DFSORT.
- CTL1CNTL DD * - Specifies the DFSORT statements for processing.
- TOOLMSG - Specifies where to write the ICETOOL processing messages.
- DFSMSG - Specifies where to write the DFSORT processing messages.
- MERGE FROM(INDD,INDD1) USING(CTL1) - Merges the datasets INDD01, INDD02 based on the CTL1 condition.
- MERGE FIELDS=(1,3,ZD,A) - Merges the records based on the field exists at 1 to 3 colummns.
- OUTFIL FNAMES=OUTDD1,INCLUDE(60,2,CH,EQ,C'IN') - Separates the records which are having "IN" from 60-62 columns and copies them to OUTDD1 dataset.
- OUTFIL FNAMES=OUTDD2,INCLUDE(60,2,CH,EQ,C'US') - Separates the records which are having "US" from 60-62 columns and copies them to OUTDD2 dataset.