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
 
Match records from multiple input datasets

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

Global Moderator


Joined: 27 Dec 2005
Posts: 2360
Location: Israel

PostPosted: Tue Sep 08, 2009 1:30 am    Post subject: Match records from multiple input datasets
Reply with quote

Hi all

I need to match members of several PDSs and to report on each member that resides in more then one PDS.

For a start, I've compiled a list of all members in each PDS. For now, I have the following 4 datasets, each containing a sorted list of members for each PDS. For example:
LIST.A
MEMBERA
MEMBERB
MEMBERC
MEMBERD
MEMBERE

LIST.B
MEMBERA
MEMBERF
MEMBERG
MEMBERH
MEMBERI

LIST.C
MEMBERA
MEMBERB
MEMBERJ
MEMBERK
MEMBERL

LIST.D
MEMBERL
MEMBERM
MEMBERN
MEMBERO
MEMBERP

The desired result should look something like:
Code:

         MEMBERA LIST.A
                 LIST.B
                 LIST.C
         MEMBERB LIST.A
                 LIST.C
         MEMBERL LIST.C
                 LIST.D


How can I do this using DFSORT?

Thanks,

O.
Back to top
View user's profile Send private message

gcicchet

Senior Member


Joined: 28 Jul 2006
Posts: 1703
Location: Australia

PostPosted: Tue Sep 08, 2009 6:22 am    Post subject:
Reply with quote

Hi,

this may assist

Code:
//S1       EXEC PGM=ICETOOL               
//TOOLMSG  DD SYSOUT=*                   
//DFSMSG   DD SYSOUT=*                   
//LISTA    DD *                           
MEMBERA                                   
MEMBERB                                   
MEMBERC                                   
MEMBERD                                   
MEMBERE                                   
//LISTB    DD *                           
MEMBERA                                   
MEMBERF                                   
MEMBERG                                   
MEMBERH                                   
MEMBERI                                   
//LISTC    DD *                           
MEMBERA                                                                 
MEMBERB                                                                 
MEMBERJ                                                                 
MEMBERK                                                                 
MEMBERL                                                                 
//LISTD    DD *                                                         
MEMBERL                                                                 
MEMBERM                                                                 
MEMBERN                                                                 
MEMBERO                                                                 
MEMBERP                                                                 
//T1       DD DSN=&&T1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(MOD,PASS)     
//T2       DD DSN=&&T2,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(MOD,PASS)     
//ALLDUPS  DD SYSOUT=*                                                 
//TOOLIN   DD *                                                         
COPY FROM(LISTA) TO(T1) USING(CTL1)                 
COPY FROM(LISTB) TO(T1) USING(CTL2)                 
COPY FROM(LISTC) TO(T1) USING(CTL3)                 
COPY FROM(LISTD) TO(T1) USING(CTL4)                 
SELECT FROM(T1) TO(T2) ON(01,8,CH) ALLDUPS         
COPY FROM(T2) TO(ALLDUPS) USING(CTL5)               
/*                                                 
//CTL1CNTL DD *                                     
  INREC OVERLAY=(11:C'LIST.A')                     
/*                                                 
//CTL2CNTL DD *                                     
  INREC OVERLAY=(11:C'LIST.B')                     
/*                                                 
//CTL3CNTL DD *                                     
  INREC OVERLAY=(11:C'LIST.C')                     
/*                                                 
//CTL4CNTL DD *                                     
  INREC OVERLAY=(11:C'LIST.D')                     
/*                                                 
//CTL5CNTL DD *                                     
  INREC IFTHEN=(WHEN=INIT,OVERLAY=(50:SEQNUM,8,ZD,RESTART=(1,8))),   
  IFTHEN=(WHEN=(50,8,ZD,GT,1),OVERLAY=(1:C'        '))               
/*                                                                   


No doubt you will get simpler solutions but it might be a start.


Gerry
Back to top
View user's profile Send private message
ofer71

Global Moderator


Joined: 27 Dec 2005
Posts: 2360
Location: Israel

PostPosted: Tue Sep 08, 2009 11:30 am    Post subject:
Reply with quote

gcicchet,

Thank you very much. The solution works for me. icon_biggrin.gif

O.
Back to top
View user's profile Send private message
Skolusu

Senior Member


Joined: 07 Dec 2007
Posts: 2205
Location: San Jose

PostPosted: Tue Sep 08, 2009 9:06 pm    Post subject: Reply to: Match records from multiple input datasets
Reply with quote

The following 1 pass DFSORT JCL will give you the desired results

I assumed the following

1. All your list datasets have same LRECL 80 bytes and FB recfm
2. All the datasets have a header named LIST in the first 4 bytes


Code:

//STEP0100 EXEC PGM=SORT       
//SYSOUT   DD SYSOUT=*         
//SORTIN   DD *                 
LIST.A                         
MEMBERA                         
MEMBERB                         
MEMBERC                         
MEMBERD                         
MEMBERE                         
//         DD *                 
LIST.B                         
MEMBERA                         
MEMBERF                         
MEMBERG                         
MEMBERH                         
MEMBERI                         
//         DD *                 
LIST.C                         
MEMBERA                         
MEMBERB                         
MEMBERJ                         
MEMBERK                         
MEMBERL                         
//         DD *                                                     
LIST.D                                                             
MEMBERL                                                             
MEMBERM                                                             
MEMBERN                                                             
MEMBERO                                                             
MEMBERP                                                             
//SORTOUT  DD SYSOUT=*                                             
//SYSIN    DD *                                                     
  INREC IFTHEN=(WHEN=GROUP,BEGIN=(1,4,CH,EQ,C'LIST'),PUSH=(10:1,8))
  SORT FIELDS=(1,8,CH,A)                                           
  OUTREC IFTHEN=(WHEN=INIT,OVERLAY=(81:SEQNUM,8,ZD,RESTART=(1,8))),
  IFTHEN=(WHEN=GROUP,BEGIN=(81,8,ZD,EQ,1),PUSH=(89:1,80)),         
  IFTHEN=(WHEN=(81,8,ZD,GT,1),OVERLAY=(1:8X))                       
  OUTFIL INCLUDE=(81,8,ZD,GT,1),IFOUTLEN=80,                       
  IFTHEN=(WHEN=(81,8,ZD,EQ,2),BUILD=(89,80,/,1,80))                 
/*


The output from this job is

Code:

MEMBERA  LIST.A
         LIST.B
         LIST.C
MEMBERB  LIST.A
         LIST.C
MEMBERL  LIST.C
         LIST.D
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 ISSUE IN copying Sequential file reco... thesumitk JCL & VSAM 2 Wed Dec 13, 2017 3:07 pm
No new posts Merging 2 records at multiple rows wi... Bijesh DFSORT/ICETOOL 2 Wed Dec 06, 2017 1:50 am
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