C*GREXEC -- PGPLOT device handler dispatch routine
C+
      SUBROUTINE GREXEC(IDEV,IFUNC,RBUF,NBUF,CHR,LCHR)
      INTEGER IDEV, IFUNC, NBUF, LCHR
      REAL    RBUF(*)
      CHARACTER*(*) CHR
C
C---
      INTEGER NDEV
C            change the value of NDEV to reflect the number of
C            devices defined below by the 'computed GOTO'
C
C     February 1994   Version 1.00 has only NU, AC and PS drivers.
C                                  (The PS driver comes with 4 modes)
C
      PARAMETER (NDEV=7)
      CHARACTER*10 MSG
C---
      GOTO(1,2,3,4,5,6,7) IDEV
      IF (IDEV.EQ.0) THEN
          RBUF(1) = NDEV
          NBUF = 1
      ELSE
          WRITE (MSG,'(I10)') IDEV
          CALL GRQUIT('Unknown device code in GREXEC: '//MSG)
      END IF
      RETURN
C---
    1 CALL NUDRIV(IFUNC,RBUF,NBUF,CHR,LCHR)
      RETURN
    2 CALL ACDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,1)
      RETURN
    3 CALL ACDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,2)
      RETURN
    4 CALL PSDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,1)
      RETURN
    5 CALL PSDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,2)
      RETURN
    6 CALL PSDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,3)
      RETURN
    7 CALL PSDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,4)
      RETURN
C
      END
