View previous topic :: View next topic
Author
Message
MFRASHEED Active User Joined: 14 Jun 2005Posts: 186 Location: USA
Here is a job which when account #'s in both files are matching, compares rest of the data and if different write out difference or matching data.
And this job uses two steps:
Code:
//STEP1 EXEC PGM=SYNCSORT
//SYSOUT DD SYSOUT=*
//SORTJNF1 DD *
ACCT1 AAA
ACCT2 BBB
ACCT3 CCC
ACCT4 DDD
ACCT5 EEE
/*
//SORTJNF2 DD *
ACCT1 AA1
ACCT2 BB1
ACCT3 CC1
ACCT4 DDD
/*
//SORTOUT DD DSN=&&T1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//SYSIN DD *
JOINKEYS FILE=F1,FIELDS=(1,5,A)
JOINKEYS FILE=F2,FIELDS=(1,5,A)
REFORMAT FIELDS=(F1:01,10,F2:6,5)
SORT FIELDS=COPY
/*
//STEP2 EXEC PGM=SYNCTOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=&&T1,DISP=(OLD,PASS)
//OUT1 DD SYSOUT=*
//OUT2 DD SYSOUT=*
//TOOLIN DD *
COPY FROM(IN) USING(CTL1)
/*
//CTL1CNTL DD *
OUTFIL FNAMES=OUT1,INCLUDE=(6,5,CH,EQ,11,5,CH)
OUTFIL FNAMES=OUT2,SAVE
/*
And I get expected results:
OUT2:
Code:
ACCT1 AAA AA1
ACCT2 BBB BB1
ACCT3 CCC CC1
OUT1:
Can this be accomplished in one step?
Back to top
santosh.ambaprasad New User Joined: 08 Mar 2009Posts: 16 Location: London
Hi
Try using SYNCTOOL........ let me know if you see any unexpected result..
Code:
//STEP1 EXEC PGM=SYNCTOOL
//SYSOUT DD SYSOUT=*
//JNF1 DD *
ACCT1AAA
ACCT2BBB
ACCT3CCC
ACCT4DDD
ACCT5EEE
/*
//JNF2 DD *
ACCT1AA1
ACCT2BB1
ACCT3CC1
ACCT4DDD
/*
//TEMP DD DSN=&&TEMP,DISP=MOD
//OUT1 DD *
//OUT2 DD *
//TOOLIN DD *
COPY FROM(JNF1) TO(TEMP) USING CNTL1
COPY FROM(JNF2) TO(TEMP) USING CNTL2
SPLICE FROM(TEMP) TO(OUT2) ON(3,8,CH) WITH(12,1) USING CNTL3
SPLICE FROM(TEMP) TO(OUT1) ON(3,5,CH) WITH(02,1) USING CNTL4
//CNTL1CNTL DD *
OUTREC=(C'11',1,8,C'11')
//CNTL2CNTL DD *
OUTREC=(C'22',1,8,C'22')
//CNTL3CNTL DD *
OUTFIL FNAMES=OUT2,INCLUDE=(11,2,CH,EQ,C'12')
//CNTL4CNTL DD *
OUTFIL FNAMES=OUT1,INCLUDE=(1,2,CH,EQ,C'12')
Back to top
Arun Raj Moderator Joined: 17 Oct 2006Posts: 2481 Location: @my desk
MFRASHEED ,
You can include those OUTFIL statements in your initial JOIN itself like this in order to accomplish this. And do remember to add OUT1 and OUT2 ddnames instead of SORTOUT.
Code:
//SYSIN DD *
JOINKEYS FILE=F1,FIELDS=(1,5,A)
JOINKEYS FILE=F2,FIELDS=(1,5,A)
REFORMAT FIELDS=(F1:01,10,F2:6,5)
SORT FIELDS=COPY
OUTFIL FNAMES=OUT1,INCLUDE=(6,5,CH,EQ,11,5,CH)
OUTFIL FNAMES=OUT2,SAVE
Back to top
MFRASHEED Active User Joined: 14 Jun 2005Posts: 186 Location: USA
Thanks to both of you, solution works.
Back to top
Arun Raj Moderator Joined: 17 Oct 2006Posts: 2481 Location: @my desk
You're welcome. Since you have SyncSort JOIN, I would recommend a simple Syncsort JOIN solution rather than a Synctool SPLICE job which would involve additional data passes.
Back to top
Please enable JavaScript!