/* h5cksum: This example uses the Fletcher32 checksum algorithm for error detection */ #include "hdf5.h" #define FILE "cksum.h5" int main() { hid_t file_id, dataset_id, dataspace_id, dxpl, property_id; hsize_t dims[2]; herr_t status; hsize_t chkdim[2] ={2,3}; int i, j, dset_data[4][6]; H5Z_EDC_t edc; /* Create the data space for the dataset. */ dims[0] = 4; dims[1] = 6; dataspace_id = H5Screate_simple(2, dims, NULL); /* Initialize the dataset. */ for (i = 0; i < 4; i++) for (j = 0; j < 6; j++) dset_data[i][j] = i * 6 + j + 1; /* Create a new file using default properties. */ file_id = H5Fcreate (FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); /* Create the dataset with checksum filter */ property_id = H5Pcreate(H5P_DATASET_CREATE); status = H5Pset_chunk (property_id, 2, chkdim); status = H5Pset_filter (property_id, H5Z_FILTER_FLETCHER32, 0, 0, NULL); dataset_id = H5Dcreate (file_id, "/dset", H5T_STD_I32BE, dataspace_id, property_id); status = H5Dwrite(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset_data); status = H5Pclose (property_id); status = H5Dclose(dataset_id); status = H5Fclose(file_id); file_id = H5Fopen(FILE, H5F_ACC_RDWR, H5P_DEFAULT); dataset_id = H5Dopen (file_id, "/dset"); dxpl = H5Pcreate (H5P_DATASET_XFER); edc = H5Pget_edc_check (dxpl); if (edc == 1) printf ("Checksum is enabled\n"); if (edc == 0) printf ("Checksum is disabled\n"); status = H5Dread(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, dxpl, dset_data); printf ("H5Dread returns: %i\n", status); status = H5Pclose (dxpl); status = H5Dclose(dataset_id); status = H5Fclose(file_id); }