beta release of netCDF 2.0 available

  • To: netcdfgroup
  • Subject: beta release of netCDF 2.0 available
  • Date: Wed, 2 Oct 1991 17:15:05 -0400
Hi,

A beta release of netCDF 2.0 is now available, in

        file: pub/netcdf-2.0-beta.tar.Z
        host: unidata.ucar.edu

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 ints are 16 bits.

We had hoped to include the netCDF operators with this release, but they
aren't ready yet.  We're working on them again and hope to be able to
release a useful set of operators before the end of the year.

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.  I've tested
the new release on the following platforms:

   IBM PS/2 (OS/2 1.3, but should work on MSDOS and PCDOS 3.3 or later)
   SPARC (SunOS 4.1.1)
   DECstation (Ultrix 4.2)
   VAX (VMS 5.4)
   IBM RS6000 (AIX 3.1)
   CRAY-YMP (Unicos 6.1.4)

If you use netCDF on another platform and would like to see support for that
platform included in the general release of netCDF 2.0, please test the beta
release and report fixes to us.  As we have no access to other platforms, we
can include such fixes but cannot test them.  If you get a chance to test
this beta release and find any other problems, please report them, even
without fixes, to support@xxxxxxxxxxxxxxxx and we'll try to get fixes in
before the general release.

Changes in netCDF (1.11 to 2.0)
*******************************

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.

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: