Alissa Margulies
SYNCSORT Support
Joined: 25 Jul 2007 Posts: 496 Location: USA
|
|
|
|
Hello Aron.
Bill is correct. Here is a shortened example of how Syncsort can accomplish this task. This example only takes into account 12 fields. It will need to be modified to support 99 fields.
Code: |
//STEP1 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTOUT DD DISP=(NEW,PASS),SPACE=(TRK,1),UNIT=SYSDA,
// DSN=&&OUT1
//SORTIN DD *
J7185 J7183 J7184 J7180 J7186 J7190 J7189 J7197 J7194 J7193 38205 36500
//SYSIN DD *
SORT FIELDS=COPY
OUTFIL BUILD=(1:1,5,/,
1:7,5,/,
1:13,5,/,
1:19,5,/,
1:25,5,/,
1:31,5,/,
1:37,5,/,
1:43,5,/,
1:49,5,/,
1:55,5,/,
1:61,5,/,
1:67,5)
/*
//STEP2 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTOUT DD DISP=(NEW,PASS),UNIT=SYSDA,SPACE=(TRK,1),
// DSN=&&OUT2
//SORTIN DD DISP=SHR,DSN=&&OUT1
//SYSIN DD *
SORT FIELDS=(1,5,CH,A)
OUTREC IFTHEN=(WHEN=INIT,
BUILD=(1:SEQNUM,3,ZD,1,5)),
IFTHEN=(WHEN=(1,3,ZD,EQ,1),
BUILD=(1X,4,5,67Z)),
IFTHEN=(WHEN=(1,3,ZD,EQ,2),
BUILD=(1X,6Z,4,5,61Z)),
IFTHEN=(WHEN=(1,3,ZD,EQ,3),
BUILD=(1X,12Z,4,5,55Z)),
IFTHEN=(WHEN=(1,3,ZD,EQ,4),
BUILD=(1X,18Z,4,5,49Z)),
IFTHEN=(WHEN=(1,3,ZD,EQ,5),
BUILD=(1X,24Z,4,5,43Z)),
IFTHEN=(WHEN=(1,3,ZD,EQ,6),
BUILD=(1X,30Z,4,5,37Z)),
IFTHEN=(WHEN=(1,3,ZD,EQ,7),
BUILD=(1X,36Z,4,5,31Z)),
IFTHEN=(WHEN=(1,3,ZD,EQ,8),
BUILD=(1X,42Z,4,5,25Z)),
IFTHEN=(WHEN=(1,3,ZD,EQ,9),
BUILD=(1X,48Z,4,5,19Z)),
IFTHEN=(WHEN=(1,3,ZD,EQ,10),
BUILD=(1X,54Z,4,5,13Z)),
IFTHEN=(WHEN=(1,3,ZD,EQ,11),
BUILD=(1X,60Z,4,5,7Z)),
IFTHEN=(WHEN=(1,3,ZD,EQ,12),
BUILD=(1X,66Z,4,5,1Z))
/*
//STEP3 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTOUT DD SYSOUT=*
//SORTIN DD DISP=SHR,DSN=&&OUT2
//SYSIN DD *
SORT FIELDS=(1,1,CH,A)
DUPKEYS SUM=(2,4,6,4,10,4,14,4,18,4,22,4,
26,4,30,4,34,4,38,4,42,4,46,4,
50,4,54,4,58,4,62,4,66,4,70,4),FORMAT=BI
OUTREC BUILD=(2,71)
/*
|
Hope this helps.
Regards, |
|