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---
      INTEGER NDEV
      PARAMETER (NDEV=12)
      CHARACTER*10 MSG
C---
c        write(*,*)'idev',idev
      GOTO(1,2,3,4,5,6,7,8,9,10,11,12) IDEV
      IF (IDEV.EQ.0) THEN
          RBUF(1) = NDEV
          NBUF = 1
      ELSE
          WRITE (MSG,'(I10)') IDEV
          CALL GRWARN('Unknown device code in GREXEC: '//MSG)
      END IF
      RETURN
C---
1     CALL GIDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,1)
      RETURN
2     CALL GIDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,2)
      RETURN
3     CALL HPDRIV(IFUNC,RBUF,NBUF,CHR,LCHR)
      RETURN
4     CALL LHDRIV(IFUNC,RBUF,NBUF,CHR,LCHR)
      RETURN
5     CALL NUDRIV(IFUNC,RBUF,NBUF,CHR,LCHR)
      RETURN
6     CALL PSDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,1)
      RETURN
7     CALL PSDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,2)
      RETURN
8     CALL PSDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,3)
      RETURN
9     CALL PSDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,4)
      RETURN
10    CALL XWDRIV(IFUNC,RBUF,NBUF,CHR,LCHR,1)
      RETURN
11    CALL JGDRIV(IFUNC,RBUF,NBUF,CHR,LCHR)
      RETURN
12    CALL JPDRIV(IFUNC,RBUF,NBUF,CHR,LCHR)
      RETURN
C
      END
