Annotation of researchv10no/cmd/pfort/GETTOK.f, revision 1.1.1.1

1.1       root        1:       INTEGER FUNCTION GETTOK(K1, K2)
                      2: C
                      3: C     GETTOK FINDS NEXT TOKEN IN STMT(K1)-STMT(K2-1)
                      4: C     AND RETURNS A VALUE:
                      5: C     0= DOUBLE PRECISION CONSTANT-
                      6: C     2= INTEGER CONSTANT
                      7: C     1= REAL CONSTANT-
                      8: C     3= COMPLEX CONSTANT
                      9: C     4= LOGICAL CONSTANT
                     10: C     5= HOLLERITH CONSTANT
                     11: C     6= ID
                     12: C    >10=OPERATOR   (10+CODE FOR OPERATOR;HERE ARRAY AND FCN REFS ARE 16
                     13: C
                     14:       INTEGER PSTMT, STMT
                     15:       LOGICAL ERR, SYSERR, ABORT, TOKLOP, TOKRL, TOKCOM, TOKLOG
                     16:       COMMON /INPUT/ NSTMT, PSTMT, STMT(1327)
                     17:       COMMON /DETECT/ ERR, SYSERR, ABORT
                     18:    10 GETTOK = -1
                     19:       IF (.NOT.TOKRL(K1,K2,K)) GO TO 20
                     20:       GETTOK = 1
                     21:       IF (K.EQ.0) GETTOK = 0
                     22:       GO TO 40
                     23:    20 CALL NEXTOK(K1, K2, K)
                     24:       K = K + 1
                     25:       GO TO (50, 30, 60, 70), K
                     26:    30 GETTOK = 2
                     27:    40 RETURN
                     28: C
                     29: C     PROCESS ID, SEE IF ITS A FCN  CALL OR ARRAY NAME
                     30: C
                     31:    50 GETTOK = 6
                     32:       IF (STMT(K2).NE.65) GO TO 40
                     33:       GETTOK = 16
                     34:       K2 = K2 + 1
                     35:       GO TO 40
                     36:    60 GETTOK = 5
                     37:       GO TO 40
                     38:    70 K = STMT(K1)
                     39:       IF (K.EQ.64) GO TO 100
                     40:       IF (K.EQ.65) GO TO 80
                     41:       IF (K.EQ.62) GETTOK = 12
                     42:       IF (K.EQ.68) GETTOK = 18
                     43:       IF (K.EQ.60 .OR. K.EQ.61) GETTOK = 11
                     44:       IF (K.EQ.66 .OR. K.EQ.67) GETTOK = 17
                     45:       IF (K2.EQ.K1+2) GETTOK = 13
                     46:       IF (GETTOK+1) 40, 120, 40
                     47:    80 GETTOK = 15
                     48:       IF (TOKCOM(K1,K)) GO TO 90
                     49:       GO TO 40
                     50:    90 GETTOK = 3
                     51:       K2 = K
                     52:       GO TO 40
                     53: C
                     54: C     CHECK FOR LOGICAL CONSTANTS,OPERATORS
                     55: C
                     56:   100 IF (.NOT.TOKLOG(K1,K2)) GO TO 110
                     57:       GETTOK = 4
                     58:       GO TO 40
                     59:   110 IF (.NOT.TOKLOP(K1,K2,K)) GO TO 120
                     60:       GETTOK = K
                     61:       GO TO 40
                     62:   120 CALL ERROR1(26H ILLEGAL CHARACTER IGNORED, 26)
                     63:       IF (K1+1.GE.NSTMT) GO TO 130
                     64:       K1 = K1 + 1
                     65:       GO TO 10
                     66:   130 ERR = .TRUE.
                     67:       RETURN
                     68:       END

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.