INTEGER*4 FUNCTION GET_WORD(FORCE_READ) IMPLICIT NONE C C Module: GETWORD C C Original: George H. Walrod III C C Purpose: To Read on Word C C Arguments: C WORD : Word C WORD_LEN : Word Length C FORCE_READ : Flag to Force Record Read C C Corrected Modification: C None C Notes: C None C * PARAMETER + NORMAL = 1, ! NORMAL Symbol + EOF = 0 ! EOF Symbol LOGICAL*1 + CHECK_EOLN, ! Function to Skip SP AND TAB + FORCE_READ ! Force Flag CHARACTER + TERMINATOR*6 /' "''!. '/ ! Single Word Terminators INTEGER*2 + GET_RECORD, ! Get Record Function + IDX_PTR ! Index Pointer * INCLUDE 'WATCHWORD.INC' INCLUDE 'WATCHREC.INC' * WORD_READY = .false. WORD_LEN = 0 GET_WORD = EOF IF (FORCE_READ) then GET_WORD = GET_RECORD() IF (GET_WORD .eq. EOF) GOTO 90 END IF CALL CHECK_EOLN() DO WHILE (.not. WORD_READY) IF (RECORD_PTR .le. INPUT_LEN) then IDX_PTR = INDEX(TERMINATOR,RECORD(RECORD_PTR:RECORD_PTR)) IF (IDX_PTR .eq. 0) then WORD_LEN = WORD_LEN + 1 WORD(WORD_LEN:WORD_LEN) = RECORD(RECORD_PTR:RECORD_PTR) RECORD_PTR = RECORD_PTR + 1 ELSE IF (WORD_LEN .eq. 0) then WORD_LEN = 1 WORD(1:1) = RECORD(RECORD_PTR:RECORD_PTR) RECORD_PTR = RECORD_PTR + 1 END IF WORD_READY = .true. GET_WORD = NORMAL END IF ELSE IF (WORD_LEN .eq. 0) then GET_WORD = GET_RECORD() IF (GET_WORD .eq. EOF) GOTO 90 CALL CHECK_EOLN() ELSE WORD_READY = .true. GET_WORD = NORMAL END IF END IF END DO 90 CONTINUE RETURN END