program print_using_hdf5

  USE HDF5 ! This module contains all necessary modules
  
  implicit none

  CHARACTER(LEN=8), PARAMETER :: filename = "dsetf.h5" ! File name
  CHARACTER(LEN=4), PARAMETER :: dsetname = "dset"     ! Dataset name

  INTEGER(HID_T) :: file_id       ! File identifier
  INTEGER(HID_T) :: dset_id       ! Dataset identifier

  INTEGER     ::   error ! Error flag

  INTEGER, DIMENSION(1) :: dset_data, data_out ! Data buffers
  INTEGER(HSIZE_T), DIMENSION(1) :: data_dims
 
  dset_data(1) = 8;

  !
  ! Initialize FORTRAN interface.
  !
  CALL h5open_f(error)
  
  !
  ! Open an existing file.
  !
  CALL h5fopen_f (filename, H5F_ACC_RDWR_F, file_id, error)

  !
  ! Open an existing dataset.
  !
  CALL h5dopen_f(file_id, dsetname, dset_id, error)

  !
  ! Write the dataset.
  !
  data_dims(1) = 2
  CALL h5dwrite_f(dset_id, H5T_NATIVE_INTEGER, dset_data, data_dims, error)

  !
  ! Read the dataset.
  !
  CALL h5dread_f(dset_id, H5T_NATIVE_INTEGER, data_out, data_dims, error)
  
  write (*,*) "The number was: ", data_out(1) 
  !
  ! Close the dataset.
  !
  CALL h5dclose_f(dset_id, error)
  
  !
  ! Close the file.
  !
  CALL h5fclose_f(file_id, error)
  
  !
  ! Close FORTRAN interface.
  !
  CALL h5close_f(error)
  
end program print_using_hdf5
