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

1.1     ! root        1:       SUBROUTINE COMMON
        !             2:       INTEGER PSTMT, PDSA, STMT, DSA, BNEXT, SYMHD, S(4)
        !             3:       LOGICAL ERR, SYSERR, ABORT, ARDECL
        !             4:       COMMON /INPUT/ NSTMT, PSTMT, STMT(1327)
        !             5:       COMMON /CTABL/ LDSA, PDSA, DSA(5000)
        !             6:       COMMON /TABL/ NEXT, LABHD, SYMHD, BNEXT
        !             7:       COMMON /DETECT/ ERR, SYSERR, ABORT
        !             8:       COMMON /FACTS/ NAME, NOST, ITYP, IASF
        !             9:       DATA S(1) /66/, S(2) /32/, S(3) /44/, S(4) /42/
        !            10: C
        !            11: C     PROCESSES A COMMON STMT
        !            12: C     FIRST, PEEL OFF NAME OF COMMON AND SET SYMBOL TABLE ENTRY USAGE
        !            13: C     CHECK NAME HAS NOT APPEARED BEFORE IN PGM UNIT
        !            14: C
        !            15:       IF (STMT(PSTMT).EQ.67) GO TO 30
        !            16: C
        !            17: C     SET SYMBOL TABLE ENTRY FOR BLANK COMMON
        !            18: C
        !            19:    10 I1 = IGATT1(NAME,8)
        !            20:       IF (I1.EQ.11) GO TO 170
        !            21:       IF (PSTMT.GE.NSTMT) GO TO 200
        !            22:       L = PSTMT
        !            23:       DO 20 I1=1,4
        !            24:         STMT(I1) = S(I1)
        !            25:    20 CONTINUE
        !            26:       PSTMT = 1
        !            27:       KK = LOOKUP(5,.FALSE.)
        !            28:       IF (SYSERR) GO TO 190
        !            29:       PSTMT = L
        !            30:       CALL SATT1(KK, 8, 7)
        !            31:       GO TO 60
        !            32:    30 PSTMT = PSTMT + 1
        !            33:       IF (STMT(PSTMT).NE.67) GO TO 40
        !            34:       PSTMT = PSTMT + 1
        !            35:       GO TO 10
        !            36:    40 IF (PSTMT.GE.NSTMT) GO TO 200
        !            37:       CALL NEXTOK(PSTMT, K2, L)
        !            38:       IF (L.NE.0) GO TO 200
        !            39:       KK = LOOKUP(K2,.FALSE.)
        !            40:       IF (SYSERR) GO TO 190
        !            41:       I1 = IGATT1(KK,1)
        !            42:       N = IGATT1(KK,8)
        !            43:       IF (I1.EQ.0 .AND. (N.EQ.0 .OR. N.EQ.7)) GO TO 50
        !            44:       CALL ERROR1(20H ILLEGAL COMMON NAME, 20)
        !            45:       GO TO 190
        !            46:    50 CALL SATT1(KK, 8, 7)
        !            47:       I1 = IGATT1(NAME,8)
        !            48:       IF (I1.EQ.11) CALL SATT1(KK, 2, 1)
        !            49:       PSTMT = K2 + 1
        !            50:       IF (PSTMT.GE.NSTMT .OR. STMT(K2).NE.67) GO TO 200
        !            51: C
        !            52: C     ELEMENTS IN COMMON: ARRAYS,VARIABLES,DECLARATIONS OF ARRAYS( NOT
        !            53: C     VARIABLY DIMENSIONED). IMPLICITLY TYPE THEM
        !            54: C
        !            55:    60 IF (ARDECL(K2,N)) GO TO 70
        !            56:       CALL ERROR1(47H COMMON ELEMENT NOT VARIABLE, ARRAY, DECLARATOR,
        !            57:      *    47)
        !            58:       GO TO 190
        !            59:    70 IF (SYSERR .OR. ERR) GO TO 190
        !            60: C
        !            61: C     SET SYMBOL TABLE ENTRY OF ELEMENT TO SHOW ITS IN COMMON
        !            62: C     PUT POINTER TO COMMON NAME INTO 3D WORD OF ENTRY (OR OFF 3D
        !            63: C     WORD--FOR ARRAYS
        !            64: C
        !            65:       I1 = IGATT1(N,2)
        !            66:       IF (I1.NE.0) GO TO 160
        !            67:       CALL SATT1(N, 2, 1)
        !            68:       I1 = IGATT1(N,7)
        !            69:       IF (I1.EQ.0) GO TO 80
        !            70:       L = DSA(N+2)
        !            71:       DSA(L+1) = KK
        !            72:       GO TO 90
        !            73:    80 CALL SATT1(N, 8, 10)
        !            74:       IF (NEXT+2.GE.BNEXT) GO TO 180
        !            75:       DSA(N+2) = NEXT
        !            76:       DSA(NEXT) = 0
        !            77:       DSA(NEXT+1) = KK
        !            78:       NEXT = NEXT + 2
        !            79: C
        !            80: C     SETUP CHAIN OF ELEMENTS OF COMMON HANGING OFF SYMBOL TABLE
        !            81: C     ENTRY OF COMMON NAME
        !            82: C
        !            83:    90 IF (DSA(KK+2).EQ.0) GO TO 130
        !            84:       L = DSA(KK+2)
        !            85:   100 IF (DSA(L+1).EQ.0) GO TO 110
        !            86:       L = DSA(L+1)
        !            87:       GO TO 100
        !            88:   110 IF (NEXT+2.GE.BNEXT) GO TO 180
        !            89:       DSA(L+1) = NEXT
        !            90:   120 DSA(NEXT) = N
        !            91:       DSA(NEXT+1) = 0
        !            92:       NEXT = NEXT + 2
        !            93:       GO TO 140
        !            94:   130 IF (NEXT+2.GE.BNEXT) GO TO 180
        !            95:       DSA(KK+2) = NEXT
        !            96:       GO TO 120
        !            97: C
        !            98: C     CHECK FOR END OF STMT
        !            99: C
        !           100:   140 IF (K2.EQ.NSTMT) GO TO 190
        !           101:       IF (STMT(K2).NE.68) GO TO 150
        !           102:       PSTMT = K2 + 1
        !           103:       GO TO 60
        !           104:   150 IF (STMT(K2).NE.67) GO TO 200
        !           105:       PSTMT = K2
        !           106:       GO TO 30
        !           107:   160 CALL ERROR1(23H ELEMENT IN TWO COMMONS, 23)
        !           108:       GO TO 140
        !           109:   170 CALL ERROR1(
        !           110:      *    51H BLANK COMMON NOT ALLOWED IN BLOCK DATA SUBPROGRAMS, 51)
        !           111:       GO TO 190
        !           112:   180 SYSERR = .TRUE.
        !           113:       CALL ERROR1(33H IN COMMON, TABLE OVERFLOW OF DSA,33)
        !           114:   190 RETURN
        !           115:   200 CALL ERROR1(15H ILLEGAL SYNTAX, 15)
        !           116:       GO TO 190
        !           117:       END

unix.superglobalmegacorp.com

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