|
|
1.1 ! root 1: SUBROUTINE SUBS(K2, NO) ! 2: INTEGER STMT, PSTMT ! 3: LOGICAL ERR, SYSERR, ABORT, TOKPNO ! 4: COMMON /DETECT/ ERR, SYSERR, ABORT ! 5: COMMON /INPUT/ NSTMT, PSTMT, STMT(1327) ! 6: C ! 7: C STMT(PSTMT)-STMT(K2-1) CONTAIN SUBSCRIPT CONSTRUCT ! 8: C NO IS NUMBER OF SUBSCRIPTS EXPECTED ! 9: C ROUTINE CHECKS SYNTAX AND NUMBER OF SUBSCRIPTS ! 10: C IF FLUSH OF CONSTRUCT IS NECESSARY, AND NSTMT IS REACHED ! 11: C ERR=.TRUE. ! 12: C ! 13: ICNT = 0 ! 14: 10 CALL NEXTOK(PSTMT, K2, K) ! 15: IF (K.EQ.0) GO TO 70 ! 16: IF (TOKPNO(PSTMT,K2,LL)) GO TO 60 ! 17: 20 CALL ERROR1(28H ILLEGAL SYNTAX OF SUBSCRIPT, 28) ! 18: C ! 19: C FLUSH TO END OF SUBSCRIPT CONSTRUCTION ! 20: C ! 21: 30 IF (STMT(K2).EQ.62) GO TO 40 ! 22: K2 = K2 + 1 ! 23: IF (K2.LT.NSTMT) GO TO 30 ! 24: ERR = .TRUE. ! 25: GO TO 50 ! 26: 40 K2 = K2 + 1 ! 27: 50 RETURN ! 28: 60 IF (STMT(K2).NE.66) GO TO 130 ! 29: PSTMT = K2 + 1 ! 30: IF (PSTMT.GE.NSTMT) GO TO 20 ! 31: CALL NEXTOK(PSTMT, K2, K) ! 32: IF (K.NE.0) GO TO 20 ! 33: C ! 34: C ACESS SYMBOL TABLE ENTRY FOR VARIABLE TO DETERMINE ! 35: C USAGE AND TYPE ! 36: C ! 37: 70 KQ = LOOKUP(K2,.FALSE.) ! 38: IF (SYSERR) GO TO 30 ! 39: I1 = IGATT1(KQ,1) ! 40: I1 = MOD(I1,8) ! 41: I2 = IGATT1(KQ,7) ! 42: I3 = IGATT1(KQ,8) ! 43: IF (I3.EQ.0) GO TO 90 ! 44: IF (I3.EQ.10) GO TO 100 ! 45: 80 CALL ERROR1(43H ILLEGAL VARIABLE IN SUBSCRIPT CONSTRUCTION, 43) ! 46: GO TO 120 ! 47: 90 CALL SATT1(KQ, 8, 10) ! 48: C ! 49: C IMPLICITLY TYPE VARIABLES FIRST ENCOUNTERED IN SUBSCRIPT ! 50: C CONSTRUCT ! 51: C ! 52: 100 IF (I1.GT.0) GO TO 110 ! 53: I1 = 1 ! 54: IF (STMT(PSTMT).GE.38 .AND. STMT(PSTMT).LE.43) I1 = 2 ! 55: CALL SATT1(KQ, 1, I1) ! 56: 110 IF (I2.NE.0 .OR. I1.NE.2) GO TO 80 ! 57: 120 IF (STMT(K2).NE.60 .AND. STMT(K2).NE.61) GO TO 130 ! 58: CALL NEXTOK(K2+1, K3, K) ! 59: IF (K.NE.1) GO TO 20 ! 60: K2 = K3 ! 61: 130 ICNT = ICNT + 1 ! 62: IF (STMT(K2).EQ.68) GO TO 140 ! 63: IF (STMT(K2).NE.62) GO TO 20 ! 64: IF (NO.NE.ICNT) CALL ERROR1(34H INCOMPATIBLE NUMBER OF SUBSCRIPTS, ! 65: * 34) ! 66: IF (ICNT.GT.3) CALL ERROR1(20H TOO MANY SUBSCRIPTS, 20) ! 67: GO TO 40 ! 68: 140 PSTMT = K2 + 1 ! 69: IF (PSTMT.GE.NSTMT) GO TO 20 ! 70: GO TO 10 ! 71: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.