program tinkertomcm character*80 fn,fna1,fna2 character*2 sy parameter (nat0=4000) integer bi(nat0),bt(nat0,7) dimension xx(nat0),izz(nat0),yy(nat0),zz(nat0),nb(nat0), 1iz(nat0),x(nat0),y(nat0),z(nat0),ind(nat0) c if(iargc().eq.0)then write(6,*)'Making FILE.X from tinker file' write(6,*)'Filename:' read(6,'(a)')fn write(6,*)'Interval of atoms (N1 N2):' read(5,*)NA1,NA2 else call getarg(1,fn) call getarg(2,fNA1) call getarg(3,fNA2) read(fNA1,*)NA1 read(fNA2,*)NA2 endif c just read in tinker file: open(4,file=fn) read(4,*)nat if(NA2.gt.nat)then write(6,*)'Upper limit > total number of atoms' close(4) stop endif if(nat.gt.nat0)then write(6,*)'Too many atoms' close(4) close(3) stop endif do 2 ia=1,nat read(4,400)sy,x(ia),y(ia),z(ia),(bt(ia,ib),ib=1,7) 400 format(7x,a2,2x,3f12.6,6x,7i6) nb(ia)=0 do 1 ib=1,7 1 if(bt(ia,ib).ne.0)nb(ia)=nb(ia)+1 iz(ia)=0 if(sy.eq.' N')iz(ia)=7 if(sy.eq.' O')iz(ia)=8 if(sy.eq.' C')iz(ia)=6 if(sy.eq.' H')iz(ia)=1 if(iz(ia).eq.0)then write(6,*)'Unknown atom ',sy,ia iz(ia)=1 endif 2 continue close(4) c take wanted atoms into FILE.X: iaa=0 do 21 ia=1,nat bi(ia)=0 if(ia.ge.NA1.and.ia.le.NA2)then iaa=iaa+1 izz(iaa)=iz(ia) xx(iaa)=x(ia) yy(iaa)=y(ia) zz(iaa)=z(ia) ind(iaa)=ia bi(ia)=iaa endif 21 continue open(3,file='FILE.X') write(3,200)fn 200 format(a80) write(3,*)NA2-NA1+1 do 91 iaa=1,NA2-NA1+1 ia=ind(iaa) 91 write(3,300)izz(iaa),xx(iaa),yy(iaa),zz(iaa), 1(bi(bt(ia,i)),i=1,nb(ia)),(0,i=nb(ia)+1,7),0.0d0 300 format(i3,3f12.6,7i6,f4.1) close(2) close(3) stop end