CHARACTER*40 INFILE,FILENAME character*8 label LOGICAL EFLG real*8 M1(3,2),d,x,rmsd,sum INTEGER*4 I,J,k 1200 FORMAT(A) write(6,*)'compare 2 pdb files, list distances, calc rmsd' write(6,*)'grep ATOM b.pdb |grep " CA " >! b.ca' c read operator into m2 6 WRITE(6,*) 'ENTER NAME OF pdb file 1 (atom recds only):' READ(5,1200) INFILE IF (INFILE(:5).EQ.' ') STOP INQUIRE(FILE=INFILE, NAME=FILENAME,EXIST=EFLG) IF (.NOT.EFLG) GOTO 6 OPEN (UNIT=2,FILE=INFILE,STATUS='OLD',READONLY) 8 WRITE(6,*) 'ENTER NAME OF pdb file 2 (atom recds only):' READ(5,1200) INFILE IF (INFILE(:5).EQ.' ') STOP INQUIRE(FILE=INFILE, NAME=FILENAME,EXIST=EFLG) IF (.NOT.EFLG) GOTO 8 OPEN (UNIT=3,FILE=INFILE,STATUS='OLD',READONLY) k=1 sum=0. c read coord 50 read(2,51,end=1160) label,(m1(i,1),I=1,3) c write(6,111) label, (m1(i,1),I=1,3) 51 format (13x,A17,3d8.3,2f6.2) 60 read(3,51,end=1160) label,(m1(i,2),I=1,3) c write(6,111) label, (m1(i,2),I=1,3) x=0. do 90 i=1,3 90 x=x+(m1(i,2)-m1(i,1))**2 100 d=sqrt(x) 110 write (6,111) label,d 111 format (' ' A17,16f5.1) sum=sum+x k=k+1 goto 50 1160 CLOSE(UNIT=2) n=k-1 rmsd=sqrt(sum/n) write(6,*)' RMSD =',rmsd END