I need to join 2 files and write matching records to output. Below are the details of file.
Code:
//SORTJNF1 DD *
999 C 0000000000AAAAAAAAAA 1
999 C 0000000000DDDDDDDDDD 1
999 C 0000000000GGGGGGGGGG 1
999 C 0000000000HHHHHHHHHH 1
999 C 0000000000IIIIIIIIII 1
999 C 0000000000JJJJJJJJJJ 1
999 C 0000000000KKKKKKKKKK 1
999 C 0000000000LLLLLLLLLL 1
999 C 0000000000MMMMMMMMMM 1
999 C 0000000000NNNNNNNNNN 1
999 C 0000000000OOOOOOOOOO 1
//SORTJNF2 DD *
999 C 0000000000AAAAAAAAAA 999 D 88888888888888888888
999 C 0000000000AAAAAAAAAA 999 D 99999999999999999999
999 C 0000000000AAAAAAAAAA 999 D 77777777777777777777
999 C 0000000000AAAAAAAAAA 999 D 66666666666666666666
999 C 0000000000BBBBBBBBBB 999 D 11111111111111111111
999 C 0000000000BBBBBBBBBB 999 D 00000000000000000000
999 C 0000000000CCCCCCCCCC 999 D 22222222222222222222
999 C 0000000000CCCCCCCCCC 999 D 33333333333333333333
999 C 0000000000CCCCCCCCCC 999 D 44444444444444444444
999 C 0000000000CCCCCCCCCC 999 D 55555555555555555555
999 C 0000000000DDDDDDDDDD 999 D 11111111111111111115
999 C 0000000000DDDDDDDDDD 999 D 22222222222222222225
999 C 0000000000DDDDDDDDDD 999 D 33333333333333333335
999 C 0000000000DDDDDDDDDD 999 D 44444444444444444445
999 C 0000000000EEEEEEEEEE 999 D 99999999999999999998
999 C 0000000000EEEEEEEEEE 999 D 99999999999999999997
999 C 0000000000EEEEEEEEEE 999 D 99999999999999999996
999 C 0000000000FFFFFFFFFF 999 D 88888888888888888887
999 C 0000000000FFFFFFFFFF 999 D 88888888888888888886
999 C 0000000000GGGGGGGGGG 999 D 77777777777777777771
//F1ONLY DD SYSOUT=*
//F2ONLY DD SYSOUT=*
//BOTH DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=(1,28,CH,A)
* CONTROL STATEMENTS FOR JOINKEYS APPLICATION
JOINKEYS FILE=F1,FIELDS=(1,26,A),SORTED,NOSEQCK
JOINKEYS FILE=F2,FIELDS=(1,26,A),SORTED,NOSEQCK
JOIN UNPAIRED,F1
REFORMAT FIELDS=(F1:1,28,F2:28,26,?)
* CONTROL STATEMENTS FOR MAIN TASK (JOINED RECORDS)
OPTION COPY
OUTFIL FNAMES=F1ONLY,INCLUDE=(55,1,CH,EQ,C'1'),
BUILD=(1,28)
OUTFIL FNAMES=F2ONLY,INCLUDE=(55,1,CH,EQ,C'2'),
BUILD=(29,26)
OUTFIL FNAMES=BOTH,INCLUDE=(55,1,CH,EQ,C'B'),
BUILD=(1,28,C' ',29,26)
It works fine but I need assistance in getting the output in the format below:
Code:
999 C 0000000000AAAAAAAAAA 1 999 D 88888888888888888888
999 D 99999999999999999999
999 D 77777777777777777777
999 D 66666666666666666666
999 C 0000000000DDDDDDDDDD 1 999 D 11111111111111111115
999 D 22222222222222222225
999 D 33333333333333333335
999 D 44444444444444444445
999 C 0000000000GGGGGGGGGG 1 999 D 77777777777777777771
********************************* TOP OF DATA **************
999 C 0000000000AAAAAAAAAA 1 999 D 88888888888888888888
999 D 99999999999999999999
999 D 77777777777777777777
999 D 66666666666666666666
999 C 0000000000DDDDDDDDDD 1 999 D 11111111111111111115
999 D 22222222222222222225
999 D 33333333333333333335
999 D 44444444444444444445
999 C 0000000000GGGGGGGGGG 1 999 D 77777777777777777771
******************************** BOTTOM OF DATA ************
Output DD:F1ONLY:
Code:
********************************* TOP OF DATA ********
999 C 0000000000HHHHHHHHHH 1
999 C 0000000000IIIIIIIIII 1
999 C 0000000000JJJJJJJJJJ 1
999 C 0000000000KKKKKKKKKK 1
999 C 0000000000LLLLLLLLLL 1
999 C 0000000000MMMMMMMMMM 1
999 C 0000000000NNNNNNNNNN 1
999 C 0000000000OOOOOOOOOO 1
******************************** BOTTOM OF DATA ******
Remains unclear:
1) do you need the unpaired records from F2 to be also indicated in any manner?
2) do you need the combined report in a single DD, or 2-3 separate reports for matching/non-matching records?
Joined: 15 Aug 2015 Posts: 1222 Location: Bamberg, Germany
From JOIN UNPAIRED,F1 statement, there is no indication that a separate DD:F2 is wanted. Also I don't see a DD:SORTOUT coded. Could have been more precisely specified by the TS, indeed.
Yes, I originally wanted 3 separate files, which is why I had F1, F2, and Both (sort card was JOIN UNPAIRED,F1,F2).
But, business changed the requirement to keep all records from F1 and if there's a match with F2, display those records (in the format I showed above). In addition, they want a blank line inserted after each match/unmatched row. I coded this but, it doesn't appear to be working.
To be clear, yes I would like the records from F1 and Both in one report, sorted, and with spaces between the rows. This makes it easier to read for the business.