Page 1 of 1

Need help with join keys in Syncsort

PostPosted: Thu Sep 11, 2014 8:10 pm
by kiran_wiproblr
Hi All,

Could you please help me with sort card for below requirement?

File-1
----+----1----+
TEST     1111
AAAAAAAAAAAAA
BBBBBBBBBBBBB
TEST     2222
CCCCCCCCCCCCC
CCCCCCCCCCCCC
TEST     3333
DDDDDDDDDDDDD
EEEEEEEEEEEEE
TEST     2222
FFFFFFFFFFFFF
GGGGGGGGGGGGG
TEST     4444
HHHHHHHHHHHHH
TEST     3333


File-2
----+----1
1111
2222
3333
4444



Expected output
----+----1----+
TEST     Z1111
AAAAAAAAAAAAA
BBBBBBBBBBBBB
TEST     Z2222
CCCCCCCCCCCCC
CCCCCCCCCCCCC
TEST     Z3333
DDDDDDDDDDDDD
EEEEEEEEEEEEE
TEST     Z2222
FFFFFFFFFFFFF
GGGGGGGGGGGGG
TEST     Z4444
HHHHHHHHHHHHH
TEST     Z3333



in normal text
----+----1----+
TEST Z1111
AAAAAAAAAAAAA
BBBBBBBBBBBBB
TEST Z2222
CCCCCCCCCCCCC
CCCCCCCCCCCCC
TEST Z3333
DDDDDDDDDDDDD
EEEEEEEEEEEEE
TEST Z2222
FFFFFFFFFFFFF
GGGGGGGGGGGGG
TEST Z4444
HHHHHHHHHHHHH
TEST Z3333



Key (1st to 4th position) of file-2 has to match with key of file-1(10th position to 14th position)

If key is matched output has to write with added ā€œZā€ character(As highlighted in red color ) before key and rest has to copy as in file-1.

I am OK to have even in 2 or 3 steps -- Please help me.


Thanks
Kiran

Re: Need help with join keys in Syncsort

PostPosted: Thu Sep 11, 2014 8:51 pm
by NicC
Syncsort topics are posted in the Syncsort part of the forum. Moving.

Re: Need help with join keys in Syncsort

PostPosted: Sat Sep 13, 2014 12:54 pm
by kiran_wiproblr
Hi All,

could you please provide clue, how I can get my desired output.

Regards,
Venu.

Re: Need help with join keys in Syncsort

PostPosted: Sun Sep 14, 2014 6:10 pm
by Thampy
If you are having Syncsort V1.4.2, then your requirement can be done in one step. I am assuming your file1 record length is 80 and record format is fixed block
//STEP010  EXEC  PGM=SORT                                         
//SORTJNF1 DD *                                                   
TEST     1111                                                     
AAAAAAAAAAAAA                                                     
BBBBBBBBBBBBB                                                     
TEST     2222                                                     
CCCCCCCCCCCCC                                                     
CCCCCCCCCCCCC                                                     
TEST     3333                                                     
DDDDDDDDDDDDD                                                     
EEEEEEEEEEEEE                                                     
TEST     2222                                                     
FFFFFFFFFFFFF                                                     
GGGGGGGGGGGGG                                                     
TEST     4444                                                     
HHHHHHHHHHHHH                                                     
TEST     3333                                                 
//SORTJNF2 DD *                                               
1111                                                           
2222                                                           
3333                                                           
4444                                                           
//SORTOUT  DD SYSOUT=*                                         
//SYSOUT   DD SYSOUT=*                                         
//SYSIN   DD   *                                               
  JOINKEYS FILES=F1,FIELDS=(10,4,A)                           
  JOINKEYS FILES=F2,FIELDS=(1,4,A)                             
  JOIN UNPAIRED,F1                                             
  REFORMAT FIELDS=(F1:1,85,?)                                 
  INREC IFTHEN=(WHEN=(86,1,CH,EQ,C'B'),OVERLAY=(9:C'Z'))       
  SORT FIELDS=(81,5,ZD,A)                                     
  OUTREC BUILD=(1,80)                                         
/*                                                             
//JNF1CNTL   DD *                                             
  INREC OVERLAY=(81:SEQNUM,5,ZD)                               
//*


Alternatively you can use two sort steps to do the same if you don't have syncsort V1.4.2.
//STEP010  EXEC  PGM=SORT                                           
//SORTIN   DD *                                                     
TEST     1111                                                       
AAAAAAAAAAAAA                                                       
BBBBBBBBBBBBB                                                       
TEST     2222                                                       
CCCCCCCCCCCCC                                                       
CCCCCCCCCCCCC                                                       
TEST     3333                                                       
DDDDDDDDDDDDD                                                       
EEEEEEEEEEEEE                                                       
TEST     2222                                                       
FFFFFFFFFFFFF                                                       
GGGGGGGGGGGGG                                                       
TEST     4444                                                       
HHHHHHHHHHHHH                                                       
TEST     3333                                                         
//SORTOUT  DD DSN=&&T1,DISP=(,PASS),LRECL=85,RECFM=FB,               
//         SPACE=(TRK,(10,10),RLSE)                                   
//SYSOUT   DD SYSOUT=*                                               
//SYSIN   DD   *                                                     
  SORT FIELDS=COPY                                                   
  OUTREC OVERLAY=(81:SEQNUM,5,ZD)                                     
//*
//STEP020  EXEC  PGM=SORT                                             
//SORTJNF1 DD DSN=&&T1,DISP=OLD                                       
//SORTJNF2 DD *                                                       
1111                                                                 
2222                                                                 
3333                                                                 
4444                                                                 
//SORTOUT  DD SYSOUT=*                                               
//SYSOUT   DD SYSOUT=*                                               
//SYSIN   DD   *                                                     
  JOINKEYS FILES=F1,FIELDS=(10,4,A)                                   
  JOINKEYS FILES=F2,FIELDS=(1,4,A)                                   
  JOIN UNPAIRED,F1                                                   
  REFORMAT FIELDS=(F1:1,85,F2:1,1)                                   
  INREC IFTHEN=(WHEN=(86,1,CH,NE,C' '),OVERLAY=(9:C'Z'))             
  SORT FIELDS=(81,5,ZD,A)           
  OUTREC BUILD=(1,80)               
/*                                 

Re: Need help with join keys in Syncsort

PostPosted: Mon Sep 15, 2014 2:35 am
by NicC
Thampy,
Code and data should be 'coded' not 'quoted'. Fixed it up for you.

kiran_wiproblr/Venu (whatever your name is),
Please do not solicit replies. Remember that people who respond are volunteers and reply on their own time, free, and if they want to.

Re: Need help with join keys in Syncsort

PostPosted: Mon Sep 15, 2014 12:31 pm
by kiran_wiproblr
Thampy,

Thanks a lot for your help,
my File-1 is VB file.

would you please provide any suggestion/code?

NicC,
Thanks for your suggestion.

Thanks
Kiran

Re: Need help with join keys in Syncsort

PostPosted: Mon Sep 15, 2014 4:36 pm
by NicC
my File-1 is VB file.

Then you should have stated so in the first place. VB files have a 4 byte RDW at the front of each record so solutions are slightly different from Fixed length solutions.

would you please provide any suggestion/code?

Suggest you start looking to add four bytes to the offsets in Thampy's solution above and read the manual to understand his solution and resolve any problems adjusting it.