|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.