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

1.1       root        1:       SUBROUTINE COMCHK(MAIN)
                      2:       INTEGER TEMP(1), PLAT, STAR, PCOM, COM, PNODE, SYMLEN
                      3:       INTEGER ZERO(1)
                      4:       COMMON /COMS/ LCOM, PCOM, COM(300)
                      5:       COMMON /GRAPH/ LLAT, PLAT, LAT(6000)
                      6:       COMMON /PARAMS/ I1, I2, I3, SYMLEN, I4, I5, I6
                      7:       COMMON /HEAD/ LNODE, PNODE, NODE(500)
                      8:       COMMON /SCR2/ LNN, NN(500)
                      9:       DATA STAR /1H*/
                     10:       DATA ZERO(1) /0/
                     11: C
                     12: C     ALGORITHM TO CHECK FOR LEGAL USE OF COMMON IN PGM UNITS
                     13: C     NODE(MAIN) POINTS TO SUPEROOT ENTRY IN LAT
                     14: C
                     15:       IF (PCOM.LE.0) GO TO 130
                     16:       LK = 1
                     17:    10 IF (LK.GE.PCOM-1) GO TO 130
                     18: C
                     19: C     CHECK COMMON ISNT BLANK COMMON
                     20: C
                     21:       CALL S5UNPK(COM(LK), TEMP, 1)
                     22:       IF (TEMP(1).EQ.STAR) GO TO 120
                     23: C
                     24: C     CHECK THAT COMMON BLOCK NOT IN BLOCK DATA PGM
                     25: C     NEED NOT CHECK THE COMMON
                     26: C
                     27:       K = LK + SYMLEN + 1
                     28:       IF (COM(K).EQ.1) GO TO 120
                     29: C
                     30: C     NEED ALGORITHM TO CHECK OUT THIS COMMON
                     31: C
                     32:       L = PNODE - 1
                     33:       DO 20 K=1,L
                     34:         NN(K) = 0
                     35:         IF (NODE(K).LT.0) NN(K) = 1
                     36:    20 CONTINUE
                     37:       ICNT = 0
                     38:       NN(MAIN) = 2
                     39: C
                     40: C     SEARCH FOR A 2 NODE
                     41: C
                     42:    30 L = PNODE - 1
                     43:       DO 40 K=1,L
                     44:         IF (NN(K).EQ.2) GO TO 50
                     45:    40 CONTINUE
                     46:       GO TO 120
                     47: C
                     48: C     FOUND A 2 NODE; CHANGE TO 1 TO SHOW HAVE VISITED IT;
                     49: C     IF SUBPGM CONTAINS COMMON IN QUESTION INCREMENT COUNT;
                     50: C     IF COUNT> 1 ERROR IN USAGE
                     51: C     IF SUBPGM DOESN'T CONTAIN COMMON, MARK HIS DESC 2 IF THEY ARE 0.
                     52: C
                     53:    50 NN(K) = 1
                     54:       LBR = NODE(K)
                     55:       L = NODE(K) + SYMLEN + 2
                     56:       L = LAT(L)
                     57:    60 IF (L.EQ.0) GO TO 90
                     58:       IF (LAT(L).NE.LK) GO TO 80
                     59: C
                     60: C     FOUND COMMON LK AT THIS NODE
                     61: C     MARK NODE TO A 3
                     62: C
                     63:       NN(K) = 3
                     64:       ICNT = ICNT + 1
                     65:       IF (ICNT.LE.1) GO TO 30
                     66:       CALL ERROR2(31H ILLEGAL USAGE OF COMMON BLOCK , 31, COM(LK),
                     67:      *  1, 1, 0)
                     68:       K = PNODE - 1
                     69:       DO 70 I=1,K
                     70:         L = NODE(I)
                     71:         IF (NN(I).EQ.3) CALL ERROR2(19H WHICH APPEARED IN , 19, LAT(L),
                     72:      *  1, 0, 0)
                     73:    70 CONTINUE
                     74:       CALL ERROR2( 1H1, 0, ZERO(1), -3, 0, 1)
                     75:       GO TO 120
                     76:    80 L = LAT(L+2)
                     77:       GO TO 60
                     78: C
                     79: C     ARE DONE SEARCHING FOR COMMON LK AT THIS NODE
                     80: C     ADD DESCENDENTS ONTO LIST TO BE VISITED
                     81: C
                     82:    90 L = NODE(K) + SYMLEN + 4
                     83:       L = LAT(L)
                     84:   100 IF (L.EQ.0) GO TO 30
                     85:       K = PNODE - 1
                     86: C
                     87: C     FIND DESC OF NODE AND IF NOT VISITED SET TO 2
                     88: C
                     89:       DO 110 I=1,K
                     90:         IF (NODE(I).NE.LAT(L)) GO TO 110
                     91:         IF (NN(I).EQ.0) NN(I) = 2
                     92:   110 CONTINUE
                     93:       L = LAT(L+1)
                     94:       GO TO 100
                     95:   120 LK = LK + SYMLEN + 5
                     96:       GO TO 10
                     97:   130 RETURN
                     98:       END

unix.superglobalmegacorp.com

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