Number of entries in the one-dimensional dataset arrayName, or -1 if it does not exist or has a different rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=HID_T), | intent(in) | :: | fileId | |||
| character, | intent(in) | :: | arrayName |
function DatasetLength1D_HDF5(fileId,arrayName) result(n)
!! Number of entries in the one-dimensional dataset arrayName, or -1 if it does not
!! exist or has a different rank.
implicit none
integer(HID_T),intent(in) :: fileId
character(*),intent(in) :: arrayName
integer :: n
! Local
integer(HID_T) :: dsetId,filespace
integer(HSIZE_T) :: dims(1:1),maxDims(1:1)
integer :: error,ndims
logical :: exists
n = -1
call h5lexists_f(fileId,trim(arrayName),exists,error)
if(error /= 0 .or. .not. exists) return
call h5dopen_f(fileId,trim(arrayName),dsetId,error)
if(error /= 0) return
call h5dget_space_f(dsetId,filespace,error)
call h5sget_simple_extent_ndims_f(filespace,ndims,error)
if(ndims == 1) then
call h5sget_simple_extent_dims_f(filespace,dims,maxDims,error)
if(error >= 0) n = int(dims(1))
endif
call h5sclose_f(filespace,error)
call h5dclose_f(dsetId,error)
endfunction DatasetLength1D_HDF5