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)
NCIDXTYPENAMESIZEPNFIELDSPNF_NOERRNF_EBADIDNF_ENOTNC4NF_ESTRICTNC3NF_EBADTYPENF_EBADTYPEIDNF_EHDFERRThis 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