001 Jason Caren 020302
002 Andrew K 005670
005 Thomas Jr. 050793
008 Ebby Arthur 053121
009 Simon 032010
011 Campbell 007600
012 Jhuan Jes 045018
015 Sion Mason 042809
019 Shane W 038910
023 Herman Tr 006109
File 2
------
Code:
001 Jason Caren 025027
005 Thomas Jr. 050793
006 Jerry Tom 036931
007 Schlember 000793
008 Ebby Arthur 050381
010 Crump Jo 035175
011 Campbell 010502
012 Jhuan Jes 045018
014 Calman 023611
019 Shane W 037103
021 Jane Well 043801
023 Herman Tr 012109
Addl details : RECFM=FB,LRECL=80 both files sorted individually on EMP-NUM-KEY.
Both files has to compare each other and prepare 3 reports like follows.
Output FILES reqired are
i) Records exist in File 1 only and sum of all salaries in trailer line.
ii) Records present only in File 2 and all salaries sum in trailer line.
iii) Difference of salary (File 1 sal - File 2 sal)
if employee present in both files.
Eg: Emp 001 --> 001 Jason Caren -19357 (File 1 Sal - File 2 Sal)
and sum of all these differences in trailer line.
Plz help with a solution. I searched the forum POSTs but not able to see similar one. If any one finds similar one plz let me know.
Joined: 25 Jun 2007 Posts: 196 Location: Bangalore
DS,
Please check with the following code for your requirement.
Code:
// EXEC PGM=ICETOOL
//DFSMSG DD SYSOUT=*
//TOOLMSG DD SYSOUT=*
//FILE1 DD *
001 JASON CAREN 020302
002 ANDREW K 005670
005 THOMAS JR. 050793
008 EBBY ARTHUR 053121
009 SIMON 032010
011 CAMPBELL 007600
012 JHUAN JES 045018
015 SION MASON 042809
019 SHANE W 038910
023 HERMAN TR 006109
/*
//FILE2 DD *
001 JASON CAREN 025027
005 THOMAS JR. 050793
006 JERRY TOM 036931
007 SCHLEMBER 000793
008 EBBY ARTHUR 050381
010 CRUMP JO 035175
011 CAMPBELL 010502
012 JHUAN JES 045018
014 CALMAN 023611
019 SHANE W 037103
021 JANE WELL 043801
023 HERMAN TR 012109
/*
//T DD DSN=&&T,DISP=(MOD,PASS),SPACE=(CYL,(1,1),RLSE)
//OUT DD DSN=&&OUT,DISP=(,PASS),SPACE=(CYL,(1,1),RLSE)
//F1ONLY DD SYSOUT=*
//F2ONLY DD SYSOUT=*
//BOTH DD SYSOUT=*
//TOOLIN DD *
COPY FROM(FILE1) TO(T) USING(CTL1)
COPY FROM(FILE2) TO(T) USING(CTL2)
SPLICE FROM(T) TO(OUT) ON(1,3,CH) WITHALL WITH(81,6) WITH(88,1) -
USING(CTL3) KEEPNODUPS
COPY FROM(OUT) TO(BOTH) USING(CTL4)
/*
//CTL1CNTL DD *
INREC OVERLAY=(87:C'11')
//CTL2CNTL DD *
INREC OVERLAY=(81:17,6,C'22')
//CTL3CNTL DD *
OUTFIL FNAMES=F1ONLY,
INCLUDE=(87,2,CH,EQ,C'11'),
OUTREC=(1,80),
TRAILER1=(C'SUM OF ALL SALARIES: ',TOT=(17,6,ZD,M11,LENGTH=8)),
REMOVECC
OUTFIL FNAMES=F2ONLY,
INCLUDE=(87,2,CH,EQ,C'22'),
OUTREC=(1,80),
TRAILER1=(C'SUM OF ALL SALARIES: ',TOT=(17,6,ZD,M11,LENGTH=8)),
REMOVECC
OUTFIL FNAMES=OUT,
INCLUDE=(87,2,CH,EQ,C'12'),
OUTREC=(1,16,17,6,ZD,SUB,81,6,ZD,EDIT=(STTTTT),SIGNS=(,-),
23,58)
/*
//CTL4CNTL DD *
OUTFIL FNAMES=BOTH,
TRAILER1=(C'SUM OF ALL SALARIES: ',TOT=(18,5,ZD,M11,LENGTH=8)),
REMOVECC
/*
//
F1ONLY:
Code:
002 ANDREW K 005670
009 SIMON 032010
015 SION MASON 042809
SUM OF ALL SALARIES: 00080489
F2ONLY:
Code:
006 JERRY TOM 036931
007 SCHLEMBER 000793
010 CRUMP JO 035175
014 CALMAN 023611
021 JANE WELL 043801
SUM OF ALL SALARIES: 00140311
BOTH:
Code:
001 JASON CAREN -04725
005 THOMAS JR. 00000
008 EBBY ARTHUR 02740
011 CAMPBELL -02902
012 JHUAN JES 00000
019 SHANE W 01807
023 HERMAN TR -06000
SUM OF ALL SALARIES: 00018174