V10/cmd/pfort/IFS.f

      SUBROUTINE IFS(LOG)
      LOGICAL TOKLAB, ERR, SYSERR, ABORT, LOG
      INTEGER STMT, PSTMT, EXPR
      COMMON /INPUT/ NSTMT, PSTMT, STMT(1327)
      COMMON /DETECT/ ERR, SYSERR, ABORT
C
C     ROUTINE PROCESSES ARITHMETIC AND LOGICAL IF STMTS
C     LOG RETURNED AS TRUE IF LOGICAL-IF IS ENCOUNTERED;PU CHECKS FOR
C     ACCEPTIBLE EXECUTABLE STMT AFTER LOGICAL EXPRESSION
C
      LOG = .FALSE.
      L = MOD(EXPR(I),8)
      IF (-1.EQ.L .OR. SYSERR) GO TO 30
      LOG = L.EQ.4
      IF (LOG) GO TO 30
C
C     ARITHMETIC IF--SEARCH FOR  <LAB>,<LAB>,<LAB>
C
      IF (L.GT.2) GO TO 50
      I = 0
      IF (PSTMT.GE.NSTMT) GO TO 20
   10 IF (.NOT.TOKLAB(1,K2,L,.FALSE.)) GO TO 40
      IF (SYSERR) GO TO 30
      I = I + 1
      IF (I.EQ.3) GO TO 60
      IF (STMT(K2).NE.68) GO TO 20
      PSTMT = K2 + 1
      IF (PSTMT.LT.NSTMT) GO TO 10
   20 CALL ERROR1(15H ILLEGAL SYNTAX, 15)
   30 RETURN
   40 CALL ERROR1(14H MISSING LABEL, 14)
      GO TO 30
   50 CALL ERROR1(39H COMPLEX EXPRESSION ILLEGAL IN ARITH-IF, 39)
      GO TO 30
   60 IF (K2.EQ.NSTMT) GO TO 30
      CALL ERROR1(34H EXTRANEOUS INFO AFTER END OF STMT, 34)
      GO TO 30
      END