C $Header: /u/gcmpack/MITgcm/pkg/mnc/mnc_cw_udim.F,v 1.11 2008/05/22 12:21:19 mlosch Exp $
C $Name:  $
      
#include "MNC_OPTIONS.h"
      
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
CBOP 0
C !ROUTINE: MNC_CW_SET_UDIM

C !INTERFACE:
      SUBROUTINE MNC_CW_SET_UDIM( 
     I     fgname, 
     I     nudim, 
     I     myThid ) 

C     !DESCRIPTION:
C     For a specified file group name, set the size of the NetCDF
C     unlimited (or record) dimension.  The options are:
C     \begin{equation}
C       \label{eq:yo}
C       \mbox{\bf nudim} = \left\{
C         \begin{array}[htb]{cl}
C           >0,  &  \mbox{\small use the specified value} \\
C           0,   &  \mbox{\small use the largest currently defined value} \\
C           -1,  &  \mbox{\small increment the largest value and then use it} \\
C         \end{array}
C         \right.
C     \end{equation}

C     !USES:
      implicit none
#include "MNC_COMMON.h"
#include "EEPARAMS.h"

C     !INPUT PARAMETERS:
      integer nudim, myThid
      character*(*) fgname
CEOP

C     !LOCAL VARIABLES:
      integer fgf,fgl, indfg
      character*(MAX_LEN_MBUF) msgbuf

C     Functions
      integer IFNBLNK, ILNBLNK

C     Check that this name is not already defined
      fgf = IFNBLNK(fgname)
      fgl = ILNBLNK(fgname)
      CALL MNC_GET_IND(MNC_MAX_ID, fgname, mnc_cw_fgnm, indfg, myThid)
      IF (indfg .LT. 1) THEN
        CALL MNC_GET_NEXT_EMPTY_IND(
     &       MNC_MAX_ID, mnc_cw_fgnm, 'mnc_cw_fgnm', indfg, myThid)
        mnc_cw_fgnm(indfg)(1:(fgl-fgf+1)) = fgname(fgf:fgl)
        mnc_cw_fgud(indfg) = 0
        mnc_cw_fgig(indfg) = 0
      ENDIF
      IF (nudim .GT. 0) THEN
        mnc_cw_fgig(indfg) = 0
        mnc_cw_fgud(indfg) = nudim
        RETURN
      ENDIF
      IF (nudim .EQ. 0) THEN
        mnc_cw_fgig(indfg) = 0
        RETURN
      ENDIF
      IF (nudim .EQ. -1) THEN
        mnc_cw_fgig(indfg) = 1
        mnc_cw_fgud(indfg) = mnc_cw_fgud(indfg) + 1
        RETURN
      ENDIF
      write(msgbuf,'(3a,i10,a)') 
     &     'MNC_CW_SET_UDIM ERROR: for file group name ''', 
     &     fgname(fgf:fgl), ''' the unlim dim ''', nudim, 
     &     ''' is not allowed'
      CALL PRINT_ERROR(msgbuf, mythid)
      STOP 'ABNORMAL END: S/R MNC_CW_SET_UDIM'

      RETURN
      END


C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP 0 C !ROUTINE: MNC_CW_GET_UDIM C !INTERFACE: SUBROUTINE MNC_CW_GET_UDIM( I fgname, O nudim, I myThid ) C !DESCRIPTION: C For a specified file group name, get the size of the NetCDF C unlimited (or record) dimension. C !USES: implicit none #include "MNC_COMMON.h" #include "EEPARAMS.h" C !INPUT PARAMETERS: integer nudim, myThid character*(*) fgname CEOP C !LOCAL VARIABLES: integer fgf,fgl, indfg character*(MAX_LEN_MBUF) msgbuf C Functions integer IFNBLNK, ILNBLNK fgf = IFNBLNK(fgname) fgl = ILNBLNK(fgname) CALL MNC_GET_IND(MNC_MAX_ID, fgname, mnc_cw_fgnm, indfg, myThid) IF (indfg .LT. 1) THEN write(msgbuf,'(3a)') & 'MNC_CW_GET_UDIM ERROR: file group name ''', & fgname(fgf:fgl), ''' is not defined' CALL PRINT_ERROR(msgbuf, mythid) STOP 'ABNORMAL END: S/R MNC_CW_GET_UDIM' ENDIF nudim = mnc_cw_fgud(indfg) RETURN END


C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|