This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
> From: Jessica Burkhart <address@hidden> > To: address@hidden > Subject: Problem with ncopen > Organization: Oklahoma Climate Survey Jessica, > > > I am having a problem with ncopen repeatedly returning 0 as a valid > > > file id. The other netCDF functions, ncclose and ncdimid, return > > > bad id error codes with a netCDF file id of 0. > > > > > > I'd appreciate any suggestions. > > > > If you could tell me the version of netCDF you are using and the > > platform (OS, hardware) on which you see the above error, we could be of > > more help, but for now I can only suggest that you install the current > > version of netCDF, available in source form from > > > We are using netCDF version 3.3.1 on a DEC Alpha machine with the LINUX > Red Hat 4.0 OS. > > I was not specific enough about the problem. ncopen with NC_WRITE is > returning a 0 which is causing ncclose and ncdimid to return error > codes. However, when I force ncopen to return a positive value, then the > file can be accessed. > > Thanks for your suggestion. OK, apparently I misunderstood the problem. In netCDF 3.3.1, the ncopen function is in the version 2 compatibility interface (the corresponding netCDF-3 function is named "nc_open"). It should return 0 for the first netCDF file opened successfully, and -1 in case there is an error. In this case, ncclose and ncdimid should work fine with the 0 netCDF id returned by ncopen. I've just tested this with a tiny program that opens an existing file using ncopen with NC_WRITE and then closes it successfully with ncclose, and it works fine. #include <netcdf.h> #include <stdio.h> int main() { int ncid; ncopts = NC_VERBOSE; ncid = ncopen("x.nc", NC_WRITE); printf("ncid = %d\n", ncid); ncclose(ncid); return 0; } This is invoked in a directory that has a writable netCDF file "x.nc", and it prints "ncid = 0" and exits. If I rename x.nc, then it also works correctly, with the following output: ncopen: filename "x.nc": No such file or directory ncid = -1 ncclose: -1 is not a valid cdfid I'm not sure what you mean when you say "when I force ncopen to return a positive value, then the file can be accessed", but if the above doesn't work on our platform, we want to know because it's a bug. If the above does work on your Alpha/Linux platform, can you provide a small example that demonstrates the problem? --Russ _____________________________________________________________________ Russ Rew UCAR Unidata Program address@hidden http://www.unidata.ucar.edu