program fichier use hdf5 use iso_fortran_env implicit none integer(size_t) :: alen integer :: alloc_stat integer(hid_t) :: attr_id real(kind=8), allocatable, dimension(:,:) :: data_real8 integer(hid_t) :: dset_id integer(hsize_t), dimension(1) :: dim1D integer(hsize_t), dimension(2) :: dim2D character(len=256) :: error_message integer(hid_t) :: file_id integer(hid_t) :: group_id integer :: h5err integer(hid_t) :: h5kind character(len=:), allocatable :: metadata_char integer(kind=4) :: metadata_int4 character(len=:), allocatable :: name integer :: rank integer(hid_t) :: space_id integer(hid_t) :: type_id ! initialisations metadata_int4 = 4 metadata_char = 'ma metadonnee' allocate(data_real8(metadata_int4, metadata_int4), stat=alloc_stat, errmsg=error_message) if(alloc_stat /= 0) then write(ERROR_UNIT,*) 'allocation error for data_real8: ', error_message, alloc_stat end if data_real8 = 2_8 ! ouvrir hdf5 call h5open_f(h5err) write(OUTPUT_UNIT, *) 'HDF5 initialise' ! creer un fichier name = 'testhdf5.h5' call h5fcreate_f(name, H5F_ACC_TRUNC_F, file_id, h5err) write(OUTPUT_UNIT, *) 'Fichier ',name, ' cree, id = ',file_id ! creer un groupe name = 'groupe' call h5gcreate_f(file_id, name, group_id, h5err) dim1D(1) = 1 rank = 1 ! creer un dataspace pour l'attribut call h5screate_simple_f(rank, dim1D, space_id, h5err) ! creer un datatype pour l'attribut call h5tcopy_f(H5T_NATIVE_CHARACTER, type_id, h5err) alen = len(metadata_char) call h5tset_size_f(type_id, alen, h5err) ! creer l'attribut name = 'metadonnee_1' call h5acreate_f(group_id, name, type_id, space_id, attr_id, h5err) ! ecrire l'attribut call h5awrite_f(attr_id, type_id, metadata_char, dim1D, h5err) ! fermer l'attribut call h5aclose_f(attr_id, h5err) ! fermer le dataspace call h5sclose_f(space_id, h5err) ! fermer le datatype call h5tclose_f(type_id, h5err) name = 'metadonnee_2' dim1D(1) = 1 rank = 1 ! creer le dataspace pour l'attribut call h5screate_simple_f(rank, dim1D, space_id, h5err) h5kind = h5kind_to_type(4,H5_INTEGER_KIND) call h5acreate_f(file_id, name, h5kind, space_id, attr_id, h5err) ! ecrire l'attribut call h5awrite_f(attr_id, h5kind, metadata_int4, dim1D, h5err) ! fermer l'attribut call h5aclose_f(attr_id, h5err) ! fermer le dataspace call h5sclose_f(space_id, h5err) !!$ ! creer un dataspace !!$ dim2D(1) = ??? !!$ dim2D(2) = ??? !!$ rank = ??? !!$ call h5screate_simple_f(???,???,space_id,h5err) !!$ ! creer le dataset !!$ name = 'data' !!$ h5kind = h5kind_to_type(???,???) !!$ call h5dcreate_f(???,name,???,???,???,h5err) !!$ ! ecrire le dataset !!$ call h5dwrite_f(???,???,???,???,h5err) !!$ ! fermer le dataset !!$ call h5dclose_f(???,h5err) !!$ ! fermer le dataspace !!$ call h5sclose_f(???,h5err) ! fermer le groupe call h5gclose_f(group_id, h5err) ! fermer le fichier call h5fclose_f(file_id, h5err) ! fermer HDF5 call h5close_f(h5err) end program fichier