The rest of this example, from nf_test/ftst_groups.F, shows how groups may be read in Fortran 77.
C Reopen the file. retval = nf_open(file_name, NF_NOWRITE, ncid) if (retval .ne. nf_noerr) call handle_err(retval) C Check the name of the root group. retval = nf_inq_grpname(ncid, name_in) if (retval .ne. nf_noerr) call handle_err(retval) if (name_in(1:1) .ne. '/') stop 2 C Check the full name of the root group (also "/"). retval = nf_inq_grpname_full(ncid, full_name_len, name_in) if (retval .ne. nf_noerr) call handle_err(retval) if (full_name_len .ne. 1 .or. name_in(1:1) .ne. '/') stop 2 C What groups are there from the root group? retval = nf_inq_grps(ncid, ngroups_in, grpids) if (retval .ne. nf_noerr) call handle_err(retval) if (ngroups_in .ne. 1) stop 2 C Check the name of this group. retval = nf_inq_grpname(grpids(1), name_in) if (retval .ne. nf_noerr) call handle_err(retval) if (name_in(1:len(group_name)) .ne. group_name) stop 2 C Check the length of the full name. retval = nf_inq_grpname_len(grpids(1), full_name_len) if (retval .ne. nf_noerr) call handle_err(retval) if (full_name_len .ne. len(group_name) + 1) stop 2 C Check the full name. retval = nf_inq_grpname_full(grpids(1), full_name_len, name_in2) if (retval .ne. nf_noerr) call handle_err(retval) if (name_in2(1:1) .ne. '/' .or. & name_in2(2:len(group_name)+1) .ne. group_name .or. & full_name_len .ne. len(group_name) + 1) stop 2 C Check getting the grpid by full name retval = nf_inq_grp_full_ncid(ncid, name_in, grpid_in) if (retval .ne. nf_noerr) call handle_err(retval) if (grpid_in .ne. grpids(1)) stop 2 C Check the parent ncid. retval = nf_inq_grp_parent(grpids(1), grpid_in) if (retval .ne. nf_noerr) call handle_err(retval) if (grpid_in .ne. ncid) stop 2