View previous topic :: View next topic
|
Author |
Message |
pjnithin
Active User
Joined: 22 Dec 2005 Posts: 116
|
|
|
|
I need to reformat a file after sorting it based on some keys usinf ICETOOL.
Input file has a length of 200.
Output file has a length of 80.
I need to sort the input file on 150-160 position. The output files shud have the first 10 positions with those values in the input file from position 150-160, and from 11-80 shud be spaces. And there shud not be any duplicates. How can I do it, please help.
Nithin. |
|
Back to top |
|
|
Phantom
New User
Joined: 04 Sep 2005 Posts: 25
|
|
|
|
Nithin,
When you say 150-160, it actually occupies 11 bytes (not 10). Under the assumption that your key is just 10 bytes (150 - 159), use the following sort card.
Using SORT
Code: |
//R010 EXEC PGM=SORT
//SORTIN DD DSN=your.input.file,
// DISP=SHR
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=(150,10,CH,A) * SORT ON Cols 150-159 *
SUM FIELDS=NONE * REMOVE DUPLICATES *
OUTREC FIELDS=(1:150,10, * COPY 150-159 to Col 1 in output *
80:X) * FILL SPACES TILL COLUMN 80 *
/*
|
Hope this helps,
Cheers,
Phantom |
|
Back to top |
|
|
Frank Yaeger
DFSORT Developer
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
|
|
|
|
Here's an alternative way to do it with DFSORT/ICETOOL:
Code: |
//S1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=... input file (FB/200)
//OUT DD DSN=... output file (FB/80)
//TOOLIN DD *
SELECT FROM(IN) TO(OUT) ON(150,10,CH) FIRST USING(CTL1)
/*
//CTL1CNTL DD *
OUTFIL FNAMES=OUT,OUTREC=(150,10,80:X)
/*
|
|
|
Back to top |
|
|
|