|
|
1.1 ! root 1: SUBROUTINE SETASF(PP, K) ! 2: INTEGER PP, SYMLEN, PLAT, PDSA, SETARG, PNODE, DSA ! 3: LOGICAL ERR, SYSERR, ABORT ! 4: COMMON /GRAPH/ LLAT, PLAT, LAT(6000) ! 5: COMMON /HEAD/ LNODE, PNODE, NODE(500) ! 6: COMMON /CTABL/ LDSA, PDSA, DSA(5000) ! 7: COMMON /PARAMS/ INUT, I1, NOCHAR, SYMLEN, I2, I3, I4 ! 8: COMMON /DETECT/ ERR, SYSERR, ABORT ! 9: C ! 10: C SETUP ASF NODE; IT HAS A NODE JUST LIKE A RTNE ! 11: C EXCEPT ITS INDEX IN NODE IS NEGATIVE ! 12: C PP-COM ADDRESS OF PARENT SUBPGM ! 13: C K-DSA ADDRESS OF ASF ENTRY ! 14: C ! 15: IF (PNODE+1.GT.LNODE) GO TO 40 ! 16: IF (PLAT+SYMLEN+11.GT.LLAT) GO TO 60 ! 17: C ! 18: C CREATE NEW NODE ENTRY ! 19: C ! 20: NODE(PNODE) = -PLAT ! 21: PNODE = PNODE + 1 ! 22: C ! 23: C ENTER NAME AND ZERO REST OF NODE ! 24: C ! 25: DO 10 I=1,SYMLEN ! 26: L = K + 3 + I ! 27: LL = PLAT + I - 1 ! 28: LAT(LL) = DSA(L) ! 29: 10 CONTINUE ! 30: DO 20 I=1,6 ! 31: L = LL + I ! 32: LAT(L) = 0 ! 33: 20 CONTINUE ! 34: C ! 35: C SET LAST ELEMENT TO TYPE OF PGM UNIT ! 36: C STORE IN SAME WORD ASF TYPE ! 37: C ! 38: I = IGATT1(K,1) ! 39: LAT(L+1) = 4 + 8*MOD(I,8) ! 40: C ! 41: C SETUP PARENT'S LIST TO POINT TO PP IN ASF NODE ! 42: C ! 43: L = PLAT + SYMLEN + 3 ! 44: LAT(L) = L + 4 ! 45: LAT(L+4) = PP ! 46: LAT(L+5) = 0 ! 47: KQ = PLAT ! 48: PLAT = L + 6 ! 49: C ! 50: C SETUP REFERENCE IN PP'S DESCENDENTS LIST ! 51: C ! 52: II = PP + SYMLEN + 4 ! 53: LAT(PLAT) = KQ ! 54: LAT(PLAT+1) = LAT(II) ! 55: LAT(II) = PLAT ! 56: PLAT = PLAT + 2 ! 57: C ! 58: C SETUP ARGUMENTS ! 59: C ! 60: L = KQ + SYMLEN ! 61: LAT(L) = SETARG(KQ,K) ! 62: 30 RETURN ! 63: 40 CALL ERROR1(34H IN SETASF, TABLE OVERFLOW OF NODE, 34) ! 64: 50 SYSERR = .TRUE. ! 65: GO TO 30 ! 66: 60 CALL ERROR1(33H IN SETASF, TABLE OVERFLOW OF LAT, 33) ! 67: GO TO 50 ! 68: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.