Page 1 of 1

Populating the data as 1 rec by pulling the data from 2 recs

PostPosted: Tue May 04, 2010 10:41 pm
by RajeshT
Hi,

Good Morning !!

Can you help me with the situation mentioned below; My requirement is to pull 2 fields from record 1 and 2 fields from record 2 as ONE OUTPUT record; I knew that every two records is a set here.

INPUT
-------
8E03402723N10050238376
1B03402723VNPETALUMA POULTRY
8E0SKEXCELN1005032667700009
1B0SKEXCELVNHOUSTON
8E0SKEXCELN1005033044200052
1B0SKEXCELVNDALLAS
8E0SKEXCELN1005021666100540
1B0SKEXCELVNLOUISVILLE
8E03402089N10050238374
1B03402089VNBOULDER NATURAL MEATS
8E03000684N10050244617
1B03000684VNCHEF'S REQUESTED FOODS

Expected OUTPUT (2 pos from 1 and 7 pos from 4 from rec 1 AND 2 pos from 1 and 20 pos from 13 from rec 2 as 1 OUTPUT record)
----------------------
8E34027231BPETALUMA POULTRY
8ESKEXCEL1BHOUSTON
8ESKEXCEL1BDALLAS
8ESKEXCEL1BLOUISVILLE
8E34020891BBOULDER NATURAL MEATS
8E30006841BCHEF'S REQUESTED FOODS

Options :-
1. First record will always have 8E in first 2 positions.
2. Second record will always have 1B in first 2 positions and VN in 2 positions from 11.

Let me know if you need any information from my end.

Thank You.
Rajesh.

Re: Populating the data as 1 rec by pulling the data from 2 recs

PostPosted: Tue May 04, 2010 10:52 pm
by Alissa Margulies
Hello Rajesh, and welcome to the forum.

Please identify which release and maintenance level of SyncSort you are currently running so that we can provide you with an appropriate resolution.

Regards,

Re: Populating the data as 1 rec by pulling the data from 2 recs

PostPosted: Tue May 04, 2010 10:55 pm
by RajeshT
Thank You Alissa.

We're using the latest version of SYNCSORT :- SYNCSORT FOR Z/OS 1.3.2.1R

Please suggest.

Re: Populating the data as 1 rec by pulling the data from 2 recs

PostPosted: Tue May 04, 2010 11:35 pm
by Alissa Margulies
Based only on your sample input and desired output, here is one way to accomplish this task:
//SORT1 EXEC PGM=SORT                               
//SORTIN  DD *                                     
8E03402723N10050238376                             
1B03402723VNPETALUMA POULTRY                       
8E0SKEXCELN1005032667700009                         
1B0SKEXCELVNHOUSTON                                 
8E0SKEXCELN1005033044200052                         
1B0SKEXCELVNDALLAS                                 
8E0SKEXCELN1005021666100540                         
1B0SKEXCELVNLOUISVILLE                             
8E03402089N10050238374                             
1B03402089VNBOULDER NATURAL MEATS                   
8E03000684N10050244617                             
1B03000684VNCHEF'S REQUESTED FOODS                 
//SORTOUT DD SYSOUT=*                               
//SYSOUT  DD SYSOUT=*                               
//SYSIN   DD *                                     
  INCLUDE COND=(1,2,CH,EQ,C'1B',AND,11,2,CH,EQ,C'VN')
  INREC BUILD=(1:C'8E',4,7,1,2,13,22)
  SORT FIELDS=COPY                                       

However, if you did not know what data would be in the first 2 positions in the "first" record, and positions 4-10 were not the same in both records, then here is an alternative method:
//SYSIN   DD *                                           
  INREC IFTHEN=(WHEN=GROUP,RECORDS=2,PUSH=(41:1,2,4,7)) 
  SORT FIELDS=COPY                                       
  OUTFIL INCLUDE=(1,2,CH,NE,41,2,CH),                   
         BUILD=(41,9,1,2,13,22)                         
/*                                                       

Re: Populating the data as 1 rec by pulling the data from 2 recs

PostPosted: Wed May 05, 2010 1:03 am
by RajeshT
Hi Alissa,

I've tested the code (2nd code) and found that it is working fine as expected. Am trying to understand the logc; when we say PUSH(41:1,2,4,7), i understand it is ADDing 9 bytes towards the end of the record; And the INCLUDE condition is eliminating all records starts with '8E' in this case. So, we are only left with 2nd set of records, from which the INREC / OUTREC pulls the data and BUILDing as per our need.

Thank you for your time and quick responses today.

Am curious to know, does the same above logic allow us to deal with 3 sets of records. I mean, can we pull 2 different fields from each of 3 records as ONE SINGLE output record ?

Have a good day ahead.

Rajesh.

Re: Populating the data as 1 rec by pulling the data from 2 recs

PostPosted: Wed May 05, 2010 2:28 am
by Alissa Margulies
RajeshT wrote:Am curious to know, does the same above logic allow us to deal with 3 sets of records. I mean, can we pull 2 different fields from each of 3 records as ONE SINGLE output record ?

I would need to see some sample input records in order to determine if it could be done in a single pass of the data. Otherwise, it could probably be done in 2 steps.