Portal | References | Downloads | Info | Programs | JCLs | Mainframe wiki | Quick Ref
IBM Mainframe Forum Index
 
Register
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Profile Log in to check your private messages Log in
 
Creating a single-record file with COUNT from multiple input

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> DFSORT/ICETOOL
View previous topic :: :: View next topic  
Author Message
andyc13319

New User


Joined: 06 Oct 2020
Posts: 1
Location: Thaland

PostPosted: Tue Oct 06, 2020 8:19 pm    Post subject: Creating a single-record file with COUNT from multiple input
Reply with quote

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
View user's profile Send private message

Rohit Umarjikar

Global Moderator


Joined: 21 Sep 2010
Posts: 2492
Location: NY,USA

PostPosted: Tue Oct 06, 2020 10:44 pm    Post subject:
Reply with quote

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
View user's profile Send private message
sergeyken

Active Member


Joined: 29 Apr 2008
Posts: 865
Location: Maryland

PostPosted: Tue Oct 06, 2020 10:48 pm    Post subject:
Reply with quote

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
View user's profile Send private message
Joerg.Findeisen

Active User


Joined: 15 Aug 2015
Posts: 343
Location: Bamberg, Germany

PostPosted: Tue Oct 06, 2020 11:07 pm    Post subject:
Reply with quote

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
View user's profile Send private message
Joerg.Findeisen

Active User


Joined: 15 Aug 2015
Posts: 343
Location: Bamberg, Germany

PostPosted: Wed Oct 07, 2020 5:43 am    Post subject:
Reply with quote

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
View user's profile Send private message
sergeyken

Active Member


Joined: 29 Apr 2008
Posts: 865
Location: Maryland

PostPosted: Wed Oct 07, 2020 5:31 pm    Post subject:
Reply with quote

A strange “requirement” of TS was, to do this “in a single step”...
Remains unclear: the JCL step, or SORT step??
Back to top
View user's profile Send private message
sergeyken

Active Member


Joined: 29 Apr 2008
Posts: 865
Location: Maryland

PostPosted: Wed Oct 07, 2020 11:13 pm    Post subject:
Reply with quote

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
View user's profile Send private message
Joerg.Findeisen

Active User


Joined: 15 Aug 2015
Posts: 343
Location: Bamberg, Germany

PostPosted: Wed Oct 07, 2020 11:57 pm    Post subject:
Reply with quote

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
View user's profile Send private message
Joerg.Findeisen

Active User


Joined: 15 Aug 2015
Posts: 343
Location: Bamberg, Germany

PostPosted: Thu Oct 08, 2020 12:25 am    Post subject:
Reply with quote

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
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> DFSORT/ICETOOL All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts XML Parsing in COBOL creating "h... elixir1986 COBOL Programming 0 Sat Oct 31, 2020 7:19 am
No new posts Creating additional seqnum/Literal wh... bshkris DFSORT/ICETOOL 4 Wed Oct 21, 2020 9:35 pm
No new posts Hex Value - vb file replace old date ... premnath DFSORT/ICETOOL 10 Sat Oct 17, 2020 3:15 am
No new posts Related to using a file in comparison Kumar Sandeep JCL & VSAM 7 Fri Oct 16, 2020 5:30 pm
No new posts Copying data from prev record using SORT bshkris SYNCSORT 19 Thu Oct 15, 2020 3:29 pm

Back to Top
 
Job Vacancies | Forum Rules | Bookmarks | Subscriptions | FAQ | Polls | Contact Us