	LOGICAL*1 FUNCTION TERM_CHECK(TERMINAL)
	IMPLICIT NONE
C
C   Module:	TERMCHECK
C
C   Original:	George H. Walrod III
C
C   Purpose:	Check Terminal Syntax and Make Check 
C		Entry into Terminal Table
C
C   Arguments:
C		TERMINAL	: Terminal Name
C
C   Corrected Modification:
C		None
C   Notes:
C		None
C
*
	INCLUDE	'WATCHTERM.INC'			! Terminal Common
	INCLUDE	'WATCHREC.INC'			! Record Common
*
	PARAMETER
     +		COLON		= ':',		! ASCII Colon
     +		WILDCARD	= '*',		! Wild Card Character
     +		UNDERSCORE	= '_'		! ASCII Underscore

	CHARACTER
     +		TERMINAL*(*),			! Terminal 
     +		NEW_TERMINAL*(MAX_TERMINAL_LEN)	! New Terminal Name

	INTEGER*2
     +		TERM_PTR,			! Terminal String PTR
     +		NEWTERM_PTR			! New Terminal String PTR

 800	FORMAT(' ERROR ON LINE ',I5,' ',A,A)
*

C
C   Initialize Pointers and Strings   
C
	TERM_CHECK = .false.
	TERM_PTR = 1
	NEWTERM_PTR = 1
	NEW_TERMINAL = UNDERSCORE

C
C   Check for the Maximum Length of Terminal Name
C

	IF(LEN(TERMINAL) .gt. MAX_TERMINAL_LEN) THEN
	  WRITE (6,800) LINE,
     +		'TERMINAL NAME IS TO LONG ', TERMINAL
	  GOTO 999
	 END IF

C
C   Skip All Under Scores Before Device Name
C

	DO WHILE ((TERMINAL(TERM_PTR:TERM_PTR) .eq. UNDERSCORE) .and.
     +	          (TERM_PTR  .lt. LEN(TERMINAL)))
          TERM_PTR = TERM_PTR + 1
         END DO

C
C   Wild Cards are Only Permitted for After of the Device Name
C

	IF (TERMINAL(TERM_PTR:TERM_PTR) .eq. WILDCARD) THEN
	  WRITE (6,800) LINE,
     +		'WILD CARD TERMINALS ARE ONLY AT END OF TERMINAL NAMES ',
     +		TERMINAL
	  GOTO 999
	 END IF

C
C   Move the Device Name or Any Part of It, Up to Wildcard or Colon
C

	DO WHILE ((TERMINAL(TERM_PTR:TERM_PTR) .ne. WILDCARD) .and.
     +	          (TERMINAL(TERM_PTR:TERM_PTR) .ne. COLON) .and.
     +	          (TERM_PTR  .lt. LEN(TERMINAL)))
          NEWTERM_PTR = NEWTERM_PTR + 1
	  NEW_TERMINAL(NEWTERM_PTR:NEWTERM_PTR) = 
     +					TERMINAL(TERM_PTR:TERM_PTR) 
          TERM_PTR = TERM_PTR + 1
         END DO

C
C   Nothing is allowed for Follow a Colon or Wildcard
C

	IF (((TERMINAL(TERM_PTR:TERM_PTR) .eq. COLON) .or.
     +	     (TERMINAL(TERM_PTR:TERM_PTR) .eq. WILDCARD)) .and.
     +	     (TERM_PTR + 1 .le. LEN(TERMINAL))) THEN
	  WRITE (6,800) LINE, 
     +		'EXTRA CHARACTERS FOUND AFTER WILDCARD OR COLON ',
     +				TERMINAL 
	  GOTO 999
	 END IF

C
C   Make Sure There is Room For Another Terminal Entry in Table
C

	IF (MAX_TERMINAL+1 .gt. MAX_NO_TERMINAL) THEN
	  WRITE (6,800) LINE, 
     +	    'MAXIMUM NUMBERS OF TERMINAL RESTRICTIONS EXCEEDED',' '
	  GOTO 999
         ELSE
	  MAX_TERMINAL = MAX_TERMINAL + 1
	END IF

C
C   Set Wildcard Flag if Necessary
C

	TERMINAL_LIST(MAX_TERMINAL).WILDCARD = .false.
	IF (TERMINAL(TERM_PTR:TERM_PTR) .eq. WILDCARD) THEN
	  TERMINAL_LIST(MAX_TERMINAL).WILDCARD  = .true.
	 END IF

C
C   Store Length and Name
C

	TERMINAL_LIST(MAX_TERMINAL).NAME   = NEW_TERMINAL(1:NEWTERM_PTR)
	TERMINAL_LIST(MAX_TERMINAL).LENGTH = NEWTERM_PTR
	
	TERM_CHECK = .true.
999	CONTINUE
	RETURN
	END
