FALSE

Page Nav

HIDE

Grid

GRID_STYLE

Match two file using Match - Merge Logic

MATCH - MERGE     LOGIC Match Merge logic is extensively used in COBOL programs to compare the data in two sequential files effectively. O...

MATCH - MERGE     LOGIC
Match Merge logic is extensively used in COBOL programs to compare the data in two sequential files effectively. Only pre-requisite to for using this logic is, all input files to be in Sorted Order

Problem : I have 2 Sequential files File1  and File2.
                 If Record exists in both the files then write data into FILEA             
                 If Record exists only in File1 and not in File2 then write data into FILEB
                 If Record exists only in File2 and not in File1 then write data into FILEC

Solution: The effective way of solving above problem is, by using Match Merge Logic. Only pre-requisite to for using this logic is, all input files to be in Sorted Order.  First step sort I/P file

Explanation of Logic : Below listed are I/P and Output files data for say RollNo

File1                  File2                         FILEA                     FILEB                              FILEC
10                      10                               10                                
20                      20                               20
30                      50                                                               30
50                      60                               50                                                                     60
70                      99                                                                70
90                                                                                          90                                    99

         Open FILE1 and 2 in input mode, FileA, B, C in output mode
1.    Read File1     (Reads the record 10 )
2.    Read File2     (Reads the record 10 )

3.    Compare the Key Record of both Files  (File1-Rno = File 2-Rno).
a.      10 = 10; means record exists in both files)
b.    Write the  record in   FILE A

c.      As we need to advance further, repeat Step1  thru Step3

4.    When system reads the records  30 and 50, Step3 will Fail. So evaluate Step4
a.      If File1-Rno < File 2-Rno   (30 < 50)
b.      Record   30, which is > 20 and <50, means Rollno 30 is not present in FILE 2
c.      i.e., Record 30 exists only in File1
d.      Write the record into FILE B
e.      Now Read only FILE 1, and repeat thru step 3

5.    When system reads the records  70 and 60 from file1 and 2 respectively,  Step3,4 will Fail. So evaluate Step5
a.      If File1-Rno >  File 2-Rno   (70 > 50)
b.      Record  60 of file2, which is > 50 and <70, means Roll no 60 is not present in FILE 1
c.      i.e., Record 60 exists only in File2
d.      Write the record into FILE C
e.      Now Read only FILE 2, and repeat thru step 3

6.    Repeat above steps until end of both the files.
      Close all files
        
Advantages :  Open/close both file only once.
                        Faster

5 comments

Anonymous said...

Really good one...

maheedhar reddy said...

Thanks. It helped.

Durgesh kesharwanin said...

Very good explanation.. Nice

Unknown said...

Very good explanation. Same I tried to convey to my interviewer, he was not in a good mood to listen to me carefully.

ompanjwani said...

I did this in java using hasNext() method everything works fine except the last record in not being processed because hsaNext() detects end of file.