Get the number of fields, length in bytes, and name of a compound type.
In addtion to the NF_INQ_COMPOUND function, three additional functions are provided which get only the name, size, and number of fields.
INTEGER FUNCTION NF_INQ_COMPOUND(INTEGER NCID, INTEGER XTYPE, CHARACTER*(*) NAME, INTEGER SIZEP, INTEGER NFIELDSP) INTEGER FUNCTION NF_INQ_COMPOUND_NAME(INTEGER NCID, INTEGER XTYPE, CHARACTER*(*) NAME) INTEGER FUNCTION NF_INQ_COMPOUND_SIZE(INTEGER NCID, INTEGER XTYPE, INTEGER SIZEP) INTEGER FUNCTION NF_INQ_COMPOUND_NFIELDS(INTEGER NCID, INTEGER XTYPE, INTEGER NFIELDSP)
NCID
XTYPE
NAME
SIZEP
NFIELDSP
NF_NOERR
NF_EBADID
NF_ENOTNC4
NF_ESTRICTNC3
NF_EBADTYPE
NF_EBADTYPEID
NF_EHDFERR
This example is from nf_test/ftst_types.F.
C Check it differently. retval = nf_inq_compound(ncid, typeids(1), name_in, size_in, & nfields_in) if (retval .ne. nf_noerr) call handle_err(retval) if (name_in(1:len(type_name)) .ne. type_name .or. & size_in .ne. WIND_T_SIZE .or. nfields_in .ne. 2) stop 2 C Check it one piece at a time. retval = nf_inq_compound_nfields(ncid, typeids(1), nfields_in) if (retval .ne. nf_noerr) call handle_err(retval) if (nfields_in .ne. 2) stop 2 retval = nf_inq_compound_size(ncid, typeids(1), size_in) if (retval .ne. nf_noerr) call handle_err(retval) if (size_in .ne. WIND_T_SIZE) stop 2 retval = nf_inq_compound_name(ncid, typeids(1), name_in) if (retval .ne. nf_noerr) call handle_err(retval) if (name_in(1:len(type_name)) .ne. type_name) stop 2