CHARACTER*70 ASTRING CHARACTER*40 INFILE,FILENAME character*14 atom1,atom2,atom(100000) LOGICAL EFLG real*8 M1(3,100000),d(10000) INTEGER*4 I,J,k 1200 FORMAT(A) WRITE(6,*) 'Find 2 atoms separated by greatest distance' 6 WRITE(6,*) 'ENTER NAME OF pdb file:' READ(5,1200) INFILE IF (INFILE(:5).EQ.' ') STOP INQUIRE(FILE=INFILE, NAME=FILENAME,EXIST=EFLG) IF (.NOT.EFLG) GOTO 6 c OPEN (UNIT=2,FILE=INFILE,STATUS='OLD',READONLY) OPEN (UNIT=2,FILE=INFILE,STATUS='OLD') k=1 dmax=-1 atom1='none' atom2='none' c read coord 50 read(2,1200,end=1160) ASTRING if ((ASTRING(1:5).ne.'ATOM ').and.(ASTRING(1:6).ne.'HETATM')) . goto 50 read(ASTRING,51) atom(k),(m1(i,k),I=1,3) C 51 format (12x,A14,4x,3d8.3,2f6.2) C compare the atom just read with all previous: do 100 j=1,k-1 x=0. do 90 i=1,3 90 x=x+(m1(i,k)-m1(i,j))**2 c x=sqrt(x) if (x.gt.dmax) then dmax=x atom1=atom(k) atom2=atom(j) c write(6,*)k,j,atom1,atom2,sqrt(x) endif 100 continue k=k+1 if (k.le.100000)goto 50 write(6,*)'Processing truncated after first',k-1,' atoms' 1160 CLOSE(UNIT=2) k=k-1 write(6,*)k,' atoms: Max distance is ',atom1,', ',atom2,sqrt(dmax) END