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
 
Sort group of records

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

New User


Joined: 24 Feb 2008
Posts: 62
Location: Boston

PostPosted: Fri Oct 25, 2013 2:21 am    Post subject: Sort group of records
Reply with quote

Hi,
I have a requirement to sort like below.

the First character will be either "B" or "D". I need to do sort based on the "FUND" but the FUND will be available only in "B" record.
The link between "B" and "D" is Account number.

Input Record will be like below:
Code:

BACCOUNT1FUND1
BACCOUNT2FUND2
BACCOUNT3FUND1
DACCOUNT3DATE01
DACCOUNT3DATE02
BACCOUNT4FUND1
BACCOUNT5FUND2
DACCOUNT5DATE01
BACCOUNT6FUND1


Output record should be like below:
Code:

BACCOUNT1FUND1
BACCOUNT3FUND1
DACCOUNT3DATE01
DACCOUNT3DATE02
BACCOUNT4FUND1
BACCOUNT6FUND1
BACCOUNT2FUND2
BACCOUNT5FUND2
DACCOUNT5DATE01
Back to top
View user's profile Send private message

mistah kurtz

Active User


Joined: 28 Jan 2012
Posts: 287
Location: Room: TREE(3). Hilbert's Hotel

PostPosted: Fri Oct 25, 2013 12:40 pm    Post subject:
Reply with quote

Will your 'D' record corresponding to the 'B' record always come immediately after? I mean your data will always be the way you have shown or it could be jumbled up like this:

Code:
BACCOUNT1FUND1
BACCOUNT2FUND2
BACCOUNT3FUND1
DACCOUNT5DATE01
BACCOUNT4FUND1
BACCOUNT5FUND2
DACCOUNT3DATE01
BACCOUNT6FUND1
DACCOUNT3DATE02
Back to top
View user's profile Send private message
Pandora-Box

Moderator


Joined: 07 Sep 2006
Posts: 1544
Location: Andromeda Galaxy

PostPosted: Fri Oct 25, 2013 12:50 pm    Post subject:
Reply with quote

Hi

Try this

Code:
//SYSIN     DD *
  OPTION EQUALS
  INREC  IFTHEN=(WHEN=GROUP,BEGIN=(2,7,CH,EQ,C'ACCOUNT',AND,
                            10,4,CH,EQ,C'FUND'),
                 PUSH=(20:2,15))
  SORT   FIELDS=(28,5,CH,A,20,8,CH,A)
  OUTREC FIELDS=(1:1,19,61X)
Back to top
View user's profile Send private message
mistah kurtz

Active User


Joined: 28 Jan 2012
Posts: 287
Location: Room: TREE(3). Hilbert's Hotel

PostPosted: Fri Oct 25, 2013 1:02 pm    Post subject:
Reply with quote

Assuming that your data could be in any order and LRECL=20 and RECFM=20, you can try this SORT card:
Code:
//SYSIN    DD *                                                   
  SORT   FIELDS=(2,8,CH,A,1,1,CH,A)                               
  OUTREC IFTHEN=(WHEN=GROUP,BEGIN=(1,1,CH,EQ,C'B'),PUSH=(21:10,5))
  SORT   FIELDS=(21,5,CH,A)                                       
  OUTFIL BUILD=(1,20)                                             
/* 
Back to top
View user's profile Send private message
Karthikeyan Subbarayan

New User


Joined: 24 Feb 2008
Posts: 62
Location: Boston

PostPosted: Fri Oct 25, 2013 7:50 pm    Post subject: Reply to: Sort group of records
Reply with quote

hi,
Thanks for the reply !!

The Detail record will always come after balance record,
I got the answer with the below code
Code:

//SYSIN    DD *                                                   
  INREC IFTHEN=(WHEN=GROUP,BEGIN=(1,1,CH,EQ,C'B'),                   
  PUSH=(21:10,5))
  SORT   FIELDS=(21,5,CH,A)                                       
  OUTREC BUILD=(1,20)                                             
/* 


I never knew in push we can use on the field values, so for i have used unique id only with this comment. thanks for the support
Back to top
View user's profile Send private message
Pandora-Box

Moderator


Joined: 07 Sep 2006
Posts: 1544
Location: Andromeda Galaxy

PostPosted: Fri Oct 25, 2013 8:09 pm    Post subject:
Reply with quote

Hi Just modified the code slightly to get your expected output

Code:
    OPTION EQUALS
    INREC IFTHEN=(WHEN=GROUP,BEGIN=(1,1,CH,EQ,C'B'),
    PUSH=(21:10,5))
    SORT   FIELDS=(21,5,CH,A,2,8,CH,A)
    OUTREC BUILD=(1,20)
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 Merging 2 records at multiple rows wi... Bijesh DFSORT/ICETOOL 2 Wed Dec 06, 2017 1:50 am
No new posts Extract record for change in combinat... Trinadh DFSORT/ICETOOL 6 Thu Nov 23, 2017 3:32 pm
No new posts Increment number for every group of r... srajendran2 DFSORT/ICETOOL 7 Thu Nov 09, 2017 10:31 pm
No new posts Matching and unmatched records!! Vignesh Sid SYNCSORT 3 Thu Nov 09, 2017 11:22 am
No new posts Formatting multiple records to a sing... Vignesh Sid SYNCSORT 3 Tue Nov 07, 2017 12:22 pm

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