View previous topic :: View next topic
Author
Message
akashs New User Joined: 24 Nov 2005Posts: 49 Location: chennai
Hi,
We have 2 Input files,
I/P 1:
AAA1NO27A1727045ASELECTHOTN
AAA1NO27A1727045BSELECTHOTN
BBB2DO27A1727045ASELECTHOTN
BBB2DO27A1727045BSELECTHOTN
CCC3NO27A1727045ASELECTHOTN
CCC3NO27A1727045BSELECTHOTN
AAA1NO27B1727045ASELECTHOTN
AAA1NO27B1727045BSELECTHOTN
BBB2DO27B1727045ASELECTHOTN
BBB2DO27B1727045BSELECTHOTN
CCC3NO27B1727045ASELECTHOTN
CCC3NO27B1727045BSELECTHOTN
I/P 2:
AAA1NO45AY
BBB2DO45AY
CCC3NO45AY
Have to update the last byte as "Y" for the first file based on the matching id with the second file. Also the non matching records should be written to the output.
Match id criteria:file 1 key--> 1 to 6 & 15 to 17 combined togerther as key.
file2 key--> 1 to 6 & 7 to 9 positions.
Expected output:
AAA1NO27A1727045ASELECTHOTY AAA1NO27A1727045BSELECTHOTN
BBB2DO27A1727045ASELECTHOTY BBB2DO27A1727045BSELECTHOTN
CCC3NO27A1727045ASELECTHOTY CCC3NO27A1727045BSELECTHOTN
AAA1NO27B1727045ASELECTHOTY AAA1NO27B1727045BSELECTHOTN
BBB2DO27B1727045ASELECTHOTY BBB2DO27B1727045BSELECTHOTN
CCC3NO27B1727045ASELECTHOTY CCC3NO27B1727045BSELECTHOTN
Back to top
akashs New User Joined: 24 Nov 2005Posts: 49 Location: chennai
Hi,
We have 2 Input files,
I/P 1:
AAA1NO27A1727045ASELECTHOTN
AAA1NO27A1727045BSELECTHOTN
BBB2DO27A1727045ASELECTHOTN
BBB2DO27A1727045BSELECTHOTN
CCC3NO27A1727045ASELECTHOTN
CCC3NO27A1727045BSELECTHOTN
AAA1NO27B1727045ASELECTHOTN
AAA1NO27B1727045BSELECTHOTN
BBB2DO27B1727045ASELECTHOTN
BBB2DO27B1727045BSELECTHOTN
CCC3NO27B1727045ASELECTHOTN
CCC3NO27B1727045BSELECTHOTN
I/P 2:
AAA1NO45AY
BBB2DO45AY
CCC3NO45AY
Have to update the last byte as "Y" for the first file based on the matching id with the second file. Also the non matching records should be written to the output.
Match id criteria:file 1 key--> 1 to 6 & 15 to 17 combined togerther as key.
file2 key--> 1 to 6 & 7 to 9 positions.
Expected output:
AAA1NO27A1727045ASELECTHOTY
AAA1NO27A1727045BSELECTHOTN
BBB2DO27A1727045ASELECTHOTY
BBB2DO27A1727045BSELECTHOTN
CCC3NO27A1727045ASELECTHOTY
CCC3NO27A1727045BSELECTHOTN
AAA1NO27B1727045ASELECTHOTY
AAA1NO27B1727045BSELECTHOTN
BBB2DO27B1727045ASELECTHOTY
BBB2DO27B1727045BSELECTHOTN
CCC3NO27B1727045ASELECTHOTY
CCC3NO27B1727045BSELECTHOTN
Thanks,
Akash
Back to top
Pandora-Box Global Moderator Joined: 07 Sep 2006Posts: 1592 Location: Andromeda Galaxy
This might help
Code:
//SRTJK EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//JNA DD *
AAA1NO27A1727045ASELECTHOTN
AAA1NO27A1727045BSELECTHOTN
BBB2DO27A1727045ASELECTHOTN
BBB2DO27A1727045BSELECTHOTN
CCC3NO27A1727045ASELECTHOTN
CCC3NO27A1727045BSELECTHOTN
AAA1NO27B1727045ASELECTHOTN
AAA1NO27B1727045BSELECTHOTN
BBB2DO27B1727045ASELECTHOTN
BBB2DO27B1727045BSELECTHOTN
CCC3NO27B1727045ASELECTHOTN
CCC3NO27B1727045BSELECTHOTN
//JNB DD *
AAA1NO45AY
BBB2DO45AY
CCC3NO45AY
//OUT DD SYSOUT=*
//TOOLIN DD *
SORT JKFROM TO(OUT) USING(CTL1)
/*
//CTL1CNTL DD *
JOINKEYS F1=JNA,FIELDS=(1,6,A,15,3,A)
JOINKEYS F2=JNB,FIELDS=(1,6,A,7,3,A)
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:1,27,F2:1,10)
OPTION EQUALS
SORT FIELDS=(7,3,CH,A)
INREC IFTHEN=(WHEN=(28,10,CH,EQ,C' '),
BUILD=(1:1,27)),
IFTHEN=(WHEN=(28,10,CH,NE,C' '),
BUILD=(1:1,26,C'Y'))
/*
Back to top
sqlcode1 Active Member Joined: 08 Apr 2010Posts: 577 Location: USA
akashs,
Assuming your input file1 is 80 byte/FB and that you want matched records in their original input sequence, see if below works... Unmatched records are written to DD UNMATCH.
Code:
//STEP0100 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//INA DD INPUT FILE1 --> ASSUMED 80/FB
//INB DD INPUT FILE2 --> ASSUMED FB
//MATCHED DD SYSOUT=*
//UNMATCH DD SYSOUT=*
//SYSIN DD *
JOINKEYS F1=INA,FIELDS=(01,06,A,15,03,A)
JOINKEYS F2=INB,FIELDS=(01,06,A,07,03,A)
JOIN UNPAIRED,F1
REFORMAT FIELDS=(F1:1,88,?)
INREC IFTHEN=(WHEN=(89,1,CH,EQ,C'B'),OVERLAY=(27:C'Y'))
SORT FIELDS=(81,8,ZD,A),EQUALS
OUTFIL FNAMES=MATCHED,BUILD=(1,80)
OUTFIL FNAMES=UNMATCH,INCLUDE=(89,1,CH,EQ,C'1'),BUILD=(1,80)
//*
//JNF1CNTL DD *
INREC OVERLAY=(81:SEQNUM,8,ZD)
/*
Pandora-Box,
Not sure why you have used JKFROM using ICETOOL when you can achieve the same using SORT step only. Also read about JOIN Indicator(?) in the REFORMAT statement.
Thanks,
Back to top
Pandora-Box Global Moderator Joined: 07 Sep 2006Posts: 1592 Location: Andromeda Galaxy
Thanks SQLCODE ( This sort wasnt working for me sometime back so I used ICETOOL)
I slightly modified the code if TS needs output in one file
Code:
//INA DD *
AAA1NO27A1727045ASELECTHOTN
AAA1NO27A1727045BSELECTHOTN
BBB2DO27A1727045ASELECTHOTN
BBB2DO27A1727045BSELECTHOTN
CCC3NO27A1727045ASELECTHOTN
CCC3NO27A1727045BSELECTHOTN
AAA1NO27B1727045ASELECTHOTN
AAA1NO27B1727045BSELECTHOTN
BBB2DO27B1727045ASELECTHOTN
BBB2DO27B1727045BSELECTHOTN
CCC3NO27B1727045ASELECTHOTN
CCC3NO27B1727045BSELECTHOTN
//INB DD *
AAA1NO45AY
BBB2DO45AY
CCC3NO45AY
//MATCHED DD SYSOUT=*
//UNMATCH DD SYSOUT=*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
JOINKEYS F1=INA,FIELDS=(01,06,A,15,03,A)
JOINKEYS F2=INB,FIELDS=(01,06,A,07,03,A)
JOIN UNPAIRED,F1
REFORMAT FIELDS=(F1:1,88,?)
INREC IFTHEN=(WHEN=(89,1,CH,EQ,C'B'),OVERLAY=(27:C'Y'))
SORT FIELDS=(81,8,ZD,A),EQUALS
OUTREC FIELDS=(1:1,80)
//*
//JNF1CNTL DD *
INREC OVERLAY=(81:SEQNUM,8,ZD)
/*
Back to top
sqlcode1 Active Member Joined: 08 Apr 2010Posts: 577 Location: USA
Pandora-Box,
Quote:
Thanks SQLCODE ( This sort wasnt working for me sometime back so I used ICETOOL)
And JOINKEYS using ICETOOL worked?
Quote:
I slightly modified the code if TS needs output in one file
I provided 2 separate files because I wasn't sure if OP wanted UNMATCH in a separate file. OP is getting what he asked for in the matched file.
Thanks,
Back to top
Pandora-Box Global Moderator Joined: 07 Sep 2006Posts: 1592 Location: Andromeda Galaxy
sqlcode1 wrote:
Pandora-Box,
Quote:
Thanks SQLCODE ( This sort wasnt working for me sometime back so I used ICETOOL)
And JOINKEYS using ICETOOL worked?
Quote:
I slightly modified the code if TS needs output in one file
I provided 2 separate files because I wasn't sure if OP wanted UNMATCH in a separate file. OP is getting what he asked for in the matched file.
Thanks,
Yes that was long time back though I might have made mistkaes in the syntax but a year back I was using V1R5 now V1R10 so extra commands
Anyway let OP decide the solution which might suit his needs
Back to top
Please enable JavaScript!