PROGRAM GG parameter (nat0=3000) DIMENSION r(3,nat0),iz(nat0) CHARACTER*50 FN LOGICAL lzmat,auto CHARACTER*1 OK CHARACTER*21 z,s CHARACTER*18 t data z/'Z-Matrix orientation:'/ data t/'Input orientation:'/ data s/'Standard orientation:'/ inquire(file='AUTO',exist=auto) OK='Z' nat=0 lzmat=.true. if(auto)then FN='G98.OUT' else if(iargc().eq.0)then WRITE(*,*)' Full filename of the Gaussian output:' READ(*,'(A)')FN WRITE(*,*)' Use the Z-matrix or standard orientation (Z/S) ?' READ(*,'(A)')OK if(ok.eq.'s'.or.ok.eq.'S')lzmat=.false. else call getarg(1,FN) if(iargc().gt.1)call getarg(2,OK) if(ok.eq.'s'.or.ok.eq.'S')lzmat=.false. endif endif OPEN(2,FILE=FN) OPEN(4,FILE='FILE.X') NG=0 1 READ(2,2000,END=1000)FN 2000 FORMAT(A50) IF((lzmat.and.(FN(19:39).EQ.z.OR.FN(26:46).EQ.z.OR. 1 FN(20:37).EQ.t.OR.FN(27:44).EQ.t)) .OR. 1 ((.not.lzmat).and.(FN(20:40).EQ.s.OR.FN(26:46).EQ.s)))THEN NG=NG+1 ig98=0 if(FN(26:46).EQ.z.OR.FN(27:44).EQ.t.OR.FN(26:46).EQ.s)ig98=1 WRITE(4,20000)FN,NG if(.not.auto)WRITE(6,20000)FN,NG 20000 FORMAT(A40,I4) DO 4 I=1,4 4 READ(2,*) l=0 5 READ(2,2000)FN IF(FN(2:4).NE.'---')THEN l=l+1 if(l.gt.nat0)then write(6,*)'too many atoms' stop endif BACKSPACE 2 if(ig98.eq.0)then READ(2,*)KA,KA,(r(i,l),i=1,3) else READ(2,*)KA,KA,r(1,l),(r(i,l),i=1,3) endif iz(l)=KA IF(KA.EQ.-1)l=l-1 GOTO 5 ENDIF nat=l write(4,*)nat do 34 l=1,nat 34 if(iz(l).gt.0)write(4,4000)iz(l),(r(i,l),i=1,3),(0,i=1,7),0.0d0 4000 format(I3,3F12.6,7(1x,i1),f4.1) ENDIF IF(FN(2:18).EQ.'Mulliken charges:'.and.nat.gt.0)then IF(.not.auto)then open(9,file='FILEQ.X') write(9,*)FN(1:18) write(6,*)FN(1:17)//' in FILEQ.X' write(9,*)nat read(2,*) do 2 l=1,nat READ(2,2000)FN read(FN(11:21),*)q 2 if(iz(l).gt.0)write(9,4001)iz(l),(r(i,l),i=1,3),(0,i=1,7),q 4001 format(I3,3F12.6,7(1x,i1),f8.4) close(9) endif endif IF(FN(2:13).EQ.'ESP charges:'.and.nat.gt.0)then IF(.not.auto)then open(9,file='FILEE.X') write(9,*)FN(1:18) write(6,*)FN(1:12)//' in FILEE.X' write(9,*)nat read(2,*) do 3 l=1,nat READ(2,2000)FN read(FN(11:21),*)q 3 if(iz(l).gt.0)write(9,4001)iz(l),(r(i,l),i=1,3),(0,i=1,7),q close(9) endif endif GOTO 1 1000 CLOSE(2) CLOSE(3) if(.not.auto)then if(ng.eq.0)then write(*,*)'Geometry not found' else WRITE(*,*)' File FILE.X written' write(*,*)nat,' atoms' endif endif STOP END