View previous topic :: View next topic
|
Author |
Message |
chandan.inst
Active User
Joined: 03 Nov 2005 Posts: 275 Location: Mumbai
|
|
|
|
Hi All,
I have a wired requirement. My input file is Below
ACC TYPE
1 A
1 B
1 C
2 A
2 B
2 C
3 D
3 E
I want to sort this file on Account with eliminating duplicates But in this case I want to have preference for TYPE= A, means the record which will be written after eliminating duplicates will have preference for Type A.
if there is no records for particular account with type as A then any type can be written but only one row.
So in this case my out put needs to be
ACCOUNT TYPE
1 A
2 A
3 D
I agree this can be done with cobol program but is there any way this can be achieved using DFSORT
Thanks in Advance
Regards,
Chandan |
|
Back to top |
|
|
guptae
Moderator
Joined: 14 Oct 2005 Posts: 1208 Location: Bangalore,India
|
|
|
|
Hello Chandan,
Please use below sort card:
Code: |
SORT FIELDS=(1,1,CH,A,3,1,CH,A)
SUM FIELDS=NONE |
|
|
Back to top |
|
|
chandan.inst
Active User
Joined: 03 Nov 2005 Posts: 275 Location: Mumbai
|
|
|
|
Hi Ekta,
Thanks for your reply..
Sorry to say I was aware of this solution..and the type code which have mentioned if for the example purpose..
its not always true the required record will come first in sort order
For given example the type code is A so this solution will work but type code can be changed to 'B' or 'C'
Please let me know if I am missing anything
Regards,
Chandan |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
|
|
|
|
Hello,
Show a more complete set of input data and the output you want from this expanded input. Clearly explain what "For given example the type code is A so this solution will work but type code can be changed to 'B' or 'C' " means. It is not at all clear.
Possibly this will be easier to understand if you use more realistic values rather than alphabet soup. . .
When posting the data, use the Code tag and Preview your post to make sure it looks like you want. |
|
Back to top |
|
|
Skolusu
Senior Member
Joined: 07 Dec 2007 Posts: 2205 Location: San Jose
|
|
|
|
chandan.inst,
Assuming your input is FB recfm and 80 byte LRECL. use the following DFSORT/ICETOOL JCL which will give you the desired results. Depending on your type code you want to come first, change the 2nd IFTHEN statement to reflect the type code you interested.
Code: |
//STEP0100 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD *
1 A
1 B
1 C
2 A
2 B
2 C
3 D
3 E
//OUT DD SYSOUT=*
//TOOLIN DD *
SELECT FROM(IN) TO(OUT) ON(1,1,CH) FIRST USING(CTL1)
//CTL1CNTL DD *
INREC IFTHEN=(WHEN=INIT,OVERLAY=(81:C'1')),
IFTHEN=(WHEN=(3,1,CH,EQ,C'A'),OVERLAY=(81:C'0'))
SORT FIELDS=(1,1,CH,A,81,1,CH,A)
OUTFIL FNAMES=OUT,BUILD=(1,80)
//* |
|
|
Back to top |
|
|
chandan.inst
Active User
Joined: 03 Nov 2005 Posts: 275 Location: Mumbai
|
|
|
|
Thanks Kolusu and Dick for your help
Dick,
I will surely keep in mind point mentioned by you henceforth..
Regards,
Chandan |
|
Back to top |
|
|
|