[netcdfgroup] Missing return/error code(s) in Fortran API?

Hello,

Are there missing error codes in the netcdf_constants.f90 module in v4.2 of the 
Fortran90 netcdf library?

I'm using the "find a group by name" inquiry function, NF90_INQ_GRP_NCID(). The 
documentation states the following return codes may be returned by this 
function:

NF90_NOERR - No error.
NF90_EBADID - Bad group id.
NF90_EINVAL - No name provided or name longer than NF90 MAX NAME.
NF90_ENOGRP - Named group not found.
NF90_ENOTNC4 - Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4 
operations can only be performed on files defined with a create mode which 
includes flag HDF5. (see Section 2.6 [NF90 OPEN], page 11).
NF90_ESTRICTNC3 - This file was created with the strict netcdf-3 flag, 
therefore netcdf-4 operations are not allowed. (see Section 2.6 [NF90 OPEN], 
page 11).
NF90_EHDFERR - An error was reported by the HDF5 layer.

But when I test for "NF90_ENOGRP" I get a compilation error:

      CASE (NF90_ENOGRP)
                       1
Error: Symbol 'nf90_enogrp' at (1) has no IMPLICIT type

And when I check the "netcdf_constants.f90" source I see ONLY the following 
error codes defined:

  !
  ! error codes:
  !
  integer, parameter, public :: &
    nf90_noerr        = 0,      &
    nf90_ebadid       = -33,    &
    nf90_eexist       = -35,    &
    nf90_einval       = -36,    &
    nf90_eperm        = -37,    &
    nf90_enotindefine = -38,    &
    nf90_eindefine    = -39,    &
    nf90_einvalcoords = -40,    &
    nf90_emaxdims     = -41,    &
    nf90_enameinuse   = -42,    &
    nf90_enotatt      = -43,    &
    nf90_emaxatts     = -44,    &
    nf90_ebadtype     = -45,    &
    nf90_ebaddim      = -46,    &
    nf90_eunlimpos    = -47,    &
    nf90_emaxvars     = -48,    &
    nf90_enotvar      = -49,    &
    nf90_eglobal      = -50,    &
    nf90_enotnc       = -51,    &
    nf90_ests         = -52,    &
    nf90_emaxname     = -53,    &
    nf90_eunlimit     = -54,    &
    nf90_enorecvars   = -55,    &
    nf90_echar        = -56,    &
    nf90_eedge        = -57,    &
    nf90_estride      = -58,    &
    nf90_ebadname     = -59,    &
    nf90_erange       = -60,    &
    nf90_enomem       = -61,    &
    nf90_evarsize     = -62,    &
    nf90_edimsize     = -63,    &
    nf90_etrunc       = -64

So where did the documented error code go?

grep-ing the C source I see that nc3dispatch.c has:

#ifndef NC_ENOGRP
#define NC_ENOGRP (-125)
#endif

When I define the above value in my own module, e.g.

integer, parameter :: nf90_enogrp = -125

the code compiles, and when I run my unit tests printing out the inquiry 
function result for a missing group,

    nf90_stat = NF90_INQ_GRP_NCID(groupid, 'accoeff', embedid)
print *, 'ACCoeff group id inquire result: ',nf90_stat

I get what I sort of expected:

   UnitTest_Setup:  netCDF Write/Read Test; CALLER: Test_SpcCoeff
 ACCoeff group id inquire result:         -125
 ACCoeff group id inquire result:         -125
 ACCoeff group id inquire result:         -125
   UnitTest_Report:  
   Passed 3 of 3 tests
   Failed 0 of 3 tests
 Timing_Display(INFORMATION) : Elapsed time-- 00:00:00.086
 

So is this missing error code a bug in the fortran90 API?

Or is the code somewhere else and I didn't build the library properly? I've 
been using the netCDF4 libraries, via the f90 API, for several weeks no with no 
other issues.

I also notice there are other codes missing from the list in 
netcdf_constants.f90 that are listed in the Fortran90 documentation.

Thanks for any info.

cheers,

paulv

p.s. The versions:

local/netcdf-4.3.0 : more VERSION
-n 4.3.0
 
local/netcdff-4.2 : more VERSION
-n 4.2



  • 2013 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: