Portal | Manuals | References | Downloads | Info | Programs | JCLs | Mainframe wiki | Quick Ref
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Profile Log in to check your private messages Log in
 
Get child record count for every root element - Syncsort

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> JCL & VSAM
View previous topic :: :: View next topic  
Author Message
Vijayakumar Mani

New User


Joined: 24 Oct 2007
Posts: 11
Location: Salem

PostPosted: Fri May 30, 2008 11:23 am    Post subject: Get child record count for every root element - Syncsort
Reply with quote

Is there any way to get the count of child records for individual parent using Syncsort?

Sample Input:
Code:
ROOT1  DATA1
CHILD1
CHILD2
CHILD3
.
.
ROOT2  DATA2
CHILD1
CHILD2
CHILD3
.
.



Desired Output:
Code:
DATA1 Child Count
DATA2 Child Count
.
.
.


Thanks,
Vijay
Back to top
View user's profile Send private message

ParagChouguley

Active User


Joined: 03 Feb 2007
Posts: 175
Location: PUNE(INDIA)

PostPosted: Fri May 30, 2008 2:08 pm    Post subject:
Reply with quote

Hi,
Here is a sysncsort job for your requirement. It may require a change based on your actual data.
Code:

//S1      EXEC PGM=SYNCTOOL             
//TOOLMSG DD SYSOUT=*                 
//DFSMSG  DD SYSOUT=*                 
//IN1     DD *                         
ROOT1  DATA1                           
CHILD1                                 
CHILD2                                 
CHILD3                                 
ROOT2  DATA2                           
CHILD1                                 
CHILD2                                 
ROOT3  DATA3                           
CHILD1                                 
CHILD2                                 
CHILD3                                 
CHILD4                                 
CHILD5                                 
ROOT4  DATA4
ROOT5  DATA5
ROOT6  DATA6
CHILD1       
ROOT7  DATA7
/*                                     
//OUT1    DD DSN=OUTPUT-FILE-NAME,     
//      DSORG=PS,RECFM=FB,             
//      DISP=(NEW,CATLG,DELETE)         
//TEMP1   DD DSN=&&TEMP1,               
//      DSORG=PS,RECFM=FB,             
//      DISP=(NEW,CATLG,DELETE)         
//TEMP2   DD DSN=&&TEMP2,               
//      DSORG=PS,RECFM=FB,             
//      DISP=(NEW,CATLG,DELETE)         
//TEMP3   DD DSN=&&TEMP3,               
//      DSORG=PS,RECFM=FB,             
//      DISP=(NEW,CATLG,DELETE)         
//TOOLIN  DD *                                                       
    SORT FROM(IN1) TO(TEMP1) USING(SRT1)                             
    SORT FROM(TEMP1) TO(TEMP2) USING(SRT2)                           
    SPLICE FROM(TEMP2) TO(TEMP3) ON(101,10,ZD) WITH(91,10) KEEPNODUPS
    COPY FROM(TEMP3) TO(OUT1) USING(SRT3)                             
/*                                                                   
//SRT1CNTL DD *                                                       
    INREC  IFTHEN=(WHEN=INIT,                                         
             BUILD=(1,80,SEQNUM,10,ZD,SEQNUM,10,ZD,RESTART=(1,4))),   
           IFTHEN=(WHEN=(1,4,CH,EQ,C'ROOT'),                         
             BUILD=(1,100,81,10,C'A')),                               
           IFTHEN=(WHEN=(1,5,CH,EQ,C'CHILD'),                         
             BUILD=(1,100,(81,10,ZD,SUB,91,10,ZD),EDIT=(TTTTTTTTTT), 
                  C'B'))                                             
    SORT FIELDS=(101,11,ZD,A,91,10,ZD,D)                             
    OUTREC IFTHEN=(WHEN=(111,1,CH,EQ,C'A'),                           
             OVERLAY=(91:C'0000000000'))       
/*                                             
//*                                             
//SRT2CNTL DD *                                 
  SORT FIELDS=(101,11,ZD,A)                     
  SUM FIELDS=NONE                               
/*                                             
//SRT3CNTL DD *                                 
  OPTION COPY                                   
  OUTREC FIELDS=(8,7,91,10)                     
/*                                             



Output:
Code:

DATA1  0000000003
DATA2  0000000002
DATA3  0000000005
DATA4  0000000000
DATA5  0000000000
DATA6  0000000001
DATA7  0000000000


--Parag
Back to top
View user's profile Send private message
Vijayakumar Mani

New User


Joined: 24 Oct 2007
Posts: 11
Location: Salem

PostPosted: Fri May 30, 2008 4:22 pm    Post subject: Reply to: Get child record count for every root element - Sy
Reply with quote

Hi Parag,
Thank you for your valuable reply. It is working fine.

How to get the data alone for the specific count(Say 5) ?

Code:
DATA1  0000000003
DATA2  0000000002
DATA3  0000000005
DATA4  0000000000
DATA5  0000000000
DATA6  0000000001
DATA7  0000000000


Output should be DATA3 since the count is 5. Count is not needed in the output.

Is it possible to get this output in the same step that is used above to get the count?
Back to top
View user's profile Send private message
ParagChouguley

Active User


Joined: 03 Feb 2007
Posts: 175
Location: PUNE(INDIA)

PostPosted: Fri May 30, 2008 5:01 pm    Post subject:
Reply with quote

Modify Last sort card SRT3 to :
Code:

//SRT3CNTL DD *                                 
  OPTION COPY                                   
  INCLUDE COND=(8,10,ZD,EQ,+5)
  OUTREC FIELDS=(8,7)                     
/* 


--Parag
Back to top
View user's profile Send private message
shankar.v

Active User


Joined: 25 Jun 2007
Posts: 196
Location: Bangalore

PostPosted: Fri May 30, 2008 7:53 pm    Post subject:
Reply with quote

Hi Vijayakumar Mani,

Please check with the below code for your requirement.
Code:
// EXEC PGM=SYNCTOOL                 
//INFILE DD *                       
ROOT1  DATA1                         
CHILD1                               
CHILD2                               
CHILD3                               
ROOT2  DATA2                         
CHILD1                               
CHILD2                               
ROOT3  DATA3                         
CHILD1                               
CHILD2                               
CHILD3                               
CHILD4                               
CHILD5                               
ROOT4  DATA4                         
ROOT5  DATA5                         
ROOT6  DATA6                         
CHILD1                               
ROOT7  DATA7                                                           
/*                                                                     
//T DD DSN=&&T,DISP=(,PASS)                                             
//OUT DD SYSOUT=*                                                       
//DFSMSG DD SYSOUT=*                                                   
//TOOLMSG DD SYSOUT=*                                                   
//TOOLIN DD *                                                           
 COPY FROM(INFILE) TO(T) USING(CTL1)                                   
 SPLICE FROM(T) TO(OUT) ON(14,8,CH) WITH(6,8) USING(CTL2)               
/*                                                                     
//CTL1CNTL DD *                                                         
 INREC IFTHEN=(WHEN=INIT,OVERLAY=(81:SEQNUM,8,ZD)),                     
       IFTHEN=(WHEN=(1,4,CH,EQ,C'ROOT'),OVERLAY=(81:SEQNUM,8,ZD)),     
       IFTHEN=(WHEN=NONE,OVERLAY=(89:SEQNUM,8,ZD,                       
                                  81:81,8,ZD,SUB,89,8,ZD,M11,LENGTH=8))
 OUTFIL SECTIONS=(81,8,HEADER3=(8,5,14:81,8),                           
 TRAILER3=(6:COUNT-1=(M11,LENGTH=8),14:81,8)),                         
 REMOVECC,NODETAIL                                                     
/*                                         
//CTL2CNTL DD *                           
 OUTFIL INCLUDE=(6,8,ZD,EQ,+5),OUTREC=(1,5)
/*                                         
//

Output:
Code:
DATA3

Thanks,
Shankar
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 -> JCL & VSAM All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts Extract Record using range of Data scorp_rahul23 DFSORT/ICETOOL 3 Wed Nov 15, 2017 11:54 pm
No new posts Squeeze record left so that zeroes ar... Vignesh Sid SYNCSORT 5 Fri Nov 10, 2017 1:40 pm
No new posts Formatting multiple records to a sing... Vignesh Sid SYNCSORT 3 Tue Nov 07, 2017 12:22 pm
No new posts Format Last Record differently from r... Learncoholic DFSORT/ICETOOL 5 Tue Oct 24, 2017 12:01 pm
No new posts How to write Rexx program to size and... sreejeshcs CLIST & REXX 14 Thu Oct 12, 2017 7:26 am

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