/*
 */

#include "hdf5.h"
#define FILE "groups.h5"

main() {

   hid_t       file_id, group1_id, group2_id, group3_id;  /* identifiers */
   hid_t       aid, atype, attr;
   herr_t      status;

   /* Create a new file using default properties. */
   file_id = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
   printf ("H5Fcreate returns: %i\n", file_id);

   /* Create group "MyGroup" in the root group using absolute name. */
   group1_id = H5Gcreate(file_id, "/MyGroup", 0);
   printf ("H5Gcreate returns: %i\n", group1_id);

   aid = H5Screate(H5S_SCALAR);
   printf ("H5Screate returns: %i\n", aid);
   atype = H5Tcopy (H5T_C_S1);
   printf ("H5Tcopy returns: %i\n", atype);
   status = H5Tset_size (atype, 20);
   printf ("H5Tset_size returns: %i\n", status);
   attr = H5Acreate (group1_id, "data_contents", atype, aid, H5P_DEFAULT);
   printf ("H5Acreate returns: %i\n", attr);
   status = H5Awrite (attr, atype, "important_data");
   printf ("H5Awrite returns: %i\n", status);

   status = H5Gclose(group1_id);
   printf ("H5Gclose returns: %i\n", status);
   status = H5Sclose (aid);
   printf ("H5Sclose returns: %i\n", status);
   status = H5Aclose (attr);
   printf ("H5Aclose returns: %i\n", status);
   
   /* Close the file. */
   status = H5Fclose(file_id);
   printf ("H5Fclose returns: %i\n", status);
}
