Alain Benveniste Beginner
Joined: 04 May 2003 Posts: 92 Topics: 4 Location: Paris, France
|
Posted: Mon Jun 13, 2005 5:00 pm Post subject: |
|
|
Mallu,
The idea is to cut the records of file 2 in to 2 pieces to be able to do a sort on the date.
First part is considered as HDR, second as TRL. Records from file 1 are considered as details.
I flagged HDR with 0, details with 1, TRL with 2. All the records between HDR & TRL are selected, the others not.
To understand what the logic is about this you have to take a look to this thread :
http://www.mvsforums.com/helpboards/viewtopic.php?t=3793
To run this JCL you need the last December DFSORT PTF UQ95213 or UQ95214.
Code: |
//STEP0001 EXEC PGM=ICETOOL
//DFSMSG DD SYSOUT=*
//TOOLMSG DD SYSOUT=*
//TOOLIN DD *
COPY FROM(IN1) TO(OUT1) USING(ICE0)
COPY FROM(IN2) USING(ICE1)
SORT FROM(OUT1) TO(OUT2) USING(ICE2)
COPY FROM(OUT2) TO(OUT3) USING(ICE3)
SPLICE FROM(OUT3) TO(OUTX) ON(82,5,ZD) WITH(1,13) WITH(81,6) -
WITHALL USING(ICE4)
/*
//IN1 DD *
K1 2004/02/01
K1 2004/03/01
K2 2004/01/01
K2 2004/02/01
K2 2004/09/14
K2 2004/09/16
/*
//IN2 DD *
K1 2002/01/01 2002/04/02 AA
K1 2002/04/03 2002/10/01 BB
K1 2002/10/02 2004/02/01 CC
K1 2004/02/03 2004/10/15 DD
K2 2002/10/01 2002/10/15 EE
K2 2002/10/16 2002/12/31 FF
K2 2003/01/01 2004/09/15 GG
/*
//OUT1 DD DSN=&&OUT1,
// DISP=(MOD,DELETE,DELETE),
// UNIT=SYSDA,
// SPACE=(TRK,(1,1),RLSE),
// DCB=(RECFM=FB,LRECL=81)
//OUT2 DD DSN=&&OUT2,
// DISP=(NEW,DELETE,DELETE),
// UNIT=SYSDA,
// SPACE=(TRK,(1,1),RLSE),
// DCB=(RECFM=FB,LRECL=96)
//OUT3 DD DSN=&&OUT3,
// DISP=(NEW,DELETE,DELETE),
// UNIT=SYSDA,
// SPACE=(TRK,(1,1),RLSE),
// DCB=(RECFM=FB,LRECL=86)
//OUTX DD SYSOUT=*
//ICE0CNTL DD *
INREC OVERLAY=(81:C'1')
/*
//ICE1CNTL DD *
OUTFIL FNAMES=OUT1,
OUTREC=(1,13,X,26,55,81:C'0',/,
1,2,X,15,10,X,26,2,81:C'2')
/*
//ICE2CNTL DD *
SORT FIELDS=(1,13,CH,A,81,1,ZD,A)
/*
//ICE3CNTL DD *
INREC IFTHEN=(WHEN=INIT,OVERLAY=(82:SEQNUM,5,ZD)),
IFTHEN=(WHEN=(81,1,CH,NE,C'2'),
OVERLAY=(87:SEQNUM,5,ZD,START=1,INCR=1),
HIT=NEXT),
IFTHEN=(WHEN=(81,1,CH,NE,C'0'),
OVERLAY=(92:SEQNUM,5,ZD,START=1,INCR=1),
HIT=NEXT),
IFTHEN=(WHEN=(81,1,CH,EQ,C'0'),
OVERLAY=(82:SEQNUM,5,ZD,START=1,INCR=1)),
IFTHEN=(WHEN=(81,1,CH,EQ,C'2'),
OVERLAY=(82:SEQNUM,5,ZD,START=1,INCR=1)),
IFTHEN=(WHEN=(87,5,ZD,NE,92,5,ZD),
OVERLAY=(82:82,5,ZD,SUB,92,5,ZD,M11,LENGTH=5))
OUTFIL FNAMES=OUT3,
OMIT=(87,5,ZD,EQ,92,5,ZD),
OUTREC=(1,86)
/*
//ICE4CNTL DD *
OUTFIL FNAMES=OUTX,
OMIT=(81,1,CH,EQ,C'2'),
OUTREC=(1,80)
/*
|
Alain |
|