Annotation of researchv10no/cmd/pfort/SUBS.f, revision 1.1

1.1     ! root        1:       SUBROUTINE SUBS(K2, NO)
        !             2:       INTEGER STMT, PSTMT
        !             3:       LOGICAL ERR, SYSERR, ABORT, TOKPNO
        !             4:       COMMON /DETECT/ ERR, SYSERR, ABORT
        !             5:       COMMON /INPUT/ NSTMT, PSTMT, STMT(1327)
        !             6: C
        !             7: C     STMT(PSTMT)-STMT(K2-1) CONTAIN SUBSCRIPT CONSTRUCT
        !             8: C     NO IS NUMBER OF SUBSCRIPTS EXPECTED
        !             9: C     ROUTINE CHECKS SYNTAX AND NUMBER OF SUBSCRIPTS
        !            10: C     IF FLUSH OF CONSTRUCT IS NECESSARY, AND NSTMT IS REACHED
        !            11: C     ERR=.TRUE.
        !            12: C
        !            13:       ICNT = 0
        !            14:    10 CALL NEXTOK(PSTMT, K2, K)
        !            15:       IF (K.EQ.0) GO TO 70
        !            16:       IF (TOKPNO(PSTMT,K2,LL)) GO TO 60
        !            17:    20 CALL ERROR1(28H ILLEGAL SYNTAX OF SUBSCRIPT, 28)
        !            18: C
        !            19: C     FLUSH TO END OF SUBSCRIPT CONSTRUCTION
        !            20: C
        !            21:    30 IF (STMT(K2).EQ.62) GO TO 40
        !            22:       K2 = K2 + 1
        !            23:       IF (K2.LT.NSTMT) GO TO 30
        !            24:       ERR = .TRUE.
        !            25:       GO TO 50
        !            26:    40 K2 = K2 + 1
        !            27:    50 RETURN
        !            28:    60 IF (STMT(K2).NE.66) GO TO 130
        !            29:       PSTMT = K2 + 1
        !            30:       IF (PSTMT.GE.NSTMT) GO TO 20
        !            31:       CALL NEXTOK(PSTMT, K2, K)
        !            32:       IF (K.NE.0) GO TO 20
        !            33: C
        !            34: C     ACESS SYMBOL TABLE ENTRY FOR VARIABLE TO DETERMINE
        !            35: C     USAGE AND TYPE
        !            36: C
        !            37:    70 KQ = LOOKUP(K2,.FALSE.)
        !            38:       IF (SYSERR) GO TO 30
        !            39:       I1 = IGATT1(KQ,1)
        !            40:       I1 = MOD(I1,8)
        !            41:       I2 = IGATT1(KQ,7)
        !            42:       I3 = IGATT1(KQ,8)
        !            43:       IF (I3.EQ.0) GO TO 90
        !            44:       IF (I3.EQ.10) GO TO 100
        !            45:    80 CALL ERROR1(43H ILLEGAL VARIABLE IN SUBSCRIPT CONSTRUCTION, 43)
        !            46:       GO TO 120
        !            47:    90 CALL SATT1(KQ, 8, 10)
        !            48: C
        !            49: C     IMPLICITLY TYPE VARIABLES FIRST ENCOUNTERED IN SUBSCRIPT
        !            50: C     CONSTRUCT
        !            51: C
        !            52:   100 IF (I1.GT.0) GO TO 110
        !            53:       I1 = 1
        !            54:       IF (STMT(PSTMT).GE.38 .AND. STMT(PSTMT).LE.43) I1 = 2
        !            55:       CALL SATT1(KQ, 1, I1)
        !            56:   110 IF (I2.NE.0 .OR. I1.NE.2) GO TO 80
        !            57:   120 IF (STMT(K2).NE.60 .AND. STMT(K2).NE.61) GO TO 130
        !            58:       CALL NEXTOK(K2+1, K3, K)
        !            59:       IF (K.NE.1) GO TO 20
        !            60:       K2 = K3
        !            61:   130 ICNT = ICNT + 1
        !            62:       IF (STMT(K2).EQ.68) GO TO 140
        !            63:       IF (STMT(K2).NE.62) GO TO 20
        !            64:       IF (NO.NE.ICNT) CALL ERROR1(34H INCOMPATIBLE NUMBER OF SUBSCRIPTS,
        !            65:      *    34)
        !            66:       IF (ICNT.GT.3) CALL ERROR1(20H TOO MANY SUBSCRIPTS, 20)
        !            67:       GO TO 40
        !            68:   140 PSTMT = K2 + 1
        !            69:       IF (PSTMT.GE.NSTMT) GO TO 20
        !            70:       GO TO 10
        !            71:       END

unix.superglobalmegacorp.com

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