Frank Yaeger
DFSORT Developer
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
|
|
|
|
I assumed that by "The input file which is variable length file" you mean that it has RECFM=VB, and that it's not actually a RECFM=FB file with different numbers of blanks at the end.
Assuming it is RECFM=VB, here's a DFSORT/ICETOOL job that will do what you asked for (if it's actually FB, the solution will be different a bit different):
Code: |
//S1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=... input file (VB)
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//OUT DD DSN=... output file (VB)
//TOOLIN DD *
COPY FROM(IN) TO(T1) USING(CTL1)
SORT FROM(T1) TO(OUT) USING(CTL2)
/*
//CTL1CNTL DD *
INREC IFTHEN=(WHEN=INIT,BUILD=(1,4,21:C'5',22:5)),
IFTHEN=(WHEN=INIT,OVERLAY=(5:SEQNUM,8,ZD)),
IFTHEN=(WHEN=(25,8,CH,EQ,C'H000 000'),
OVERLAY=(5:SEQNUM,8,ZD,21:C'1')),
IFTHEN=(WHEN=NONE,
OVERLAY=(13:SEQNUM,8,ZD,
5:5,8,ZD,SUB,13,8,ZD,TO=ZD,LENGTH=8))
OUTREC IFTHEN=(WHEN=(25,8,CH,EQ,C'H000N001'),
OVERLAY=(21:C'3',25:C'H000N002')),
IFTHEN=(WHEN=(25,8,CH,EQ,C'L001 000'),
OVERLAY=(21:C'4')),
IFTHEN=(WHEN=(25,8,CH,EQ,C'L000N001'),
OVERLAY=(21:C'2',25:C'H000N001'))
/*
//CTL2CNTL DD *
OPTION EQUALS
SORT FIELDS=(5,8,ZD,A,21,1,CH,A)
OUTREC BUILD=(1,4,5:22)
/*
|
|
|