SpectraRust/synspec/extracted/getwrd.f
2026-03-19 14:05:33 +08:00

48 lines
986 B
Fortran

SUBROUTINE GETWRD(TEXT,K0,K1,K2)
C
C FINDS NEXT WORD IN TEXT FROM INDEX K0. NEXT WORD IS TEXT(K1:K2)
C THE NEXT WORD STARTS AT THE FIRST ALPHANUMERIC CHARACTER AT K0
C OR AFTER. IT ENDS WITH THE LAST ALPHANUMERIC CHARACTER IN A ROW
C FROM THE START
C
C TAKEN FROM MULTI - M. CARLSSON (1976)
C
C INCLUDE 'IMPLIC.FOR'
PARAMETER (MSEPAR=7)
CHARACTER*(*) TEXT
CHARACTER SEPAR(MSEPAR)
DATA SEPAR/' ','(',')','=','*','/',','/
C
K1=0
DO 400 I=K0,LEN(TEXT)
IF(K1.EQ.0) THEN
DO 100 J=1,MSEPAR
IF(TEXT(I:I).EQ.SEPAR(J)) GOTO 200
100 CONTINUE
K1=I
C
C NOT START OF WORD
C
200 CONTINUE
ELSE
DO 300 J=1,MSEPAR
IF(TEXT(I:I).EQ.SEPAR(J)) GOTO 500
300 CONTINUE
ENDIF
400 CONTINUE
C
C NO NEW WORD. RETURN K1=K2=0
C
K1=0
K2=0
GOTO 999
C
C NEW WORD IN TEXT(K1:I-1)
C
500 CONTINUE
K2=I-1
C
999 CONTINUE
RETURN
END