Page tree









Sets up use of the Fletcher32 checksum filter


H5P_SET_FLETCHER32 ( plist_id )


herr_t H5Pset_fletcher32(
            hid_t plist_id


Fortran90 Interface: h5pset_fletcher32_f
SUBROUTINE h5pset_fletcher32_f(prp_id, hdferr) 
  INTEGER(HID_T), INTENT(IN) :: prp_id  ! Property list identifier 
  INTEGER, INTENT(OUT)       :: hdferr  ! Error code
                                        ! 0 on success and -1 on failure
END SUBROUTINE h5pset_fletcher32_f


hid_t plist_id     IN: Dataset or group creation property list identifier


H5P_SET_FLETCHER32 sets the Fletcher32 checksum filter in the dataset or group creation property list plist_id.

The Fletcher32 EDC checksum filter was added in HDF5 Release 1.6.0. In the original implementation, however, the checksum value was calculated incorrectly on little-endian systems. The error was fixed in HDF5 Release 1.6.3.

As a result of this fix, an HDF5 library of Release 1.6.0 through Release 1.6.2 cannot read a dataset created or written with Release 1.6.3 or later if the dataset was created with the checksum filter and the filter is enabled in the reading library. (Libraries of Release 1.6.3 and later understand the earlier error and compensate appropriately.)

Work-around: An HDF5 library of Release 1.6.2 or earlier will be able to read a dataset created or written with the checksum filter by an HDF5 library of Release 1.6.3 or later if the checksum filter is disabled for the read operation. This can be accomplished via a call to H5P_SET_EDC_CHECK with the value H5Z_DISABLE_EDC in the second parameter. This has the obvious drawback that the application will be unable to verify the checksum, but the data does remain accessible.



Returns a non-negative value if successful; otherwise returns a negative value.


     * Create the dataset creation property list, add the Fletcher32 filter
     * and set the chunk size.
    dcpl = H5Pcreate (H5P_DATASET_CREATE);
    status = H5Pset_fletcher32 (dcpl);
    status = H5Pset_chunk (dcpl, 2, chunk);

     * Create the dataset.
    dset = H5Dcreate (file, DATASET, H5T_STD_I32LE, space, H5P_DEFAULT, dcpl,

  CALL h5pcreate_f(H5P_DATASET_CREATE_F, dcpl, hdferr)
  CALL h5pset_fletcher32_f(dcpl, hdferr)
  CALL h5pset_chunk_f(dcpl, 2, chunk, hdferr)
  ! Create the dataset.
  CALL h5dcreate_f(file, dataset, H5T_STD_I32LE, space, dset, hdferr, dcpl)

Release    Change
1.6.0Function introduced in this release.
1.6.3Error in checksum calculation on little-endian systems corrected in this release.
1.8.5Function extended to work with group creation property lists.

--- Last Modified: August 07, 2019 | 02:28 PM