You can have a look at the program h5ex_t_string_F03.f90 from:

https://www.hdfgroup.org/HDF5/examples/api18-fortran.html

You should be able to remove the writing section of the example and just modify 
the reading part in order to read your dataset.

Scot



On Jul 7, 2015, at 2:42 PM, Blankenship, Clay B. (MSFC-ZP12)[USRA] 
<[email protected]> wrote:
> 
> Hi,
> I am trying to read an HDF5 file using Fortran.  I can read all the datasets 
> I need except one which is a string.  What am I doing wrong?  I can’t find 
> many examples of reading a fixed-length string array.
> 
> Thanks!
> 
> Here is the relevant output from h5dump:
> 
>      DATASET "spacecraft_overpass_time_utc" {
>          DATATYPE  H5T_STRING {
>                STRSIZE 24;
>                STRPAD H5T_STR_NULLTERM;
>                CSET H5T_CSET_ASCII;
>                CTYPE H5T_C_S1;
>             }
> 
> Here is my Fortran code:
>   
>   use hdf5
> …
>   integer :: istatus
>   integer(HID_T) :: fileid,dsetid,datatype
>   integer, parameter :: n_ease=267264
>   character*80 :: dsetname(12)
>   character(len=24), dimension(n_ease) :: tutc_ease
>   integer(HSIZE_T), dimension(1) :: dims,maxdims,newdims
>   integer(SIZE_T) :: mysize,sdim
> 
> 
>   dims(1)=n_ease
> 
>   !Open fortran interface
>   call h5open_f(istatus)
>   call h5fopen_f(fname,H5F_ACC_RDWR_F,fileid,istatus)  
>   dsetname(5)='Soil_Moisture_Retrieval_Data/spacecraft_overpass_time_utc'     
>     
>   call h5dopen_f(fileid,dsetname(5),dsetid,istatus)
>   call h5dget_type_f(dsetid,datatype,istatus)        !datatype is not equal 
> to H5T_STRING!
>   call h5tget_size_f(datatype,mysize,istatus)          !mysize is good
>   call h5dread_f(dsetid,H5T_STRING,tutc_ease,dims,istatus)   !errors here
> 
> The errors are:
> HDF5-DIAG: Error detected in HDF5 (1.8.7) thread 0:
>   #000: H5Dio.c line 174 in H5Dread(): can't read data
>     major: Dataset
>     minor: Read failed
>   #001: H5Dio.c line 337 in H5D_read(): unable to set up type info
>     major: Dataset
>     minor: Unable to initialize object
>   #002: H5Dio.c line 836 in H5D_typeinfo_init(): unable to convert between 
> src and dest datatype
>     major: Dataset
>     minor: Feature is unsupported
>   #003: H5T.c line 4459 in H5T_path_find(): no appropriate function for 
> conversion path
>     major: Datatype
>     minor: Unable to initialize object
> 
> 
> 
> 
> 
> -- 
> Clay Blankenship                *       USRA Research Scientist
> [email protected]       *       256-961-7638
> 320 Sparkman Drive              *       Huntsville, AL 35805 USA
> NASA-MSFC Short-Term Prediction Research and Transition (SPoRT) Center 
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> [email protected]
> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
> Twitter: https://twitter.com/hdf5


_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5

Reply via email to