Fortran Help: Matching Data and writing values

• Fortran
hi

i have two file with following data

file-1 (named: xyxp.dat)

6
1 1 0 10
3 2 1 5
3 5 4 8
0 0 0 11
1 2 5 4
5 6 4 12

file-2 (named: xyzn.dat)

6
1 0 0 0
2 1 1 0
3 3 2 1
4 1 2 5
5 3 5 4
6 5 6 4

now i want to match each value of the first three columns of file -1 with the corresponding values in the last three columns of file-2. for example first three values form file-1 are
1 1 0 now the program should search 1 1 0 in last three columns of file 2, and then write 2 10 as output
the result similar to this is required as output

1 11
2 10
3 5
4 4
5 8
6 12

till now i have written the following program, but really got confused with matching data

program main
implicit none

integer :: pn,nn
integer :: i
real ,allocatable, dimension (:,:) :: x , ix

open (11,file='xyxp.dat')
allocate (x(pn,4))
do i=1,pn
end do
close (11)
c write(*,*) x

open (12,file='xyzn.dat')
allocate (ix(nn,4))
do i=1,nn
end do
close (12)
c write(*,*) ix

do i=1,nn
if (x(:,1)==ix(:,2).and.x(:,2)==ix(:,3).and.x(:,3)==ix(:,4)) then
ix(i,1)=x(i,4)
write(*,*) ix(i,1)
end if
end do

end program

kindly help me in this matter

You'd better declare those arrays INTEGERs, by the way, comparison of REALs with "==" may fail any time.

You need a double loop to compare each x row to all ix rows.

Code:
do i=1, pn
do j = 1, nn
if (x(i,1)==ix(j,2).and.x(i,2)==ix(j,3).and.x(i,3)==ix(j,4)) then
write(*,*) ix(j,1), x(i,4)
end if
end do
end do

yup real number fail with "==" .... any suggesstion for real numbers

just compare the absolute difference to the accuracy desired:
Code:
if  ( abs( x(i,1) - ix(j,2) ) < 0.0005  ) then
! whatever
end if