Page tree

 

JAVA

FORTRAN

C++

C

 

Link

H5P_SET_FLETCHER32

Sets up use of the Fletcher32 checksum filter

Procedure:

H5P_SET_FLETCHER32 ( plist_id )

Signature:

herr_t H5Pset_fletcher32(
            hid_t plist_id
            )

  

Fortran90 Interface: h5pset_fletcher32_f
    
SUBROUTINE h5pset_fletcher32_f(prp_id, hdferr) 
  IMPLICIT NONE
  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

Parameters:

hid_t plist_id     IN: Dataset or group creation property list identifier

Description:

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:

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

Example:

    /*
     * 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,
                H5P_DEFAULT);

  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)

History:
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