anchor.diff:      character(len=*),intent(in) :: value
       integer(hid_t) :: dspace_id, attr_id
       integer :: hdferr
  -    INTEGER(HID_T) :: atype_id
  -    CALL h5tcopy_f(H5T_NATIVE_CHARACTER, atype_id, hdferr)
  -    call check_status(hdferr,'hdf5_read_k_string [1]')
  -    CALL h5tset_size_f(atype_id, int(len(value),size_t), hdferr)
  -    call check_status(hdferr,'hdf5_read_k_string [2]')
  +    integer(hid_t) :: atype_id
  +    call h5tcopy_f(h5t_native_character, atype_id, hdferr)
  +    call check_status(hdferr,'hdf5_write_k_string [1]')
  +    call h5tset_size_f(atype_id, int(len(value),size_t), hdferr)
  +    call check_status(hdferr,'hdf5_write_k_string [2]')
       if(hdf5_exists_keyword(handle, path, name)) then
          call h5aopen_by_name_f(handle, path, name, attr_id, hdferr)
  -       call check_status(hdferr,'hdf5_read_k_string [3]')
  +       call check_status(hdferr,'hdf5_write_k_string [3]')
       else
          call h5screate_f(h5s_scalar_f, dspace_id, hdferr)
  -       call check_status(hdferr,'hdf5_read_k_string [4]')
  +       call check_status(hdferr,'hdf5_write_k_string [4]')
          call h5acreate_by_name_f(handle, path, name, atype_id, dspace_id, attr_id, hdferr)
  -       call check_status(hdferr,'hdf5_read_k_string [5]')
  +       call check_status(hdferr,'hdf5_write_k_string [5]')
          call h5sclose_f(dspace_id, hdferr)
  -       call check_status(hdferr,'hdf5_read_k_string [6]')
  +       call check_status(hdferr,'hdf5_write_k_string [6]')
       end if
       call h5awrite_f(attr_id, atype_id, value, (/1_hsize_t/), hdferr)
  -    call check_status(hdferr,'hdf5_read_k_string [7]')
  +    call check_status(hdferr,'hdf5_write_k_string [7]')
       call h5aclose_f(attr_id, hdferr)
  -    call check_status(hdferr,'hdf5_read_k_string [8]')
  +    call check_status(hdferr,'hdf5_write_k_string [8]')
     end subroutine hdf5_write_k_string
   
     !!@FOR integer:h5t_std_i32le integer(idp):h5t_std_i64le real(sp):h5t_ieee_f32le real(dp):h5t_ieee_f64le
  
positive.code:      module procedure hdf5_read_5d_array_alloc_h5t_std_i32le
       module procedure hdf5_read_5d_array_alloc_h5t_std_i64le
       module procedure hdf5_read_5d_array_alloc_h5t_ieee_f32le
       module procedure hdf5_read_5d_array_alloc_h5t_ieee_f64le 
       module procedure hdf5_read_6d_array_alloc_h5t_std_i32le
       module procedure hdf5_read_6d_array_alloc_h5t_std_i64le
       module procedure hdf5_read_6d_array_alloc_h5t_ieee_f32le
  
negative.code:     integer :: hdferr
      if(hdf5_exists_keyword(handle, path, name)) then
         call h5aopen_by_name_f(handle, path, name, attr_id, hdferr)
         call check_status(hdferr,'hdf5_write_k_<T> [1]')
      else
         call h5screate_f(h5s_scalar_f, dspace_id, hdferr)
         call check_status(hdferr,'hdf5_write_k_<T> [1]')
         call h5acreate_by_name_f(handle, path, name, <T>, dspace_id, attr_id, hdferr)
         call check_status(hdferr,'hdf5_write_k_<T> [2]')
         call h5sclose_f(dspace_id, hdferr)
         call check_status(hdferr,'hdf5_write_k_<T> [3]')
      end if
      call h5awrite_f(attr_id, <T>, value, (/1_hsize_t/), hdferr)
      call check_status(hdferr,'hdf5_write_k_<T> [4]')
      call h5aclose_f(attr_id, hdferr)
      call check_status(hdferr,'hdf5_write_k_<T> [5]')
    end subroutine hdf5_write_k_<T>
  
    !!@END FOR
  