|
|
1.1 root 1: SUBROUTINE GOTO
2: INTEGER STMT, PSTMT
3: LOGICAL TOKLAB, DONE, ERR, SYSERR, ABORT
4: COMMON /DETECT/ ERR, SYSERR, ABORT
5: COMMON /INPUT/ NSTMT, PSTMT, STMT(1327)
6: C
7: C PROCESSES UNCONDITIONAL, ASSIGNED, AND COMPUTED GOTO STMTS
8: C
9: IF (PSTMT.GE.NSTMT) GO TO 100
10: DONE = .FALSE.
11: C
12: C UNCONDITIONAL GOTO
13: C
14: IF (TOKLAB(1,K2,K,.FALSE.)) GO TO 110
15: C
16: C COMPUTED GOTO
17: C
18: IF (SYSERR) GO TO 110
19: IF (STMT(PSTMT).EQ.65) GO TO 70
20: C
21: C ASSIGNED GOTO: GOTO <VAR> , ( <LAB> , ETC. )
22: C
23: 10 CALL NEXTOK(PSTMT, K2, K)
24: IF (K.NE.0) GO TO 100
25: K = LOOKUP(K2,.FALSE.)
26: IF (SYSERR) GO TO 110
27: I1 = IGATT1(K,1)
28: IF (I1.NE.0) GO TO 20
29: I1 = 1
30: IF (STMT(PSTMT).GE.38 .AND. STMT(PSTMT).LE.43) I1 = 2
31: CALL SATT1(K, 1, I1)
32: 20 I2 = IGATT1(K,7)
33: IF (MOD(I1,8).NE.2 .OR. I2.NE.0) CALL ERROR1(
34: * 31H NOT AN INTEGER SCALAR VARIABLE, 31)
35: I1 = IGATT1(K,8)
36: IF (DONE) GO TO 40
37: C
38: C CHECK FOR ASSIGN VARIABLE IN USAGE
39: C
40: IF (I1.EQ.0) GO TO 30
41: IF (I1.NE.8) CALL ERROR1(26H ID NOT AN ASSIGN VARIABLE, 26)
42: GO TO 60
43: 30 CALL SATT1(K, 8, 8)
44: GO TO 60
45: C
46: C CHECK FOR VARIABLE IN USAGE
47: C
48: 40 IF (I1.EQ.0) GO TO 50
49: IF (I1.NE.10) CALL ERROR1(19H ILLEGAL ID IN GOTO, 19)
50: GO TO 130
51: 50 CALL SATT1(K, 8, 10)
52: GO TO 130
53: C
54: C LOOK FOR ","
55: C
56: 60 IF (STMT(K2).NE.68) GO TO 100
57: K2 = K2 + 1
58: DONE = .TRUE.
59: IF (STMT(K2).NE.65) GO TO 100
60: GO TO 80
61: 70 PSTMT = PSTMT + 1
62: GO TO 90
63: 80 PSTMT = K2 + 1
64: C
65: C LOOK FOR ( <LAB> , ETC.)
66: C
67: 90 IF (PSTMT.GE.NSTMT) GO TO 100
68: IF (.NOT.TOKLAB(1,K2,K,.FALSE.)) GO TO 100
69: IF(SYSERR) GOTO 110
70: IF (STMT(K2).EQ.68) GO TO 80
71: IF (STMT(K2).NE.62) GO TO 100
72: IF (DONE) GO TO 120
73: DONE = .TRUE.
74: IF (STMT(K2+1).NE.68) GO TO 100
75: PSTMT = K2 + 2
76: IF (PSTMT.LT.NSTMT) GO TO 10
77: 100 CALL ERROR1(15H ILLEGAL SYNTAX, 15)
78: 110 RETURN
79: C
80: C CHECK END OF STMT IS REACHED
81: C
82: 120 K2 = K2 + 1
83: 130 IF (K2.NE.NSTMT) CALL ERROR1(
84: * 34H EXTRANEOUS INFO AFTER END OF STMT, 34)
85: GO TO 110
86: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.