! real*8 interface generated by r8igen.csh --
! ...in /home/dmccune/troot/tmp/trgraf
! csh -f r8igen.csh r8_grf4f1 foo.msg
 
!----------------------------------------------------------
! r8real -- generated (f90 fixed form) REAL*8 interface to:  GRF4F1
      SUBROUTINE R8_GRF4F1(
     > R8_F,NF1,NF2,R8_X,NX,R8_Y,NY,R8_Z,NZ,FLAB,XLAB,YLAB,ZLAB,FUNS,
     > XUNS,YUNS,ZUNS,ZTITLE,IPROC)
 
      external GRF4F1
 
! argument declarations
      INTEGER NF1
      INTEGER NF2
      INTEGER NX
      INTEGER NY
      INTEGER NZ
      CHARACTER*(*) FLAB
      CHARACTER*(*) XLAB
      CHARACTER*(*) YLAB
      CHARACTER*(*) ZLAB
      CHARACTER*(*) FUNS
      CHARACTER*(*) XUNS
      CHARACTER*(*) YUNS
      CHARACTER*(*) ZUNS
      CHARACTER*(*) ZTITLE
      INTEGER IPROC
 ! floating type, input/output:
      REAL*8 R8_F(NF1,NF2,NZ)
 
 ! floating type, input/output:
      REAL*8 R8_X(NX)
 
 ! floating type, input/output:
      REAL*8 R8_Y(NY)
 
 ! floating type, input/output:
      REAL*8 R8_Z(NZ)
 
 
! local (automatic array) declarations
 
      integer alloc_stat
      REAL, allocatable :: F_act(:,:,:)
      REAL, allocatable :: F_ref(:,:,:)
      REAL, allocatable :: X_act(:)
      REAL, allocatable :: X_ref(:)
      REAL, allocatable :: Y_act(:)
      REAL, allocatable :: Y_ref(:)
      REAL, allocatable :: Z_act(:)
      REAL, allocatable :: Z_ref(:)
 
! allocation of working arrays...
 
      ALLOCATE(F_act(NF1,NF2,NZ)
     >   ,stat=alloc_stat)
      if(alloc_stat.ne.0) call errmsg_exit(
     >  ' ?R8_GRF4F1 -- F_act ALLOCATE error!')
      ALLOCATE(F_ref(NF1,NF2,NZ)
     >   ,stat=alloc_stat)
      if(alloc_stat.ne.0) call errmsg_exit(
     >  ' ?R8_GRF4F1 -- F_ref ALLOCATE error!')
      ALLOCATE(X_act(NX)
     >   ,stat=alloc_stat)
      if(alloc_stat.ne.0) call errmsg_exit(
     >  ' ?R8_GRF4F1 -- X_act ALLOCATE error!')
      ALLOCATE(X_ref(NX)
     >   ,stat=alloc_stat)
      if(alloc_stat.ne.0) call errmsg_exit(
     >  ' ?R8_GRF4F1 -- X_ref ALLOCATE error!')
      ALLOCATE(Y_act(NY)
     >   ,stat=alloc_stat)
      if(alloc_stat.ne.0) call errmsg_exit(
     >  ' ?R8_GRF4F1 -- Y_act ALLOCATE error!')
      ALLOCATE(Y_ref(NY)
     >   ,stat=alloc_stat)
      if(alloc_stat.ne.0) call errmsg_exit(
     >  ' ?R8_GRF4F1 -- Y_ref ALLOCATE error!')
      ALLOCATE(Z_act(NZ)
     >   ,stat=alloc_stat)
      if(alloc_stat.ne.0) call errmsg_exit(
     >  ' ?R8_GRF4F1 -- Z_act ALLOCATE error!')
      ALLOCATE(Z_ref(NZ)
     >   ,stat=alloc_stat)
      if(alloc_stat.ne.0) call errmsg_exit(
     >  ' ?R8_GRF4F1 -- Z_ref ALLOCATE error!')
 
! executable code:  copy for input
 
      F_act=R8_F
      F_ref=R8_F
 
      X_act=R8_X
      X_ref=R8_X
 
      Y_act=R8_Y
      Y_ref=R8_Y
 
      Z_act=R8_Z
      Z_ref=R8_Z
 
! call to original routine:  GRF4F1
 
      CALL GRF4F1(
     > F_act(1,1,1),NF1,NF2,X_act(1),NX,Y_act(1),NY,Z_act(1),NZ,FLAB,
     > XLAB,YLAB,ZLAB,FUNS,XUNS,YUNS,ZUNS,ZTITLE,IPROC)
 
! copy back outputs if modified.
 
      where(F_act.ne.F_ref)
         R8_F = F_act
      end where
      DEALLOCATE(F_act)
      DEALLOCATE(F_ref)
 
      where(X_act.ne.X_ref)
         R8_X = X_act
      end where
      DEALLOCATE(X_act)
      DEALLOCATE(X_ref)
 
      where(Y_act.ne.Y_ref)
         R8_Y = Y_act
      end where
      DEALLOCATE(Y_act)
      DEALLOCATE(Y_ref)
 
      where(Z_act.ne.Z_ref)
         R8_Z = Z_act
      end where
      DEALLOCATE(Z_act)
      DEALLOCATE(Z_ref)
 
! exit
      return
      end
!----------------------------------------------------------
! r8real -- generated (f90 fixed form) REAL*8 interface to:  GRF4F1_FIX
      SUBROUTINE R8_GRF4F1_FIX(
     > SLBL,XLBL,XUNS,R8_X,NX,IXFIX,ZLABEL)
 
      external GRF4F1_FIX
 
! argument declarations
      CHARACTER*(*) SLBL
      CHARACTER*(*) XLBL
      CHARACTER*(*) XUNS
      INTEGER NX
      INTEGER IXFIX
      CHARACTER*(*) ZLABEL
 ! floating type, input/output:
      REAL*8 R8_X(NX)
 
 
! local (automatic array) declarations
 
      integer alloc_stat
      REAL, allocatable :: X_act(:)
      REAL, allocatable :: X_ref(:)
 
! allocation of working arrays...
 
      ALLOCATE(X_act(NX)
     >   ,stat=alloc_stat)
      if(alloc_stat.ne.0) call errmsg_exit(
     >  ' ?R8_GRF4F1_FIX -- X_act ALLOCATE error!')
      ALLOCATE(X_ref(NX)
     >   ,stat=alloc_stat)
      if(alloc_stat.ne.0) call errmsg_exit(
     >  ' ?R8_GRF4F1_FIX -- X_ref ALLOCATE error!')
 
! executable code:  copy for input
 
      X_act=R8_X
      X_ref=R8_X
 
! call to original routine:  GRF4F1_FIX
 
      CALL GRF4F1_FIX(
     > SLBL,XLBL,XUNS,X_act(1),NX,IXFIX,ZLABEL)
 
! copy back outputs if modified.
 
      where(X_act.ne.X_ref)
         R8_X = X_act
      end where
      DEALLOCATE(X_act)
      DEALLOCATE(X_ref)
 
! exit
      return
      end
