View previous topic :: View next topic
Author
Message
hac New User Joined: 18 Jan 2008Posts: 30 Location: mumbai
Hi
IS there any way to seperate repeated and non-repeated records in the file using ICETOOL, without changing order.
eg:
I/p file
---------------
mno
abc
xyz
xyz
abd
abd
O/p file 1
--------
mno
abc
O/p file 2
---------
xyz
xyz
abd
abd
Back to top
Pandora-Box Global Moderator Joined: 07 Sep 2006Posts: 1592 Location: Andromeda Galaxy
Code:
//STEP1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD *
mno
abc
xyz
xyz
abd
abd
//OUT DD SYSOUT=*
//DISC DD SYSOUT=*
//TOOLIN DD *
SELECT FROM(IN) TO(OUT) ON(1,3,CH) NODUPS DISCARD(DISC)
/*
Hope it helps
Back to top
Frank Yaeger DFSORT Developer Joined: 15 Feb 2005Posts: 7129 Location: San Jose, CA
hac,
premkrishnan's job does NOT create the output files "without changing order" as you requested. Here's a DFSORT/ICETOOL job that does. I assumed your input file has RECFM=FB and LRECL=80, but the job can be changed appropriately for other attributes.
Code:
//S1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD *
mno
abc
xyz
xyz
abd
abd
/*
//TNODUPS DD DSN=&&T1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//TDUPS DD DSN=&&T2,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//NODUPS DD DSN=... output file1 (FB/80)
//DUPS DD DSN=... output file2 (FB/80)
//TOOLIN DD *
SELECT FROM(IN) TO(TNODUPS) ON(1,3,CH) NODUPS DISCARD(TDUPS)-
USING(CTL1)
SORT FROM(TNODUPS) TO(NODUPS) USING(CTL2)
SORT FROM(TDUPS) TO(DUPS) USING(CTL2)
/*
//CTL1CNTL DD *
INREC OVERLAY=(81:SEQNUM,8,ZD)
/*
//CTL2CNTL DD *
SORT FIELDS=(81,8,ZD,A)
OUTREC BUILD=(1,80)
/*
Back to top
Skolusu Senior Member Joined: 07 Dec 2007Posts: 2205 Location: San Jose
Assuming that your input is FB and 80 bytes LRECL, the following DFSORT/ICETOOL JCl will give you the desired results.
Code:
//STEP0100 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD *
MNO
ABC
XYZ
XYZ
ABD
ABD
//T1 DD DSN=&&T1,DISP=(,PASS),SPACE=(CYL,(1,1),RLSE)
//DUPS DD SYSOUT=*
//UNQ DD SYSOUT=*
//TOOLIN DD *
COPY FROM(IN) USING(CTL1)
COPY FROM(T1) USING(CTL2)
//CTL1CNTL DD *
INREC IFTHEN=(WHEN=INIT,OVERLAY=(81:SEQNUM,8,ZD,RESTART=(1,3))),
IFTHEN=(WHEN=GROUP,BEGIN=(81,8,ZD,EQ,1),
PUSH=(89:1,80),RECORDS=2)
OUTFIL FNAMES=DUPS,INCLUDE=(81,8,ZD,GT,1),
IFOUTLEN=80,IFTHEN=(WHEN=(81,8,ZD,EQ,2),BUILD=(89,80,/,1,80))
OUTFIL FNAMES=T1,REMOVECC,NODETAIL,BUILD=(88X),
SECTIONS=(1,3,TRAILER3=(1,88))
//CTL2CNTL DD *
OMIT COND=(81,8,ZD,GT,1)
OUTFIL FNAMES=UNQ,BUILD=(1,80)
/*
Back to top
hac New User Joined: 18 Jan 2008Posts: 30 Location: mumbai
Thank You all for your replies...
I got the answer.
Back to top
Please enable JavaScript!