V10/cmd/pfort/IDLIST.f

      LOGICAL FUNCTION IDLIST(IDO)
      INTEGER PSTMT, STMT
      LOGICAL ERR, SYSERR, ABORT, IDO
      COMMON /INPUT/ NSTMT, PSTMT, STMT(1327)
      COMMON /DETECT/ ERR, SYSERR, ABORT
C
C     RECOGNIZES  IDLIST=<ID>  Õ, <ID>! ;LAST <ID> CANNOT BE FOLLOWED BY
C     A '='; IDLIST MUST CONTAIN AT LEAST ONE ID.  IDLIST=.FALSE. WILL
C     BE RETURNED FOR AN IRRECOVERABLE SYNTAX ERROR.
C     IDO SET TO .TRUE. WHEN <IDLIST> IS FOLLOWED BY <DOSPEC>
C
      IDO = .FALSE.
      IDLIST = .TRUE.
      IF (PSTMT.GE.NSTMT) GO TO 60
      CALL NEXTOK(PSTMT, K2, K)
      IF (K.NE.0) GO TO 60
      IF (STMT(K2).EQ.63) GO TO 20
      CALL ID(K2)
      IF (ERR .OR. SYSERR) GO TO 20
   10 PSTMT = K2
      IF (STMT(PSTMT).EQ.68 .AND. STMT(PSTMT+1).EQ.65 .OR.
     *    STMT(PSTMT).EQ.62 .OR. PSTMT.EQ.NSTMT) GO TO 30
      IF (STMT(PSTMT).EQ.68) GO TO 50
      CALL ERROR1(35H ILLEGAL TOKEN FOLLOWING IDENTIFIER, 35)
   20 IDLIST = .FALSE.
      ERR = .FALSE.
   30 RETURN
   40 IDO = .TRUE.
      GO TO 30
C
C     MAKE SURE <ID> =  ISN'T NEXT CONSTRUCT
C
   50 K2 = K2 + 1
      IF (K2.GE.NSTMT) GO TO 60
      CALL NEXTOK(K2, K3, K)
      IF (STMT(K3).EQ.63) GO TO 40
      PSTMT = K2
      K2 = K3
      CALL ID(K2)
      IF (ERR .OR. SYSERR) GO TO 20
      GO TO 10
   60 CALL ERROR1(23H ILLEGAL SYNTAX IN LIST, 23)
      GO TO 20
      END