16.1 Backward Compatibility
Backward compatibility was the first requirement of the netCDF-4 project.
To create netCDF files using different format variants:
- Create a classic netCDF file
nc_create("file.nc", 0, &ncid);
- Create a (classic) 64-bit offset netCDF file
nc_create("file.nc", NC_64BIT_OFFSET, &ncid);
- Create a netCDF-4 file (a kind of HDF5 file)
nc_create("file.nc", NC_NETCDF4, &ncid);
- Create a netCDF-4 classic model file (a netCDF-4 file with restrictions)
nc_create("file.nc", NC_NETCDF4 | NC_CLASSIC_MODEL, &ncid);
Classic binary format is still the default output
format. NetCDF-4 files must be specified
at create-time. If netCDF-4 allows multiple unlimited
dimensions (for example), how to ensure code
compatibility in all cases?
- to provide same behavior in existing code, netCDF-4 files can be
created with a special flag: NC_CLASSIC_MODEL
- This is a backward compatibility flag that restricts
what is allowed in the file.
- An attempt to (for example) create two
unlimited dimensions in such a file will result in a error, just as
with classic format.
- NetCDF-4 files produced without this flag can have any number of
- You don't need the NC_CLASSIC_MODEL
flag for code compatibility, it just makes netCDF-4 more strict to
ensure compatibility, producingor example same error when you try to define
multiple unlimited dimensions
- The data format is still HDF5, and no different
from the same file created without
CLASSIC_MODEL, except the
CLASSIC_MODEL file will always reject any
enhanced model feature, such as groups, user-defined types, and
other new features.