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

1.1     ! root        1:       SUBROUTINE GOTO
        !             2:       INTEGER STMT, PSTMT
        !             3:       LOGICAL TOKLAB, DONE, ERR, SYSERR, ABORT
        !             4:       COMMON /DETECT/ ERR, SYSERR, ABORT
        !             5:       COMMON /INPUT/ NSTMT, PSTMT, STMT(1327)
        !             6: C
        !             7: C     PROCESSES UNCONDITIONAL, ASSIGNED, AND COMPUTED GOTO  STMTS
        !             8: C
        !             9:       IF (PSTMT.GE.NSTMT) GO TO 100
        !            10:       DONE = .FALSE.
        !            11: C
        !            12: C     UNCONDITIONAL GOTO
        !            13: C
        !            14:       IF (TOKLAB(1,K2,K,.FALSE.)) GO TO 110
        !            15: C
        !            16: C     COMPUTED GOTO
        !            17: C
        !            18:       IF (SYSERR) GO TO 110
        !            19:       IF (STMT(PSTMT).EQ.65) GO TO 70
        !            20: C
        !            21: C     ASSIGNED GOTO:  GOTO <VAR> , ( <LAB> , ETC. )
        !            22: C
        !            23:    10 CALL NEXTOK(PSTMT, K2, K)
        !            24:       IF (K.NE.0) GO TO 100
        !            25:       K = LOOKUP(K2,.FALSE.)
        !            26:       IF (SYSERR) GO TO 110
        !            27:       I1 = IGATT1(K,1)
        !            28:       IF (I1.NE.0) GO TO 20
        !            29:       I1 = 1
        !            30:       IF (STMT(PSTMT).GE.38 .AND. STMT(PSTMT).LE.43) I1 = 2
        !            31:       CALL SATT1(K, 1, I1)
        !            32:    20 I2 = IGATT1(K,7)
        !            33:       IF (MOD(I1,8).NE.2 .OR. I2.NE.0) CALL ERROR1(
        !            34:      *    31H NOT AN INTEGER SCALAR VARIABLE, 31)
        !            35:       I1 = IGATT1(K,8)
        !            36:       IF (DONE) GO TO 40
        !            37: C
        !            38: C     CHECK FOR ASSIGN VARIABLE IN USAGE
        !            39: C
        !            40:       IF (I1.EQ.0) GO TO 30
        !            41:       IF (I1.NE.8) CALL ERROR1(26H ID NOT AN ASSIGN VARIABLE, 26)
        !            42:       GO TO 60
        !            43:    30 CALL SATT1(K, 8, 8)
        !            44:       GO TO 60
        !            45: C
        !            46: C     CHECK FOR VARIABLE IN USAGE
        !            47: C
        !            48:    40 IF (I1.EQ.0) GO TO 50
        !            49:       IF (I1.NE.10) CALL ERROR1(19H ILLEGAL ID IN GOTO, 19)
        !            50:       GO TO 130
        !            51:    50 CALL SATT1(K, 8, 10)
        !            52:       GO TO 130
        !            53: C
        !            54: C     LOOK FOR ","
        !            55: C
        !            56:    60 IF (STMT(K2).NE.68) GO TO 100
        !            57:       K2 = K2 + 1
        !            58:       DONE = .TRUE.
        !            59:       IF (STMT(K2).NE.65) GO TO 100
        !            60:       GO TO 80
        !            61:    70 PSTMT = PSTMT + 1
        !            62:       GO TO 90
        !            63:    80 PSTMT = K2 + 1
        !            64: C
        !            65: C     LOOK FOR  ( <LAB> , ETC.)
        !            66: C
        !            67:    90 IF (PSTMT.GE.NSTMT) GO TO 100
        !            68:       IF (.NOT.TOKLAB(1,K2,K,.FALSE.)) GO TO 100
        !            69:       IF(SYSERR) GOTO 110
        !            70:       IF (STMT(K2).EQ.68) GO TO 80
        !            71:       IF (STMT(K2).NE.62) GO TO 100
        !            72:       IF (DONE) GO TO 120
        !            73:       DONE = .TRUE.
        !            74:       IF (STMT(K2+1).NE.68) GO TO 100
        !            75:       PSTMT = K2 + 2
        !            76:       IF (PSTMT.LT.NSTMT) GO TO 10
        !            77:   100 CALL ERROR1(15H ILLEGAL SYNTAX, 15)
        !            78:   110 RETURN
        !            79: C
        !            80: C     CHECK END OF STMT IS REACHED
        !            81: C
        !            82:   120 K2 = K2 + 1
        !            83:   130 IF (K2.NE.NSTMT) CALL ERROR1(
        !            84:      *    34H EXTRANEOUS INFO AFTER END OF STMT, 34)
        !            85:       GO TO 110
        !            86:       END

unix.superglobalmegacorp.com

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