Hi,
I would like to merge two files.
For ex. FILE-A has two fields like SSN and Year-to-date-contribution.
FILE-B has two fields like SSN and Quarterly-Contribution.
FILE-A
-------
101010101 1000.78
202020202 2000.13
FILE-B
--------
101010101 1004.78
202020202 2010.13
Now, i have to do the calculation like Year-to-date-contribution (-) Quarterly-contribution based on the SSN.
i.e., my output would contain SSN and TALLY fields.
FILE-C
--------
101010101 0004.00
202020202 0010.00
Can you please give your valuable inputs in this.
Thanks in advance
Syam
SYNCSORT - Column Merge
Moderators: Frank Yaeger, Moderator Group
SYNCSORT - Column Merge
Syam
First let me explain how i understood your requirement, and coded the JCL.If my understanding is wrong please correct me.
Say I have 2 input files , where i am considering first 2 bytes as my key
10 01 -> FILEA REC
10 19 -> FILEB REC
In step01 of my jcl i would generate a new FILEC which has data like
10 01 19 -> FILEC REC ( Ideally i am trying to build one rec for each key)
And then in step2
I would subtract 19 from 01 and genrate a new file FILED which has data
10 18 ----> FINAL OUTPUT.
Please find the JCL for the same below.
//TESTJCLX JOB (AAAA,04,T,0000),'SORTT',CLASS=C,MSGCLASS=T,
// NOTIFY=AAAAA
//*
/*JOBPARM L=9999
//*
//JOBLIB DD DSN=AAAA.PPROD.LOAD,DISP=SHR
//*
//STEP01 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//*
//IN1 DD *
10 01
//*
//IN2 DD *
10 19
//*
//TMP1 DD DSN=AAAA.TEST.TEMP,
// DISP=(MOD,PASS),
// UNIT=SYSDA,
// SPACE=(CYL,(1,2),RLSE),
// DCB=(RECFM=FB,BLKSIZE=0)
//OUT DD DSN=AAAA.TEST.SPLOUT,
// DISP=(,CATLG,DELETE),
// UNIT=SYSDA,
// SPACE=(CYL,(1,2),RLSE),
// DCB=(RECFM=FB,LRECL=8,BLKSIZE=800)
//LIST1 DD SYSOUT=*
//TOOLIN DD *
COPY FROM(IN1) TO(TMP1) USING(CPY1)
COPY FROM(IN2) TO(TMP1) USING(CPY2)
SPLICE FROM(TMP1) TO(OUT) ON(1,2,CH) WITH(7,2)
//CPY1CNTL DD *
OUTREC FIELDS=(1:1,2,4:4,2,7:2X)
//CPY2CNTL DD *
OUTREC FIELDS=(1:1,2,7:4,2)
//*
//STEP02 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//*
//IN1 DD DSN=AAAA.TEST.SPLOUT,
// DISP=SHR
//*
//OUT DD DSN=AAAA.TEST.SPLOUT1,
// DISP=(,CATLG,DELETE),
// UNIT=SYSDA,
// SPACE=(CYL,(1,2),RLSE),
// DCB=(RECFM=FB,LRECL=5,BLKSIZE=500)
//LIST1 DD SYSOUT=*
//TOOLIN DD *
COPY FROM(IN1) TO(OUT) USING(CPY1)
//CPY1CNTL DD *
OUTFIL FNAMES=OUT,
BUILD=(1,3,(7,2,ZD,SUB,4,2,ZD),EDIT=(TT),SIGNS=(+,-))
Note : This jcl can be modified as per your LRECL of files and field
positions.
Thanks
Veera.
First let me explain how i understood your requirement, and coded the JCL.If my understanding is wrong please correct me.
Say I have 2 input files , where i am considering first 2 bytes as my key
10 01 -> FILEA REC
10 19 -> FILEB REC
In step01 of my jcl i would generate a new FILEC which has data like
10 01 19 -> FILEC REC ( Ideally i am trying to build one rec for each key)
And then in step2
I would subtract 19 from 01 and genrate a new file FILED which has data
10 18 ----> FINAL OUTPUT.
Please find the JCL for the same below.
//TESTJCLX JOB (AAAA,04,T,0000),'SORTT',CLASS=C,MSGCLASS=T,
// NOTIFY=AAAAA
//*
/*JOBPARM L=9999
//*
//JOBLIB DD DSN=AAAA.PPROD.LOAD,DISP=SHR
//*
//STEP01 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//*
//IN1 DD *
10 01
//*
//IN2 DD *
10 19
//*
//TMP1 DD DSN=AAAA.TEST.TEMP,
// DISP=(MOD,PASS),
// UNIT=SYSDA,
// SPACE=(CYL,(1,2),RLSE),
// DCB=(RECFM=FB,BLKSIZE=0)
//OUT DD DSN=AAAA.TEST.SPLOUT,
// DISP=(,CATLG,DELETE),
// UNIT=SYSDA,
// SPACE=(CYL,(1,2),RLSE),
// DCB=(RECFM=FB,LRECL=8,BLKSIZE=800)
//LIST1 DD SYSOUT=*
//TOOLIN DD *
COPY FROM(IN1) TO(TMP1) USING(CPY1)
COPY FROM(IN2) TO(TMP1) USING(CPY2)
SPLICE FROM(TMP1) TO(OUT) ON(1,2,CH) WITH(7,2)
//CPY1CNTL DD *
OUTREC FIELDS=(1:1,2,4:4,2,7:2X)
//CPY2CNTL DD *
OUTREC FIELDS=(1:1,2,7:4,2)
//*
//STEP02 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//*
//IN1 DD DSN=AAAA.TEST.SPLOUT,
// DISP=SHR
//*
//OUT DD DSN=AAAA.TEST.SPLOUT1,
// DISP=(,CATLG,DELETE),
// UNIT=SYSDA,
// SPACE=(CYL,(1,2),RLSE),
// DCB=(RECFM=FB,LRECL=5,BLKSIZE=500)
//LIST1 DD SYSOUT=*
//TOOLIN DD *
COPY FROM(IN1) TO(OUT) USING(CPY1)
//CPY1CNTL DD *
OUTFIL FNAMES=OUT,
BUILD=(1,3,(7,2,ZD,SUB,4,2,ZD),EDIT=(TT),SIGNS=(+,-))
Note : This jcl can be modified as per your LRECL of files and field
positions.
Thanks
Veera.
FREE TUTORIALS
Tutorials
Free tutorials from mainframegurukul
- JCL Tutorial
Covers all important JCL concepts. - Cobol Tutorial
This tutorials covers all Cobol Topics from STRING to COMP-3. - DB2 Tutorial
DB2 Tutorial focuses on DB2 COBOL Programming. - SORT Tutorial
This Tutorial covers all important aspects of DFSORT with examples - CICS Tutorial
This CICS tutorial covers CICS concepts and CICS Basics, CICS COBOL Programming.
Interview
Mainframe Interview questions
- Cobol Interview Questions
50+ Interview Questions - JCL Interview Questions
50+ Interview Questions - DB2 Interview Questions
100+ Interview Questions - CICS Interview Questions
70+ Interview Questions - VSAM Interview Questions
27 Interview Questions
Other References
Mainframe Tools and others
- XPEDITER Reference
Explains how we can debug a program - FILEAID Reference
Explains how to browse , edit and delete datasets - Change Man Reference
Quick Start tutorial on Changeman - Abend Reference
Important Abend codes explained - FaceBook Page
MainframeGurukul FaceBook Page - LinkedIn Page
MainframeGurkul Linkedin Page