/* * This example writes data to the HDF5 file. * Data conversion is performed during write operation. */ #include "hdf5.h" #define DIM0 40 #define DIM1 60 #define H5FILE_NAME "SDS%d.h5" int main (void) { hid_t file, dataset; /* handles */ hid_t dataspace; hid_t plist_id, lld; int i, j, dset_data[DIM0][DIM1]; hsize_t family_size = 1000; hsize_t dims[2] = {DIM0,DIM1}; herr_t status; hsize_t memb_size, offset; plist_id = H5Pcreate(H5P_FILE_ACCESS); status = H5Pset_fapl_family(plist_id, family_size, H5P_DEFAULT); file = H5Fcreate(H5FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, plist_id); dataspace = H5Screate_simple(2, dims, NULL); dataset = H5Dcreate (file, "family-dataset", H5T_STD_I32LE, dataspace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); for (i = 0; i < DIM0; i++) for (j = 0; j < DIM1; j++) dset_data[i][j] = i * 6 + j + 1; status = H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset_data); status = H5Dclose(dataset); status = H5Sclose(dataspace); status = H5Pclose (plist_id); /* Check for file family property list */ plist_id = H5Fget_access_plist (file); printf ("\nplist_id=%i\n", plist_id); lld = H5Pget_driver (plist_id); printf ("low level driver id=%i\n", lld); printf ("H5FD_FAMILY =%i\n", H5FD_FAMILY); if (H5FD_FAMILY == lld) { status = H5Pget_fapl_family (plist_id, &memb_size, NULL); printf ("memb_size= %i\n", memb_size); status = H5Pget_family_offset (plist_id, &offset); printf ("offset= %i\n", offset); } status = H5Pclose (plist_id); status = H5Fclose(file); plist_id = H5Pcreate(H5P_FILE_ACCESS); status = H5Pset_fapl_family(plist_id, H5F_FAMILY_DEFAULT, H5P_DEFAULT); file = H5Fopen(H5FILE_NAME, H5F_ACC_RDWR, plist_id); printf ("H5Fopen returns: %li\n", file); status = H5Fclose(file); printf ("H5Fclose returns: %li\n", status); }