subroutine ESMF_ScripInqUnits(filename, units, rc)
! !ARGUMENTS:
character(len=*), intent(in) :: filename
character(len=*), intent(out) :: units
integer, intent(out), optional :: rc
integer:: localrc, ncStatus
integer :: ncid, VarId, len
character(len=80) :: buffer, buffer1
character(len=256) :: errmsg
#ifdef ESMF_NETCDF
if (present(rc)) rc=ESMF_SUCCESS
ncStatus = nf90_open (path=trim(filename), mode=nf90_nowrite, ncid=ncid)
if (CDFCheckError (ncStatus, &
ESMF_METHOD, &
ESMF_SRCLINE, &
trim(filename), &
rc)) return
ncStatus = nf90_inq_varid (ncid, "grid_center_lat", VarId)
errmsg = "variable grid_center_lat in "//trim(filename)
if (CDFCheckError (ncStatus, &
ESMF_METHOD, &
ESMF_SRCLINE,&
errmsg,&
rc)) return
ncStatus = nf90_inquire_attribute(ncid, VarId, "units", len=len)
errmsg = "attribute units for grid_center_lat in "//trim(filename)
if (CDFCheckError (ncStatus, &
ESMF_METHOD, &
ESMF_SRCLINE,&
errmsg,&
rc)) return
ncStatus = nf90_get_att(ncid, VarId, "units", buffer)
if (CDFCheckError (ncStatus, &
ESMF_METHOD, &
ESMF_SRCLINE,&
errmsg,&
rc)) return
if (buffer(len:len) .eq. achar(0)) len = len-1
units = ESMF_UtilStringLowerCase(buffer(1:len), rc=rc)
if (present(rc)) rc=ESMF_SUCCESS
return
#else
if (ESMF_LogFoundError(ESMF_RC_LIB_NOT_PRESENT, &
msg="- ESMF_NETCDF not defined when lib was compiled", &
ESMF_CONTEXT, rcToReturn=rc)) return
#endif
return
end subroutine ESMF_ScripInqUnits