|
|
1.1 ! root 1: SUBROUTINE DOCHK(KK) ! 2: INTEGER DOLIST, DOPT, OUTUT, SYMLEN, OUTUT2, DSA, PDSA, OUTUT3, ! 3: * STACK, OUTUT4 ! 4: COMMON /DOS/ DOPT, LDO, DOLIST(192) ! 5: COMMON /CEXPRS/ LSTACK, STACK(620) ! 6: COMMON /PARAMS/ INUT, OUTUT, NOCHAR, SYMLEN, OUTUT2, OUTUT3, ! 7: * OUTUT4 ! 8: COMMON /FACTS/ NAME, NOST, ITYP, IASF ! 9: COMMON /CTABL/ LDSA, PDSA, DSA(5000) ! 10: C ! 11: C KK IS SYMBOL TABLE ENTRY OF LABEL ! 12: C ROUTINE CHECKS ALL LABELS FOR BEING END OF DO-STMTS; IF LABEL IS ! 13: C END-OF-DO, ALL LABELS WITHIN THAT DO, HAVE END-OF-DEFN STMT NO ! 14: C RECORDED IN THEM; DOPT IS DECREMENTED, A MOCK END-OF-DO IS ! 15: C CREATED BY THE END STMT IN THE PGM UNIT; DOLIST MUST BE EMPTY ! 16: C AFTER THIS PROCESSING OF AN END, ! 17: C PERFORMS FIXUP ON SCOPE OF LABELS ENDING MULTIPLE NESTED DO'S ! 18: C ! 19: IF (ITYP.EQ.28) GO TO 50 ! 20: IF (DOLIST(DOPT+1).NE.KK) GO TO 40 ! 21: 10 CALL FIXLAB(.FALSE.) ! 22: DOPT = DOPT - 6 ! 23: IF (ITYP.EQ.15 .OR. ITYP.EQ.16 .OR. (ITYP.GE.19 .AND. ! 24: * ITYP.LE.22)) CALL ERROR1(26H ILLEGAL ENDING STMT ON DO, 26) ! 25: IF (DOLIST(DOPT+1).NE.KK) GO TO 40 ! 26: C ! 27: C GET REFERENCE TO NESTED DO ENDING AND MAKE REFERENCE ! 28: C TO DO STATEMENT A NEGATIVE NUMBER ! 29: C SO IT WON'T BE AN ILLEGAL BRANCH ! 30: C ! 31: K = DSA(KK+1) ! 32: L = DOLIST(DOPT) ! 33: 20 IF (DSA(K).EQ.L) GO TO 30 ! 34: K = DSA(K+1) ! 35: GO TO 20 ! 36: 30 DSA(K) = -DSA(K) ! 37: GO TO 10 ! 38: 40 RETURN ! 39: 50 CALL FIXLAB(.TRUE.) ! 40: IF (DOPT-6.LE.0) GO TO 40 ! 41: LL = 1 ! 42: L = DOPT/6 ! 43: DO 60 I=1,L ! 44: J = DOPT + 7 - 6*I ! 45: K = DOLIST(J) ! 46: CALL S5UNPK(DSA(K+4), STACK(LL), 6) ! 47: LL = LL + 6 ! 48: 60 CONTINUE ! 49: LL = LL - 1 ! 50: IF (LL.LE.55) GO TO 70 ! 51: 99999 FORMAT (/25H MISSING DO ENDING LABEL , 55A1) ! 52: WRITE (OUTUT,99999) (STACK(L),L=1,55) ! 53: WRITE (OUTUT,99998) (STACK(L),L=56,LL) ! 54: GO TO 40 ! 55: 99998 FORMAT (25X, 55A1) ! 56: 70 WRITE (OUTUT,99999) (STACK(L),L=1,LL) ! 57: GO TO 40 ! 58: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.