$Id: CHANGES,v 1.92 1996/07/17 15:00:58 russ Exp $

======= 

Added a couple of omitted steps needed for building under Windows NT to the
INSTALL document.

Added the `-p fdigs,ddigs' option to ncdump.  This replaces and behaves like
the (now deprecated and undocumented) `-d' option, except that it overrides
any values specified by the `C_format' attribute for float or double values.

Made precisions specified by the `-p' or (now deprecated) `-d' options apply
to float or double attributes as well as data values.

Fixed cause of potential overflow in ncdump when doing fuzzy comparison with
fill value.  This might occur when comparing values near -FLT_MAX with a
fill value near FLT_MAX, or similarly for doubles.

Ported configuration mechanism to IRIX64 6.2 and GNU make(1) 3.74.

Made generation of position-independent code the default.

Adapted XDR test program to systems whose <float.h> doesn't define
FLT_EPSILON and DBL_EPSILON.

Improved installation procedures on LINUX systems using the GNU make(1)
utility.

Incorporated improvements for CRAY PVP systems: faster writing
of initial fill-values and better FFIO error messaging (from Robert
Swanson -- Lockheed Martin Technical Services, National Environmental
Supercomputing Center).

Corrected typo in FORTRAN manual page: changed NCCREDF to NCREDF.

------ Thu 2 May 1996  Changes in netCDF (2.4.1 to 2.4.2)

Ported to an Intel 386-based, BSD/OS 2.1 system (but with no FORTRAN
support).

Changed XDRing of floating-point attributes to use xdr_floats() and
xdr_doubles() so that transformations on a CRAY will always use the IEG
functions when appropriate.  This works around a CRAY problem where, for
some values, xdr_float() doesn't result in the same bit pattern as the
IEG routines.

Ported to DJGPP Version 2 for MS/DOS.

Added the fortc(1) macro file `linux.m4' to the distribution.

Fixed an ncgen bug in generating the proper value for a scalar
character variable initialized from a string in a CDL file.

Liberalized conditions on use and distribution of the netCDF software by
changing a sentence in the software copyright notice and in netcdf.h from

    Further, the user agrees to credit UCAR/Unidata in any
    publications that result from the use of this software or in any
    product that includes this software. 

to 

    Further, UCAR requests that the user credit UCAR/Unidata in
    any publications that result from the use of this software or in
    any product that includes this software. 

------ Tue 19 March 1996  Changes in netCDF (2.4 to 2.4.1)

Slightly modified VAX OpenVMS build mechanism: made `makevms.com'
command procedures VAX-C specific in order to better specify the build
environment and avoid incompatibilities.

Slightly modified ncdump/ncdump.c: expanded use of isprint() into two
statements to avoid problems under Alpha OpenVMS where that function is
actually a complicated macro.

Fixed ncgen bug in filling one-dimensional string variables when specified
with multiple values that should be concatenated, e.g.,
   dimensions:
      month3 = 36;
   variables:
      char months(month3);
   data:
      months = "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
                "JUL", "AUG", "SEP", "OCT", "NOV", "DEC";
now no longer produces error "too many values for this variable, 36 >= 36".

In User's Guide, added links to C++ and NetcdfPerl interface documentation.

------ Wed 28 February 1996  Changes in netCDF (2.3.2 to 2.4)

Added FORTRAN test for default fill values.  Removed use of /NCFILS/ common
block for passing default fill values from C to FORTRAN interface in favor
of just setting parameters for default fill values in netcdf.inc.

Revised doc/guide.tex, the texinfo source for the NetCDF User's Guide, to
contain embedded HTML for the tex12html filter.  

Added Harvey Davies as an author of the User's Guide and incorporated his
revisions.  User's Guide changes include:

  - a new appendix that formally specifies the netCDF format, independent of
    its implementation;
  - a new section on limitations of the netCDF data model and implementation; 
  - a new section on compiling and linking with the netCDF library; 
  - a new section on UNICOS optimization; 
  - a new section discussing the correspondence between CDL, netCDF, Fortan,
    and C data types;
  - better embedding of URLs, so the derived HTML form has working links to
    external documents and references;
  - clarification of cross-section access, strided access, and mapped access
    to arrays; and
  - a more useful Index. 

In C++ interface, NcAtt::remove() member function now checks to make sure in
define_mode first, before deleting attribute.

Fixed bug that appears on alphas when dumping a 0-length string
attribute, "".  Now ncdump will represent a 0-length attribute of any type
as the empty string, since CDL has no syntax for 0-length attributes.
     
Made ncgen generate an error message when the type of the _FillValue
attribute doesn't match the type of the associated variable.  The library is
supposed to catch all these, but doesn't for record variables.

Fixed bug with ncgen generating C or Fortran programs that didn't use ".nc"
file extensions on created netCDF files.

Fixed problem with ncdump error message reporting on "-f" instead of "-b"
option.

Fixed bug in renaming variables and dimensions while in define mode.

Fixed bug in printing negative floating-point fill values explicitly,
instead of using "_".

Fixed bug in using the "-f" option of ncdump for annotating with full
attributes, in which multidimensional character arrays were incorrectly
annotated (the comma delimiter was missing).

Fixed a minor memory leak in ncdump when -v option specified.

Removed fixed size limitations in ncgen, also making it smaller.

Fixed bug in ncgen -f, where generated Fortran used e instead of d in
exponents of double-precision constants in DATA statements.  The symptoms of
this bug only seemed to show up in programs compiled with the AIX f77
compiler.

Changed ncdump to display fill-values as "_" and ncgen to recognize "_" as
fill-value.  ncgen still recognizes the old FloatInf and DoubleInf, for
backward compatibility.  ncdump will print "_" for values equal to explicit
_FillValue attributes if defined or for values equal to default _FillValue
values except for byte data.

Updated documentation to deprecate missing_value attribute.

Updated doc/Makefile to use texi2dvi (that comes with the GNU texinfo
package) instead of tex and texindex.

Removed the -DNDEBUG flag from compile flags, since there are no asserts
left.

Fixed problems with C++ code that were detected by HP's C++ compiler, which
seems to be more stringent than the C++ compilers on other platforms.

Fixed error in Fortran interface where no error message resulted from user
attempting to call NCVPUT while still in define mode.

Fixed ncgen to accept null-string attributes, a null _FillValue for
character variables, and to print a warning when a duplicate attribute for a
variable is declared.

Fixed ncgen handling of hexadecimal notation for byte constants, so now
'\x80' works as documented for specifying a byte value, for example.

In C++ interface, eliminated overloading on int and int* data types for
add_att, get, and put member functions.  Forbidding overloading on int and
int* eliminates an opportunity to write nonportable programs, since ints can
be different sizes on different platforms.

In C++ interface, eliminated derived NcOldFile and NcNewFile classes, but
defined macros to provide backward compatibility.  The NcFile class has a
new mode parameter in the constructor to specify whether file exists or not,
and how it should be opened.  Changed examples and documentation to use
NcFile instead of NcOldFile and NcNewFile, after checking for backward
compatibility.

In C++ interface, added sync() member function to NcDim and NcVar, used to
fix a memory leak in NcFile::sync().  If a dimension or variable has been
renamed (perhaps by another process) on disk, invoking the approriate sync()
function synchronizes the object name to the on-disk name.  NcVar::sync()
also re-initializes the variable cursor.  Added an NcVal::invalid() member
function that returns 1 if any of the values are bad.

Increased sizes of MAX_NC_DIMS (from 32 to 100), MAX_NC_ATTRS (from 512 to
2000), and MAX_NC_VARS (from 512 to 2000) to accommodate users who are
finding old limits constraining.

Make sure NCadvise is called when appropriate, to catch instances where
error occurs, error handling is default, but no error message is printed and
error isn't fatal.  In particular, caught instances where attempt to
retrieve information when no attributes, dimensions, or variables are
defined, and attempt to rename components in file opened for read-only
access.

Fixed bug in C++ interface when calling rename member functions, to change
to define mode, if needed, before calling C rename functions.

Fixed bug that ncdump and ncgen don't get remade when library is changed.

Fixed bug that no message is produced and error is not fatal when data is
accessed with ncvarput1, ncvarput, ncvarget1, or ncvarget while in define
mode with default error handling.

In ncgen, permit variable, dimension, and attribute names to contain the
string "netcdf".

Fixed ncredef() bug that caused a segmentation violation from dereferencing
a null pointer if ncredef() was called immediately after nccreate().

Incorporated Brian Lincoln's fix for the way ncgen handles multidimensional
strings, providing padding in the most rapidly-varying dimension instead of
just concatenating the strings.

Fixed bug that occurred when reentering definition mode to add a new record
variable to a file that had only one record variable of type NC_BYTE,
NC_CHAR, or NC_SHORT.  In these cases, a special-case optimization was used
to avoid padding each record value out to four bytes, but the redefinition
was not accounting for this optimization.

For VMS platforms, files opened with "ctx=stm" keyword to use stream mode.
This will permit reading netCDF files from VMS system that have been FTPd in
binary mode from a UNIX system without modifying RMS attributes after file
transfer.

Fixed bugs so ncvarid() and ncdimid() will work on a variable or dimension
that has been renamed to a shorter name while in data mode.

Fixed bug where ncopen() was setting ncerr=0 for nonexistent file.

Improved error message from FORTRAN interface when user forgets to include
netcdf.inc and then calls NCCRE or NCOPN.

Made test for setting of configuration output-variable LD_XDR (`', `-lsun'
or `-lnsl') more robust.

Plugged some memory leaks that occur when the netCDF layer fails.

Integrated support for the 64-bit operating system IRIX64 into
libsrc/xdrposix.c (the XDR module for optimizing buffered I/O) and into
fortran/jackets.src (the FORTRAN interface module).

Corrected a few bugs in the FORTRAN interface module (fortran/jackets.src)
dealing with interconversion between FORTRAN INTEGER's and C longs.

Updated C and FORTRAN manual pages with new mailing-list subscription
procedures.

Integrated the use of the `nclong' typedef into the netCDF
implementation.  This means that programs on platforms with sizeof(long)
> sizeof(int) (e.g. the DEC Alpha) will have to be recompiled and must
use `nclong' as the variable type corresponding to NC_LONG.

Corrected `xdr_NC_fill' bug in ncrecput().  ncrecput() misbehaved if
invoked after reading a non-record variable.

Ported installation procedures to autoconf 2.3.

Ported to new port/ subdirectory structure.

Corrected FORTRAN compiler search procedure in configuration script:
message wasn't emitted if FC was set.

Incorporated modifications to XDR layer from Jeff Kuehn for greatly
improved I/O performance under UNICOS.

Corrected INSTALL document regarding setting of FC.

Integrated c++/ subdirectory into configuration & build mechanism.

Added SINGLE_PRECISION to `fortran/fortc' system and modified file
fortran/ftest.src accordingly.

Corrected references to ~ftp/pub/sdm in the User's Guide.

Ported to NT.

Ported to OpenVMS V6.2.

Ported to MS/DOS 6.0 using the DJGPP (GNU C for MS/DOS) development
environment and AT&T's f2c FORTRAN-to-C translator and runtime.

Ported to OS/2 2.10 using the EMX (GNU C for OS/2) development
environment and AT&T's f2c FORTRAN-to-C translator and runtime.

Ported to CRAY MPP T3D environment, contingent on support from CRI.

------ Mon Oct 10 15:30:23 MDT 1994

Changes to the experimental C++ interface:

    Tested that file was not in define mode when NcFile::sync() is called.

    Changed return type of NcVar::edges() from const long* to long*, to make
    the result modifiable for immediate use in accessing array sections.

    Fixed bug in NcVar::set_cur() to allow extending along record dimension.

    A bug in netcdf.h that prevented correct compilation of the experimental
    C++ interface is fixed by removing typedefs for ncchar, ncbyte, ncshort,
    ncfloat, and ncdouble.

    Fixed off-by-one problem with strings reported by Tom Lefebvre.

    Minor changes to work with g++.

    Added put and get functions for ncbyte arrays.

    Fixed a bug in NcVar::get_att(NcToken) member, to make it return 0 for
    attributes that don't exist.    

    NcAtt::is_valid() had been returning FALSE for global attributes, but this
    fix makes it return TRUE when appropriate.

Better support for VMS: several compiler warning messages were eliminated
and the file libsrc/test.com was brought up-to-date.

A bug in ncgen was fixed in which trailing zeros were trimmed from the
exponents in the initialization of C constants generated by "ncgen -c"
invocations.

A bug in ncdump was fixed in which the output included an extraneous decimal
point added to the end of floating-point attributes that required
exponential notation, e.g. "1.5e+30.".

Added support to the configuration procedure for specifying that the
platform doesn't have a FORTRAN compiler by setting FC to the empty
string.

Added support for gradual underflow (i.e. subnormal number arithmetic)
on DEC Alpha OSF/1 platforms.

Modified configuration procedure to get vendor-supplied XDR library 
under SunOS 5 (alias Solaris 2).

Modified configuration procedure to attempt to use environment variable
CC when attempting to determine the type of operating system.

------ Fri Jun 11 MST 1993  Changes in netCDF (2.3.1 to 2.3.2)

A bug was found and fixed in the algorithm for generalized hyperslab access
(thanks to Harvey Davies <hld@dar.csiro.au>).  Incorrect results were
obtained if the fastest dimension had a stride of unity, or if the stride
vector was NULL.

A bug was found and fixed in ncgen that could occur due to sign extension of
non-ASCII characters above '\177' (thanks to (Tomas Johannesson
<tj@os.is>).

Improvements were incorporated in the MSDOS/OS2 makefiles to work on more
systems, including those without a coprocessor or the `diff' program (thanks
to William A. Spencer <lambert@srs.gov>).

The FORTRAN interface was ported to DEC's new (64-bit) Alpha platform (this
completes the port to that platform);

------ Tue May 11 MST 1993  Changes in netCDF (2.3 to 2.3.1)

New platforms supported for the first time with this release:
	DEC Alpha	  OSF/1 1.2	(C interface only)
	DEC VAX		  Ultrix 4.3
	NeXT		  NeXTOS 3.0

The previous version (2.3) seemed to build and test correctly on VMS, but
the resulting library produced files of the wrong `endianness' for
interoperability with other systems; this is fixed in the 2.3.1 upgrade, or
if you applied the patch sent in a previous message to this group.  In
addition, a test for `endianness' is now part of the adaptive process of
configuring Makefiles.

A few other minor changes improve some makefiles to support command-line
redefinitions, provide a `which' script for systems that don't have one
(e.g.  UNICOS), provide a fix to the ncgen Makefile for Ultrix platforms,
and provide an updated version of the Microsoft FORTRAN interface files that
includes the four new Fortran subroutines added to netCDF 2.3.

------ Fri Apr 30 MST 1993  Changes in netCDF (2.02 to 2.3)

New platforms supported for the first time with this release:
	HP-9000/7xx	HPUX 9.0
	SGI Iris	IRIX 4.0.5
	SPARCstation	Solaris 2.1

New optimizations for the library have resulted in significant speedups for
accessing cross-sections involving non-contiguous data.  In some cases,
speedups by a factor of 40 are achieved with the new implementation of I/O,
and the new design isolates the I/O layer to make other platform-specific
optimizations easier.

The default fill values for double and floating-point data were changed.
The previous strategy of using numbers that mapped to IEEE NaN under XDR
caused portability problems.  Now FILL_FLOAT and FILL_DOUBLE are large
constants within the floating-point range.  As before, we continue to
recommend that users define their own variable-specific fill values rather
than use the default ones provided.

The way in which the default fill values are defined in the FORTRAN
interface was changed, so that now the FORTRAN default fill values will
always be the same as the C default values.  This eliminates the need for
the platform-specific foo0.inc files where these constants were previously
defined.

Support for generalized hyperslabs was added.  This adds the new functions
ncvarputg and ncvargetg to the C interface, and new subroutines NCVPTG,
NCVPGC, NCVGTG, and NCVGGC to the Fortran interface.

The FILL parameters defined in the netcdf.inc include file for integer types
for the FORTRAN interface were "fixed" to be the same as the FILL parameters
in the C interface.  In previous releases these had differed from the C
interface values, which meant C and FORTRAN programs would not agree on
default fill values.  This fix is unfortunate but necessary to bring the two
interfaces back into line.

The installation procedure on UNIX platforms was changed to use the GNU
configure approach to constructing makefiles based on inquiries run from a
configure shell script.

Names acceptable to ncgen for
	netcdf name { ... }
may now start with a non-alphabetic character and include any characters
except blanks or "{" characters.

Some new informational files were added at the top-level:  FAQ for answers
to frequently asked questions, ORIGIN to describe where the distribution
came from, COPYRIGHT separates out the Copyright notice from the README
file.

Changed recommended netCDF file extension from ".cdf" to ".nc", and added
"-b" option of ncgen to produce ".nc" files.

Added several options to ncdump to control annotations in output.

An experimental draft prototype C++ interface has been added.  See the c++
subdirectory for the implementation, an example of the use, and soime
preliminary minimal documentation.

Many "const" declarations were added to the interfaces and documentation, to
specify where functions do not change values through passed in pointers.

Added three new C convenience functions to the interface to handle record
I/O.  ncrecget, ncrecput, and ncrecinq permit accessing a whole record's
worth of data with a single call.

Many changes were made to the User's Guide and man pages to improve the
documentation and describe the new interfaces.  A new Appendix includes some
answers to frequently asked questions.  Among the changes, it is now made
clearer in the User's Guide that a NULL pointer can be provided for any
return parameter from an inquire function to indicate where a value should
not be returned, and that inquire functions do not incur any I/O.

------ Mon Dec 23 MST 1991  Changes in netCDF (2.01 to 2.02)

A "memory leak" is fixed that would cause any program that opened and closed
many netCDF files to grow.

All inquire functions (ncinquire, ncdiminq, ncvarinq, ncattinq) now permit a
NULL pointer to be given for any of their return parameters, to indicate
when no return value for that parameter is desired.

The default library type that is built by the distributed Makefile is now
"nonsharable" rather than "sharable".

The format that ncdump uses to output byte data is changed from octal to
decimal.

------ Mon Nov 25 1991	Changes in netCDF (2.0 to 2.01)

Correct usage of the XDR_LD macro is added to all appropriate
program-building rules in all appropriate sub-Makefiles.  This is needed for
proper program-creation under the IRIX operating-system.

Corrects the major.minor revision ID for SunOS sharable libraries to 2.01.

Adds support for the creation of the netCDF Fortran interface under the IRIX
operating-system.

------ Wed Oct  9 1991	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.


------ Wed May 15 1991	Changes in netCDF (1.10 to 1.11)

Fix for opening two or more netCDF files for writing when more than one file
was in redefine mode.  The fix permits multiple netCDF files in redefine
mode simultaneously.

Improvements to INSTALL documentation.

Some files in the source distribution were renamed, to conform to the strict
conventions of MSDOS and OS/2.

ANSI C function prototypes for netCDF functions were added to netcdf.h, for
use in checking calls to the library when you have an ANSI C compiler.

The Makefiles for netCDF were revised to make installation easier.  The
Makefiles now also make shared libraries for SunOS and AIX platforms.

The generation of Fortran jackets for various platforms from a single m4
source is now possible with versions of m4 that don't have the defn()
built-in macro, e.g. Ultrix.  FORTRAN jackets in Microsoft C for Micrsoft
FORTRAN on MSDOS and OS/2 are now supported.

The netCDF User's Guide was revised to include write-ups for the new
functions ncsetfill() and NCSFIL(), to contain an updated Foreward, a
description of the use of the reserved attribute "_FillValue", and an
appendix containing a description of the suggested units syntax standard.  A
copy of our units file was included in the netcdf/doc directory.  A more
recent version of texinfo.tex is distributed with the User's Guide.

*****
A change was made to putget.c to eliminate unnecessary seeks.  This results
in a considerable performance enhancement for sequential writes.

***** A new function ncsetfill(int fillmode) (NCSFIL(INTEGER FILLMODE) for
FORTRAN) has been added, to support optimization of writes without
prefilling.  

Example:
	ncsetmode(NC_NOFILL) ; 
	ncvarput
	ncvarput

This is a performance enhancement which can be used to eliminate the dual
"writes" that result from the netcdf putting its default fill value in only
to be immediately overwritten by the data.

Caveats:

    It is incumbent upon the applications program to be certain that all the
data positions have valid data "put" to them.
    If the netcdf file has an unlimited dimension and the last record was
"put" while NC_NOFILL was set, then the file will be 4 bytes longer than if
NC_NOFILL wasn't set.

*****
IF an attribute named "_FillValue" exists for a given netcdf variable AND
the attribute is of same type of the variable AND the "count" (array length)
of the attribute is 1, THEN the value of that attribute will be henceforth
used as the "fill value" for that variable.

Example:
	long lfill = -1 ;
	long_id = ncvardef(cdfid, "avar", NC_LONG, ndims, dims) ;
 	ncattput(id, Long_id, "_FillValue", NC_LONG, 1, &lfill) ;

The purpose of this is to save the applications programmer the work of
"prefilling" and also to eliminate the dual "writes" that result from netcdf
putting its default fill value in, only to be immediately overwritten by the
programmers preferred value.

Caveat:
	If you change or add this attribute after the variable has been
	instantiated (first ncendef after ncvardef of the variable), it
	doesn't go back and change the old stuff. 

*****
A fix was put in ncdump for printing byte-values '\374' through '\377',
which printed as multiple bytes on platforms where chars are signed rather
than unsigned.

Integrated the changes needed to support FORTRAN jackets for the Microsoft
FORTRAN compiler and C compiler under MSDOS and OS/2 into the new
netcdf/fortran/msoft directory.

A problem in the library that would only appear when trying to read a very
large array on machines with 16-bit ints was fixed.  The nctest program was
changed to test for this case, so it would reveal the problem.

The single big malloc() of enough space to hold all the data for a variable
with one big ncvarget() call to get it all, was changed to a small malloc()
and multiple ncvarget() calls for each "row" of data.  This will make ncdump
smaller at run-time and make it work better on 16-bit machines for large
arrays.

Reference documentation, in the form of Unix man pages, was added to the
netcdf/doc directory, to supplement the TeXinfo documentation for the User's
Guide.  The new files are ncdump.1, ncgen.1, netcdf.3, and netcdf.3f for the
ncdump and ncgen utilities and for the C and FORTRAN interfaces,
respectively.

In the netCDF User's Guide, a new chapter on ``netCDF File Structure and
Performance'' was added, and the interface description for the nctypelen()
function was moved.  A Makefile for printing the manual from the ug.texinfo
source and the source for texindex.c were added.

ncgen was modified to accept the hyphen character ("-") as acceptable in
names for dimensions, variables, and attributes.

The top-level Makefile was changed to build and install the FORTRAN
interface by default.  The PORTING documentation was modified to describe
necessary steps to include the FORTRAN interface.  The default OS for the
FORTRAN interface was changed to "sun".

------ Thu Oct 25 05:26:01 MDT 1990	Changes in netCDF (1.09 to 1.10)

The double-precision `fill value' for MIPSEL (DECstation) architectures was
fixed.

A list of which platforms have suitable vendor-supplied XDR libraries and
where they can be found was added to the netCDF/PORTING document.

The Makefile in netcdf/ncgen was fixed to eliminate an extra compilation
when testing the Fortran generated by "ncgen -f".

Several bugs were fixed in the Fortran jackets, the README documentation was
improved, and the names of the `vaxultrix' directory and macro files were
changed to `ultrix' after fixes were incorporated for the DECstation/Ultrix
platform.  Several of the sets of system-specific NOTES files were
simplified and corrected.  The Makefile was improved by removing a feature
not available in make on some systems, and by providing a more informative
error message when a value for the OS macro is not specified.  Comments were
removed from two of the calls to test drivers for NCVPT1() and NCVGT1() in
the Fortran test program, and problems revealed by these tests on the unicos
platform were fixed.  Blank-filling of character strings returned by NCVGTC()
and NCAGTC() was fixed for multi-dimensional string arrays.  Null-terminating
of character attribute values stored with NCAPTC() calls was fixed, so now
such attributes are only null-terminated if the user has explicitly provided
the terminating null character.  New versions of the pre-generated source
for the Fortran test driver and jackets library incorporating these fixes
were created for aix, sun, ultrix, unicos, and vms.

------ Wed Oct 17 14:37:04 MDT 1990	Changes in netCDF (1.08 to 1.09)

The portable XDR library we distribute has been modified so that it will
compile and work properly under OS/2 and MSDOS (Microsoft 6.0 compiler) with
netCDF files larger than 64K.  This means that a vendor XDR, such as Sun
PCNFS or IBM TCP/IP, is NO LONGER required in order to compile netCDF on
these platforms.  In order to `seek' past the 64k mark in files, a change
has been made to the XDR interface:

	xdr_setpos takes a `long' rather than `int' position argument.
	xdr_getpos returns a `long' rather than `int' position argument.

On machines which have 32 bit ints and 32 bit longs, this change is
transparent.  The Microsoft compilers should use the /Za option (ANSI)
so that the proper conditional compilation code is visible.

There is now a single source for the netCDF FORTRAN interface, instead of
several diverging sources.  A new system for parameterizing the FORTRAN
interface generates working jacket libraries for various versions of
FORTRAN-to-C calling conventions, including those found on Sun, VAX/ULTRIX,
VAX/VMS, CRAY/UNICOS, and IBM RS6000/AIX.  It is much easier to create and
test a FORTRAN interface for a new platform, since all the differences among
the various platforms and FORTRAN-to-C calling conventions are isolated in a
small set of M4 macros.  The FORTRAN jackets will now work for FORTRAN
compilers that don't support either or both of the nonstandard BYTE
(integer*1) or the short (INTEGER*2) types.

Declarations for the netCDF functions (as opposed to subroutines) in the
FORTRAN interface are now included in the `netcdf.inc' file, so users don't
need to declare them.  This may cause incorrect warnings about unused integer
variables, which can be ignored.

Ncgen no longer depends on /usr/include/limits.h, since this file is absent
from some versions of Unix.

------ Thu Aug  2 09:57:08 MDT 1990    Changes in netCDF (1.07 to 1.08)

Fixed bug in ncdump: reading octal constants beginning with leading 0 as
decimal.

Fixed bug in ncgen found by Saber C: memory leak and problem with
non null-terminated character array attributes.

Enhanced ncdump to insert line breaks after new-lines in multi-line
attributes, and tested for this in test0.cdl example.

------ Mon Jul 23 10:01:58 MDT 1990	Changes in netCDF (1.06 to 1.07)

The netCDF User's Guide can now be used as an on-line ``hypertext''
document if you have a texinfo reader.  Texinfo is available as part of
the GNU emacs editor (from prep.ai.mit.edu), and a texinfo reader is
also available as an X Windows client named "xinfo".  The texinfo system
allows a single source (in this case netcdf/src/doc/ug.texinfo) to be
used to generate both a hard-copy manual (the netCDF User's Guide) and
files that provide an on-line hypertext version of the manual.

Numerous bugs in the "-f" option of ncgen have been fixed, and a much
more stringent test of the execution of the resulting FORTRAN code is
now part of "make test" in the ncgen directory.  "ncgen -f" now
generates FORTRAN code works on (at least) Sun f77, VMS FORTRAN, and
DEC ULTRIX f77.

Numerous bugs in the FORTRAN jackets have been fixed, including:

	NCVGTC() now correctly blank-fills character hyperslab arrays
	that it returns.

	The ID of the unlimited dimension returned by NCINQ() is no
	longer off by one.

