|
View previous topic :: View next topic
|
| Author |
Message |
andyc13319
New User
Joined: 06 Oct 2020 Posts: 1 Location: Thaland
|
|
|
|
Hi! I am new around here.
I would like to create a file with only one record containing record counts from 10 input files. I tried using the ICETOOL's COUNT operator;
| Code: |
COUNT FROM(INFILE1) WRITE(OUTFILE)
COUNT FROM(INFILE2) WRITE(OUTFILE)
COUNT FROM(INFILE3) WRITE(OUTFILE)
.
.
.
COUNT FROM(INFILE10) WRITE(OUTFILE) |
It just produces 10 records (15 byes each) to the OUTFILE
| Code: |
000000000000010
000000000000020
000000000000015
.
.
|
But I'd rather have all of them in just one record separated the counts with a '|' and the total length of OUTFLE must be 159 bytes.
| Code: |
| 000000000000010|000000000000020|000000000000015| ..... |
Is it possible to do that in just one ICETOOL step?
Thank you very much
Code'd |
|
| Back to top |
|
 |
Rohit Umarjikar
Global Moderator

Joined: 21 Sep 2010 Posts: 3108 Location: NYC,USA
|
|
|
|
Welcome!
What matters is in how many passes you do than doing in one step, You can try passing Count output to RESIZE in the same step or write another step.
You can use the RESIZE operator of DFSORT's ICETOOL to create one long record from many short ones. |
|
| Back to top |
|
 |
sergeyken
Senior Member

Joined: 29 Apr 2008 Posts: 2263 Location: USA
|
|
|
|
In SYNCSORT, there is an option MULTIIN; it could be used to get this result.
In DFSORT/ICETOOL, from the first sight it looks like that cannot be done in one step...
I’m lazy to spend more time on this quite senseless and useless requirement, sorry. |
|
| Back to top |
|
 |
Joerg.Findeisen
Senior Member

Joined: 15 Aug 2015 Posts: 1424 Location: Bamberg, Germany
|
|
|
|
| sergeyken wrote: |
| In DFSORT/ICETOOL, from the first sight it looks like that cannot be done in one step... |
I think it can be done in DFSORT, but need a bit more time to elaborate. |
|
| Back to top |
|
 |
Joerg.Findeisen
Senior Member

Joined: 15 Aug 2015 Posts: 1424 Location: Bamberg, Germany
|
|
|
|
May it be of help
| Code: |
//WHATEVER EXEC PGM=ICETOOL
//IN DD *
01SAMANTHA NNYY112 DEV1PROGRAMMER
01SAMANTHA NNYY112 DEV2MANAGER
01 MICHAEL NNYY121 DEV1PROGRAMMER
01 JAMES YNNY341 MGR4EXECUTIVE
/*
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//WHATEVER DD DISP=(MOD,PASS),LRECL=160
//SUMM DD SYSOUT=*,LRECL=159
//TOOLIN DD *
COPY FROM(IN) TO(WHATEVER) USING(#001)
COPY FROM(IN) TO(WHATEVER) USING(#002)
COPY FROM(IN) TO(WHATEVER) USING(#003)
COPY FROM(IN) TO(WHATEVER) USING(#004)
COPY FROM(IN) TO(WHATEVER) USING(#005)
COPY FROM(IN) TO(WHATEVER) USING(#006)
COPY FROM(IN) TO(WHATEVER) USING(#007)
COPY FROM(IN) TO(WHATEVER) USING(#008)
COPY FROM(IN) TO(WHATEVER) USING(#009)
COPY FROM(IN) TO(WHATEVER) USING(#010)
SPLICE FROM(WHATEVER) TO(SUMM) ON(160,1,CH) WITHANY USING(NUTS) -
WITH(001,16) WITH(017,16) WITH(033,16) WITH(049,16) WITH(065,16) -
WITH(081,16) WITH(097,16) WITH(113,16) WITH(129,16) WITH(145,15)
/*
//#001CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(1:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#002CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(17:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#003CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(33:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#004CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(49:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#005CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(65:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#006CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(81:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#007CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(97:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#008CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(113:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#009CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(129:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#010CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(145:COUNT=(M11,LENGTH=15),160:C'!')
/*
//NUTSCNTL DD *
OUTFIL BUILD=(1,159)
/* |
Output:
| Code: |
****** **************************** Datenanfang *******************************..
000000 000000000000004!000000000000004!000000000000004!000000000000004!00000000..
****** **************************** Datenende *********************************.. |
|
|
| Back to top |
|
 |
sergeyken
Senior Member

Joined: 29 Apr 2008 Posts: 2263 Location: USA
|
|
|
|
A strange “requirement” of TS was, to do this “in a single step”...
Remains unclear: the JCL step, or SORT step?? |
|
| Back to top |
|
 |
sergeyken
Senior Member

Joined: 29 Apr 2008 Posts: 2263 Location: USA
|
|
|
|
| Joerg.Findeisen wrote: |
May it be of help
| Code: |
//WHATEVER EXEC PGM=ICETOOL
//IN DD *
01SAMANTHA NNYY112 DEV1PROGRAMMER
01SAMANTHA NNYY112 DEV2MANAGER
01 MICHAEL NNYY121 DEV1PROGRAMMER
01 JAMES YNNY341 MGR4EXECUTIVE
/*
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//WHATEVER DD DISP=(MOD,PASS),LRECL=160
//SUMM DD SYSOUT=*,LRECL=159
//TOOLIN DD *
COPY FROM(IN) TO(WHATEVER) USING(#001)
COPY FROM(IN) TO(WHATEVER) USING(#002)
COPY FROM(IN) TO(WHATEVER) USING(#003)
COPY FROM(IN) TO(WHATEVER) USING(#004)
COPY FROM(IN) TO(WHATEVER) USING(#005)
COPY FROM(IN) TO(WHATEVER) USING(#006)
COPY FROM(IN) TO(WHATEVER) USING(#007)
COPY FROM(IN) TO(WHATEVER) USING(#008)
COPY FROM(IN) TO(WHATEVER) USING(#009)
COPY FROM(IN) TO(WHATEVER) USING(#010)
SPLICE FROM(WHATEVER) TO(SUMM) ON(160,1,CH) WITHANY USING(NUTS) -
WITH(001,16) WITH(017,16) WITH(033,16) WITH(049,16) WITH(065,16) -
WITH(081,16) WITH(097,16) WITH(113,16) WITH(129,16) WITH(145,15)
/*
//#001CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(1:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#002CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(17:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#003CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(33:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#004CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(49:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#005CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(65:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#006CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(81:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#007CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(97:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#008CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(113:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#009CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(129:COUNT=(M11,LENGTH=15),C'!',160:C'!')
/*
//#010CNTL DD *
OPTION COPY
OUTFIL NODETAIL,REMOVECC,BUILD=(160:X),
TRAILER1=(145:COUNT=(M11,LENGTH=15),160:C'!')
/*
//NUTSCNTL DD *
OUTFIL BUILD=(1,159)
/* |
Output:
| Code: |
****** **************************** Datenanfang *******************************..
000000 000000000000004!000000000000004!000000000000004!000000000000004!00000000..
****** **************************** Datenende *********************************.. |
|
Why not to create the same TRAILER=(1,COUNT=...
and using the same USING(#001) ?
Next the SPLICE would work with the same positions of each record, isn’t it? |
|
| Back to top |
|
 |
Joerg.Findeisen
Senior Member

Joined: 15 Aug 2015 Posts: 1424 Location: Bamberg, Germany
|
|
|
|
| I need to look up your suggestions, thank you for them. The code can be optimized to get rid of the more or less repeating TRAILER1 parts for sure. The SPLICE itself can not be shortened I think, but replaced by RESIZE as Rohit has suggested earlier. |
|
| Back to top |
|
 |
Joerg.Findeisen
Senior Member

Joined: 15 Aug 2015 Posts: 1424 Location: Bamberg, Germany
|
|
|
|
Another one:
| Code: |
//WHATEVER EXEC PGM=ICETOOL
//IN DD *
01SAMANTHA NNYY112 DEV1PROGRAMMER
01SAMANTHA NNYY112 DEV2MANAGER
01 MICHAEL NNYY121 DEV1PROGRAMMER
01 JAMES YNNY341 MGR4EXECUTIVE
/*
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//WHATEVER DD DISP=(MOD,PASS),LRECL=16
//SUMM DD SYSOUT=*,LRECL=159
//TOOLIN DD *
COPY FROM(IN) USING(CRAP)
COPY FROM(IN) USING(CRAP)
COPY FROM(IN) USING(CRAP)
COPY FROM(IN) USING(CRAP)
COPY FROM(IN) USING(CRAP)
COPY FROM(IN) USING(CRAP)
COPY FROM(IN) USING(CRAP)
COPY FROM(IN) USING(CRAP)
COPY FROM(IN) USING(CRAP)
COPY FROM(IN) USING(CRAP)
RESIZE FROM(WHATEVER) TO(SUMM) TOLEN(160) USING(NUTS)
/*
//CRAPCNTL DD *
OPTION COPY
OUTFIL FNAMES=(WHATEVER),REMOVECC,NODETAIL,
TRAILER1=(COUNT=(M11,LENGTH=15),C'!')
/*
//NUTSCNTL DD *
OUTFIL BUILD=(1,159)
/* |
Output:
| Code: |
********************************* TOP OF DATA **********************************..
000000000000004!000000000000004!000000000000004!000000000000004!000000000000004!..
******************************** BOTTOM OF DATA ********************************.. |
|
|
| Back to top |
|
 |
|
|
 |
All times are GMT + 6 Hours |
|