implicit none *matches Zeljko's ugriz and Tucker's ugriz' integer a,b,c,d,uflag,gflag,rflag,iflag,zflag,x,y,ii,j,k,l,m integer countholder(10000) real rap,decp,up,uperr,gp,gperr,rp,rperr,ip,iperr,zp,zperr real ra,dec,u,uerr,g,gerr,r,rerr,i,ierr,z,zerr,match(1000,14),temp(14) real diffra,diffdec,endlist(10000,30),printlist(2,10000) real twolist(200000,12) character*100 junk logical isthere open(1, file = 'USNOcheckerout', status = 'old') * open(2, file = 'nonvarMvsPTerr.dat', status = 'old') open(2, file = 'zeljkocascombined', status = 'old') open(3, file = 'zeljkomatchug', status = 'unknown') open(4, file = 'zeljkomatchgr', status = 'unknown') open(5, file = 'zeljkomatchri', status = 'unknown') open(6, file = 'zeljkomatchiz', status = 'unknown') * open(7, file = 'zeljkonomatch', status = 'unknown') do x=1,200000 do y=1,12 twolist(x,y) = 1000 end do end do do b=1,3 read(2,1) 1 format(5x) end do do b=1,2 read(1,1) end do do b=1,200000 * read(2,*,end=25) ra,dec,u,g,r,i,z,uerr,gerr,rerr,ierr,zerr read(2,*,end=2) (twolist(b,j),j=1,12) * read(2,*,end=2) ra,dec,u,g,r,i,z,uerr,gerr,rerr,ierr,zerr * twolist(b,1) = ra * twolist(b,2) = dec * twolist(b,3) = u * twolist(b,4) = g * twolist(b,5) = r * twolist(b,6) = i * twolist(b,7) = z * twolist(b,8) = uerr * twolist(b,9) = gerr * twolist(b,10) = rerr * twolist(b,11) = ierr * twolist(b,12) = zerr end do 2 continue do x=1,10000 do y=1,30 endlist(x,y) = 1000 end do end do do x=1,2 do y=1,10000 printlist(x,y) = 1000 end do end do do y=1,10000 countholder(y) = 1000 end do ii = 1 do a=1,7 read(1,3) 3 format(5x) end do do a=1,200000 read(1,*,end=30) junk,rap,decp,up,gp,rp,ip,zp,uperr,gperr,rperr, : iperr,zperr do x=1,1000 do y=1,14 match(x,y) = 1000 end do end do x = 1 do b=1,200000 if(twolist(b,1).eq.(1000)) then go to 25 end if diffra = (twolist(b,1) - rap)*cosd(twolist(b,2)) diffdec = twolist(b,2) - decp if(abs(diffra).lt.(.0002778)) then if(abs(diffdec).lt.(.0002778)) then * print*,diffra,diffdec match(x,1) = twolist(b,3) match(x,2) = twolist(b,8) match(x,3) = sqrt(diffra**2 + diffdec**2) match(x,4) = twolist(b,4) match(x,5) = twolist(b,9) match(x,6) = twolist(b,5) match(x,7) = twolist(b,10) match(x,8) = twolist(b,6) match(x,9) = twolist(b,11) match(x,10) = twolist(b,7) match(x,11) = twolist(b,12) match(x,12) = twolist(b,1) match(x,13) = twolist(b,2) x = x+1 end if end if end do 25 continue do c=x,2,-1 do d=1,14 temp(d)=match(c,d) end do if(match(c,3) < match(c-1,3)) then do d=1,14 match(c,d) = match(c-1,d) match(c-1,d) = temp(d) end do end if end do if(match(1,3).ne.(1000)) then print*,'write' endlist(ii,1) = rap endlist(ii,2) = decp endlist(ii,3) = match(1,12) endlist(ii,4) = match(1,13) endlist(ii,5) = up endlist(ii,6) = uperr endlist(ii,7) = gp endlist(ii,8) = gperr endlist(ii,9) = rp endlist(ii,10) = rperr endlist(ii,11) = ip endlist(ii,12) = iperr endlist(ii,13) = zp endlist(ii,14) = zperr endlist(ii,15) = match(1,1) endlist(ii,16) = match(1,2) endlist(ii,17) = match(1,4) endlist(ii,18) = match(1,5) endlist(ii,19) = match(1,6) endlist(ii,20) = match(1,7) endlist(ii,21) = match(1,8) endlist(ii,22) = match(1,9) endlist(ii,23) = match(1,10) endlist(ii,24) = match(1,11) endlist(ii,25) = 0 endlist(ii,26) = 0 endlist(ii,27) = 0 endlist(ii,28) = 0 endlist(ii,29) = 0 endlist(ii,30) = match(1,3) * print*,endlist(ii,30) ii = ii+1 end if rewind 2 if(mod(a,100).eq.(0)) then print*,a end if end do 30 continue k = 1 print*,ii do j=1,(ii) isthere = .true. print*,k do l=1,k if(endlist(j,3).eq.printlist(1,l).and.endlist(j,4).eq.printlist(2,l)) then m = countholder(l) if(endlist(j,30).lt.endlist(m,30)) then countholder(l) = j end if isthere = .false. end if end do if(isthere) then print*,endlist(j,3) printlist(1,k) = endlist(j,3) printlist(2,k) = endlist(j,4) countholder(k) = j k = k+1 end if end do do j=1,(k-1) m = countholder(j) if((endlist(m,15)).gt.(-10).and.(endlist(m,17)). : gt.(-10).and.(endlist(m,5)).gt.(-10). : and.(endlist(m,7)).gt.(-10).and. : (endlist(m,25)).eq.(0).and.(endlist(m,26)).eq.(0)) then write(3,40) endlist(m,1),endlist(m,2),endlist(m,3),endlist(m,4), : endlist(m,5),endlist(m,6),endlist(m,7),endlist(m,8), : endlist(m,9),endlist(m,10),endlist(m,11),endlist(m,12), : endlist(m,13),endlist(m,14),endlist(m,15), endlist(m,16), : endlist(m,17),endlist(m,18),endlist(m,19),endlist(m,20), : endlist(m,21),endlist(m,22),endlist(m,23),endlist(m,24) end if if((endlist(m,17)).gt.(-10).and.(endlist(m,19)). : gt.(-10).and.(endlist(m,7)).gt.(-10). : and.(endlist(m,9)).gt.(-10).and. : (endlist(m,26)).eq.(0).and.(endlist(m,27)).eq.(0)) then write(4,40) endlist(m,1),endlist(m,2),endlist(m,3),endlist(m,4), : endlist(m,5),endlist(m,6),endlist(m,7),endlist(m,8), : endlist(m,9),endlist(m,10),endlist(m,11),endlist(m,12), : endlist(m,13),endlist(m,14),endlist(m,15), endlist(m,16), : endlist(m,17),endlist(m,18),endlist(m,19),endlist(m,20), : endlist(m,21),endlist(m,22),endlist(m,23),endlist(m,24) end if if((endlist(m,19)).gt.(-10).and.(endlist(m,21)). : gt.(-10).and.(endlist(m,9)).gt.(-10). : and.(endlist(m,11)).gt.(-10).and. : (endlist(m,27)).eq.(0).and.(endlist(m,28)).eq.(0)) then write(5,40) endlist(m,1),endlist(m,2),endlist(m,3),endlist(m,4), : endlist(m,5),endlist(m,6),endlist(m,7),endlist(m,8), : endlist(m,9),endlist(m,10),endlist(m,11),endlist(m,12), : endlist(m,13),endlist(m,14),endlist(m,15), endlist(m,16), : endlist(m,17),endlist(m,18),endlist(m,19),endlist(m,20), : endlist(m,21),endlist(m,22),endlist(m,23),endlist(m,24) end if if((endlist(m,21)).gt.(-10).and.(endlist(m,23)). : gt.(-10).and.(endlist(m,11)).gt.(-10). : and.(endlist(m,13)).gt.(-10).and. : (endlist(m,28)).eq.(0).and.(endlist(m,29)).eq.(0)) then write(6,40) endlist(m,1),endlist(m,2),endlist(m,3),endlist(m,4), : endlist(m,5),endlist(m,6),endlist(m,7),endlist(m,8), : endlist(m,9),endlist(m,10),endlist(m,11),endlist(m,12), : endlist(m,13),endlist(m,14),endlist(m,15), endlist(m,16), : endlist(m,17),endlist(m,18),endlist(m,19),endlist(m,20), : endlist(m,21),endlist(m,22),endlist(m,23),endlist(m,24) end if 40 format(f10.6,f11.6,f11.6,f11.6,f11.4,f10.4,f11.4,f10.4,f11.4,f10.4,f11.4, : f10.4,f11.4,f10.4,f9.3,f7.3,f8.3,f7.3,f8.3,f7.3,f8.3, : f7.3,f8.3,f7.3) end do close(1) close(2) close(3) close(4) close(5) close(6) end