Next: , Previous: Enum Type, Up: Enum Type


5.9.1 Creating a Enum Type: NF_DEF_ENUM

Create an enum type. Provide an ncid, a name, and a base integer type.

After calling this function, fill out the type with repeated calls to NF_INSERT_ENUM (see NF_INSERT_ENUM). Call NF_INSERT_ENUM once for each value you wish to make part of the enumeration.

Usage

     INTEGER FUNCTION NF_DEF_ENUM(INTEGER NCID, INTEGER BASE_TYPEID,
             CHARACTER*(*) NAME, INTEGER TYPEIDP)
NCID
The groupid where this compound type will be created.
BASE_TYPEID
The base integer type for this enum. Must be one of: NF_BYTE, NF_UBYTE, NF_SHORT, NF_USHORT, NF_INT, NF_UINT, NF_INT64, NF_UINT64.
NAME
The name of the new enum type.
TYPEIDP
The typeid of the new type will be placed here.

Errors

NF_NOERR
No error.
NF_EBADID
Bad group id.
NF_ENAMEINUSE
That name is in use. Compound type names must be unique in the data file.
NF_EMAXNAME
Name exceeds max length NF_MAX_NAME.
NF_EBADNAME
Name contains illegal characters.
NF_ENOTNC4
Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4 operations can only be performed on files defined with a create mode which includes flag NF_NETCDF4. (see NF_OPEN).
NF_ESTRICTNC3
This file was created with the strict netcdf-3 flag, therefore netcdf-4 operations are not allowed. (see NF_OPEN).
NF_EHDFERR
An error was reported by the HDF5 layer.
NF_EPERM
Attempt to write to a read-only file.
NF_ENOTINDEFINE
Not in define mode.

This example is from nf_test/ftst_vars3.F.

     C     Create the enum type.
           retval = nf_def_enum(ncid, NF_INT, enum_type_name, enum_typeid)
           if (retval .ne. nf_noerr) call handle_err(retval)