NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
Hi, NetCDF 2.0 is now available, in file: pub/netcdf.tar.Z host: unidata.ucar.edu The main problem delaying the release was identifying and fixing a bug whose symptoms were only apparent on MSDOS and OS/2 platforms. Because version 2.0 includes slight changes to the interface, the major version number was incremented. There is no change to the file representation, but the C interface now uses "long" instead of "int" for dimension sizes and hyperslab corners and edges. Recompilation will be necessary only on platforms where "long" and "int" are different sizes, such as MSDOS and OS/2 machines with Microsoft C compilers, where longs are 32 bits and integers are 16 bits. Version 2.0 also includes fixes for bugs found since netCDF 1.11. A more complete description of the changes is appended to this note. The new release has been tested on the following platforms: IBM PS/2 (OS/2 1.3, but should work on MSDOS and PCDOS 5.0 or later) Sun3, SPARC (SunOS 4.1.1) DECstation (Ultrix 4.2) VAX (VMS 5.4) IBM RS6000 (AIX 3.1) CRAY-YMP (Unicos 6.1.4) As usual, problems should be reported to support@xxxxxxxxxxxxxxxx (if the problem is on one of the platforms we support) or to the mailing list netcdfgroup@xxxxxxxxxxxxxxxx otherwise. Changes in netCDF (1.11 to 2.0) ******************************* A bug in accessing data for a one-dimensional variable when it is the only variable defined with the unlimited dimension was fixed. A bug in ncattrename() was fixed that caused a segmentation violation under certain circumstances on MSDOS platforms. The netCDF C interfaces were changed to use long values rather than ints for netCDF dimensions on all machines. This changed the following interfaces that formerly use "int" or "int*" for dimensions and dimension pointers: int ncdimdef(int cdfid, const char* name, int length); int ncdiminq(int cdfid, int dimid, char* name, int* length); int ncvarput1(int cdfid, int varid, int *coords, void* value); int ncvarget1(int cdfid, int varid, int *coords, void* value); int ncvarput(int cdfid, int varid, int *start, int *count, void* value); int ncvarget(int cdfid, int varid, int *start, int *count, void* value); to use "long" or "long*" instead: int ncdimdef(int cdfid, const char* name, long length); int ncdiminq(int cdfid, int dimid, char* name, long* length); int ncvarput1(int cdfid, int varid, long *coords, void* value); int ncvarget1(int cdfid, int varid, long *coords, void* value); int ncvarput(int cdfid, int varid, long *start, long *count, void* value); int ncvarget(int cdfid, int varid, long *start, long *count, void* value); No change to data representation or file formats was required, since the XDR form of integers is 32 bits. The main advantage of this change is that on platforms such as MSDOS machines on which integers are only 16 bits, it is now possible to access data from variables that have a dimension greater than 32767. This is of some practical importance, since CD-ROM disks are being written with large datasets in netCDF form, and it is desirable to be able to access this data from inexpensive 16-bit machines. Since ints and longs are the same on most current platforms (Suns, DECstations, VAXen, IBM RS6000s, SGIs, HPs, CRAYs, ...), this change does not break old code. Applications compiled with the old interface on such machines will work the same way as they did before without recompiling. Standard C compilers that support prototypes permit using int values for dimension size and automatically convert them to longs before the call. C code that uses pointers to ints instead of pointers to longs (where required by the new interfaces) will elicit warning messages from lint and from standard C compilers, so all such problems may be caught at compile time. Programs compiled under the old interface on machines with 16-bit ints (primarily MSDOS machines based on the 80286 or earlier chips) must be recompiled. Such programs are also the main beneficiaries of the change. Modifications necessitated by this interface change are included in this version, including changes to the man-page reference documentation, the User's Guide, the nctest test program, the ncdump and ncgen utilities, and the Fortran jackets. A bug on VMS was fixed by forcing stream mode access on netCDF files. Ncdump was fixed to work on platforms that have 16-bit integers, even for variables that have a dimension to large to fit in a 16-bit integer. The "-c" option of ncgen was fixed to work even when a large number of values need to be initialized, instead of overflowing the array reserved for C statements. Changes were incorporated in the Makefiles to permit building netCDF on SGI platforms. Changes were made to the msoft.mk Makefiles for DOS platforms so the distribution could be built, tested, and installed from a single top-level Makefile. A bug setting fill values for short integers, in which only every other value was filled, was fixed. --Russ
netcdfgroup
archives: