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

1.1       root        1:       SUBROUTINE SETEXT
                      2:       INTEGER Z, FINDND, PLAT, PNODE, PP, SS(3), SYMLEN
                      3:       INTEGER BLANK
                      4:       LOGICAL ERR, SYSERR, ABORT
                      5:       COMMON /SCR1/ LINODE, INODE(500)
                      6:       COMMON /GRAPH/ LLAT, PLAT, LAT(6000)
                      7:       COMMON /INTS/ Z(346)
                      8:       COMMON /DETECT/ ERR, SYSERR, ABORT
                      9:       COMMON /HEAD/ LNODE, PNODE, NODE(500)
                     10:       COMMON /PARAMS/ I1, I2, I3, SYMLEN, I4, I5, I6
                     11:       DATA BLANK /1H /
                     12: C
                     13: C     SUBROUTINE SETS UP DEFNS FOR BASIC EXTERNAL FCNS USED IN PASS 1
                     14: C     FLUSH PAST INTRINSICS IN TABLE
                     15: C
                     16:       K = 1
                     17:       DO 10 I=1,31
                     18:         K = K + Z(K) + 2
                     19:    10 CONTINUE
                     20: C
                     21: C     SEARCH EXTERNAL ENTRIES IN TABLE TO SEE WHICH HAVE BEEN USED
                     22: C
                     23:       DO 90 I=1,24
                     24:         N = K + Z(K) + 1
                     25:         L = Z(N)/1024
                     26:         IF (L) 80, 80, 20
                     27: C
                     28: C     SEE IF THIS EXTERNAL FCN HAS BEEN USER DEFINED
                     29: C
                     30:    20   L = Z(K)
                     31:         DO 30 J=1,SYMLEN
                     32:           SS(J) = BLANK
                     33:    30   CONTINUE
                     34:         CALL S5PACK(Z(K+1), SS, L)
                     35:         LL = FINDND(SS(1),J)
                     36:         IF (LL.NE.0) GO TO 80
                     37: C
                     38: C     SETUP LATTICE ENTRY FOR THIS EXERNAL FCN
                     39: C
                     40:         IF (PNODE+1.GE.LNODE) GO TO 120
                     41:         IF (PLAT+SYMLEN+8.GE.LLAT) GO TO 110
                     42: C     SET LEVEL OF BASIC EXTERNAL FUNCTION TO -2
                     43:         INODE(PNODE) = -2
                     44:         NODE(PNODE) = PLAT
                     45:         PNODE = PNODE + 1
                     46:         DO 40 J=1,SYMLEN
                     47:           L = PLAT + J - 1
                     48:           LAT(L) = SS(J)
                     49:    40   CONTINUE
                     50:         PP = PLAT
                     51:         PLAT = PLAT + SYMLEN
                     52:         LAT(PLAT) = MOD(Z(N),512)/128
                     53:         L = PLAT + 1
                     54:         LL = PLAT + 5
                     55:         DO 50 NN=L,LL
                     56:           LAT(NN) = 0
                     57:    50   CONTINUE
                     58:         LAT(PLAT+6) = 6 + 8*MOD(Z(N),8)
                     59:         NO = LAT(PLAT)
                     60:         PLAT = PLAT + 7
                     61: C
                     62: C     FILL IN ARG ENTRIES
                     63: C     NO CONTAINS NUMBER OF ARGS
                     64: C
                     65:         IF ((PLAT+4)*NO.GE.LLAT) GO TO 110
                     66:         L = PP + SYMLEN + 1
                     67:    60   LL = PLAT + 3
                     68:         DO 70 NN=PLAT,LL
                     69:           LAT(NN) = 0
                     70:    70   CONTINUE
                     71:         CALL SATT2(PLAT, 1, MOD(Z(N),64)/8)
                     72:         CALL SATT2(PLAT, 4, 1)
                     73:         CALL SATT2(PLAT, 8, 10)
                     74:         LAT(L) = PLAT
                     75:         LAT(PLAT+1) = 1
                     76:         L = PLAT + 3
                     77:         PLAT = PLAT + 4
                     78:         IF (NO.EQ.1) GO TO 80
                     79:         NO = NO - 1
                     80:         GO TO 60
                     81:    80   K = N + 1
                     82:    90 CONTINUE
                     83:   100 RETURN
                     84:   110 CALL ERROR1(33H IN SETEXT, TABLE OVERFLOW OF LAT, 33)
                     85:       GO TO 130
                     86:   120 CALL ERROR1(34H IN SETEXT, TABLE OVERFLOW OF NODE, 34)
                     87:   130 SYSERR = .TRUE.
                     88:       GO TO 100
                     89:       END

unix.superglobalmegacorp.com

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