      SUBROUTINE WRTKEY(KEYWRD)
      implicit double precision (A-H,O-Z)
      include 'SIZES'
      include 'MOP6FILE'
      character*241 KEYWRD, ALLKEY
***********************************************************************
*
*  WRTKEY CHECKS ALL KEY-WORDS AND PRINTS THOSE IT RECOGNIZES.  IF IT
*  FINDS A WORD IT DOES NOT RECOGNIZE THE PROGRAM WILL BE STOPPED.
*
***********************************************************************
      common /NUMCAL/ NUMCAL
      common /TIMDMP/ TLEFT, TDUMP
      logical UHF, TRIP, BIRAD, EXCI, CI, MYWORD
      logical AM1, MNDO, MINDO3, PM3
      character CH*1, CHRONO*7
      save AM1, MNDO, MINDO3
      data AM1, MNDO, MINDO3, PM3 /4*.FALSE./
      ALLKEY=KEYWRD
C    DUMMY IF STATEMENT TO REMOVE AMPERSAND AND PLUS SIGNS, IF PRESENT
      if (MYWORD(ALLKEY(160:),' SETUP')) I=1
      if (MYWORD(ALLKEY,'&'))            I=2
      if (MYWORD(ALLKEY,' +'))           I=3
      if (MYWORD(ALLKEY,'AUTHOR')) then
         write(MIOB,
     %     '(10X,'' MOPAC - A GENERAL MOLECULAR ORBITAL PACKAGE''/
     %      ,10X,''   ORIGINAL VERSION WRITTEN IN 1983'')')
         write(MIOB,'(10X,''     BY JAMES J. P. STEWART AT THE''/
     %               ,10X,''     UNIVERSITY OF TEXAS AT AUSTIN''/
     %               ,10X,''          AUSTIN, TEXAS, 78712'')')
      end if
      if (MYWORD(ALLKEY,'VECT') ) write(MIOB,210)
      if (MYWORD(ALLKEY,' EXTE') ) then
         I=INDEX(KEYWRD,' EXTE')
         J=INDEX(KEYWRD(I:),'=')+I
         I=INDEX(KEYWRD(J:),' ')+J-1
         write(MIOB,220)  KEYWRD(J:I)
      end if
      MAXGEO=0
      if (MYWORD(ALLKEY,' DENS') )   write(MIOB,230)
      if (MYWORD(ALLKEY,'SPIN') )    write(MIOB,240)
      if (MYWORD(ALLKEY,' DEPVAR') )
     1    write(MIOB,250)READA(KEYWRD,INDEX(KEYWRD,'DEPVAR'))
      if (MYWORD(ALLKEY,' DEP ') )   write(MIOB,260)
      if (MYWORD(ALLKEY,'VELO') )    write(MIOB,270)
      if (MYWORD(ALLKEY,'TIMES') )   write(MIOB,280)
      if (MYWORD(ALLKEY,'PARASOK') ) write(MIOB,290)
      if (MYWORD(ALLKEY,'NOTHIE') )  write(MIOB,305)  ! errata of May 1991
      if (MYWORD(ALLKEY,'NODIIS') )  write(MIOB,300)
      if (MYWORD(ALLKEY,'BONDS') )   write(MIOB,310)
      if (MYWORD(ALLKEY,'GEO-OK') )  write(MIOB,320)
      if (MYWORD(ALLKEY,'FOCK') )    write(MIOB,330)
      if (MYWORD(ALLKEY,'LARGE') )   write(MIOB,340)
      if (MYWORD(ALLKEY,' K=') )     write(MIOB,350)
      if (MYWORD(ALLKEY,'NOLOG') )   write(MIOB,360)
      if (MYWORD(ALLKEY,'AIGIN') )   write(MIOB,370)
      if (MYWORD(ALLKEY,'AIGOUT') )  write(MIOB,380)
      if (MYWORD(ALLKEY,'AIDER') )   write(MIOB,390)
      if (MYWORD(ALLKEY,' S1978') )  write(MIOB,400)
      if (MYWORD(ALLKEY,' SI1978') ) write(MIOB,410)
      if (MYWORD(ALLKEY,' GRAP') )   write(MIOB,420)
      if (MYWORD(ALLKEY,'NOANCI') )  write(MIOB,440)
      if (MYWORD(ALLKEY,'1ELEC') )   write(MIOB,430)
      if (MYWORD(ALLKEY(:162),' SETUP') ) write(MIOB,470)
      if (MYWORD(ALLKEY,' NOMM') )   write(MIOB,460)
      if (MYWORD(ALLKEY,' MMOK') )   write(MIOB,480)
      if (MYWORD(ALLKEY,'INTERP') )  write(MIOB,490)
      if (MYWORD(ALLKEY,' ESR') )    write(MIOB,450)
      if (MYWORD(ALLKEY,'DFP') )     write(MIOB,500)
      if (MYWORD(ALLKEY,'ANALYT') )  write(MIOB,510)
      if (MYWORD(ALLKEY,' MECI') )   write(MIOB,520)
      if (MYWORD(ALLKEY,'LOCAL') )   write(MIOB,560)
      if (MYWORD(ALLKEY,'MULLIK') )  write(MIOB,570)
      if (MYWORD(ALLKEY,' XYZ') )    write(MIOB,580)
      if (MYWORD(ALLKEY,' PI') )     write(MIOB,590)
      if (MYWORD(ALLKEY,'ECHO') )    write(MIOB,600)
      if (MYWORD(ALLKEY, 'SING') )   write(MIOB,910)
      if (MYWORD(ALLKEY, 'DOUB') )   write(MIOB,920)
      if (MYWORD(ALLKEY, 'QUAR') )   write(MIOB,940)
      if (MYWORD(ALLKEY, 'QUIN') )   write(MIOB,950)
      if (MYWORD(ALLKEY, 'SEXT') )   write(MIOB,960)
      if (MYWORD(ALLKEY,'H-PRIO') )  write(MIOB,610)
      if (MYWORD(ALLKEY,'X-PRIO') )  write(MIOB,620)
      if (MYWORD(ALLKEY,'T-PRIO') )  write(MIOB,630)
      if (MYWORD(ALLKEY,'COMPFG') )  write(MIOB,650)
      if (MYWORD(ALLKEY,'POLAR') )   write(MIOB,640)
      if (MYWORD(ALLKEY,'DEBUG ') )  write(MIOB,660)
      if (MYWORD(ALLKEY,'RESTART') ) write(MIOB,670)
C
C     KEYWORDS ADDED FOR ESP MOPAC
C
      if (MYWORD(ALLKEY,'ESP ') )    write(MIOB,680)
      if (MYWORD(ALLKEY,'NSURF') )   write(MIOB,690)
      if (MYWORD(ALLKEY,'SCALE') )   write(MIOB,700)
      if (MYWORD(ALLKEY,'SCINCR') )  write(MIOB,710)
      if (MYWORD(ALLKEY,'SLOPE') )   write(MIOB,720)
      if (MYWORD(ALLKEY,'DIPOLE') )  write(MIOB,730)
      if (MYWORD(ALLKEY,'DIPX') )    write(MIOB,740)
      if (MYWORD(ALLKEY,'DIPY') )    write(MIOB,750)
      if (MYWORD(ALLKEY,'DIPZ') )    write(MIOB,760)
      if (MYWORD(ALLKEY,'CONNOLLY')) write(MIOB,770)
      if (MYWORD(ALLKEY,'ESPRST') )  write(MIOB,780)
      if (MYWORD(ALLKEY,' POTWRT') ) write(MIOB,790)
      if (MYWORD(ALLKEY,'WILLIAMS')) write(MIOB,800)
      if (MYWORD(ALLKEY,'SYMAVG') )  write(MIOB,810)
      if (MYWORD(ALLKEY,'STO3G') )   write(MIOB,820)
      if (MYWORD(ALLKEY,'IUPD')) then
         II=NINT(READA(KEYWRD,INDEX(KEYWRD,'IUPD=')))
         if (II.EQ.0)                write(MIOB,90)
         if (II.EQ.1)                write(MIOB,100)
         if (II.EQ.2)                write(MIOB,110)
      end if
      if (MYWORD(ALLKEY,'HESS')) then
         II=NINT(READA(KEYWRD,INDEX(KEYWRD,'HESS=')))
         if (II.EQ.0)                write(MIOB,120)
         if (II.EQ.1)                write(MIOB,130)
         if (II.EQ.2)                write(MIOB,140)
         if (II.EQ.3)                write(MIOB,150)
      end if
      if (MYWORD(ALLKEY,' MODE'))    write(MIOB,160)
     1 NINT(READA(KEYWRD,INDEX(KEYWRD,'MODE=')))
      if (MYWORD(ALLKEY,' RECALC'))  write(MIOB,170)
     1 NINT(READA(KEYWRD,INDEX(KEYWRD,'RECALC')))
      if (MYWORD(ALLKEY,' DMAX'))    write(MIOB,180)
     1 READA(KEYWRD,INDEX(KEYWRD,'DMAX='))
      if (MYWORD(ALLKEY,' MS='))     write(MIOB,190)
     1 NINT(READA(KEYWRD,INDEX(KEYWRD,' MS=')))
      if (MYWORD(ALLKEY,' PRNT'))    write(MIOB,200)
      if (MYWORD(ALLKEY,'IRC=') ) then
         MAXGEO=1
         write(MIOB,830)NINT(READA(KEYWRD,INDEX(KEYWRD,'IRC=')))
      else if (MYWORD(ALLKEY,'IRC') ) then
         MAXGEO=1
         write(MIOB,840)
      end if
      if (MYWORD(ALLKEY,'CHARGE') )
     1 write(MIOB,850)NINT(READA(KEYWRD,INDEX(KEYWRD,'CHARGE')))
      if (MYWORD(ALLKEY,'GRAD') )    write(MIOB,860)
      UHF=(MYWORD(ALLKEY,'UHF') )
      if (UHF)                        write(MIOB,870)
      BIRAD=(MYWORD(ALLKEY,'BIRAD') )
      if (BIRAD)                      write(MIOB,890)
      EXCI=(MYWORD(ALLKEY,'EXCITED') )
      if (EXCI)                       write(MIOB,900)
      TRIP=(MYWORD(ALLKEY,'TRIP') )
      if (TRIP)                       write(MIOB,930)
      if (MYWORD(ALLKEY,'SYM') )     write(MIOB,970)
      if (MYWORD(ALLKEY,'OPEN(')) then
         I=INDEX(KEYWRD,'OPEN(')
         IELEC = READA(KEYWRD,I)
         ILEVEL = READA(KEYWRD,I+7)
         write(MIOB,990) IELEC,ILEVEL
      end if
      if (MYWORD(ALLKEY,'MICROS'))
     1   write(MIOB,980) INT(READA(KEYWRD,INDEX(KEYWRD,'MICROS')))
      if (MYWORD(ALLKEY,'DRC=')) then
         MAXGEO=1
         write(MIOB,540) READA(KEYWRD,INDEX(KEYWRD,'DRC='))
      else if (MYWORD(ALLKEY,' DRC') ) then
         MAXGEO=1
         write(MIOB,530)
      end if
      if (MYWORD(ALLKEY,'KINE'))
     1   write(MIOB,550) READA(KEYWRD,INDEX(KEYWRD,'KINE'))
      CHRONO='SECONDS'
      TIME=1
      if (MYWORD(ALLKEY,' T=')) then
         I=INDEX(KEYWRD,' T=')
         TLEFT = READA(KEYWRD,I)
         do 10 J=I+3,241
            if ( J.EQ.241.OR.KEYWRD(J+1:J+1).EQ.' ') then
               CH=KEYWRD(J:J)
               if ( CH .EQ. 'M') CHRONO='MINUTES'
               if ( CH .EQ. 'M') TIME=60
               if ( CH .EQ. 'H') CHRONO='HOURS'
               if ( CH .EQ. 'H') TIME=3600
               if ( CH .EQ. 'D') CHRONO='DAYS'
               if ( CH .EQ. 'D') TIME=86400
               go to 20
            end if
   10    continue
   20    continue
         if (TLEFT.LT.99999.9D0) then
            write(MIOB,1000) TLEFT,CHRONO
         else
            write(MIOB,1010) TLEFT,CHRONO
         end if
         TLEFT=TLEFT*TIME
      else if (NUMCAL.EQ.1) then
         TLEFT=MAXTIM
         write(MIOB,1000) TLEFT,'SECONDS'
      else
         write(MIOB,1000) TLEFT,'SECONDS'
      end if
      TIME=1
      CHRONO='SECONDS'
      if (MYWORD(ALLKEY,' DUMP')) then
         I=INDEX(KEYWRD,' DUMP')
         TDUMP = READA(KEYWRD,I)
         do 30 J=I+6,241
            if ( J.EQ.241.OR.KEYWRD(J+1:J+1).EQ.' ') then
               CH=KEYWRD(J:J)
               if ( CH .EQ. 'M') CHRONO='MINUTES'
               if ( CH .EQ. 'M') TIME=60.D0
               if ( CH .EQ. 'H') CHRONO='HOURS'
               if ( CH .EQ. 'H') TIME=3600.D0
               if ( CH .EQ. 'D') CHRONO='DAYS'
               if ( CH .EQ. 'D') TIME=86400.D0
               go to 40
            end if
   30    continue
   40    continue
         if (TDUMP.LT.99999.9D0) then
            write(MIOB,1020) TDUMP,CHRONO
         else
            write(MIOB,1030) TDUMP,CHRONO
         end if
         TDUMP=TDUMP*TIME
      else if (NUMCAL.EQ.1) then
         TDUMP=MAXDMP
         write(MIOB,1020) TDUMP,'SECONDS'
      else
         write(MIOB,1020) TDUMP,'SECONDS'
      end if
      if (MYWORD(ALLKEY,'1SCF') ) then
         write(MIOB,1040)
         if (INDEX(KEYWRD,'RESTART').EQ.0) MAXGEO=MAXGEO+1
      end if
      CI=MYWORD(ALLKEY,'C.I.')
      if (CI) then
         J=INDEX(KEYWRD,'C.I.=(')
         if (J.NE.0) then
            write(MIOB,1060)
     %        INT(READA(KEYWRD,INDEX(KEYWRD,'C.I.=(')+7)),
     %        INT(READA(KEYWRD,INDEX(KEYWRD,'C.I.=(')+5))
         else
            write(MIOB,1050)
     %        INT(READA(KEYWRD,INDEX(KEYWRD,'C.I.')+5))
         end if
      end if
      if (MYWORD(ALLKEY,' FORCE') ) then
         write(MIOB,1070)
         MAXGEO=MAXGEO+1
      end if
      if (MYWORD(ALLKEY,' EF')) then
         write(MIOB,70)
         MAXGEO=MAXGEO+1
      end if
      if (MYWORD(ALLKEY,' TS')) then
         write(MIOB,80)
         MAXGEO=MAXGEO+1
      end if
      METHOD=0
      if (MYWORD(ALLKEY,'MINDO') ) then
         write(MIOB,1080)
         MINDO3=.TRUE.
         METHOD=1
      end if
      if (MYWORD(ALLKEY,'AM1') ) then
         write(MIOB,1090)
         AM1=.TRUE.
         METHOD=METHOD+1
      end if
      if (MYWORD(ALLKEY,'PM3') ) then
         write(MIOB,1100)
         PM3=.TRUE.
         METHOD=METHOD+1
      end if
      if (MYWORD(ALLKEY,'MNDO') ) then
         MNDO=.TRUE.
         METHOD=METHOD+1
      end if
      if (MYWORD(ALLKEY,'OLDGEO') )     write(MIOB,1120)
      if (MYWORD(ALLKEY,'PREC') )       write(MIOB,1110)
      if (MYWORD(ALLKEY,'NOINTER') )    write(MIOB,1130)
      if (MYWORD(ALLKEY,'ISOTOPE') )    write(MIOB,1140)
      if (MYWORD(ALLKEY,'DENOUT') )     write(MIOB,1150)
      if (MYWORD(ALLKEY,'SHIFT') )      write(MIOB,1160)
     1                   READA(KEYWRD,INDEX(KEYWRD,'SHIFT'))
      if (MYWORD(ALLKEY,'OLDENS') )     write(MIOB,1170)
      if (MYWORD(ALLKEY,'SCFCRT') )     write(MIOB,1180)
     1                  READA(KEYWRD,INDEX(KEYWRD,'SCFCRT'))
      if (MYWORD(ALLKEY,'ENPART') )     write(MIOB,1190)
      if (MYWORD(ALLKEY,'NOXYZ') )      write(MIOB,1200)
      if (MYWORD(ALLKEY,'SIGMA') ) then
         write(MIOB,1210)
         MAXGEO=MAXGEO+1
      end if
      if (MYWORD(ALLKEY,'NLLSQ') ) then
         write(MIOB,1220)
         MAXGEO=MAXGEO+1
      end if
      if (MYWORD(ALLKEY,'ROOT') )       write(MIOB,1230)
     1              NINT(READA(KEYWRD,INDEX(KEYWRD,'ROOT')))
      if (MYWORD(ALLKEY,'TRANS=') ) then
         write(MIOB,1250) NINT(READA(KEYWRD,INDEX(KEYWRD,'TRANS=')))
      else if (MYWORD(ALLKEY,'TRANS') ) then
         write(MIOB,1240)
      end if
      if (MYWORD(ALLKEY,'SADDLE') ) then
         write(MIOB,1260)
         MAXGEO=MAXGEO+1
      end if
      if (MYWORD(ALLKEY,' LET') )       write(MIOB,1270)
      if (MYWORD(ALLKEY,'COMPFG') )     write(MIOB,1280)
      if (MYWORD(ALLKEY,'GNORM') )      write(MIOB,1290)
     1                        READA(KEYWRD,INDEX(KEYWRD,'GNORM'))
      if (MYWORD(ALLKEY,'PULAY') )      write(MIOB,1300)
      if (MYWORD(ALLKEY,' STEP1')  )    write(MIOB,1310)
     1                      READA(KEYWRD,INDEX(KEYWRD,'STEP1')+6)
      if (MYWORD(ALLKEY,' STEP2')  )    write(MIOB,1320)
     1                      READA(KEYWRD,INDEX(KEYWRD,'STEP2')+6)
      if (MYWORD(ALLKEY,' STEP')  )     write(MIOB,1500)
     1                       READA(KEYWRD,INDEX(KEYWRD,'STEP')+5)
      if (MYWORD(ALLKEY,' POINT1')  ) then
         IP1 = READA(KEYWRD,INDEX(KEYWRD,'POINT1')+7)
         write(MIOB,1330) IP1
      end if
      if (MYWORD(ALLKEY,' POINT2')  ) then
         IP2 = READA(KEYWRD,INDEX(KEYWRD,'POINT2')+7)
         write(MIOB,1340) IP2
      end if
      if (MYWORD(ALLKEY,' MAX') )       write(MIOB,1350)
      if (MYWORD(ALLKEY,' POINT')  ) then
         IP = READA(KEYWRD,INDEX(KEYWRD,'POINT')+6)
         write(MIOB,1510) IP
      end if
      if (MYWORD(ALLKEY,'BAR') )        write(MIOB,1360)
     1                        READA(KEYWRD,INDEX(KEYWRD,'BAR'))
      if (MYWORD(ALLKEY,'CAMP') )       write(MIOB,1370)
      if (MYWORD(ALLKEY,'KING') )       write(MIOB,1370)
      if (MYWORD(ALLKEY,'EIGS') )       write(MIOB,1380)
      if (MYWORD(ALLKEY,'EIGINV') )     write(MIOB,1390)
      if (MYWORD(ALLKEY,'NONR') )       write(MIOB,1400)
      if (MYWORD(ALLKEY,'ORIDE') )      write(MIOB,1410)
      if (MYWORD(ALLKEY,'HYPERF') )     write(MIOB,1420)
      if (MYWORD(ALLKEY,' PL') )        write(MIOB,1430)
      if (MYWORD(ALLKEY,'FILL') )       write(MIOB,1440)
     1                   NINT(READA(KEYWRD,INDEX(KEYWRD,'FILL')))
      if (MYWORD(ALLKEY,'ITRY') )       write(MIOB,1470)
     1                   NINT(READA(KEYWRD,INDEX(KEYWRD,'ITRY')))
      if (MYWORD(ALLKEY,'0SCF') )       write(MIOB,1490)
      if (UHF) then
         if (BIRAD.OR.EXCI.OR.CI) then
            write(MIOB,'(//10X,
     %        '' UHF USED WITH EITHER BIRAD, EXCITED OR C.I. '')')
            write(MIOB,1480)
            go to 60
         end if
      else
         if (EXCI.AND. TRIP) then
            write(MIOB,'(//10X,'' EXCITED USED WITH TRIPLET'')')
            write(MIOB,1480)
            go to 60
         end if
      end if
      if (INDEX(KEYWRD,'T-PRIO').NE.0.AND.
     1INDEX(KEYWRD,'DRC').EQ.0) then
         write(MIOB,'(//10X,''T-PRIO AND NO DRC'')')
         write(MIOB,1480)
         go to 60
      end if
      if ( METHOD .GT. 1) then
         write(MIOB,'(//10X,
     %     '' ONLY ONE OF MINDO, MNDO, AM1 AND PM3 ALLOWED'')')
         write(MIOB,1480)
         go to 60
      end if
      if (MYWORD(ALLKEY,'THERMO') ) then
         write(MIOB,1450)
         if (MYWORD(ALLKEY,' ROT')) then
            write(MIOB,1460) NINT(READA(KEYWRD,INDEX(KEYWRD,' ROT')))
         else
            write(MIOB,'
     %       (//10X,'' YOU MUST SUPPLY THE SYMMETRY NUMBER "ROT"'')')
c
            call filclo !  J/M
            stop ' in WRTKEY - no symmetry # after keyword ROT!'
c
         end if
      end if
      if (MAXGEO.GT.1) then
         write(MIOB,'(//10X,''MORE THAN ONE GEOMETRY OPTION HAS BEEN '',
     %                      ''SPECIFIED''/10X,
     %              ''CONFLICT MUST BE RESOLVED BEFORE JOB WILL RUN'')')
c
         call filclo ! J/M
         stop ' in WRTKEY - more than one geometry option given !'
c
      end if
      if (INDEX(KEYWRD,'MULLIK').NE.0.AND.UHF) then
         write(MIOB,'(A)') ' MULLIKEN POPULATION NOT AVAILABLE WITH UHF'
c
         call filclo ! J/M
         stop ' in WRTKEY - MULLIK & UHF not allowed !'
c
      end if
      if (ALLKEY.NE.' ') then
         J=0
         do 50 I=1,240
            if (ALLKEY(I:I).NE.' '.OR.ALLKEY(I:I+1).NE.'  ') then
               J=J+1
               CH=ALLKEY(I:I)
               ALLKEY(J:J)=CH
            end if
   50    continue
         if (ALLKEY(241:241).NE.' ') then
            J=J+1
            CH=ALLKEY(241:241)
            ALLKEY(J:J)=CH
         end if
         J=MAX(1,J)
         L=INDEX(KEYWRD,'DEBUG')
         if (L.NE.0) then
            write(MIOB,'('' *  DEBUG KEYWORDS USED:  '',A)') ALLKEY(:J)
         else
            write(MIOB,'(///10X,''UNRECOGNIZED KEY-WORDS: ('',A,'')'')')
     %                 ALLKEY(:J)
            write(MIOB,
     %        '(///10X,''CALCULATION STOPPED TO AVOID WASTING TIME.'')')
            write(MIOB,
     %        '(///10X,''if THESE ARE DEBUG KEYWORDS, ADD THE KEYWORD''
     %                ,'' "DEBUG"'')')
c
            call filclo ! J/M
            stop ' in WRTKEY - unknown keywords used or DEBUG missing !'
c
         end if
      end if
      return
   60 write(MIOB,'(//10X,'' CALCULATION ABANDONED, SORRY!'')')
c
      call filclo !  J/M
      stop ' in WRTKEY - CALCULATION ABANDONED'
c
C ***********************************************************
C ***********************************************************
   70 format(' *  EF       - USE EF ROUTINE FOR MINIMUM SEARCH')
   80 format(' *  TS       - USE EF ROUTINE FOR TS SEARCH')
   90 format(' *  IUPD=    - HESSIAN WILL NOT BE UPDATED')
  100 format(' *  IUPD=    - HESSIAN WILL BE UPDATED USING POWELL')
  110 format(' *  IUPD=    - HESSIAN WILL BE UPDATED USING BFGS')
  120 format(' *  HESS=    - DIAGONAL HESSIAN USED AS INITIAL GUESS')
  130 format(' *  HESS=    - INITIAL HESSIAN WILL BE CALCULATED')
  140 format(' *  HESS=    - INITIAL HESSIAN READ FROM DISK')
  150 format(' *  HESS=    - INITIAL HESSIAN READ FROM INPUT')
  160 format(' *  MODE=    - FOLLOW HESSIAN MODE',I3,' TOWARD TS')
  170 format(' *  RECALC=  - DO',I4,' CYCLES BETWEEN HESSIAN RECALC')
  180 format(' *  DMAX=    - TAKE MAXIMUM STEPSIZE OF',F5.3,' ANG/RAD')
  190 format(' *  MS=      - IN MECI, MAGNETIC COMPONENT OF SPIN =',I3)
  200 format(' *  PRNT     - EXTRA PRINTING IN EF ROUTINE')
C ***********************************************************
  210 format(' *  VECTORS  - FINAL EIGENVECTORS TO BE PRINTED')
  220 format(' *  EXTERNAL - USE ATOMIC PARAMETERS FROM THE FOLLOWING '
     1,'FILE',/15X,A)
  230 format(' *  DENSITY  - FINAL DENSITY MATRIX TO BE PRINTED')
  240 format(' *  SPIN     - FINAL UHF SPIN MATRIX TO BE PRINTED')
  250 format(' *  DEPVAR=N - SPECIFIED DISTANCE IS',F7.4,
     1' TIMES BOND LENGTH')
  260 format(' *  DEP      - OUTPUT FORTRAN CODE FOR BLOCK-DATA')
  270 format(' *  VELOCITY - INPUT STARTING VELOCITIES FOR DRC')
  280 format(' *  TIMES    - TIMES OF VARIOUS STAGES TO BE PRINTED')
  290 format(' *  PARASOK  - USE SOME MNDO PARAMETERS IN AN AM1 CALCULA'
     1,'TION')
  300 format(' *  NODIIS   - do NOT USE GDIIS GEOMETRY OPTIMIZER')
  305 format(' *  NOTHIEL  - do NOT USE THIEL''s FSTMIN OPTION')
  310 format(' *  BONDS    - FINAL BOND-ORDER MATRIX TO BE PRINTED')
  320 format(' *  GEO-OK   - OVERRIDE INTERATOMIC DISTANCE CHECK')
  330 format(' *  FOCK     - LAST FOCK MATRIX TO BE PRINTED')
  340 format(' *  LARGE    - EXPANDED OUTPUT TO BE PRINTED')
  350 format(' *   K=      - BRILLOUIN ZONE STRUCTURE TO BE CALCULATED')
  360 format(' *  NOLOG    - SUPPRESS LOG FILE TRAIL, WHERE POSSIBLE')
  370 format(' *  AIGIN    - GEOMETRY MUST BE IN GAUSSIAN FORMAT')
  380 format(' *  AIGOUT   - IN ARC FILE, include AB-INITIO GEOMETRY')
  390 format(' *  AIDER    - READ IN AB INITIO DERIVATIVES')
  400 format(' *  S1978    - 1978 SULFUR PARAMETERS TO BE USED')
  410 format(' *  SI1978   - 1978 SILICON PARAMETERS TO BE USED')
  420 format(' *  GRAPH    - GENERATE FILE FOR GRAPHICS')
  430 format(' *  1ELECTRON- FINAL ONE-ELECTRON MATRIX TO BE PRINTED')
  440 format(' *  NOANCI   - do NOT USE ANALYTICAL C.I. DERIVATIVES')
  450 format(' *  ESR      - RHF SPIN DENSITY CALCULATION REQUESTED')
  460 format(' *  NOMM     - do NOT MAKE MM CORRECTION TO CONH BARRIER')
  470 format(' *  SETUP    - EXTRA KEYWORDS TO BE READ FROM FILE SETUP')
  480 format(' *  MMOK     - APPLY MM CORRECTION TO CONH BARRIER')
  490 format(' *  INTERP   - PRINT DETAILS OF CAMP-KING CONVERGER')
  500 format(' *  DFP      - USE DAVIDON FLETCHER POWELL OPTIMIZER')
  510 format(' *  ANALYT   - USE ANALYTIC DERIVATIVES ')
  520 format(' *  MECI     - M.E.C.I. WORKING TO BE PRINTED')
  530 format(' *  DRC      - DYNAMIC REACTION COORDINATE CALCULATION')
  540 format(' *  DRC=     - HALF-LIFE FOR KINETIC ENERGY LOSS =',F9.2,
     1' * 10**(-15) SECONDS')
  550 format(' *  KINETIC= - ',F9.3,' KCAL KINETIC ENERGY ADDED TO DRC')
  560 format(' *  LOCALIZE - LOCALIZED ORBITALS TO BE PRINTED')
  570 format(' *  MULLIK   - THE MULLIKEN ANALYSIS TO BE PERFORMED')
  580 format(' *   XYZ     - CARTESIAN COORDINATE SYSTEM TO BE USED')
  590 format(' *   PI      - BONDS MATRIX, SPLIT INTO SIGMA-PI-DELL',
     1' COMPONENTS, TO BE PRINTED')
  600 format(' *  ECHO     - ALL INPUT DATA TO BE ECHOED BEFORE RUN')
  610 format(' *  H-PRIOR  - HEAT OF FORMATION TAKES PRIORITY IN DRC')
  620 format(' *  X-PRIOR  - GEOMETRY CHANGES TAKE PRIORITY IN DRC')
  630 format(' *  T-PRIOR  - TIME TAKES PRIORITY IN DRC')
  640 format(' *  POLAR    - CALCULATE FIRST, SECOND AND THIRD-ORDER'
     1,' POLARIZABILITIES')
  650 format(' *  COMPFG   - PRINT HEAT OF FORMATION CALC''D IN COMPFG')
  660 format(' *  DEBUG    - DEBUG OPTION TURNED ON')
  670 format(' *  RESTART  - CALCULATION RESTARTED')
C
C     KEYWORDS ADDED FOR ESP MOPAC
C
  680 format(' *  ESP      - ELECTROSTATIC POTENTIAL CALCULATION')
  690 format(' *  NSURF    - NUMBER OF LAYERS')
  700 format(' *  SCALE    - SCALING FACTOR FOR VAN DER WAALS DISTANCE')
  710 format(' *  SCINCR   - INCREMENT BETWEEN LAYERS')
  720 format(' *  SLOPE    - SLOPE - USED TO SCALE MNDO ESP CHARGES')
  730 format(' *  DIPOLE   - FIT THE ESP TO THE CALCULATED DIPOLE')
  740 format(' *  DIPX     - X COMPONENT OF DIPOLE TO BE FIT')
  750 format(' *  DIPY     - Y COMPONENT OF DIPOLE TO BE FIT')
  760 format(' *  DIPZ     - Z COMPONENT OF DIPOLE TO BE FIT')
  770 format(' *  CONNOLLY - USE CONNOLLY SURFACE')
  780 format(' *  ESPRST   - RESTART OF ELECTRIC POTENTIAL CALCULATION')
  790 format(' *  POTWRT   - WRITE OUT ELECTRIC POT. DATA TO FILE 21')
  800 format(' *  WILLIAMS - USE WILLIAMS SURFACE')
  810 format(' *  SYMAVG   - AVERAGE SYMMETRY EQUIVALENT ESP CHARGES')
  820 format(' *  STO3G    - DEORTHOGONALIZE ORBITALS IN STO-3G BASIS')
  830 format(' *  IRC=N    - INTRINSIC REACTION COORDINATE',I3,
     1' DEFINED')
  840 format(' *  IRC      - INTRINSIC REACTION COORDINATE CALCULATION')
  850 format(3(' *',/),' *',15X,'  CHARGE ON SYSTEM =',I3,3(/,' *'))
  860 format(' *  GRADIENTS- ALL GRADIENTS TO BE PRINTED')
  870 format(' *  UHF      - UNRESTRICTED HARTREE-FOCK CALCULATION')
  880 format(' *  SINGLET  - STATE REQUIRED MUST BE A SINGLET')
  890 format(' *  BIRADICAL- SYSTEM HAS TWO UNPAIRED ELECTRONS')
  900 format(' *  EXCITED  - FIRST EXCITED STATE IS TO BE OPTIMIZED')
  910 format(' *  SINGLET  - SPIN STATE DEFINED AS A SINGLET')
  920 format(' *  DOUBLET  - SPIN STATE DEFINED AS A DOUBLET')
  930 format(' *  TRIPLET  - SPIN STATE DEFINED AS A TRIPLET')
  940 format(' *  QUARTET  - SPIN STATE DEFINED AS A QUARTET')
  950 format(' *  QUINTET  - SPIN STATE DEFINED AS A QUINTET')
  960 format(' *  SEXTET   - SPIN STATE DEFINED AS A SEXTET')
  970 format(' *  SYMMETRY - SYMMETRY CONDITIONS TO BE IMPOSED')
  980 format(' *  MICROS=N -',I4,' MICROSTATES TO BE SUPPLIED FOR C.I.')
  990 format(' *  OPEN(N,N)- THERE ARE',I2,' ELECTRONS IN',I2,' LEVELS')
 1000 format(' *   T=      - A TIME OF',F8.1,' ',A7,' REQUESTED')
 1010 format(' *   T=      - A TIME OF',G11.3,' ',A7,' REQUESTED')
 1020 format(' *  DUMP=N   - RESTART FILE WRITTEN EVERY',F8.1,
     1' ',A7)
 1030 format(' *  DUMP=N   - RESTART FILE WRITTEN EVERY',G11.3,
     1' ',A7)
 1040 format(' *  1SCF     - do 1 SCF AND then stop ')
 1050 format(' *  C.I.=N   -',I2,' M.O.S TO BE USED IN C.I.')
 1060 format(' * C.I.=(N,M)-',I2,' DOUBLY FILLED LEVELS USED IN A ',/
     1,      ' *             C.I. INVOLVING ',I2,' M.O.''S')
 1070 format(' *  FORCE    - FORCE CALCULATION SPECIFIED')
 1080 format(' *  MINDO/3  - THE MINDO/3 HAMILTONIAN TO BE USED')
 1090 format(' *  AM1      - THE AM1 HAMILTONIAN TO BE USED')
 1100 format(' *  PM3      - THE PM3 HAMILTONIAN TO BE USED')
 1110 format(' *  PRECISE  - CRITERIA TO BE INCREASED BY 100 TIMES')
 1120 format(' *  OLDGEO   - PREVIOUS GEOMETRY TO BE USED')
 1130 format(' *  NOINTER  - INTERATOMIC DISTANCES NOT TO BE PRINTED')
 1140 format(' *  ISOTOPE  - FORCE MATRIX WRITTEN TO DISK (CHAN. 9 )')
 1150 format(' *  DENOUT   - DENSITY MATRIX OUTPUT ON CHANNEL 10')
 1160 format(' *  SHIFT    - A DAMPING FACTOR OF',F8.2,' DEFINED')
 1170 format(' *  OLDENS   - INITIAL DENSITY MATRIX READ OF DISK')
 1180 format(' *  SCFCRT   - DEFAULT SCF CRITERION REPLACED BY',G12.3)
 1190 format(' *  ENPART   - ENERGY TO BE PARTITIONED INTO COMPONENTS')
 1200 format(' *  NOXYZ    - CARTESIAN COORDINATES NOT TO BE PRINTED')
 1210 format(' *  SIGMA    - GEOMETRY TO BE OPTIMIZED USING SIGMA.')
 1220 format(' *  NLLSQ    - GRADIENTS TO BE MINIMIZED USING NLLSQ.')
 1230 format(' *  ROOT     - IN A C.I. CALCULATION, ROOT',I2,
     1                       ' TO BE OPTIMIZED.')
 1240 format(' *  TRANS    - THE REACTION VIBRATION TO BE DELETED FROM',
     1' THE THERMO CALCULATION')
 1250 format(' *  TRANS=   - ',I4,' VIBRATIONS ARE TO BE DELETED FROM',
     1' THE THERMO CALCULATION')
 1260 format(' *  SADDLE   - TRANSITION STATE TO BE OPTIMIZED')
 1270 format(' *   LET     - OVERRIDE SOME SAFETY CHECKS')
 1280 format(' *  COMPFG   - PRINT HEAT OF FORMATION CALC''D IN COMPFG')
 1290 format(' *  GNORM=   - EXIT WHEN GRADIENT NORM DROPS BELOW ',G8.3)
 1300 format(' *  PULAY    - PULAY''S METHOD TO BE USED IN SCF')
 1310 format(' *  STEP1    - FIRST  STEP-SIZE IN GRID =',F7.2)
 1320 format(' *  STEP2    - SECOND STEP-SIZE IN GRID =',F7.2)
 1330 format(' *  POINT1   - NUMBER OF ROWS IN GRID =',I3)
 1340 format(' *  POINT2   - NUMBER OF COLUMNS IN GRID =',I3)
 1350 format(' *  MAX      - GRID SIZE 23*23 ')
 1360 format(' *  BAR=     - REDUCE BAR LENGTH BY A MAX. OF',F7.2)
 1370 format(' *  CAMP,KING- THE CAMP-KING CONVERGER TO BE USED')
 1380 format(' *  EIGS     - PRINT ALL EIGENVALUES IN ITER')
 1390 format(' *  EIGINV   - USE HESSIAN EIGENVALUE REVERSION IN EF')
 1400 format(' *  NONR     - do NOT USE NEWTON-RAPHSON STEP IN EF')
 1410 format(' *  ORIDE    - UNCONDITIONALLY, USE CALCULATED LAMDAS IN'
     1//' EF')
 1420 format(' *  HYPERFINE- HYPERFINE COUPLING CONSTANTS TO BE'
     1,' PRINTED')
 1430 format(' *   PL      - MONITOR CONVERGANCE IN DENSITY MATRIX')
 1440 format(' *  FILL=    - IN RHF CLOSED SHELL, FORCE M.O.',I3,' TO BE
     1 FILLED')
 1450 format(' *  THERMO   - THERMODYNAMIC QUANTITIES TO BE CALCULATED')
 1460 format(' *  ROT      - SYMMETRY NUMBER OF',I3,' SPECIFIED')
 1470 format(' *  ITRY=    - do A MAXIMUM OF',I6,' ITERATIONS FOR SCF')
 1480 format( //10X,' IMPOSSIBLE OPTION REQUESTED,')
 1490 format(' *  0SCF     - AFTER READING AND PRINTING DATA, stop')
 1500 format(' *  STEP     - STEP-SIZE IN PATH=',F7.3)
 1510 format(' *  POINT    - NUMBER OF POINTS IN PATH=',I3)
      end
