MVSFORUMS.com A Community of and for MVS Professionals
View previous topic :: View next topic
Author
Message
emadhubabu Beginner Joined: 03 Sep 2005 Posts: 13 Topics: 6
Posted: Tue Nov 03, 2009 8:33 am Post subject: Sort data at one posi of file based on value at other posi
HI All,
I need help in SORT
File :
Total file is of length 34
position 1-4 = policy number
Position 5 = transaction type ( 1 or 2 or 3)
Position 6-10 = some data
position 11 will have a date of 8 char if transaction type is 1 ( at position 5 )
position 20 will have a date of 8 char if transaction type is 2 ( at position 5 )
position 30 will have a date of 8 char if transaction type is 2 ( at position 5 )
Data is as below
Code:
----+----1----+----2----+----3----
***************************** Top
10011XXXXX200911014444444444444444
10011XXXXX200910012222222222222222
10011XXXXX200912011111111111111111
10011XXXXX200911020000000000000000
10011XXXXX200911023333333333333333
10012XXXXXYYYYYYYY2009100244444444
10012XXXXXYYYYYYYY2009120222222222
10012XXXXXYYYYYYYY2009110211111111
10012XXXXXYYYYYYYY2009120300000000
10012XXXXXYYYYYYYY2009120333333333
100134444444444444444ZZZZZ20091103
100132222222222222222ZZZZZ20091003
100131111111111111111ZZZZZ20091203
100130000000000000000ZZZZZ20091103
100133333333333333333ZZZZZ20091204
10051XXXXX200911014444444444444444
10051XXXXX200910012222222222222222
10051XXXXX200912011111111111111111
10051XXXXX200911020000000000000000
10051XXXXX200911023333333333333333
10052XXXXXYYYYYYYY2009100244444444
10052XXXXXYYYYYYYY2009120222222222
10052XXXXXYYYYYYYY2009110211111111
10052XXXXXYYYYYYYY2009120300000000
10052XXXXXYYYYYYYY2009120333333333
100534444444444444444ZZZZZ20091103
100532222222222222222ZZZZZ20091003
100531111111111111111ZZZZZ20091203
100530000000000000000ZZZZZ20091103
100533333333333333333ZZZZZ20091204
10021XXXXX200911014444444444444444
10021XXXXX200910012222222222222222
10021XXXXX200912011111111111111111
10021XXXXX200911020000000000000000
10021XXXXX200911023333333333333333
10022XXXXXYYYYYYYY2009100244444444
10022XXXXXYYYYYYYY2009120222222222
10022XXXXXYYYYYYYY2009110211111111
10022XXXXXYYYYYYYY2009120300000000
10022XXXXXYYYYYYYY2009120333333333
100234444444444444444ZZZZZ20091103
100232222222222222222ZZZZZ20091003
100231111111111111111ZZZZZ20091203
100230000000000000000ZZZZZ20091103
100233333333333333333ZZZZZ20091204
1) Sort the 1-4 position first.
2) Sort the date at position 10 when transaction type 1, dont sort any data at other places
3) Sort the date at position 20 when transaction type 2, dont sort any data at other places
4) Sort the date at position 30 when transaction type 3, dont sort any data at other places
Code:
----+----1----+----2----+----3----
***************************** Top
10011XXXXX200910012222222222222222
10011XXXXX200911014444444444444444
10011XXXXX200911020000000000000000
10011XXXXX200911023333333333333333
10011XXXXX200912011111111111111111
10012XXXXXYYYYYYYY2009100244444444
10012XXXXXYYYYYYYY2009110211111111
10012XXXXXYYYYYYYY2009120222222222
10012XXXXXYYYYYYYY2009120300000000
10012XXXXXYYYYYYYY2009120333333333
100132222222222222222ZZZZZ20091003
100134444444444444444ZZZZZ20091103
100130000000000000000ZZZZZ20091103
100131111111111111111ZZZZZ20091203
100133333333333333333ZZZZZ20091204
10051XXXXX200910012222222222222222
10051XXXXX200911014444444444444444
10051XXXXX200911020000000000000000
10051XXXXX200911023333333333333333
10051XXXXX200912011111111111111111
10052XXXXXYYYYYYYY2009100244444444
10052XXXXXYYYYYYYY2009110211111111
10052XXXXXYYYYYYYY2009120222222222
10052XXXXXYYYYYYYY2009120300000000
10052XXXXXYYYYYYYY2009120333333333
100532222222222222222ZZZZZ20091003
100534444444444444444ZZZZZ20091103
100530000000000000000ZZZZZ20091103
100531111111111111111ZZZZZ20091203
100533333333333333333ZZZZZ20091204
10021XXXXX200910012222222222222222
10021XXXXX200911014444444444444444
10021XXXXX200911020000000000000000
10021XXXXX200911023333333333333333
10021XXXXX200912011111111111111111
10022XXXXXYYYYYYYY2009100244444444
10022XXXXXYYYYYYYY2009110211111111
10022XXXXXYYYYYYYY2009120222222222
10022XXXXXYYYYYYYY2009120300000000
10022XXXXXYYYYYYYY2009120333333333
100232222222222222222ZZZZZ20091003
100234444444444444444ZZZZZ20091103
100230000000000000000ZZZZZ20091103
100231111111111111111ZZZZZ20091203
100233333333333333333ZZZZZ20091204
Back to top
Frank Yaeger Sort Forum Moderator Joined: 02 Dec 2002 Posts: 1618 Topics: 31 Location: San Jose
Posted: Tue Nov 03, 2009 11:41 am Post subject:
The expected output you show does NOT match the rules you gave. For example, by the rules you gave, the second output record would be:
Code:
10012XXXXXYYYYYYYY 20091002 44444444
and not
Code:
10011XXXXX20091101 44444444 44444444
Given that you really want to follow the rules you specified, here's a DFSORT job that will do it.
Code:
//S1 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=... input file (FB/34)
//SORTOUT DD DSN=... output file (FB/34)
//SYSIN DD *
INREC IFTHEN=(WHEN=(5,1,CH,EQ,C'1'),OVERLAY=(35:11,8)),
IFTHEN=(WHEN=(5,1,CH,EQ,C'2'),OVERLAY=(35:20,8)),
IFTHEN=(WHEN=(5,1,CH,EQ,C'3'),OVERLAY=(35:30,8))
OPTION EQUALS
SORT FIELDS=(1,4,CH,A,35,8,CH,A)
OUTREC BUILD=(1,34)
SORTOUT would have the following records:
Code:
10011XXXXX20091001 22222222 22222222
10012XXXXXYYYYYYYY 20091002 44444444
100132222222222222 222ZZZZZ 20091003
10011XXXXX20091101 44444444 44444444
10011XXXXX20091102 00000000 00000000
10011XXXXX20091102 33333333 33333333
10012XXXXXYYYYYYYY 20091102 11111111
100134444444444444 444ZZZZZ 20091103
100130000000000000 000ZZZZZ 20091103
10011XXXXX20091201 11111111 11111111
10012XXXXXYYYYYYYY 20091202 22222222
10012XXXXXYYYYYYYY 20091203 00000000
10012XXXXXYYYYYYYY 20091203 33333333
100131111111111111 111ZZZZZ 20091203
100133333333333333 333ZZZZZ 20091204
10021XXXXX20091001 22222222 22222222
10022XXXXXYYYYYYYY 20091002 44444444
100232222222222222 222ZZZZZ 20091003
10021XXXXX20091101 44444444 44444444
10021XXXXX20091102 00000000 00000000
10021XXXXX20091102 33333333 33333333
10022XXXXXYYYYYYYY 20091102 11111111
100234444444444444 444ZZZZZ 20091103
100230000000000000 000ZZZZZ 20091103
10021XXXXX20091201 11111111 11111111
10022XXXXXYYYYYYYY 20091202 22222222
10022XXXXXYYYYYYYY 20091203 00000000
10022XXXXXYYYYYYYY 20091203 33333333
100231111111111111 111ZZZZZ 20091203
100233333333333333 333ZZZZZ 20091204
10051XXXXX20091001 22222222 22222222
10052XXXXXYYYYYYYY 20091002 44444444
100532222222222222 222ZZZZZ 20091003
10051XXXXX20091101 44444444 44444444
10051XXXXX20091102 00000000 00000000
10051XXXXX20091102 33333333 33333333
10052XXXXXYYYYYYYY 20091102 11111111
100534444444444444 444ZZZZZ 20091103
100530000000000000 000ZZZZZ 20091103
10051XXXXX20091201 11111111 11111111
10052XXXXXYYYYYYYY 20091202 22222222
10052XXXXXYYYYYYYY 20091203 00000000
10052XXXXXYYYYYYYY 20091203 33333333
100531111111111111 111ZZZZZ 20091203
100533333333333333 333ZZZZZ 20091204
_________________ Frank Yaeger - DFSORT Development Team (IBM)
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
DFSORT is on the Web at:
www.ibm.com/storage/dfsort
Back to top
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum