      SUBROUTINE KEYWRD (KEYWD,LOGK,NKEY,NALPHA,ALPH,ONE)
C***********************************************************************
C     SUBROUTINE KEYWRD TAKES A STRING OF CHARACTERS (ALPH) AND DETER-
C     MINES WHICH OF THE KEYWORDS ARE PRESENT IN THE STRING.  THE STRING
C     CAN BE FREE FORMAT TO THE EXTENT THAT ANY NUMBER OF CHARACTERS OR
C     BLANKS CAN BE BETWEEN THE KEYWORDS BUT BUT THE KEYWORD ITSELF MUST
C     BE CONTIGUOUS.  IF THE KEYWORD IS PRESENT THEN THE APPROPRIATE
C     LOGICAL VARIABLE IS SET TO TRUE. THE STRING IS LIMITED TO 80 CHAR-
C     ACTERS. IF THE LOGICAL VARIABLE ONE IS SET TO TRUE THEN AFTER ONE
C     KEYWORD IS FOUND CONTROL IS RETURNED TO THE CALLING ROUTINE.
C***********************************************************************
      CHARACTER*1 ALPH(80), KEYWD(4,NKEY), IBLANK, ICOMMA
      LOGICAL LOGK(NKEY), ONE
      DATA IBLANK /' '/, ICOMMA /','/
      DO 10 K=1,NKEY
   10 LOGK(K)=.FALSE.
      IF(NALPHA.EQ.0) RETURN
      I=1
 20   IF (ALPH(I).EQ.IBLANK.OR.ALPH(I).EQ.ICOMMA) GO TO 50
      DO 40 K=1,NKEY
      IF (ALPH(I).NE.KEYWD(1,K)) GO TO 40
      I1=I+1
      I3=I+3
      DO 30 J=I1,I3
      I2=J-I+1
      IF (ALPH(J).NE.KEYWD(I2,K)) GO TO 40
   30 CONTINUE
      LOGK(K)=.TRUE.
      IF (ONE) RETURN
      I=I+3
      GO TO 50
   40 CONTINUE
   50 I=I+1
      IF (I.LE.NALPHA-3) GO TO 20
      RETURN
      END
