netCDF 2.0 available

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


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