diff options
Diffstat (limited to 'hl/fortran/src/H5TBff.f90')
-rw-r--r-- | hl/fortran/src/H5TBff.f90 | 1900 |
1 files changed, 1900 insertions, 0 deletions
diff --git a/hl/fortran/src/H5TBff.f90 b/hl/fortran/src/H5TBff.f90 new file mode 100644 index 0000000..5846f49 --- /dev/null +++ b/hl/fortran/src/H5TBff.f90 @@ -0,0 +1,1900 @@ +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! Copyright by The HDF Group. * +! Copyright by the Board of Trustees of the University of Illinois. * +! All rights reserved. * +! * +! This file is part of HDF5. The full HDF5 copyright notice, including * +! terms governing use, modification, and redistribution, is contained in * +! the files COPYING and Copyright.html. COPYING can be found at the root * +! of the source code distribution tree; Copyright.html can be found at the * +! root level of an installed copy of the electronic HDF5 document set and * +! is linked from the top-level documents page. It can also be found at * +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * +! access to either file, you may request a copy from help@hdfgroup.org. * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! +! This file contains FORTRAN90 interfaces for H5TB functions +! + +MODULE h5tb +USE h5fortran_types +USE hdf5 + + +INTERFACE h5tbwrite_field_name_f + MODULE PROCEDURE h5tbwrite_field_name_f_int + MODULE PROCEDURE h5tbwrite_field_name_f_float + MODULE PROCEDURE h5tbwrite_field_name_f_double + MODULE PROCEDURE h5tbwrite_field_name_f_string +END INTERFACE + +INTERFACE h5tbread_field_name_f + MODULE PROCEDURE h5tbread_field_name_f_int + MODULE PROCEDURE h5tbread_field_name_f_float + MODULE PROCEDURE h5tbread_field_name_f_double + MODULE PROCEDURE h5tbread_field_name_f_string +END INTERFACE + +INTERFACE h5tbwrite_field_index_f + MODULE PROCEDURE h5tbwrite_field_index_f_int + MODULE PROCEDURE h5tbwrite_field_index_f_float + MODULE PROCEDURE h5tbwrite_field_index_f_double + MODULE PROCEDURE h5tbwrite_field_index_f_string +END INTERFACE + +INTERFACE h5tbread_field_index_f + MODULE PROCEDURE h5tbread_field_index_f_int + MODULE PROCEDURE h5tbread_field_index_f_float + MODULE PROCEDURE h5tbread_field_index_f_double + MODULE PROCEDURE h5tbread_field_index_f_string +END INTERFACE + + +INTERFACE h5tbinsert_field_f + MODULE PROCEDURE h5tbinsert_field_f_int + MODULE PROCEDURE h5tbinsert_field_f_float + MODULE PROCEDURE h5tbinsert_field_f_double + MODULE PROCEDURE h5tbinsert_field_f_string +END INTERFACE + + +CONTAINS + + +!------------------------------------------------------------------------- +! Function: h5tbmake_table_f +! +! Purpose: Make a table +! +! Return: Success: 0, Failure: -1 +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 06, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbmake_table_f(table_title,& + loc_id,& + dset_name,& + nfields,& + nrecords,& + type_size,& + field_names,& + field_offset,& + field_types,& + chunk_size,& + compress,& + errcode ) + + IMPLICIT NONE +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbmake_table_f +!DEC$endif +! + CHARACTER(LEN=*), INTENT(in) :: table_title ! name of the dataset + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER(hsize_t), INTENT(in) :: nfields ! fields + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + CHARACTER(LEN=*), DIMENSION(1:nfields), INTENT(in) :: field_names ! field names + INTEGER(size_t), DIMENSION(1:nfields), INTENT(in) :: field_offset ! field offset + INTEGER(hid_t), DIMENSION(1:nfields), INTENT(in) :: field_types ! field types + INTEGER(hsize_t), INTENT(in) :: chunk_size ! chunk size + INTEGER, INTENT(in) :: compress ! compress + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + INTEGER :: errcode ! error code + INTEGER(size_t), DIMENSION(1:nfields) :: char_len_field_names ! field name lengths + INTEGER(size_t) :: max_char_size_field_names ! character len of field names + INTEGER(hsize_t) :: i ! general purpose integer + + + INTERFACE + INTEGER FUNCTION h5tbmake_table_c(namelen1,& + table_title,& + loc_id,& + namelen,& + dset_name,& + nfields,& + nrecords,& + type_size,& + field_offset,& + field_types,& + chunk_size,& + compress,& + char_len_field_names,& + max_char_size_field_names,& + field_names) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBMAKE_TABLE_C'::h5tbmake_table_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + !DEC$ATTRIBUTES reference :: table_title + CHARACTER(LEN=*), INTENT(in) :: table_title ! name of the dataset + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER(hsize_t), INTENT(in) :: nfields ! fields + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + CHARACTER(LEN=*), DIMENSION(nfields), INTENT(in) :: field_names ! field names + INTEGER(size_t), DIMENSION(nfields), INTENT(in) :: field_offset ! field offset + INTEGER(hid_t), DIMENSION(nfields), INTENT(in) :: field_types ! field types + INTEGER(hsize_t), INTENT(in) :: chunk_size ! chunk size + INTEGER, INTENT(in) :: compress ! compress + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + INTEGER(size_t), DIMENSION(nfields) :: char_len_field_names ! field name's lengths + INTEGER(size_t) :: max_char_size_field_names ! character len of field names + END FUNCTION h5tbmake_table_c + END INTERFACE + + namelen = LEN(dset_name) + namelen1 = LEN(table_title) + + ! Find the size of each character string in the array + DO i = 1, nfields + char_len_field_names(i) = LEN_TRIM(field_names(i)) + END DO + + max_char_size_field_names = LEN(field_names(1)) + + errcode = h5tbmake_table_c(namelen1,& + table_title,& + loc_id,& + namelen,& + dset_name,& + nfields,& + nrecords,& + type_size,& + field_offset,& + field_types,& + chunk_size,& + compress,& + char_len_field_names, & + max_char_size_field_names, & + field_names) + +END SUBROUTINE h5tbmake_table_f + + +!------------------------------------------------------------------------- +! Function: h5tbwrite_field_name_f_int +! +! Purpose: Writes one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 12, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbwrite_field_name_f_int(loc_id,& + dset_name,& + field_name,& + start,& + nrecords,& + type_size,& + buf,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbwrite_field_name_f_int +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + INTEGER, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + + INTERFACE + INTEGER FUNCTION h5tbwrite_field_name_int_c(loc_id,namelen,dset_name,namelen1,field_name,& + start,nrecords,type_size,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBWRITE_FIELD_NAME_INT_C'::h5tbwrite_field_name_int_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + !DEC$ATTRIBUTES reference :: field_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + INTEGER, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + END FUNCTION h5tbwrite_field_name_int_c + END INTERFACE + + namelen = LEN(dset_name) + namelen1 = LEN(field_name) + + errcode = h5tbwrite_field_name_int_c(loc_id,namelen,dset_name,namelen1,field_name,& + start,nrecords,type_size,buf) + +END SUBROUTINE h5tbwrite_field_name_f_int + +!------------------------------------------------------------------------- +! Function: h5tbwrite_field_name_f_float +! +! Purpose: Writes one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 12, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbwrite_field_name_f_float(loc_id,& + dset_name,& + field_name,& + start,& + nrecords,& + type_size,& + buf,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbwrite_field_name_f_float +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + REAL, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + + INTERFACE + INTEGER FUNCTION h5tbwrite_field_name_fl_c(loc_id,namelen,dset_name,namelen1,field_name,& + start,nrecords,type_size,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBWRITE_FIELD_NAME_FL_C'::h5tbwrite_field_name_fl_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + !DEC$ATTRIBUTES reference :: field_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + REAL, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + END FUNCTION h5tbwrite_field_name_fl_c + END INTERFACE + + namelen = LEN(dset_name) + namelen1 = LEN(field_name) + + errcode = h5tbwrite_field_name_fl_c(loc_id,namelen,dset_name,namelen1,field_name,& + start,nrecords,type_size,buf) + +END SUBROUTINE h5tbwrite_field_name_f_float + + + +!------------------------------------------------------------------------- +! Function: h5tbwrite_field_name_f_double +! +! Purpose: Writes one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 12, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbwrite_field_name_f_double(loc_id,& + dset_name,& + field_name,& + start,& + nrecords,& + type_size,& + buf,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbwrite_field_name_f_double +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + DOUBLE PRECISION, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + + INTERFACE + INTEGER FUNCTION h5tbwrite_field_name_dl_c(loc_id,namelen,dset_name,namelen1,field_name,& + start,nrecords,type_size,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBWRITE_FIELD_NAME_DL_C'::h5tbwrite_field_name_dl_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + !DEC$ATTRIBUTES reference :: field_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + DOUBLE PRECISION, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + END FUNCTION h5tbwrite_field_name_dl_c + END INTERFACE + + namelen = LEN(dset_name) + namelen1 = LEN(field_name) + + errcode = h5tbwrite_field_name_dl_c(loc_id,namelen,dset_name,namelen1,field_name,& + start,nrecords,type_size,buf) + +END SUBROUTINE h5tbwrite_field_name_f_double + +!------------------------------------------------------------------------- +! Function: h5tbwrite_field_name_f_string +! +! Purpose: Writes one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 12, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbwrite_field_name_f_string(loc_id,& + dset_name,& + field_name,& + start,& + nrecords,& + type_size,& + buf,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbwrite_field_name_f_string +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + CHARACTER(LEN=*), INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + + INTERFACE + INTEGER FUNCTION h5tbwrite_field_name_st_c(loc_id,namelen,dset_name,namelen1,field_name,& + start,nrecords,type_size,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBWRITE_FIELD_NAME_ST_C'::h5tbwrite_field_name_st_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + !DEC$ATTRIBUTES reference :: field_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + CHARACTER(LEN=*), INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + END FUNCTION h5tbwrite_field_name_st_c + END INTERFACE + + namelen = LEN(dset_name) + namelen1 = LEN(field_name) + + errcode = h5tbwrite_field_name_st_c(loc_id,namelen,dset_name,namelen1,field_name,& + start,nrecords,type_size,buf) + +END SUBROUTINE h5tbwrite_field_name_f_string + + +!------------------------------------------------------------------------- +! Function: h5tbread_field_name_f_int +! +! Purpose: Reads one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 12, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbread_field_name_f_int(loc_id,& + dset_name,& + field_name,& + start,& + nrecords,& + type_size,& + buf,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbread_field_name_f_int +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + INTEGER, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + + INTERFACE + INTEGER FUNCTION h5tbread_field_name_int_c(loc_id,namelen,dset_name,namelen1,field_name,& + start,nrecords,type_size,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBREAD_FIELD_NAME_INT_C'::h5tbread_field_name_int_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + !DEC$ATTRIBUTES reference :: field_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + INTEGER, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + END FUNCTION h5tbread_field_name_int_c + END INTERFACE + + namelen = LEN(dset_name) + namelen1 = LEN(field_name) + + errcode = h5tbread_field_name_int_c(loc_id,namelen,dset_name,namelen1,field_name,& + start,nrecords,type_size,buf) + +END SUBROUTINE h5tbread_field_name_f_int + +!------------------------------------------------------------------------- +! Function: h5tbread_field_name_f_float +! +! Purpose: Reads one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 12, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbread_field_name_f_float(loc_id,& + dset_name,& + field_name,& + start,& + nrecords,& + type_size,& + buf,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbread_field_name_f_float +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + REAL, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + + INTERFACE + INTEGER FUNCTION h5tbread_field_name_fl_c(loc_id,namelen,dset_name,namelen1,field_name,& + start,nrecords,type_size,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBREAD_FIELD_NAME_FL_C'::h5tbread_field_name_fl_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + !DEC$ATTRIBUTES reference :: field_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + REAL, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + END FUNCTION h5tbread_field_name_fl_c + END INTERFACE + + namelen = LEN(dset_name) + namelen1 = LEN(field_name) + + errcode = h5tbread_field_name_fl_c(loc_id,namelen,dset_name,namelen1,field_name,& + start,nrecords,type_size,buf) + +END SUBROUTINE h5tbread_field_name_f_float + +!------------------------------------------------------------------------- +! Function: h5tbread_field_name_f_double +! +! Purpose: Reads one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 12, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbread_field_name_f_double(loc_id,& + dset_name,& + field_name,& + start,& + nrecords,& + type_size,& + buf,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbread_field_name_f_double +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + DOUBLE PRECISION, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + + INTERFACE + INTEGER FUNCTION h5tbread_field_name_dl_c(loc_id,namelen,dset_name,namelen1,field_name,& + start,nrecords,type_size,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBREAD_FIELD_NAME_DL_C'::h5tbread_field_name_dl_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + !DEC$ATTRIBUTES reference :: field_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + DOUBLE PRECISION, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + END FUNCTION h5tbread_field_name_dl_c + END INTERFACE + + namelen = LEN(dset_name) + namelen1 = LEN(field_name) + + errcode = h5tbread_field_name_dl_c(loc_id,namelen,dset_name,namelen1,field_name,& + start,nrecords,type_size,buf) + +END SUBROUTINE h5tbread_field_name_f_double + +!------------------------------------------------------------------------- +! Function: h5tbread_field_name_f_string +! +! Purpose: Reads one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 12, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbread_field_name_f_string(loc_id,& + dset_name,& + field_name,& + start,& + nrecords,& + type_size,& + buf,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbread_field_name_f_string +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + CHARACTER(LEN=*), INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + + INTERFACE + INTEGER FUNCTION h5tbread_field_name_st_c(loc_id,namelen,dset_name,namelen1,field_name,& + start,nrecords,type_size,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBREAD_FIELD_NAME_ST_C'::h5tbread_field_name_st_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + !DEC$ATTRIBUTES reference :: field_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + CHARACTER(LEN=*), INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + END FUNCTION h5tbread_field_name_st_c + END INTERFACE + + namelen = LEN(dset_name) + namelen1 = LEN(field_name) + + errcode = h5tbread_field_name_st_c(loc_id,namelen,dset_name,namelen1,field_name,& + start,nrecords,type_size,buf) + +END SUBROUTINE h5tbread_field_name_f_string + + +!------------------------------------------------------------------------- +! Function: h5tbwrite_field_index_f_int +! +! Purpose: Writes one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 12, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbwrite_field_index_f_int(loc_id,& + dset_name,& + field_index,& + start,& + nrecords,& + type_size,& + buf,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbwrite_field_index_f_int +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER, INTENT(in) :: field_index ! index + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + INTEGER, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + + INTERFACE + INTEGER FUNCTION h5tbwrite_field_index_int_c(loc_id,namelen,dset_name,field_index,& + start,nrecords,type_size,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBWRITE_FIELD_INDEX_INT_C'::h5tbwrite_field_index_int_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER, INTENT(in) :: field_index ! index + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + INTEGER, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + END FUNCTION h5tbwrite_field_index_int_c + END INTERFACE + + namelen = LEN(dset_name) + + errcode = h5tbwrite_field_index_int_c(loc_id,namelen,dset_name,field_index,& + start,nrecords,type_size,buf) + +END SUBROUTINE h5tbwrite_field_index_f_int + +!------------------------------------------------------------------------- +! Function: h5tbwrite_field_index_f_float +! +! Purpose: Writes one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 12, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbwrite_field_index_f_float(loc_id,& + dset_name,& + field_index,& + start,& + nrecords,& + type_size,& + buf,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbwrite_field_index_f_float +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER, INTENT(in) :: field_index ! index + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + REAL, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + + INTERFACE + INTEGER FUNCTION h5tbwrite_field_index_fl_c(loc_id,namelen,dset_name,field_index,& + start,nrecords,type_size,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBWRITE_FIELD_INDEX_FL_C'::h5tbwrite_field_index_fl_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER, INTENT(in) :: field_index ! index + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + REAL, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + END FUNCTION h5tbwrite_field_index_fl_c + END INTERFACE + + namelen = LEN(dset_name) + + errcode = h5tbwrite_field_index_fl_c(loc_id,namelen,dset_name,field_index,& + start,nrecords,type_size,buf) + +END SUBROUTINE h5tbwrite_field_index_f_float + + + +!------------------------------------------------------------------------- +! Function: h5tbwrite_field_index_f_double +! +! Purpose: Writes one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 12, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbwrite_field_index_f_double(loc_id,& + dset_name,& + field_index,& + start,& + nrecords,& + type_size,& + buf,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbwrite_field_index_f_double +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER, INTENT(in) :: field_index ! index + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + DOUBLE PRECISION, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + + INTERFACE + INTEGER FUNCTION h5tbwrite_field_index_dl_c(loc_id,namelen,dset_name,field_index,& + start,nrecords,type_size,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBWRITE_FIELD_INDEX_DL_C'::h5tbwrite_field_index_dl_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER, INTENT(in) :: field_index ! index + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + DOUBLE PRECISION, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + END FUNCTION h5tbwrite_field_index_dl_c + END INTERFACE + + namelen = LEN(dset_name) + + errcode = h5tbwrite_field_index_dl_c(loc_id,namelen,dset_name,field_index,& + start,nrecords,type_size,buf) + +END SUBROUTINE h5tbwrite_field_index_f_double + +!------------------------------------------------------------------------- +! Function: h5tbwrite_field_index_f_string +! +! Purpose: Writes one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 12, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbwrite_field_index_f_string(loc_id,& + dset_name,& + field_index,& + start,& + nrecords,& + type_size,& + buf,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbwrite_field_index_f_string +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER, INTENT(in) :: field_index ! index + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + CHARACTER(LEN=*), INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + + INTERFACE + INTEGER FUNCTION h5tbwrite_field_index_st_c(loc_id,namelen,dset_name,field_index,& + start,nrecords,type_size,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBWRITE_FIELD_INDEX_ST_C'::h5tbwrite_field_index_st_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER, INTENT(in) :: field_index ! index + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + CHARACTER(LEN=*), INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + END FUNCTION h5tbwrite_field_index_st_c + END INTERFACE + + namelen = LEN(dset_name) + + errcode = h5tbwrite_field_index_st_c(loc_id,namelen,dset_name,field_index,& + start,nrecords,type_size,buf) + +END SUBROUTINE h5tbwrite_field_index_f_string + + +!------------------------------------------------------------------------- +! Function: h5tbread_field_index_f_int +! +! Purpose: Reads one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 12, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbread_field_index_f_int(loc_id,& + dset_name,& + field_index,& + start,& + nrecords,& + type_size,& + buf,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport ::h5tbread_field_index_f_int +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER, INTENT(in) :: field_index ! index + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + INTEGER, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + + INTERFACE + INTEGER FUNCTION h5tbread_field_index_int_c(loc_id,namelen,dset_name,field_index,& + start,nrecords,type_size,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBREAD_FIELD_INDEX_INT_C'::h5tbread_field_index_int_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER, INTENT(in) :: field_index ! index + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + INTEGER, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + END FUNCTION h5tbread_field_index_int_c + END INTERFACE + + namelen = LEN(dset_name) + + errcode = h5tbread_field_index_int_c(loc_id,namelen,dset_name,field_index,& + start,nrecords,type_size,buf) + +END SUBROUTINE h5tbread_field_index_f_int + +!------------------------------------------------------------------------- +! Function: h5tbread_field_index_f_float +! +! Purpose: Reads one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 12, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbread_field_index_f_float(loc_id,& + dset_name,& + field_index,& + start,& + nrecords,& + type_size,& + buf,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbread_field_index_f_float +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER, INTENT(in) :: field_index ! index + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + REAL, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + + INTERFACE + INTEGER FUNCTION h5tbread_field_index_fl_c(loc_id,namelen,dset_name,field_index,& + start,nrecords,type_size,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBREAD_FIELD_INDEX_FL_C'::h5tbread_field_index_fl_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER, INTENT(in) :: field_index ! index + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + REAL, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + END FUNCTION h5tbread_field_index_fl_c + END INTERFACE + + namelen = LEN(dset_name) + + errcode = h5tbread_field_index_fl_c(loc_id,namelen,dset_name,field_index,& + start,nrecords,type_size,buf) + +END SUBROUTINE h5tbread_field_index_f_float + +!------------------------------------------------------------------------- +! Function: h5tbread_field_index_f_double +! +! Purpose: Reads one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 12, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbread_field_index_f_double(loc_id,& + dset_name,& + field_index,& + start,& + nrecords,& + type_size,& + buf,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbread_field_index_f_double +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER, INTENT(in) :: field_index ! index + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + DOUBLE PRECISION, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + + INTERFACE + INTEGER FUNCTION h5tbread_field_index_dl_c(loc_id,namelen,dset_name,field_index,& + start,nrecords,type_size,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBREAD_FIELD_INDEX_DL_C'::h5tbread_field_index_dl_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER, INTENT(in) :: field_index ! index + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + DOUBLE PRECISION, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + END FUNCTION h5tbread_field_index_dl_c + END INTERFACE + + namelen = LEN(dset_name) + + errcode = h5tbread_field_index_dl_c(loc_id,namelen,dset_name,field_index,& + start,nrecords,type_size,buf) + +END SUBROUTINE h5tbread_field_index_f_double + +!------------------------------------------------------------------------- +! Function: h5tbread_field_index_f_string +! +! Purpose: Reads one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 12, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbread_field_index_f_string(loc_id,& + dset_name,& + field_index,& + start,& + nrecords,& + type_size,& + buf,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbread_field_index_f_string +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER, INTENT(in) :: field_index ! index + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + CHARACTER(LEN=*), INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + + INTERFACE + INTEGER FUNCTION h5tbread_field_index_st_c(loc_id,namelen,dset_name,field_index,& + start,nrecords,type_size,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBREAD_FIELD_INDEX_ST_C'::h5tbread_field_index_st_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER, INTENT(in) :: field_index ! index + INTEGER(hsize_t), INTENT(in) :: start ! start record + INTEGER(hsize_t), INTENT(in) :: nrecords ! records + INTEGER(size_t), INTENT(in) :: type_size ! type size + CHARACTER(LEN=*), INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + END FUNCTION h5tbread_field_index_st_c + END INTERFACE + + namelen = LEN(dset_name) + + errcode = h5tbread_field_index_st_c(loc_id,namelen,dset_name,field_index,& + start,nrecords,type_size,buf) + +END SUBROUTINE h5tbread_field_index_f_string + + +!------------------------------------------------------------------------- +! Function: h5tbinsert_field_f_int +! +! Purpose: Inserts one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 13, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbinsert_field_f_int(loc_id,& + dset_name,& + field_name,& + field_type,& + field_index,& + buf,& + errcode ) + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbinsert_field_f_int +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hid_t), INTENT(in) :: field_type ! field type + INTEGER, INTENT(in) :: field_index ! field_index + INTEGER, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + INTEGER :: errcode ! error code + + + INTERFACE + INTEGER FUNCTION h5tbinsert_field_int_c(loc_id,namelen,dset_name,namelen1,field_name,& + field_type,field_index,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBINSERT_FIELD_INT_C'::h5tbinsert_field_int_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + !DEC$ATTRIBUTES reference :: field_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hid_t), INTENT(in) :: field_type ! field type + INTEGER, INTENT(in) :: field_index ! field_index + INTEGER, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length length + END FUNCTION h5tbinsert_field_int_c + END INTERFACE + + namelen = LEN(dset_name) + namelen1 = LEN(field_name) + + errcode = h5tbinsert_field_int_c(loc_id,namelen,dset_name,namelen1,field_name,& + field_type,field_index,buf) + +END SUBROUTINE h5tbinsert_field_f_int + + + +!------------------------------------------------------------------------- +! Function: h5tbinsert_field_f_float +! +! Purpose: Inserts one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 13, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbinsert_field_f_float(loc_id,& + dset_name,& + field_name,& + field_type,& + field_index,& + buf,& + errcode ) + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbinsert_field_f_float +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hid_t), INTENT(in) :: field_type ! field type + INTEGER, INTENT(in) :: field_index ! field_index + REAL, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + INTEGER :: errcode ! error code + + + INTERFACE + INTEGER FUNCTION h5tbinsert_field_fl_c(loc_id,namelen,dset_name,namelen1,field_name,& + field_type,field_index,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBINSERT_FIELD_FL_C'::h5tbinsert_field_fl_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + !DEC$ATTRIBUTES reference :: field_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hid_t), INTENT(in) :: field_type ! field type + INTEGER, INTENT(in) :: field_index ! field_index + REAL, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length length + END FUNCTION h5tbinsert_field_fl_c + END INTERFACE + + namelen = LEN(dset_name) + namelen1 = LEN(field_name) + + errcode = h5tbinsert_field_fl_c(loc_id,namelen,dset_name,namelen1,field_name,& + field_type,field_index,buf) + +END SUBROUTINE h5tbinsert_field_f_float + + + +!------------------------------------------------------------------------- +! Function: h5tbinsert_field_f_double +! +! Purpose: Inserts one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 13, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbinsert_field_f_double(loc_id,& + dset_name,& + field_name,& + field_type,& + field_index,& + buf,& + errcode ) + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbinsert_field_f_double +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hid_t), INTENT(in) :: field_type ! field type + INTEGER, INTENT(in) :: field_index ! field_index + DOUBLE PRECISION, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + INTEGER :: errcode ! error code + + + INTERFACE + INTEGER FUNCTION h5tbinsert_field_dl_c(loc_id,namelen,dset_name,namelen1,field_name,& + field_type,field_index,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBINSERT_FIELD_DL_C'::h5tbinsert_field_dl_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + !DEC$ATTRIBUTES reference :: field_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hid_t), INTENT(in) :: field_type ! field type + INTEGER, INTENT(in) :: field_index ! field_index + DOUBLE PRECISION, INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length length + END FUNCTION h5tbinsert_field_dl_c + END INTERFACE + + namelen = LEN(dset_name) + namelen1 = LEN(field_name) + + errcode = h5tbinsert_field_dl_c(loc_id,namelen,dset_name,namelen1,field_name,& + field_type,field_index,buf) + +END SUBROUTINE h5tbinsert_field_f_double + + + + +!------------------------------------------------------------------------- +! Function: h5tbinsert_field_f_string +! +! Purpose: Inserts one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 13, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbinsert_field_f_string(loc_id,& + dset_name,& + field_name,& + field_type,& + field_index,& + buf,& + errcode ) + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbinsert_field_f_string +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hid_t), INTENT(in) :: field_type ! field type + INTEGER, INTENT(in) :: field_index ! field_index + CHARACTER(LEN=*), INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + INTEGER :: errcode ! error code + + + INTERFACE + INTEGER FUNCTION h5tbinsert_field_st_c(loc_id,namelen,dset_name,namelen1,field_name,& + field_type,field_index,buf) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBINSERT_FIELD_ST_C'::h5tbinsert_field_st_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + !DEC$ATTRIBUTES reference :: field_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(hid_t), INTENT(in) :: field_type ! field type + INTEGER, INTENT(in) :: field_index ! field_index + CHARACTER(LEN=*), INTENT(in), DIMENSION(*) :: buf ! data buffer + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length length + END FUNCTION h5tbinsert_field_st_c + END INTERFACE + + namelen = LEN(dset_name) + namelen1 = LEN(field_name) + + errcode = h5tbinsert_field_st_c(loc_id,namelen,dset_name,namelen1,field_name,& + field_type,field_index,buf) + +END SUBROUTINE h5tbinsert_field_f_string + + + + +!------------------------------------------------------------------------- +! Function: h5tbdelete_field_f +! +! Purpose: Inserts one field +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 13, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbdelete_field_f(loc_id,& + dset_name,& + field_name,& + errcode ) + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbdelete_field_f +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(in) :: field_name ! name of the field + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length + INTEGER :: errcode ! error code + + + INTERFACE + INTEGER FUNCTION h5tbdelete_field_c(loc_id,namelen,dset_name,namelen1,field_name) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBDELETE_FIELD_C'::h5tbdelete_field_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + !DEC$ATTRIBUTES reference :: field_name + INTEGER(HID_T), INTENT(IN) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(IN) :: dset_name ! name of the dataset + CHARACTER(LEN=*), INTENT(IN) :: field_name ! name of the field + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: namelen1 ! name length length + END FUNCTION h5tbdelete_field_c + END INTERFACE + + namelen = LEN(dset_name) + namelen1 = LEN(field_name) + + errcode = h5tbdelete_field_c(loc_id,namelen,dset_name,namelen1,field_name) + +END SUBROUTINE h5tbdelete_field_f + + + +!------------------------------------------------------------------------- +! Function: h5tbget_table_info_f +! +! Purpose: Gets the number of records and fields of a table +! +! Return: Success: 0, Failure: -1 +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 13, 2004 +! +! Comments: +! +! Modifications: +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbget_table_info_f(loc_id,& + dset_name,& + nfields,& + nrecords,& + errcode ) + + IMPLICIT NONE + +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbget_table_info_f +!DEC$endif +! + + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER(hsize_t), INTENT(inout):: nfields ! nfields + INTEGER(hsize_t), INTENT(inout):: nrecords ! nrecords + INTEGER :: errcode ! error code + INTEGER(size_t) :: namelen ! name length + + INTERFACE + INTEGER FUNCTION h5tbget_table_info_c(loc_id,namelen,dset_name,nfields,nrecords) + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBGET_TABLE_INFO_C'::h5tbget_table_info_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER(hsize_t), INTENT(inout):: nfields ! nfields + INTEGER(hsize_t), INTENT(inout):: nrecords ! nrecords + INTEGER(size_t) :: namelen ! name length + END FUNCTION h5tbget_table_info_c + END INTERFACE + + namelen = LEN(dset_name) + errcode = h5tbget_table_info_c(loc_id,namelen,dset_name,nfields,nrecords) + +END SUBROUTINE h5tbget_table_info_f + + +!------------------------------------------------------------------------- +! Function: h5tbget_field_info_f +! +! Purpose: Get information about fields +! +! Return: Success: 0, Failure: -1 +! +! Programmer: pvn@ncsa.uiuc.edu +! +! Date: October 13, 2004 +! +! Comments: +! +! Modifications: +! Added optional parameter for returning the maximum character length +! in the field name array. March 3, 2011 +! +!------------------------------------------------------------------------- + +SUBROUTINE h5tbget_field_info_f(loc_id,& + dset_name,& + nfields,& + field_names,& + field_sizes,& + field_offsets,& + type_size,& + errcode, maxlen_out ) + + IMPLICIT NONE +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_HL_DLL) +!DEC$attributes dllexport :: h5tbget_field_info_f +!DEC$endif +! + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER(hsize_t), INTENT(in) :: nfields ! nfields + CHARACTER(LEN=*), DIMENSION(nfields), INTENT(inout) :: field_names ! field names + INTEGER(size_t), DIMENSION(nfields), INTENT(inout) :: field_sizes ! field sizes + INTEGER(size_t), DIMENSION(nfields), INTENT(inout) :: field_offsets ! field offsets + INTEGER(size_t), INTENT(inout):: type_size ! type size + INTEGER :: errcode ! error code + INTEGER, OPTIONAL :: maxlen_out ! maximum character len of the field names + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t), DIMENSION(nfields) :: namelen2 ! name lengths + INTEGER(hsize_t) :: i ! general purpose integer + INTEGER(size_t) :: maxlen + INTEGER(size_t) :: c_maxlen_out + + INTERFACE + INTEGER FUNCTION h5tbget_field_info_c(loc_id,namelen,dset_name,nfields,& + field_sizes,field_offsets,type_size,namelen2, maxlen, field_names, c_maxlen_out) + + USE h5global + IMPLICIT NONE + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5TBGET_FIELD_INFO_C'::h5tbget_field_info_c + !DEC$ENDIF + !DEC$ATTRIBUTES reference :: dset_name + INTEGER(hid_t), INTENT(in) :: loc_id ! file or group identifier + CHARACTER(LEN=*), INTENT(in) :: dset_name ! name of the dataset + INTEGER(hsize_t), INTENT(in):: nfields ! nfields + CHARACTER(LEN=*), DIMENSION(1:nfields), INTENT(inout) :: field_names ! field names + INTEGER(size_t), DIMENSION(1:nfields), INTENT(inout) :: field_sizes ! field sizes + INTEGER(size_t), DIMENSION(1:nfields), INTENT(inout) :: field_offsets ! field offsets + INTEGER(size_t), INTENT(inout):: type_size ! type size + INTEGER(size_t) :: namelen ! name length + INTEGER(size_t) :: maxlen ! maxiumum length of input field names + INTEGER(size_t), DIMENSION(1:nfields) :: namelen2 ! name lengths + INTEGER(size_t) :: c_maxlen_out ! maximum character length of a field array element + END FUNCTION h5tbget_field_info_c + END INTERFACE + + namelen = LEN(dset_name) + DO i = 1, nfields + namelen2(i) = LEN_TRIM(field_names(i)) + END DO + maxlen = LEN(field_names(1)) + c_maxlen_out = 0 + + errcode = h5tbget_field_info_c(loc_id, namelen,dset_name, nfields, & + field_sizes, field_offsets, type_size, namelen2, maxlen, field_names, c_maxlen_out) + + IF(PRESENT(maxlen_out)) maxlen_out = c_maxlen_out + +END SUBROUTINE h5tbget_field_info_f + +END MODULE H5TB + + + + + + |