!***********************************************************************
! $Header: /usr/data/cvsroot/fletcher/MOM_3/MOM_3/ocmip2/nc_util.F,v 1.1.1.1 2003/05/01 21:25:53 fletcher Exp $
!***********************************************************************


      SUBROUTINE DEF_DIM(NC_ID, NAME, LEN, DIMID)

      IMPLICIT NONE
#include "netcdf.inc"

! Arguments
      INTEGER NC_ID, LEN, DIMID
      CHARACTER*(*) NAME

! Local variables
      INTEGER STATUS

      STATUS = NF_DEF_DIM(NC_ID, NAME, LEN, DIMID)
      IF (STATUS .NE. NF_NOERR) THEN
         PRINT *, 'NetCDF error defining dimension ', NAME
         PRINT *, NF_STRERROR(STATUS)
         STOP 'Stopped'
      ENDIF

      END


!***********************************************************************


      SUBROUTINE DEF_REAL(NC_ID, NAME, VARID, NDIMS, DIMIDS)

      IMPLICIT NONE
#include "netcdf.inc"

! Arguments
      INTEGER NC_ID, VARID, NDIMS, DIMIDS(*)
      CHARACTER*(*) NAME

! Local variables
      INTEGER STATUS

      STATUS = NF_DEF_VAR(NC_ID, NAME, NF_FLOAT, NDIMS, DIMIDS, VARID)
      IF (STATUS .NE. NF_NOERR) THEN
         PRINT *, 'NetCDF error defining variable ', NAME
         PRINT *, NF_STRERROR(STATUS)
         STOP 'Stopped'
      ENDIF

      END


!***********************************************************************


      SUBROUTINE ADD_ATT_TEXT(NC_ID, VARID, NAME, TEXT)

      IMPLICIT NONE
#include "netcdf.inc"

! Arguments
      INTEGER NC_ID, VARID
      CHARACTER*(*) NAME, TEXT

! Local variables
      INTEGER STATUS

! Function
!     INTEGER LEN_TRIM

      STATUS = NF_PUT_ATT_TEXT(NC_ID, VARID, NAME,
     &                         LEN_TRIM(TEXT), TEXT)
      IF (STATUS .NE. NF_NOERR) THEN
         PRINT *, 'NetCDF error creating ', NAME, ' attribute ', TEXT
         PRINT *, NF_STRERROR(STATUS)
         STOP 'Stopped'
      ENDIF

      END


!***********************************************************************


      SUBROUTINE ADD_ATT_REAL(NC_ID, VARID, NAME, VAL)

      IMPLICIT NONE
#include "netcdf.inc"

! Arguments
      INTEGER NC_ID, VARID
      CHARACTER*(*) NAME
      REAL VAL

! Local variables
      INTEGER STATUS

      STATUS = NF_PUT_ATT_REAL(NC_ID, VARID, NAME, NF_FLOAT, 1, VAL)
      IF (STATUS .NE. NF_NOERR) THEN
         PRINT *, 'NetCDF error creating ', NAME, ' attribute ', VAL
         PRINT *, NF_STRERROR(STATUS)
         STOP 'Stopped'
      ENDIF

      END


!***********************************************************************


      SUBROUTINE PUT_REAL(NC_ID, VARID, VAL, NAME)

      IMPLICIT NONE
#include "netcdf.inc"

! Arguments
      INTEGER NC_ID, VARID
      REAL VAL(*)
      CHARACTER*(*) NAME

! Local variables
      INTEGER STATUS

      STATUS = NF_PUT_VAR_REAL(NC_ID, VARID, VAL)
      IF (STATUS .NE. NF_NOERR) THEN
         PRINT *, 'NetCDF error putting ', NAME
         PRINT *, NF_STRERROR(STATUS)
         STOP 'Stopped'
      ENDIF

      END


!***********************************************************************


!     FUNCTION LEN_TRIM(STRING)

!     CHARACTER*(*) STRING
!     INTEGER I 
!       
!     DO I = LEN(STRING), 1, -1
!        LEN_TRIM = I
!        IF (STRING(I:I) .NE. ' ') RETURN
!     END DO

!     END
