Using GROUP with BEGIN 'AND' KEYBEGIN



IBM's flagship sort product DFSORT for sorting, merging, copying, data manipulation and reporting. Includes ICETOOL and ICEGENER

Using GROUP with BEGIN 'AND' KEYBEGIN

Postby Robert Alford » Fri Jan 27, 2012 11:09 am

Hi,

I've read the manuals about GROUPing with BEGIN and KEYBEGIN and how they can be used together. What I am struggling with is how I can achieve my expected results below.

I know what BEGINs my group, but I can't determine the END of the group, other than change of key.

Input Data:
111 DATA ......  1
111 HEADING AAA  2
111 DATA ......  3
111 HEADING BBB  4
111 DATA ......  5
111 DATA ......  6
222 DATA ......  1
222 DATA ......  2
222 HEADING AAA  3
222 DATA ......  4
222 DATA ......  5
222 HEADING BBB  6
222 DATA ......  7


Expected Results I want to acheive:
111 DATA ......  1       
111 HEADING AAA  2 111AAA
111 DATA ......  3 111AAA
111 HEADING BBB  4 111BBB
111 DATA ......  5 111BBB
111 DATA ......  6 111BBB
222 DATA ......  1       
222 DATA ......  2       
222 HEADING AAA  3 222AAA
222 DATA ......  4 222AAA
222 DATA ......  5 222AAA
222 HEADING BBB  6 222BBB
222 DATA ......  7 222BBB




Code I've attempted, but is not quite there for what I wanted:
//TESTSORT EXEC ICETOOL                             
//SYSIN    DD *                                     
  COPY    FROM(SORTIN)   TO(SORTOUT)   USING(IND1) 
/*                                                 
//SORTIN   DD *                                     
111 DATA ......  1                                 
111 HEADING AAA  2                                 
111 DATA ......  3                                 
111 HEADING BBB  4                                 
111 DATA ......  5                                 
111 DATA ......  6                                 
222 DATA ......  1                                 
222 DATA ......  2                                 
222 HEADING AAA  3                                 
222 DATA ......  4                                 
222 DATA ......  5                                 
222 HEADING BBB  6                                 
222 DATA ......  7                                 
/*                                                 
//SORTOUT  DD SYSOUT=*                             
//IND1CNTL DD *                                     
    INREC  IFTHEN=(WHEN=GROUP,                     
               KEYBEGIN=(001,003),                 
                  BEGIN=(005,007,CH,EQ,C'HEADING'),
                   PUSH=(020:001,003,               
                             013,003))             
/*                                                 
//*                                                 

with undesired result:
111 DATA ......  1 111...
111 HEADING AAA  2 111AAA
111 DATA ......  3 111AAA
111 HEADING BBB  4 111BBB
111 DATA ......  5 111BBB
111 DATA ......  6 111BBB
222 DATA ......  1 222...
222 DATA ......  2 222...
222 HEADING AAA  3 222AAA
222 DATA ......  4 222AAA
222 DATA ......  5 222AAA
222 HEADING BBB  6 222BBB
222 DATA ......  7 222BBB


Any assistance would be great. Thanks.
Robert Alford
 
Posts: 4
Joined: Thu Oct 06, 2011 8:22 am
Has thanked: 0 time
Been thanked: 0 time

Re: Using GROUP with BEGIN 'AND' KEYBEGIN

Postby BillyBoyo » Fri Jan 27, 2012 3:48 pm

Are you saying if there is no heading you want blanks in the additional fields?
BillyBoyo
Global moderator
 
Posts: 3804
Joined: Tue Jan 25, 2011 12:02 am
Has thanked: 22 times
Been thanked: 265 times

Re: Using GROUP with BEGIN 'AND' KEYBEGIN

Postby skolusu » Fri Jan 27, 2012 9:51 pm

Robert Alford,

If your understand your requirement correctly , you can just do it with Begin itself . Use the following DFSORT JCL which will give you the desired results.

//STEP0100 EXEC PGM=SORT                                 
//SYSOUT   DD SYSOUT=*                                   
//SORTIN   DD *                                         
----+----1----+----2----+----3----+----4----+----5----+--
111 DATA ......  1                                       
111 HEADING AAA  2                                       
111 DATA ......  3                                       
111 HEADING BBB  4                                       
111 DATA ......  5                                       
111 DATA ......  6                                       
222 DATA ......  1                                       
222 DATA ......  2                                       
222 HEADING AAA  3                                       
222 DATA ......  4                                       
222 DATA ......  5                                       
222 HEADING BBB  6                                       
222 DATA ......  7                                       
//SORTOUT  DD SYSOUT=*                                   
//SYSIN    DD *                                         
  SORT FIELDS=COPY                                       
  INREC IFTHEN=(WHEN=GROUP,BEGIN=(5,7,CH,EQ,C'HEADING'),
                PUSH=(20:1,3,13,3)),                     
  IFTHEN=(WHEN=(1,3,CH,NE,20,3,CH),OVERLAY=(20:6X))     
//*
Kolusu - DFSORT Development Team (IBM)
DFSORT is on the Web at:
www.ibm.com/storage/dfsort
skolusu
 
Posts: 586
Joined: Wed Apr 02, 2008 10:38 pm
Has thanked: 0 time
Been thanked: 39 times

Re: Using GROUP with BEGIN 'AND' KEYBEGIN

Postby Robert Alford » Mon Jan 30, 2012 3:56 am

Hi,

Skolusu, simple and elagent solution I admit I overlooked. Was trying to be unnecessarily fancy.

Thank you for your wisdom. It will do the job nicely.

Cheers,
Rob.
Robert Alford
 
Posts: 4
Joined: Thu Oct 06, 2011 8:22 am
Has thanked: 0 time
Been thanked: 0 time


Return to DFSORT/ICETOOL/ICEGENER

 


  • Related topics
    Replies
    Views
    Last post