From aa08bf12452437589712812d5a8c21fe8a0ed401 Mon Sep 17 00:00:00 2001 From: Elena Pourmal Date: Thu, 21 Jun 2001 09:52:27 -0500 Subject: [svn-r4025] Purpose: Windows and DEC OSF port Description: Added support for Windows and DEC UNIX (OSF1) Solution: Interface blocks for each C function called from corresponding F90 function were added to port HDF5 F90 Library to Windows platforms. Special DEC compilers directives were added to avoid name conflicts for C functions called from F90 functions on Windows and DEC UNIX. Also changes were done to the h5dwrite/read_f and h5awrite/read_f interfaces ( extra parameter added to make code portable between Windows and UNIX platforms) Platforms tested: Windows 98 (static library only), DEC UNIX --- fortran/src/H5Af.c | 32 +- fortran/src/H5Aff.f90 | 2444 ++++++++++++++++++++++++++++++++---- fortran/src/H5Df.c | 50 +- fortran/src/H5Dff.f90 | 2928 ++++++++++++++++++++++++++++++++++++++----- fortran/src/H5Eff.f90 | 243 +++- fortran/src/H5FDmpioff.f90 | 114 +- fortran/src/H5Fff.f90 | 526 +++++++- fortran/src/H5Gff.f90 | 595 ++++++++- fortran/src/H5Git.c | 1 - fortran/src/H5Iff.f90 | 68 +- fortran/src/H5Pf.c | 172 +-- fortran/src/H5Pff.f90 | 2669 +++++++++++++++++++++++++++++++++++++-- fortran/src/H5Rff.f90 | 348 ++++- fortran/src/H5Sff.f90 | 1163 ++++++++++++++++- fortran/src/H5Tf.c | 1 + fortran/src/H5Tff.f90 | 2500 ++++++++++++++++++++++++++++++++++-- fortran/src/H5f90global.f90 | 51 + fortran/src/H5f90i.h | 33 +- fortran/src/H5f90proto.h | 484 +++---- fortran/src/Makefile.in | 4 +- 20 files changed, 13142 insertions(+), 1284 deletions(-) diff --git a/fortran/src/H5Af.c b/fortran/src/H5Af.c index daa3932..15a9b65 100644 --- a/fortran/src/H5Af.c +++ b/fortran/src/H5Af.c @@ -103,20 +103,23 @@ nh5aopen_name_c (hid_t_f *obj_id, _fcd name, int_f *namelen, hid_t_f *attr_id) * Inputs: attr_id - dataset identifier * mem_type_id - memory datatype identifier * buf - character data buffer + * dims - array to store dimensions sizes of buf; used only + * by Fortran routine. * Returns: 0 on success, -1 on failure * Programmer: Elena Pourmal * Thursday , August 12, 1999 - * Modifications: + * Modifications: dims paramete added. + * April 4, 2001 *---------------------------------------------------------------------------*/ int_f -nh5awritec_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf) +nh5awritec_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, int_f *dims) { int ret_value = -1; /* * Call h5awrite_c function. */ - ret_value = nh5awrite_c(attr_id, mem_type_id, _fcdtocp(buf)); + ret_value = nh5awrite_c(attr_id, mem_type_id, _fcdtocp(buf), dims); return ret_value; } @@ -127,13 +130,16 @@ nh5awritec_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf) * Inputs: attr_id - attribute identifier * mem_type_id - memory datatype identifier * buf - data buffer + * dims - array to store dimensions sizes of buf; used only + * by Fortran routine. * Returns: 0 on success, -1 on failure * Programmer: Elena Pourmal * Thursday, August 12, 1999 - * Modifications: + * Modifications: dims parameter added + * April 4, 2001 *---------------------------------------------------------------------------*/ int_f -nh5awrite_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf) +nh5awrite_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, int_f *dims) { int ret_value = -1; herr_t ret; @@ -158,21 +164,24 @@ nh5awrite_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf) * Purpose: Call h5aread_c to read character attribute * Inputs: dset_id - dataset identifier * mem_type_id - memory datatype identifier + * dims - array to store dimensions sizes of buf; used only + * by Fortran routine. * Outputs: buf - character data buffer * Returns: 0 on success, -1 on failure * Programmer: Elena Pourmal * Thursday, August 12, 1999 - * Modifications: + * Modifications: dims parameter added. + * April 4, 2001 *---------------------------------------------------------------------------*/ int_f -nh5areadc_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf) +nh5areadc_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, int_f *dims) { int ret_value = -1; /* * Call h5aread_c function. */ - ret_value = nh5aread_c(attr_id, mem_type_id, (_fcdtocp(buf))); + ret_value = nh5aread_c(attr_id, mem_type_id, (_fcdtocp(buf)), dims); return ret_value; } @@ -182,14 +191,17 @@ nh5areadc_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf) * Purpose: Call H5Araed to read an attribute * Inputs: dset_id - dataset identifier * mem_type_id - memory datatype identifier + * dims - array to store dimensions sizes of buf; used only + * by Fortran routine. * Outputs: buf - data buffer * Returns: 0 on success, -1 on failure * Programmer: Elena Pourmal * Thursday, August 12, 1999 - * Modifications: + * Modifications: dims paramete added. + * April 4, 2001 *---------------------------------------------------------------------------*/ int_f -nh5aread_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf) +nh5aread_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, int_f *dims) { int ret_value = -1; herr_t ret; diff --git a/fortran/src/H5Aff.f90 b/fortran/src/H5Aff.f90 index e10f445..1742018 100644 --- a/fortran/src/H5Aff.f90 +++ b/fortran/src/H5Aff.f90 @@ -83,8 +83,42 @@ END INTERFACE CONTAINS + +!---------------------------------------------------------------------- +! Name: h5acreate_f +! +! Purpose: Creates a dataset as an attribute of a group, dataset, +! or named datatype +! +! Inputs: +! obj_id - identifier of an object (group, dataset, +! or named datatype) attribute is attached to +! name - attribute name +! type_id - attribute datatype identifier +! space_id - attribute dataspace identifier +! +! Outputs: +! attr_id - attribute identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! creation_prp - creation property list identifier +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5acreate_f(obj_id, name, type_id, space_id, attr_id, & hdferr, creation_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5acreate_f +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name @@ -99,7 +133,27 @@ ! list identifier INTEGER :: creation_prp_default INTEGER :: namelen - INTEGER, EXTERNAL :: h5acreate_c +! INTEGER, EXTERNAL :: h5acreate_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5acreate_c(obj_id, name, namelen, type_id, & + space_id, creation_prp_default, attr_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5ACREATE_C'::h5acreate_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: obj_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER :: creation_prp_default + INTEGER(HID_T), INTENT(OUT) :: attr_id + END FUNCTION h5acreate_c + END INTERFACE + creation_prp_default = H5P_DEFAULT_F namelen = LEN(NAME) if (present(creation_prp)) creation_prp_default = creation_prp @@ -108,874 +162,2600 @@ END SUBROUTINE h5acreate_f +!---------------------------------------------------------------------- +! Name: h5aopen_name_f +! +! Purpose: Opens an attribute specified by name. +! +! Inputs: +! obj_id - identifier of a group, dataset, or named +! datatype atttribute to be attached to +! name - attribute name +! Outputs: +! attr_id - attribute identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5aopen_name_f(obj_id, name, attr_id, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aopen_name_f +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: namelen - INTEGER, EXTERNAL :: h5aopen_name_c + +! INTEGER, EXTERNAL :: h5aopen_name_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aopen_name_c(obj_id, name, namelen, attr_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AOPEN_NAME_C'::h5aopen_name_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: obj_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(HID_T), INTENT(OUT) :: attr_id + END FUNCTION h5aopen_name_c + END INTERFACE + namelen = LEN(name) hdferr = h5aopen_name_c(obj_id, name, namelen, attr_id) END SUBROUTINE h5aopen_name_f +!---------------------------------------------------------------------- +! Name: h5aopen_idx_f +! +! Purpose: Opens the attribute specified by its index. +! +! Inputs: +! obj_id - identifier of a group, dataset, or named +! datatype an attribute to be attached to +! index - index of the attribute to open (zero-based) +! Outputs: +! attr_id - attribute identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5aopen_idx_f(obj_id, index, attr_id, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aopen_idx_f +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier INTEGER, INTENT(IN) :: index ! Attribute index INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aopen_idx_c + +! INTEGER, EXTERNAL :: h5aopen_idx_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aopen_idx_c(obj_id, index, attr_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AOPEN_IDX_C'::h5aopen_idx_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: obj_id + INTEGER, INTENT(IN) :: index + INTEGER(HID_T), INTENT(OUT) :: attr_id + END FUNCTION h5aopen_idx_c + END INTERFACE + hdferr = h5aopen_idx_c(obj_id, index, attr_id) END SUBROUTINE h5aopen_idx_f +!---------------------------------------------------------------------- +! Name: h5awrite_f +! +! Purpose: Writes data to an attribute. +! +! Inputs: +! attr_id - attribute identifier +! memtype_id - attribute memory type identifier +! buf - data to write +! dims - 1D array of size 7, stores sizes of the +! - buf array dimensions. +! Outputs: +! +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +! dims parameter was added to make code portable. +! April 4, 2001 +! +! Comment: This function is overloaded to write INTEGER, +! REAL, DOUBLE PRECISION and CHARACTER buffers +! up to 7 dimensions. +! +!---------------------------------------------------------------------- - SUBROUTINE h5awrite_integer_scalar(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_integer_scalar(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_integer_scalar +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) + INTEGER, DIMENSION(7) :: dims ! Array to story buf dimension sizes INTEGER, INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_integer_scalar - SUBROUTINE h5awrite_integer_1(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_integer_1(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_integer_1 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:), INTENT(IN) :: buf + INTEGER, DIMENSION(7) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN) , & + DIMENSION(dims(1)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_integer_1 - SUBROUTINE h5awrite_integer_2(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_integer_2(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_integer_2 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:,:), INTENT(IN) :: buf + INTEGER, DIMENSION(7) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN) , & + DIMENSION(dims(1),dims(2)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_integer_2 - SUBROUTINE h5awrite_integer_3(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_integer_3(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_integer_3 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:,:,:), INTENT(IN) :: buf + INTEGER, DIMENSION(7) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN) , & + DIMENSION(dims(1),dims(2),dims(3)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_integer_3 - SUBROUTINE h5awrite_integer_4(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_integer_4(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_integer_4 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:,:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_integer_4 - SUBROUTINE h5awrite_integer_5(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_integer_5(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_integer_5 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:,:,:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_integer_5 - SUBROUTINE h5awrite_integer_6(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_integer_6(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_integer_6 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:,:,:,:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_integer_6 - SUBROUTINE h5awrite_integer_7(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_integer_7(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_integer_7 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:,:,:,:,:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_integer_7 - SUBROUTINE h5awrite_real_scalar(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_real_scalar(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_real_scalar +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes REAL, INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_real_scalar - SUBROUTINE h5awrite_real_1(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_real_1(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_real_1 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - REAL, DIMENSION(:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_real_1 - SUBROUTINE h5awrite_real_2(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_real_2(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_real_2 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - REAL, DIMENSION(:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_real_2 - SUBROUTINE h5awrite_real_3(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_real_3(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_real_3 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - REAL, DIMENSION(:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_real_3 - SUBROUTINE h5awrite_real_4(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_real_4(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_real_4 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - REAL, DIMENSION(:,:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_real_4 - SUBROUTINE h5awrite_real_5(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_real_5(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_real_5 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - REAL, DIMENSION(:,:,:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_real_5 - SUBROUTINE h5awrite_real_6(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_real_6(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_real_6 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - REAL, DIMENSION(:,:,:,:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_real_6 - SUBROUTINE h5awrite_real_7(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_real_7(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_real_7 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - REAL, DIMENSION(:,:,:,:,:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_real_7 - SUBROUTINE h5awrite_double_scalar(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_double_scalar(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_double_scalar +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes DOUBLE PRECISION, INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(IN)::buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_double_scalar - SUBROUTINE h5awrite_double_1(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_double_1(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_double_1 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - DOUBLE PRECISION, DIMENSION(:), INTENT(IN) :: buf - ! Attribute data + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_double_1 - SUBROUTINE h5awrite_double_2(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_double_2(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_double_2 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - DOUBLE PRECISION, DIMENSION(:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_double_2 - SUBROUTINE h5awrite_double_3(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_double_3(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_double_3 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - DOUBLE PRECISION, DIMENSION(:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_double_3 - SUBROUTINE h5awrite_double_4(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_double_4(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_double_4 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - DOUBLE PRECISION, DIMENSION(:,:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_double_4 - SUBROUTINE h5awrite_double_5(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_double_5(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_double_5 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - DOUBLE PRECISION, DIMENSION(:,:,:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_double_5 - SUBROUTINE h5awrite_double_6(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_double_6(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_double_6 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - DOUBLE PRECISION, DIMENSION(:,:,:,:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_double_6 - SUBROUTINE h5awrite_double_7(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_double_7(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_double_7 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - DOUBLE PRECISION, DIMENSION(:,:,:,:,:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awrite_c - hdferr = h5awrite_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awrite_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITE_C'::h5awrite_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5awrite_c + END INTERFACE + + hdferr = h5awrite_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_double_7 - SUBROUTINE h5awrite_char_scalar(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_char_scalar(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_char_scalar +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes CHARACTER(LEN=*),INTENT(IN) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awritec_c - hdferr = h5awritec_c(attr_id, memtype_id, buf) +! INTEGER, EXTERNAL :: h5awritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awritec_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITEC_C'::h5awritec_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN)::buf + END FUNCTION h5awritec_c + END INTERFACE + + hdferr = h5awritec_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_char_scalar - SUBROUTINE h5awrite_char_1(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_char_1(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_char_1 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - CHARACTER(LEN=*), DIMENSION(*), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awritec_c - hdferr = h5awritec_c(attr_id, memtype_id, buf) +! INTEGER, EXTERNAL :: h5awritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awritec_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITEC_C'::h5awritec_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), DIMENSION(dims(1))::buf + END FUNCTION h5awritec_c + END INTERFACE + + hdferr = h5awritec_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_char_1 - SUBROUTINE h5awrite_char_2(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_char_2(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_char_2 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - CHARACTER(LEN=*), DIMENSION(:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awritec_c - hdferr = h5awritec_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5awritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awritec_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITEC_C'::h5awritec_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5awritec_c + END INTERFACE + + hdferr = h5awritec_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_char_2 - SUBROUTINE h5awrite_char_3(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_char_3(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_char_3 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - CHARACTER(LEN=*), DIMENSION(:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awritec_c - hdferr = h5awritec_c(attr_id, memtype_id, buf) +! INTEGER, EXTERNAL :: h5awritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awritec_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITEC_C'::h5awritec_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5awritec_c + END INTERFACE + + hdferr = h5awritec_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_char_3 - SUBROUTINE h5awrite_char_4(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_char_4(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_char_4 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - CHARACTER(LEN=*), DIMENSION(:,:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awritec_c - hdferr = h5awritec_c(attr_id, memtype_id, buf) +! INTEGER, EXTERNAL :: h5awritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awritec_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITEC_C'::h5awritec_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5awritec_c + END INTERFACE + + hdferr = h5awritec_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_char_4 - SUBROUTINE h5awrite_char_5(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_char_5(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_char_5 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - CHARACTER(LEN=*), DIMENSION(:,:,:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awritec_c - hdferr = h5awritec_c(attr_id, memtype_id, buf) +! INTEGER, EXTERNAL :: h5awritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awritec_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITEC_C'::h5awritec_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5awritec_c + END INTERFACE + + hdferr = h5awritec_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_char_5 - SUBROUTINE h5awrite_char_6(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_char_6(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_char_6 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - CHARACTER(LEN=*), DIMENSION(:,:,:,:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awritec_c - hdferr = h5awritec_c(attr_id, memtype_id, buf) +! INTEGER, EXTERNAL :: h5awritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awritec_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITEC_C'::h5awritec_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5awritec_c + END INTERFACE + + hdferr = h5awritec_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_char_6 - SUBROUTINE h5awrite_char_7(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5awrite_char_7(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5awrite_char_7 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - CHARACTER(LEN=*), DIMENSION(:,:,:,:,:,:,:), INTENT(IN) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5awritec_c - hdferr = h5awritec_c(attr_id, memtype_id, buf) +! INTEGER, EXTERNAL :: h5awritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5awritec_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AWRITEC_C'::h5awritec_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5awritec_c + END INTERFACE + + hdferr = h5awritec_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5awrite_char_7 +!---------------------------------------------------------------------- +! Name: h5aread_f +! +! Purpose: Reads an attribute. +! +! Inputs: +! attr_id - attribute identifier +! memtype_id - attribute memory type identifier +! dims - 1D array of size 7, stores sizes of the +! - buf array dimensions. +! Outputs: +! buf - buffer to read attribute data in +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +! dims parameter was added to make code portable; +! Aprile 4, 2001 +! +! Comment: This function is overloaded to write INTEGER, +! REAL, DOUBLE PRECISION and CHARACTER buffers +! up to 7 dimensions. +!---------------------------------------------------------------------- - SUBROUTINE h5aread_integer_scalar(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_integer_scalar(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_integer_scalar +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes INTEGER, INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_integer_scalar - SUBROUTINE h5aread_integer_1(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_integer_1(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_integer_1 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:), INTENT(OUT) :: buf - ! Attribute data + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(OUT), & + DIMENSION(dims(1)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(OUT), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_integer_1 - SUBROUTINE h5aread_integer_2(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_integer_2(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_integer_2 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:,:), INTENT(OUT) :: buf - ! Attribute data + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(OUT), & + DIMENSION(dims(1),dims(2)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(OUT), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_integer_2 - SUBROUTINE h5aread_integer_3(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_integer_3(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_integer_3 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:,:,:), INTENT(OUT) :: buf - ! Attribute data + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_integer_3 - SUBROUTINE h5aread_integer_4(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_integer_4(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_integer_4 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:,:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_integer_4 - SUBROUTINE h5aread_integer_5(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_integer_5(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_integer_5 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:,:,:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_integer_5 - SUBROUTINE h5aread_integer_6(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_integer_6(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_integer_6 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:,:,:,:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_integer_6 - SUBROUTINE h5aread_integer_7(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_integer_7(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_integer_7 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - INTEGER, DIMENSION(:,:,:,:,:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + INTEGER, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + INTEGER, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_integer_7 - SUBROUTINE h5aread_real_scalar(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_real_scalar(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_real_scalar +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes REAL, INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_real_scalar - SUBROUTINE h5aread_real_1(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_real_1(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_real_1 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - REAL, DIMENSION(:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + REAL, INTENT(OUT), & + DIMENSION(dims(1)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(OUT), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_real_1 - SUBROUTINE h5aread_real_2(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_real_2(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_real_2 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - REAL, DIMENSION(:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + REAL, INTENT(OUT), & + DIMENSION(dims(1),dims(2)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(OUT), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_real_2 - SUBROUTINE h5aread_real_3(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_real_3(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_real_3 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - REAL, DIMENSION(:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + REAL, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_real_3 - SUBROUTINE h5aread_real_4(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_real_4(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_real_4 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + REAL, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_real_4 - SUBROUTINE h5aread_real_5(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_real_5(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_real_5 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - REAL, DIMENSION(:,:,:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + REAL, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_real_5 - SUBROUTINE h5aread_real_6(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_real_6(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_real_6 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - REAL, DIMENSION(:,:,:,:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + REAL, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_real_6 - SUBROUTINE h5aread_real_7(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_real_7(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_real_7 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - REAL, DIMENSION(:,:,:,:,:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + REAL, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + REAL, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_real_7 - SUBROUTINE h5aread_double_scalar(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_double_scalar(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_double_scalar +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes DOUBLE PRECISION, INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(OUT)::buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_double_scalar - SUBROUTINE h5aread_double_1(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_double_1(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_double_1 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - DOUBLE PRECISION, DIMENSION(:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(OUT), & + DIMENSION(dims(1)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(OUT), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_double_1 - SUBROUTINE h5aread_double_2(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_double_2(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_double_2 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - DOUBLE PRECISION, DIMENSION(:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(OUT), & + DIMENSION(dims(1),dims(2)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(OUT), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_double_2 - SUBROUTINE h5aread_double_3(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_double_3(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_double_3 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - DOUBLE PRECISION, DIMENSION(:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_double_3 - SUBROUTINE h5aread_double_4(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_double_4(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_double_4 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - DOUBLE PRECISION, DIMENSION(:,:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_double_4 - SUBROUTINE h5aread_double_5(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_double_5(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_double_5 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - DOUBLE PRECISION, DIMENSION(:,:,:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_double_5 - SUBROUTINE h5aread_double_6(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_double_6(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_double_6 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - DOUBLE PRECISION, DIMENSION(:,:,:,:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_double_6 - SUBROUTINE h5aread_double_7(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_double_7(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_double_7 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - DOUBLE PRECISION, DIMENSION(:,:,:,:,:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + DOUBLE PRECISION, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aread_c - hdferr = h5aread_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5aread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aread_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREAD_C'::h5aread_c + !DEC$ ENDIF + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + DOUBLE PRECISION, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5aread_c + END INTERFACE + + hdferr = h5aread_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_double_7 - SUBROUTINE h5aread_char_scalar(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_char_scalar(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_char_scalar +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes CHARACTER(LEN=*), INTENT(OUT) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5areadc_c - hdferr = h5areadc_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5areadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5areadc_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREADC_C'::h5areadc_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*) :: buf + END FUNCTION h5areadc_c + END INTERFACE + + hdferr = h5areadc_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_char_scalar - SUBROUTINE h5aread_char_1(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_char_1(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_char_1 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - CHARACTER(LEN=*), DIMENSION(*), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(OUT), & + DIMENSION(dims(1)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5areadc_c - hdferr = h5areadc_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5areadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5areadc_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREADC_C'::h5areadc_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(OUT), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5areadc_c + END INTERFACE + + hdferr = h5areadc_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_char_1 - SUBROUTINE h5aread_char_2(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_char_2(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_char_2 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - CHARACTER(LEN=*), DIMENSION(:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(OUT), & + DIMENSION(dims(1),dims(2)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5areadc_c - hdferr = h5areadc_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5areadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5areadc_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREADC_C'::h5areadc_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(OUT), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5areadc_c + END INTERFACE + + hdferr = h5areadc_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_char_2 - SUBROUTINE h5aread_char_3(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_char_3(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_char_3 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - CHARACTER(LEN=*), DIMENSION(:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5areadc_c - hdferr = h5areadc_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5areadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5areadc_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREADC_C'::h5areadc_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5areadc_c + END INTERFACE + + hdferr = h5areadc_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_char_3 - SUBROUTINE h5aread_char_4(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_char_4(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_char_4 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - CHARACTER(LEN=*), DIMENSION(:,:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5areadc_c - hdferr = h5areadc_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5areadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5areadc_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREADC_C'::h5areadc_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5areadc_c + END INTERFACE + + hdferr = h5areadc_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_char_4 - SUBROUTINE h5aread_char_5(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_char_5(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_char_5 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - CHARACTER(LEN=*), DIMENSION(:,:,:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5areadc_c - hdferr = h5areadc_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5areadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5areadc_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREADC_C'::h5areadc_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5areadc_c + END INTERFACE + + hdferr = h5areadc_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_char_5 - SUBROUTINE h5aread_char_6(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_char_6(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_char_6 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - CHARACTER(LEN=*), DIMENSION(:,:,:,:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5areadc_c - hdferr = h5areadc_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5areadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5areadc_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREADC_C'::h5areadc_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5areadc_c + END INTERFACE + + hdferr = h5areadc_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_char_6 - SUBROUTINE h5aread_char_7(attr_id, memtype_id, buf, hdferr) + SUBROUTINE h5aread_char_7(attr_id, memtype_id, buf, dims, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aread_char_7 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype ! identifier (in memory) - CHARACTER(LEN=*), DIMENSION(:,:,:,:,:,:,:), INTENT(OUT) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims ! Array to story buf dimension sizes + CHARACTER(LEN=*), INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf ! Attribute data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5areadc_c - hdferr = h5areadc_c(attr_id, memtype_id, buf) + +! INTEGER, EXTERNAL :: h5areadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5areadc_c(attr_id, memtype_id, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AREADC_C'::h5areadc_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER, DIMENSION(7) :: dims + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(IN) :: memtype_id + CHARACTER(LEN=*), INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5areadc_c + END INTERFACE + + hdferr = h5areadc_c(attr_id, memtype_id, buf, dims) END SUBROUTINE h5aread_char_7 +!---------------------------------------------------------------------- +! Name: h5aget_space_f +! +! Purpose: Gets a copy of the dataspace for an attribute. +! +! Inputs: +! attr_id - attribute identifier +! Outputs: +! space_id - attribite dataspace identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5aget_space_f(attr_id, space_id, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aget_space_f +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(OUT) :: space_id ! Attribute dataspace identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL:: h5aget_space_c + +! INTEGER, EXTERNAL:: h5aget_space_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aget_space_c(attr_id, space_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AGET_SPACE_C'::h5aget_space_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(OUT) :: space_id + END FUNCTION h5aget_space_c + END INTERFACE + hdferr = h5aget_space_c(attr_id, space_id) END SUBROUTINE h5aget_space_f +!---------------------------------------------------------------------- +! Name: h5aget_type_f +! +! Purpose: Gets an attribute datatype. +! +! Inputs: +! attr_id - attribute identifier +! Outputs: +! type_id - attribute datatype identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5aget_type_f(attr_id, type_id, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aget_type_f +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(HID_T), INTENT(OUT) :: type_id ! Attribute datatype identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aget_type_c + +! INTEGER, EXTERNAL :: h5aget_type_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aget_type_c(attr_id, type_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AGET_TYPE_C'::h5aget_type_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(HID_T), INTENT(OUT) :: type_id + END FUNCTION h5aget_type_c + END INTERFACE + hdferr = h5aget_type_c(attr_id, type_id) END SUBROUTINE h5aget_type_f +!---------------------------------------------------------------------- +! Name: h5aget_name_f +! +! Purpose: Gets an attribute name. +! +! Inputs: +! attr_id - attribute identifier +! size - size of a buffer to read name in +! Outputs: +! buf - buffer to read name in +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5aget_name_f(attr_id, size, buf, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aget_name_f +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER(SIZE_T), INTENT(IN) :: size ! Buffer size @@ -984,40 +2764,182 @@ INTEGER, INTENT(OUT) :: hdferr ! Error code: ! name length is successful, ! -1 if fail - INTEGER, EXTERNAL :: h5aget_name_c +! INTEGER, EXTERNAL :: h5aget_name_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aget_name_c(attr_id, size, buf) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AGET_NAME_C'::h5aget_name_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: attr_id + INTEGER(SIZE_T), INTENT(IN) :: size + CHARACTER(LEN=*), INTENT(OUT) :: buf + END FUNCTION h5aget_name_c + END INTERFACE + hdferr = h5aget_name_c(attr_id, size, buf) END SUBROUTINE h5aget_name_f +!---------------------------------------------------------------------- +! Name: h5aget_num_attrs_f +! +! Purpose: Determines the number of attributes attached to an object. +! +! Inputs: +! obj_id - object (group, dataset, or named datatype) +! identifier +! Outputs: +! attr_num - number of attributes attached to the object +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5aget_num_attrs_f(obj_id, attr_num, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aget_num_attrs_f +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier INTEGER, INTENT(OUT) :: attr_num ! Number of attributes of the ! object INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5aget_num_attrs_c + +! INTEGER, EXTERNAL :: h5aget_num_attrs_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aget_num_attrs_c(obj_id, attr_num) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5AGET_NUM_ATTRS_C'::h5aget_num_attrs_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: obj_id + INTEGER, INTENT(OUT) :: attr_num + END FUNCTION h5aget_num_attrs_c + END INTERFACE + hdferr = h5aget_num_attrs_c(obj_id, attr_num) END SUBROUTINE h5aget_num_attrs_f +!---------------------------------------------------------------------- +! Name: h5adelete_f +! +! Purpose: Deletes an attribute of an object (group, dataset or +! named datatype) +! +! Inputs: +! obj_id - object identifier +! name - attribute name +! Outputs: +! +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5adelete_f(obj_id, name, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5adelete_f +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: namelen - INTEGER, EXTERNAL :: h5adelete_c + +! INTEGER, EXTERNAL :: h5adelete_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5adelete_c(obj_id, name, namelen) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5ADELETE_C'::h5adelete_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: obj_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + END FUNCTION h5adelete_c + END INTERFACE + namelen = LEN(name) hdferr = h5adelete_c(obj_id, name, namelen) END SUBROUTINE h5adelete_f +!---------------------------------------------------------------------- +! Name: h5aclose_f +! +! Purpose: Closes the specified attribute. +! +! Inputs: +! attr_id - attribute identifier +! Outputs: +! +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces are added for +! called C functions (it is needed for Windows +! port). February 27, 2001 +! +!---------------------------------------------------------------------- SUBROUTINE h5aclose_f(attr_id, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5aclose_f +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier INTEGER, INTENT(OUT) :: hdferr ! Error code: - INTEGER, EXTERNAL :: h5aclose_c + +! INTEGER, EXTERNAL :: h5aclose_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5aclose_c(attr_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5ACLOSE_C'::h5aclose_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: attr_id + END FUNCTION h5aclose_c + END INTERFACE + hdferr = h5aclose_c(attr_id) END SUBROUTINE h5aclose_f diff --git a/fortran/src/H5Df.c b/fortran/src/H5Df.c index 76646fb..888ede5 100644 --- a/fortran/src/H5Df.c +++ b/fortran/src/H5Df.c @@ -112,14 +112,14 @@ nh5dopen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *dset_id) * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5dwritec_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf) +nh5dwritec_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, int_f *dims) { int ret_value = -1; /* * Call h5dwrite_c function. */ - ret_value = nh5dwrite_c(dset_id, mem_type_id, mem_space_id, file_space_id, xfer_prp, _fcdtocp(buf)); + ret_value = nh5dwrite_c(dset_id, mem_type_id, mem_space_id, file_space_id, xfer_prp, _fcdtocp(buf), dims); return ret_value; } @@ -139,7 +139,7 @@ nh5dwritec_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5dwrite_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf) +nh5dwrite_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, int_f *dims) { int ret_value = -1; herr_t ret; @@ -187,7 +187,7 @@ nh5dwrite_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_ * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5dwrite_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, int_f *n) +nh5dwrite_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, int_f *dims) { int ret_value = -1; herr_t ret; @@ -197,7 +197,8 @@ nh5dwrite_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_ hid_t c_file_space_id; hid_t c_xfer_prp; hobj_ref_t *buf_c; - int i; + int i, n; + n = (int)*dims; /* * Define transfer property @@ -210,9 +211,9 @@ nh5dwrite_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_ /* * Allocate temporary buffer and copy references from Fortran. */ - buf_c = (hobj_ref_t*)HDmalloc(sizeof(hobj_ref_t)*(*n)); + buf_c = (hobj_ref_t*)HDmalloc(sizeof(hobj_ref_t)*(n)); if ( buf_c != NULL ) { - for (i = 0; i < *n; i++) { + for (i = 0; i < n; i++) { HDmemcpy(buf_c[i].oid, buf, H5R_OBJ_REF_BUF_SIZE); buf = buf + REF_OBJ_BUF_LEN_F; } @@ -249,7 +250,7 @@ nh5dwrite_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_ * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5dwrite_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, int_f *n) +nh5dwrite_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, int_f *dims) { int ret_value = -1; herr_t ret; @@ -259,8 +260,9 @@ nh5dwrite_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_ hid_t c_file_space_id; hid_t c_xfer_prp; hdset_reg_ref_t *buf_c; - int i; + int i, n; + n = (int)*dims; /* * Define transfer property */ @@ -272,9 +274,9 @@ nh5dwrite_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_ /* * Allocate temporary buffer and copy references from Fortran. */ - buf_c = (hdset_reg_ref_t *)HDmalloc(sizeof(hdset_reg_ref_t)*(*n)); + buf_c = (hdset_reg_ref_t *)HDmalloc(sizeof(hdset_reg_ref_t)*(n)); if ( buf_c != NULL ) { - for (i = 0; i < *n; i++) { + for (i = 0; i < n; i++) { HDmemcpy(buf_c[i].heapid, buf, H5R_DSET_REG_REF_BUF_SIZE); buf = buf + REF_REG_BUF_LEN_F; } @@ -312,14 +314,14 @@ nh5dwrite_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_ * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5dreadc_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf) +nh5dreadc_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, int_f *dims) { int ret_value = -1; /* * Call h5dread_c function. */ - ret_value = nh5dread_c(dset_id, mem_type_id, mem_space_id, file_space_id, xfer_prp, _fcdtocp(buf)); + ret_value = nh5dread_c(dset_id, mem_type_id, mem_space_id, file_space_id, xfer_prp, _fcdtocp(buf), dims); return ret_value; } @@ -339,7 +341,7 @@ nh5dreadc_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_ * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5dread_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf) +nh5dread_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, int_f *dims) { int ret_value = -1; herr_t ret; @@ -387,7 +389,7 @@ nh5dread_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5dread_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f * buf, int_f *n) +nh5dread_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f * buf, int_f *dims) { int ret_value = -1; herr_t ret; @@ -397,8 +399,8 @@ nh5dread_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i hid_t c_file_space_id; hid_t c_xfer_prp; hobj_ref_t *buf_c; - int i; - + int i, n; + n = (int)*dims; /* * Define transfer property */ @@ -410,7 +412,7 @@ nh5dread_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i /* * Allocate temporary buffer. */ - buf_c = (hobj_ref_t*)HDmalloc(sizeof(hobj_ref_t)*(*n)); + buf_c = (hobj_ref_t*)HDmalloc(sizeof(hobj_ref_t)*(n)); if ( buf_c != NULL ) { /* * Call H5Dread function. @@ -421,7 +423,7 @@ nh5dread_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i c_file_space_id = (hid_t)*file_space_id; ret = H5Dread(c_dset_id, c_mem_type_id, c_mem_space_id, c_file_space_id, c_xfer_prp, buf_c); if (ret >=0) { - for (i = 0; i < *n; i++) { + for (i = 0; i < n; i++) { HDmemcpy(buf, buf_c[i].oid, H5R_OBJ_REF_BUF_SIZE); buf = buf + REF_OBJ_BUF_LEN_F; } @@ -449,7 +451,7 @@ nh5dread_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5dread_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f * buf, int_f *n) +nh5dread_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f * buf, int_f *dims) { int ret_value = -1; herr_t ret; @@ -459,8 +461,8 @@ nh5dread_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i hid_t c_file_space_id; hid_t c_xfer_prp; hdset_reg_ref_t *buf_c; - int i; - + int i, n; + n = (int)*dims; /* * Define transfer property */ @@ -472,7 +474,7 @@ nh5dread_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i /* * Allocate temporary buffer. */ - buf_c = (hdset_reg_ref_t *)HDmalloc(sizeof(hdset_reg_ref_t)*(*n)); + buf_c = (hdset_reg_ref_t *)HDmalloc(sizeof(hdset_reg_ref_t)*(n)); if ( buf_c != NULL ) { /* * Call H5Dread function. @@ -483,7 +485,7 @@ nh5dread_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_i c_file_space_id = (hid_t)*file_space_id; ret = H5Dread(c_dset_id, c_mem_type_id, c_mem_space_id, c_file_space_id, c_xfer_prp, buf_c); if (ret >=0) { - for (i = 0; i < *n; i++) { + for (i = 0; i < n; i++) { HDmemcpy(buf, buf_c[i].heapid, H5R_DSET_REG_REF_BUF_SIZE); buf = buf + REF_REG_BUF_LEN_F; } diff --git a/fortran/src/H5Dff.f90 b/fortran/src/H5Dff.f90 index a733bc8..23df442 100644 --- a/fortran/src/H5Dff.f90 +++ b/fortran/src/H5Dff.f90 @@ -2,8 +2,8 @@ ! This file contains Fortran90 interfaces for H5D functions. ! MODULE H5D -! USE H5GLOBAL - USE H5R + USE H5GLOBAL +! USE H5R INTERFACE h5dwrite_f @@ -88,9 +88,40 @@ CONTAINS +!---------------------------------------------------------------------- +! Name: h5dcreate_f +! +! Purpose: Creates a dataset at the specified location +! +! Inputs: +! loc_id - file or group identifier +! name - dataset name +! type_id - dataset datatype identifier +! space_id - dataset dataspace identifier +! Outputs: +! dset_id - dataset identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! createion_prp - dataset creation property list identifier +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5dcreate_f(loc_id, name, type_id, space_id, dset_id, & hdferr, creation_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dcreate_f +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset @@ -103,7 +134,27 @@ ! list identifier INTEGER :: creation_prp_default INTEGER :: namelen ! Name length - INTEGER, EXTERNAL :: h5dcreate_c + +! INTEGER, EXTERNAL :: h5dcreate_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dcreate_c(loc_id, name, namelen, type_id, & + space_id, creation_prp_default, dset_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DCREATE_C'::h5dcreate_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER :: creation_prp_default + INTEGER(HID_T), INTENT(OUT) :: dset_id + END FUNCTION h5dcreate_c + END INTERFACE creation_prp_default = H5P_DEFAULT_F if (present(creation_prp)) creation_prp_default = creation_prp @@ -112,38 +163,170 @@ creation_prp_default, dset_id) END SUBROUTINE h5dcreate_f +!---------------------------------------------------------------------- +! Name: h5dopen_f +! +! Purpose: Opens an existing dataset. +! +! Inputs: +! loc_id - file or group identifier +! name - dataset name +! Outputs: +! dset_id - dataset identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5dopen_f(loc_id, name, dset_id, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dopen_f +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: namelen ! Name length - INTEGER, EXTERNAL :: h5dopen_c + +! INTEGER, EXTERNAL :: h5dopen_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dopen_c(loc_id, name, namelen, dset_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DOPEN_C'::h5dopen_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(HID_T), INTENT(OUT) :: dset_id + END FUNCTION h5dopen_c + END INTERFACE + namelen = LEN(name) hdferr = h5dopen_c(loc_id, name, namelen, dset_id) END SUBROUTINE h5dopen_f +!---------------------------------------------------------------------- +! Name: h5dclose_f +! +! Purpose: Closes a dataset. +! +! Inputs: +! dset_id - dataset identifier +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5dclose_f(dset_id, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dclose_f +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5dclose_c + +! INTEGER, EXTERNAL :: h5dclose_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dclose_c(dset_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DCLOSE_C'::h5dclose_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + END FUNCTION h5dclose_c + END INTERFACE hdferr = h5dclose_c(dset_id) END SUBROUTINE h5dclose_f - SUBROUTINE h5dwrite_reference_obj(dset_id, mem_type_id, buf, n, hdferr, & +!---------------------------------------------------------------------- +! Name: h5dwrite_f +! +! Purpose: Reads raw data from the specified dataset into buf, +! converting from file datatype and dataspace to memory +! datatype and dataspace. +! +! Inputs: +! dset_id - dataset identifier +! mem_type_id - memory type identifier +! buf - data buffer to write +! dims - 1-dim array of size 7; dims(k) has the size +! - of k-th dimension of the buf array +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! mem_space_id - memory dataspace identifier +! file_space_id - file dataspace identifier +! xfer_prp - trasfer property list identifier +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! dims parameter was added to make code portable; +! n parameter was replaced with dims parameter in +! the h5dwrite_reference_obj and h5dwrite_reference_dsetreg +! functions. April 2, 2001 +! +! Comment: This function is overloaded to write INTEGER, +! REAL, DOUBLE PRECISION and CHARACTER buffers +! up to 7 dimensions, and one dimensional buffers +! of the TYPE(hobj_ref_t_f) and TYPE(hdset_reg_ref_t_f) +! types. +!---------------------------------------------------------------------- + + SUBROUTINE h5dwrite_reference_obj(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_reference_obj +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(IN) :: n ! size of the bufffer buf - TYPE(hobj_ref_t_f), DIMENSION(n), INTENT(IN) :: buf ! Data buffer + INTEGER, DIMENSION(7), INTENT(IN) :: dims ! size of the bufffer buf + TYPE(hobj_ref_t_f), DIMENSION(dims(1)), INTENT(IN) :: buf ! Data buffer INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -157,7 +340,27 @@ INTEGER(HID_T) :: file_space_id_default INTEGER, ALLOCATABLE, DIMENSION(:) :: ref_buf INTEGER :: i,j - INTEGER, EXTERNAL :: h5dwrite_ref_obj_c + +! INTEGER, EXTERNAL :: h5dwrite_ref_obj_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_ref_obj_c(dset_id, mem_type_id,& + mem_space_id_default, & + file_space_id_default, xfer_prp_default, ref_buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_REF_OBJ_C'::h5dwrite_ref_obj_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER, DIMENSION(*) :: ref_buf + INTEGER, DIMENSION(7) :: dims + END FUNCTION h5dwrite_ref_obj_c + END INTERFACE xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -167,31 +370,35 @@ if (present(mem_space_id)) mem_space_id_default = mem_space_id if (present(file_space_id)) file_space_id_default = file_space_id - allocate(ref_buf(REF_OBJ_BUF_LEN*n), stat=hdferr) + allocate(ref_buf(REF_OBJ_BUF_LEN*dims(1)), stat=hdferr) if (hdferr .NE. 0 ) then hdferr = -1 return else - do j = 1, n + do j = 1, dims(1) do i = 1, REF_OBJ_BUF_LEN ref_buf(REF_OBJ_BUF_LEN*(j-1) + i ) = buf(j)%ref(i) enddo enddo endif hdferr = h5dwrite_ref_obj_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, ref_buf, n) + file_space_id_default, xfer_prp_default, ref_buf, dims(1)) deallocate(ref_buf) END SUBROUTINE h5dwrite_reference_obj - SUBROUTINE h5dwrite_reference_dsetreg(dset_id, mem_type_id, buf, n, hdferr, & + SUBROUTINE h5dwrite_reference_dsetreg(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_reference_dsetreg +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - TYPE(hdset_reg_ref_t_f), DIMENSION(:), INTENT(IN) :: buf ! Data buffer - INTEGER, INTENT(IN) :: n ! size of the bufffer buf + INTEGER, DIMENSION(7), INTENT(IN) :: dims ! size of the bufffer buf + TYPE(hdset_reg_ref_t_f), DIMENSION(dims(1)), INTENT(IN) :: buf ! Data buffer INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -205,7 +412,28 @@ INTEGER(HID_T) :: file_space_id_default INTEGER, ALLOCATABLE, DIMENSION(:) :: ref_buf INTEGER :: i,j - INTEGER, EXTERNAL :: h5dwrite_ref_reg_c + +! INTEGER, EXTERNAL :: h5dwrite_ref_reg_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_ref_reg_c(dset_id, mem_type_id,& + mem_space_id_default, & + file_space_id_default, xfer_prp_default, ref_buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_REF_REG_C'::h5dwrite_ref_reg_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER, DIMENSION(*) :: ref_buf + INTEGER, DIMENSION(7) :: dims + END FUNCTION h5dwrite_ref_reg_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -215,31 +443,36 @@ if (present(mem_space_id)) mem_space_id_default = mem_space_id if (present(file_space_id)) file_space_id_default = file_space_id - allocate(ref_buf(REF_REG_BUF_LEN*n), stat=hdferr) + allocate(ref_buf(REF_REG_BUF_LEN*dims(1)), stat=hdferr) if (hdferr .NE. 0 ) then hdferr = -1 return else - do j = 1, n + do j = 1, dims(1) do i = 1, REF_REG_BUF_LEN ref_buf(REF_REG_BUF_LEN*(j-1) + i) = buf(j)%ref(i) enddo enddo endif hdferr = h5dwrite_ref_reg_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, ref_buf, n) + file_space_id_default, xfer_prp_default, ref_buf, dims) deallocate(ref_buf) END SUBROUTINE h5dwrite_reference_dsetreg - SUBROUTINE h5dwrite_integer_scalar(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_integer_scalar(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_integer_scalar +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier INTEGER, INTENT(IN) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -251,7 +484,29 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwrite_c + +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(IN) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -262,17 +517,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_integer_scalar - SUBROUTINE h5dwrite_integer_1(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_integer_1(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_integer_1 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(IN), DIMENSION(:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -284,7 +545,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwrite_c + +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -295,17 +579,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_integer_1 - SUBROUTINE h5dwrite_integer_2(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_integer_2(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_integer_2 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(IN), DIMENSION(:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf ! Data buffer INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -317,7 +607,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwrite_c + +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -329,17 +642,23 @@ hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & file_space_id_default, xfer_prp_default, & - buf) + buf, dims) END SUBROUTINE h5dwrite_integer_2 - SUBROUTINE h5dwrite_integer_3(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_integer_3(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_integer_3 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(IN), DIMENSION(:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -351,7 +670,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwrite_c + +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -363,17 +705,23 @@ hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & file_space_id_default, xfer_prp_default, & - buf) + buf, dims) END SUBROUTINE h5dwrite_integer_3 - SUBROUTINE h5dwrite_integer_4(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_integer_4(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_integer_4 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(IN), DIMENSION(:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -385,7 +733,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwrite_c + +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -396,17 +767,23 @@ hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & file_space_id_default, xfer_prp_default, & - buf) + buf, dims) END SUBROUTINE h5dwrite_integer_4 - SUBROUTINE h5dwrite_integer_5(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_integer_5(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_integer_5 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(IN), DIMENSION(:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -418,7 +795,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwrite_c + +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -431,17 +831,23 @@ hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & file_space_id_default, xfer_prp_default, & - buf) + buf, dims) END SUBROUTINE h5dwrite_integer_5 - SUBROUTINE h5dwrite_integer_6(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_integer_6(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_integer_6 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(IN), DIMENSION(:,:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -453,7 +859,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwrite_c + +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -465,17 +894,23 @@ hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & file_space_id_default, xfer_prp_default, & - buf) + buf, dims) END SUBROUTINE h5dwrite_integer_6 - SUBROUTINE h5dwrite_integer_7(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_integer_7(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_integer_7 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(IN), DIMENSION(:,:,:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -487,7 +922,29 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwrite_c + +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -499,17 +956,22 @@ hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & file_space_id_default, xfer_prp_default, & - buf) + buf, dims) END SUBROUTINE h5dwrite_integer_7 - SUBROUTINE h5dwrite_char_scalar(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_char_scalar(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_char_scalar +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER, INTENT(IN), DIMENSION(7) :: dims CHARACTER(LEN=*), INTENT(IN) :: buf ! Data buffer INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id @@ -522,7 +984,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwritec_c + +! INTEGER, EXTERNAL :: h5dwritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwritec_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITEC_C'::h5dwritec_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(IN) :: buf + END FUNCTION h5dwritec_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -533,18 +1018,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwritec_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_char_scalar - SUBROUTINE h5dwrite_char_1(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_char_1(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_char_1 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - CHARACTER(LEN=*), INTENT(IN), DIMENSION(*) :: buf ! Data buffer - ! CHARACTER, INTENT(IN), DIMENSION(*) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -556,7 +1046,31 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwritec_c + +! INTEGER, EXTERNAL :: h5dwritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwritec_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITEC_C'::h5dwritec_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5dwritec_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -567,17 +1081,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwritec_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_char_1 - SUBROUTINE h5dwrite_char_2(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_char_2(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_char_2 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - CHARACTER(LEN=*), INTENT(IN), DIMENSION(:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -589,7 +1109,31 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwritec_c + +! INTEGER, EXTERNAL :: h5dwritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwritec_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITEC_C'::h5dwritec_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dwritec_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -600,17 +1144,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwritec_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_char_2 - SUBROUTINE h5dwrite_char_3(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_char_3(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_char_3 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - CHARACTER(LEN=*), INTENT(IN), DIMENSION(:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -622,7 +1172,31 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwritec_c + +! INTEGER, EXTERNAL :: h5dwritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwritec_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITEC_C'::h5dwritec_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5dwritec_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -633,17 +1207,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwritec_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_char_3 - SUBROUTINE h5dwrite_char_4(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_char_4(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_char_4 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - CHARACTER(LEN=*), INTENT(IN), DIMENSION(:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -655,7 +1235,31 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwritec_c + +! INTEGER, EXTERNAL :: h5dwritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwritec_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITEC_C'::h5dwritec_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5dwritec_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -666,17 +1270,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwritec_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_char_4 - SUBROUTINE h5dwrite_char_5(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_char_5(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_char_5 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - CHARACTER(LEN=*), INTENT(IN), DIMENSION(:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -688,7 +1298,31 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwritec_c + +! INTEGER, EXTERNAL :: h5dwritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwritec_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITEC_C'::h5dwritec_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5dwritec_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -699,17 +1333,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwritec_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_char_5 - SUBROUTINE h5dwrite_char_6(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_char_6(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_char_6 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - CHARACTER(LEN=*), INTENT(IN), DIMENSION(:,:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -721,7 +1361,31 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwritec_c + +! INTEGER, EXTERNAL :: h5dwritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwritec_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITEC_C'::h5dwritec_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5dwritec_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -732,17 +1396,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwritec_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_char_6 - SUBROUTINE h5dwrite_char_7(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_char_7(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_char_7 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - CHARACTER(LEN=*), INTENT(IN), DIMENSION(:,:,:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -754,7 +1424,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwritec_c + +! INTEGER, EXTERNAL :: h5dwritec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwritec_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITEC_C'::h5dwritec_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5dwritec_c + END INTERFACE xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -765,16 +1458,21 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwritec_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_char_7 - SUBROUTINE h5dwrite_real_scalar(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_real_scalar(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_real_scalar +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER, INTENT(IN), DIMENSION(7) :: dims REAL, INTENT(IN) :: buf ! Data buffer INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id @@ -783,12 +1481,33 @@ ! File dataspace identfier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER, EXTERNAL :: h5dwrite_c - INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(IN) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F file_space_id_default = H5S_ALL_F @@ -797,17 +1516,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_real_scalar - SUBROUTINE h5dwrite_real_1(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_real_1(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_real_1 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - REAL, INTENT(IN), DIMENSION(:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -815,12 +1540,35 @@ ! File dataspace identfier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER, EXTERNAL :: h5dwrite_c INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F file_space_id_default = H5S_ALL_F @@ -830,17 +1578,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_real_1 - SUBROUTINE h5dwrite_real_2(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_real_2(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_real_2 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - REAL, INTENT(IN), DIMENSION(:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -848,12 +1602,35 @@ ! File dataspace identfier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER, EXTERNAL :: h5dwrite_c INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F file_space_id_default = H5S_ALL_F @@ -863,17 +1640,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_real_2 - SUBROUTINE h5dwrite_real_3(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_real_3(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_real_3 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - REAL, INTENT(IN), DIMENSION(:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -881,12 +1664,34 @@ ! File dataspace identfier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER, EXTERNAL :: h5dwrite_c - INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F file_space_id_default = H5S_ALL_F @@ -896,17 +1701,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_real_3 - SUBROUTINE h5dwrite_real_4(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_real_4(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_real_4 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - REAL, INTENT(IN), DIMENSION(:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -914,13 +1725,34 @@ ! File dataspace identfier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER, EXTERNAL :: h5dwrite_c - - INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F file_space_id_default = H5S_ALL_F @@ -930,17 +1762,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_real_4 - SUBROUTINE h5dwrite_real_5(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_real_5(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_real_5 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - REAL, INTENT(IN), DIMENSION(:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -948,12 +1786,34 @@ ! File dataspace identfier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER, EXTERNAL :: h5dwrite_c - INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F file_space_id_default = H5S_ALL_F @@ -963,17 +1823,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_real_5 - SUBROUTINE h5dwrite_real_6(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_real_6(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_real_6 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - REAL, INTENT(IN), DIMENSION(:,:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -981,12 +1847,34 @@ ! File dataspace identfier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER, EXTERNAL :: h5dwrite_c - INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F file_space_id_default = H5S_ALL_F @@ -996,17 +1884,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_real_6 - SUBROUTINE h5dwrite_real_7(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_real_7(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_real_7 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - REAL, INTENT(IN), DIMENSION(:,:,:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1014,12 +1908,33 @@ ! File dataspace identfier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER, EXTERNAL :: h5dwrite_c - INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F file_space_id_default = H5S_ALL_F @@ -1029,17 +1944,22 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_real_7 - SUBROUTINE h5dwrite_double_scalar(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_double_scalar(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_double_scalar +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER, INTENT(IN), DIMENSION(7) :: dims DOUBLE PRECISION, INTENT(IN) :: buf ! Data buffer INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id @@ -1052,7 +1972,29 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwrite_c + +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(IN) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1063,17 +2005,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_double_scalar - SUBROUTINE h5dwrite_double_1(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_double_1(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_double_1 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - DOUBLE PRECISION, INTENT(IN), DIMENSION(:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1085,7 +2033,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwrite_c + +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1096,17 +2067,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_double_1 - SUBROUTINE h5dwrite_double_2(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_double_2(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_double_2 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - DOUBLE PRECISION, INTENT(IN), DIMENSION(:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1118,7 +2095,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwrite_c + +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1129,17 +2129,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_double_2 - SUBROUTINE h5dwrite_double_3(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_double_3(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_double_3 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - DOUBLE PRECISION, INTENT(IN), DIMENSION(:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1151,7 +2157,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwrite_c + +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1162,17 +2191,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_double_3 - SUBROUTINE h5dwrite_double_4(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_double_4(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_double_4 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - DOUBLE PRECISION, INTENT(IN), DIMENSION(:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1184,7 +2219,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwrite_c + +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1195,17 +2253,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_double_4 - SUBROUTINE h5dwrite_double_5(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_double_5(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_double_5 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - DOUBLE PRECISION, INTENT(IN), DIMENSION(:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1217,7 +2281,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwrite_c + +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1228,17 +2315,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_double_5 - SUBROUTINE h5dwrite_double_6(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_double_6(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_double_6 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - DOUBLE PRECISION, INTENT(IN), DIMENSION(:,:,:,:,:,:) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf ! Data buffer INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id @@ -1251,7 +2344,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwrite_c + +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1262,17 +2378,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_double_6 - SUBROUTINE h5dwrite_double_7(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dwrite_double_7(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dwrite_double_7 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - DOUBLE PRECISION, INTENT(IN), DIMENSION(:,:,:,:,:,:,:) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf ! Data buffer INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id @@ -1285,7 +2407,29 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dwrite_c + +! INTEGER, EXTERNAL :: h5dwrite_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dwrite_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DWRITE_C'::h5dwrite_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(IN), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5dwrite_c + END INTERFACE xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1296,18 +2440,63 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dwrite_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dwrite_double_7 - SUBROUTINE h5dread_reference_obj(dset_id, mem_type_id, buf, n, hdferr, & +!---------------------------------------------------------------------- +! Name: h5dread_f +! +! Purpose: Reads raw data from the specified dataset into buf, +! converting from file datatype and dataspace to memory +! datatype and dataspace. +! +! Inputs: +! dset_id - dataset identifier +! mem_type_id - memory type identifier +! dims - 1-dim array of size 7; dims(k) has the size +! - of k-th dimension of the buf array +! Outputs: +! buf - buffer to read data in +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! mem_space_id - memory dataspace identifier +! file_space_id - file dataspace identifier +! xfer_prp - trasfer property list identifier +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! dims parameter was added to make code portable; +! n parameter was replaced with dims parameter in +! the h5dwrite_reference_obj and h5dwrite_reference_dsetreg +! functions. April 2, 2001 +! +! Comment: This function is overloaded to read INTEGER, +! REAL, DOUBLE PRECISION and CHARACTER buffers +! up to 7 dimensions, and one dimensional buffers +! of the TYPE(hobj_ref_t_f) and TYPE(hdset_reg_ref_t_f) +! types. +!---------------------------------------------------------------------- + SUBROUTINE h5dread_reference_obj(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_reference_obj +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(IN) :: n ! Size of the budffer buf - TYPE(hobj_ref_t_f), DIMENSION(N), INTENT(INOUT) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + TYPE(hobj_ref_t_f), INTENT(INOUT) , & + DIMENSION(dims(1)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1319,10 +2508,31 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_ref_obj_c INTEGER, ALLOCATABLE, DIMENSION(:) :: ref_buf INTEGER :: i,j - allocate(ref_buf(REF_OBJ_BUF_LEN*n), stat=hdferr) + +! INTEGER, EXTERNAL :: h5dread_ref_obj_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_ref_obj_c(dset_id, mem_type_id,& + mem_space_id_default, & + file_space_id_default, xfer_prp_default, ref_buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_REF_OBJ_C'::h5dread_ref_obj_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, DIMENSION(*) :: ref_buf + END FUNCTION h5dread_ref_obj_c + END INTERFACE + + allocate(ref_buf(REF_OBJ_BUF_LEN*dims(1)), stat=hdferr) if (hdferr .NE. 0) then hdferr = -1 return @@ -1337,8 +2547,8 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_ref_obj_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, ref_buf, n) - do j = 1, n + file_space_id_default, xfer_prp_default, ref_buf, dims) + do j = 1, dims(1) do i = 1, REF_OBJ_BUF_LEN buf(j)%ref(i) = ref_buf(REF_OBJ_BUF_LEN*(j-1) + i) enddo @@ -1346,14 +2556,19 @@ deallocate(ref_buf) END SUBROUTINE h5dread_reference_obj - SUBROUTINE h5dread_reference_dsetreg(dset_id, mem_type_id, buf, n, hdferr, & + SUBROUTINE h5dread_reference_dsetreg(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_reference_dsetreg +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - TYPE(hdset_reg_ref_t_f), DIMENSION(:), INTENT(INOUT) :: buf ! Data buffer - INTEGER, INTENT(IN) :: n ! Size of the buffer buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims + TYPE(hdset_reg_ref_t_f), INTENT(INOUT), & + DIMENSION(dims(1)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1367,8 +2582,29 @@ INTEGER(HID_T) :: file_space_id_default INTEGER, ALLOCATABLE, DIMENSION(:) :: ref_buf INTEGER :: i,j - INTEGER, EXTERNAL :: h5dread_ref_reg_c - allocate(ref_buf(REF_REG_BUF_LEN*n), stat=hdferr) + +! INTEGER, EXTERNAL :: h5dread_ref_reg_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_ref_reg_c(dset_id, mem_type_id,& + mem_space_id_default, & + file_space_id_default, xfer_prp_default, ref_buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_REF_REG_C'::h5dread_ref_reg_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: xfer_prp_default + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, DIMENSION(*) :: ref_buf + END FUNCTION h5dread_ref_reg_c + END INTERFACE + + allocate(ref_buf(REF_REG_BUF_LEN*dims(1)), stat=hdferr) if (hdferr .NE. 0) then hdferr = -1 return @@ -1383,9 +2619,9 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_ref_reg_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, ref_buf, n) + file_space_id_default, xfer_prp_default, ref_buf, dims) - do j = 1, n + do j = 1, dims(1) do i = 1, REF_REG_BUF_LEN buf(j)%ref(i) = ref_buf(REF_REG_BUF_LEN*(j-1) + i) enddo @@ -1394,12 +2630,17 @@ END SUBROUTINE h5dread_reference_dsetreg - SUBROUTINE h5dread_integer_scalar(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_integer_scalar(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_integer_scalar +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER, INTENT(IN), DIMENSION(7) :: dims INTEGER, INTENT(INOUT) :: buf ! Data buffer INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id @@ -1412,7 +2653,29 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_c + +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(OUT) :: buf + END FUNCTION h5dread_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1423,17 +2686,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_integer_scalar - SUBROUTINE h5dread_integer_1(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_integer_1(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_integer_1 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(INOUT), DIMENSION(:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1445,7 +2714,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_c + +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(OUT), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5dread_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1456,17 +2748,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_integer_1 - SUBROUTINE h5dread_integer_2(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_integer_2(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_integer_2 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(INOUT), DIMENSION(:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1478,7 +2776,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_c + +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(OUT), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dread_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1490,17 +2811,23 @@ hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & file_space_id_default, xfer_prp_default, & - buf) + buf, dims) END SUBROUTINE h5dread_integer_2 - SUBROUTINE h5dread_integer_3(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_integer_3(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_integer_3 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(INOUT), DIMENSION(:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1512,7 +2839,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_c + +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5dread_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1524,17 +2874,23 @@ hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & file_space_id_default, xfer_prp_default, & - buf) + buf, dims) END SUBROUTINE h5dread_integer_3 - SUBROUTINE h5dread_integer_4(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_integer_4(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_integer_4 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(INOUT), DIMENSION(:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1546,7 +2902,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_c + +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(OUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5dread_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1558,17 +2937,23 @@ hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & file_space_id_default, xfer_prp_default, & - buf) + buf, dims) END SUBROUTINE h5dread_integer_4 - SUBROUTINE h5dread_integer_5(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_integer_5(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_integer_5 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(INOUT), DIMENSION(:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1580,7 +2965,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_c + +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5dread_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1592,17 +3000,23 @@ hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & file_space_id_default, xfer_prp_default, & - buf) + buf, dims) END SUBROUTINE h5dread_integer_5 - SUBROUTINE h5dread_integer_6(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_integer_6(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_integer_6 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(INOUT), DIMENSION(:,:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1614,7 +3028,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_c + +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5dread_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1626,17 +3063,23 @@ hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & file_space_id_default, xfer_prp_default, & - buf) + buf, dims) END SUBROUTINE h5dread_integer_6 - SUBROUTINE h5dread_integer_7(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_integer_7(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_integer_7 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - INTEGER, INTENT(INOUT), DIMENSION(:,:,:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1648,7 +3091,29 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_c + +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + INTEGER, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5dread_c + END INTERFACE xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1660,16 +3125,21 @@ hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & file_space_id_default, xfer_prp_default, & - buf) + buf, dims) END SUBROUTINE h5dread_integer_7 - SUBROUTINE h5dread_char_scalar(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_char_scalar(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_char_scalar +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER, INTENT(IN), DIMENSION(7) :: dims CHARACTER(LEN=*), INTENT(INOUT) :: buf ! Data buffer INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id @@ -1682,7 +3152,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dreadc_c + +! INTEGER, EXTERNAL :: h5dreadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dreadc_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREADC_C'::h5dreadc_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(OUT) :: buf + END FUNCTION h5dreadc_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1693,17 +3186,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dreadc_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_char_scalar - SUBROUTINE h5dread_char_1(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_char_1(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_char_1 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - CHARACTER(LEN=*), INTENT(INOUT), DIMENSION(*) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1715,7 +3214,31 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dreadc_c + +! INTEGER, EXTERNAL :: h5dreadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dreadc_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREADC_C'::h5dreadc_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5dreadc_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1726,17 +3249,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dreadc_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_char_1 - SUBROUTINE h5dread_char_2(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_char_2(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_char_2 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - CHARACTER(LEN=*), INTENT(INOUT), DIMENSION(:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1748,7 +3277,31 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dreadc_c + +! INTEGER, EXTERNAL :: h5dreadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dreadc_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREADC_C'::h5dreadc_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dreadc_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1759,17 +3312,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dreadc_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_char_2 - SUBROUTINE h5dread_char_3(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_char_3(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_char_3 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - CHARACTER(LEN=*), INTENT(INOUT), DIMENSION(:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1781,7 +3340,31 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dreadc_c + +! INTEGER, EXTERNAL :: h5dreadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dreadc_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREADC_C'::h5dreadc_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5dreadc_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1792,17 +3375,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dreadc_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_char_3 - SUBROUTINE h5dread_char_4(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_char_4(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_char_4 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - CHARACTER(LEN=*), INTENT(INOUT), DIMENSION(:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1814,7 +3403,31 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dreadc_c + +! INTEGER, EXTERNAL :: h5dreadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dreadc_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREADC_C'::h5dreadc_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5dreadc_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1825,17 +3438,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dreadc_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_char_4 - SUBROUTINE h5dread_char_5(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_char_5(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_char_5 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - CHARACTER(LEN=*), INTENT(INOUT), DIMENSION(:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1847,7 +3466,31 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dreadc_c + +! INTEGER, EXTERNAL :: h5dreadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dreadc_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREADC_C'::h5dreadc_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5dreadc_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1858,17 +3501,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dreadc_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_char_5 - SUBROUTINE h5dread_char_6(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_char_6(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_char_6 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - CHARACTER(LEN=*), INTENT(INOUT), DIMENSION(:,:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1880,7 +3529,31 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dreadc_c + +! INTEGER, EXTERNAL :: h5dreadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dreadc_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREADC_C'::h5dreadc_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5dreadc_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1891,17 +3564,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dreadc_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_char_6 - SUBROUTINE h5dread_char_7(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_char_7(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_char_7 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - CHARACTER(LEN=*), INTENT(INOUT), DIMENSION(:,:,:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1913,7 +3592,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dreadc_c + +! INTEGER, EXTERNAL :: h5dreadc_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dreadc_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREADC_C'::h5dreadc_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: buf + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + CHARACTER(LEN=*), INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5dreadc_c + END INTERFACE xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -1924,16 +3626,21 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dreadc_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_char_7 - SUBROUTINE h5dread_real_scalar(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_real_scalar(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_real_scalar +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER, INTENT(IN), DIMENSION(7) :: dims REAL, INTENT(INOUT) :: buf ! Data buffer INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id @@ -1942,12 +3649,33 @@ ! File dataspace identfier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER, EXTERNAL :: h5dread_c - INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(OUT) :: buf + END FUNCTION h5dread_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F file_space_id_default = H5S_ALL_F @@ -1957,17 +3685,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_real_scalar - SUBROUTINE h5dread_real_1(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_real_1(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_real_1 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - REAL, INTENT(INOUT), DIMENSION(:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -1975,12 +3709,34 @@ ! File dataspace identfier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER, EXTERNAL :: h5dread_c - INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5dread_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F file_space_id_default = H5S_ALL_F @@ -1990,17 +3746,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_real_1 - SUBROUTINE h5dread_real_2(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_real_2(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_real_2 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - REAL, INTENT(INOUT), DIMENSION(:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -2008,12 +3770,34 @@ ! File dataspace identfier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER, EXTERNAL :: h5dread_c - INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dread_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F file_space_id_default = H5S_ALL_F @@ -2023,17 +3807,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_real_2 - SUBROUTINE h5dread_real_3(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_real_3(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_real_3 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - REAL, INTENT(INOUT), DIMENSION(:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -2041,12 +3831,34 @@ ! File dataspace identfier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER, EXTERNAL :: h5dread_c - INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5dread_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F file_space_id_default = H5S_ALL_F @@ -2056,17 +3868,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_real_3 - SUBROUTINE h5dread_real_4(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_real_4(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_real_4 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - REAL, INTENT(INOUT), DIMENSION(:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3), dims(4)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -2074,12 +3892,34 @@ ! File dataspace identfier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER, EXTERNAL :: h5dread_c - INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3), dims(4)) :: buf + END FUNCTION h5dread_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F file_space_id_default = H5S_ALL_F @@ -2089,17 +3929,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_real_4 - SUBROUTINE h5dread_real_5(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_real_5(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_real_5 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - REAL, INTENT(INOUT), DIMENSION(:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -2107,12 +3953,34 @@ ! File dataspace identfier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER, EXTERNAL :: h5dread_c - INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5dread_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F file_space_id_default = H5S_ALL_F @@ -2122,17 +3990,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_real_5 - SUBROUTINE h5dread_real_6(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_real_6(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_real_6 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - REAL, INTENT(INOUT), DIMENSION(:,:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -2140,12 +4014,34 @@ ! File dataspace identfier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER, EXTERNAL :: h5dread_c - INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5dread_c + END INTERFACE + + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F file_space_id_default = H5S_ALL_F @@ -2155,17 +4051,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_real_6 - SUBROUTINE h5dread_real_7(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_real_7(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_real_7 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - REAL, INTENT(INOUT), DIMENSION(:,:,:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -2173,12 +4075,34 @@ ! File dataspace identfier INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp ! Transfer property list identifier - INTEGER, EXTERNAL :: h5dread_c INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + REAL, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5dread_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F file_space_id_default = H5S_ALL_F @@ -2188,16 +4112,21 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_real_7 - SUBROUTINE h5dread_double_scalar(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_double_scalar(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_double_scalar +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + INTEGER, INTENT(IN), DIMENSION(7) :: dims DOUBLE PRECISION, INTENT(INOUT) :: buf ! Data buffer INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id @@ -2210,7 +4139,29 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_c + +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(OUT) :: buf + END FUNCTION h5dread_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -2221,17 +4172,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_double_scalar - SUBROUTINE h5dread_double_1(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_double_1(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_double_1 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - DOUBLE PRECISION, INTENT(INOUT), DIMENSION(:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -2243,7 +4200,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_c + +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1)) :: buf + END FUNCTION h5dread_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -2254,17 +4234,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_double_1 - SUBROUTINE h5dread_double_2(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_double_2(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_double_2 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - DOUBLE PRECISION, INTENT(INOUT), DIMENSION(:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -2276,7 +4262,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_c + +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2)) :: buf + END FUNCTION h5dread_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -2287,17 +4296,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_double_2 - SUBROUTINE h5dread_double_3(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_double_3(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_double_3 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - DOUBLE PRECISION, INTENT(INOUT), DIMENSION(:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -2309,7 +4324,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_c + +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3)) :: buf + END FUNCTION h5dread_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -2320,17 +4358,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_double_3 - SUBROUTINE h5dread_double_4(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_double_4(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_double_4 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - DOUBLE PRECISION, INTENT(INOUT), DIMENSION(:,:,:,:) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf ! Data buffer INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id @@ -2343,7 +4387,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_c + +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4)) :: buf + END FUNCTION h5dread_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -2354,17 +4421,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_double_4 - SUBROUTINE h5dread_double_5(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_double_5(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_double_5 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - DOUBLE PRECISION, INTENT(INOUT), DIMENSION(:,:,:,:,:) :: buf ! Data buffer + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id ! Memory dataspace identfier @@ -2376,7 +4449,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_c + +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)) :: buf + END FUNCTION h5dread_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -2387,17 +4483,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_double_5 - SUBROUTINE h5dread_double_6(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_double_6(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_double_6 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - DOUBLE PRECISION, INTENT(INOUT), DIMENSION(:,:,:,:,:,:) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf ! Data buffer INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id @@ -2410,7 +4512,30 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_c + +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)) :: buf + END FUNCTION h5dread_c + END INTERFACE + xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -2421,17 +4546,23 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_double_6 - SUBROUTINE h5dread_double_7(dset_id, mem_type_id, buf, hdferr, & + SUBROUTINE h5dread_double_7(dset_id, mem_type_id, buf, dims, hdferr, & mem_space_id, file_space_id, xfer_prp) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dread_double_7 +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier - DOUBLE PRECISION, INTENT(INOUT), DIMENSION(:,:,:,:,:,:,:) :: buf + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf ! Data buffer INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id @@ -2444,7 +4575,29 @@ INTEGER(HID_T) :: xfer_prp_default INTEGER(HID_T) :: mem_space_id_default INTEGER(HID_T) :: file_space_id_default - INTEGER, EXTERNAL :: h5dread_c + +! INTEGER, EXTERNAL :: h5dread_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dread_c(dset_id, mem_type_id, & + mem_space_id_default, & + file_space_id_default, & + xfer_prp_default, buf, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DREAD_C'::h5dread_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER(HID_T), INTENT(IN) :: mem_type_id + INTEGER(HID_T) :: mem_space_id_default + INTEGER(HID_T) :: file_space_id_default + INTEGER(HID_T) :: xfer_prp_default + INTEGER, INTENT(IN), DIMENSION(7) :: dims + DOUBLE PRECISION, INTENT(INOUT), & + DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)) :: buf + END FUNCTION h5dread_c + END INTERFACE xfer_prp_default = H5P_DEFAULT_F mem_space_id_default = H5S_ALL_F @@ -2455,48 +4608,223 @@ if (present(file_space_id)) file_space_id_default = file_space_id hdferr = h5dread_c(dset_id, mem_type_id, mem_space_id_default, & - file_space_id_default, xfer_prp_default, buf) + file_space_id_default, xfer_prp_default, buf, dims) END SUBROUTINE h5dread_double_7 +!---------------------------------------------------------------------- +! Name: h5dget_space_f +! +! Purpose: Returns an identifier for a copy of the dataspace for a +! dataset. +! +! Inputs: +! dataset_id - dataset identifier +! Outputs: +! dataspace_id - dataspace identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5dget_space_f(dataset_id, dataspace_id, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dget_space_f +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier INTEGER(HID_T), INTENT(OUT) :: dataspace_id ! Dataspace identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5dget_space_c + +! INTEGER, EXTERNAL :: h5dget_space_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dget_space_c(dataset_id, dataspace_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DGET_SPACE_C'::h5dget_space_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dataset_id + INTEGER(HID_T), INTENT(OUT) :: dataspace_id + END FUNCTION h5dget_space_c + END INTERFACE + hdferr = h5dget_space_c(dataset_id, dataspace_id) END SUBROUTINE h5dget_space_f +!---------------------------------------------------------------------- +! Name: h5dget_type_f +! +! Purpose: Returns an identifier for a copy of the datatype for a +! dataset. +! +! Inputs: +! dataset_id - dataset identifier +! Outputs: +! datatype_id - dataspace identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5dget_type_f(dataset_id, datatype_id, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dget_type_f +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier INTEGER(HID_T), INTENT(OUT) :: datatype_id ! Datatype identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5dget_type_c +! INTEGER, EXTERNAL :: h5dget_type_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dget_type_c (dataset_id, datatype_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DGET_TYPE_C'::h5dget_type_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dataset_id + INTEGER(HID_T), INTENT(OUT) :: datatype_id + END FUNCTION h5dget_type_c + END INTERFACE + hdferr = h5dget_type_c (dataset_id, datatype_id) END SUBROUTINE h5dget_type_f +!---------------------------------------------------------------------- +! Name: h5dextend_f +! +! Purpose: Extends a dataset with unlimited dimension. +! +! Inputs: +! dataset_id - dataset identifier +! size - array containing the new magnitude of +! each dimension +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- + + SUBROUTINE h5dextend_f(dataset_id, size, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dextend_f +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: size ! Array containing ! dimensions' sizes INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5dextend_c + +! INTEGER, EXTERNAL :: h5dextend_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dextend_c(dataset_id, size) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DEXTEND_C'::h5dextend_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dataset_id + INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: size + END FUNCTION h5dextend_c + END INTERFACE + hdferr = h5dextend_c(dataset_id, size) END SUBROUTINE h5dextend_f +!---------------------------------------------------------------------- +! Name: h5dget_create_plist_f +! +! Purpose: Returns an identifier for a copy of the dataset creation +! property list for a dataset. +! +! Inputs: +! dataset_id - dataset identifier +! Outputs: +! plist_id - creation property list identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- + + SUBROUTINE h5dget_create_plist_f(dataset_id, plist_id, hdferr) +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5dget_create_plist_f +!DEC$endif IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier INTEGER(HID_T), INTENT(OUT) :: plist_id ! Dataset creation ! property list identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5dget_create_plist_c + +! INTEGER, EXTERNAL :: h5dget_create_plist_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5dget_create_plist_c(dataset_id, plist_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5DGET_CREATE_PLIST_C'::h5dget_create_plist_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dataset_id + INTEGER(HID_T), INTENT(OUT) :: plist_id + END FUNCTION h5dget_create_plist_c + END INTERFACE + hdferr = h5dget_create_plist_c(dataset_id, plist_id) END SUBROUTINE h5dget_create_plist_f diff --git a/fortran/src/H5Eff.f90 b/fortran/src/H5Eff.f90 index a8393dd..0c7b513 100644 --- a/fortran/src/H5Eff.f90 +++ b/fortran/src/H5Eff.f90 @@ -3,57 +3,278 @@ ! MODULE H5E - USE H5FORTRAN_TYPES - USE H5FORTRAN_FLAGS + USE H5GLOBAL CONTAINS +!---------------------------------------------------------------------- +! Name: h5eclear_f +! +! Purpose: Clears the error stack for the current thread. +! +! Inputs: +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! +! +! +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). April 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5eclear_f(hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5eclear_f +!DEC$endif +! IMPLICIT NONE INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5eclear_c +! INTEGER, EXTERNAL :: h5eclear_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5eclear_c() + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5ECLEAR_C'::h5eclear_c + END FUNCTION h5eclear_c + END INTERFACE hdferr = h5eclear_c() END SUBROUTINE h5eclear_f +!---------------------------------------------------------------------- +! Name: h5h5eprint_f +! +! Purpose: Prints the error stack in a default manner. +! +! Inputs: +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! name - name of the file that +! contains print output +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). April 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5eprint_f(hdferr, name) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5eprint_f +!DEC$endif +! CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: name ! File name INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5eprint_c1, h5eprint_c2 - +! INTEGER, EXTERNAL :: h5eprint_c1, h5eprint_c2 INTEGER :: namelen +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5eprint_c1(name, namelen) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5EPRINT_C1'::h5eprint_c1 + !DEC$ATTRIBUTES reference :: name + INTEGER :: namelen + CHARACTER(LEN=*),INTENT(IN) :: name + END FUNCTION h5eprint_c1 + END INTERFACE +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5eprint_c2() + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5EPRINT_C2'::h5eprint_c2 + END FUNCTION h5eprint_c2 + END INTERFACE namelen = LEN(NAME) if (present(name)) hdferr = h5eprint_c1(name, namelen) hdferr = h5eprint_c2() END SUBROUTINE h5eprint_f +!---------------------------------------------------------------------- +! Name: h5eget_major_f +! +! Purpose: Returns a character string describing an error specified +! by a major error number. +! +! Inputs: +! error_no - mojor error number +! Outputs: +! name - character string describing the error +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). April 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5eget_major_f(error_no, name, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5eget_major_f +!DEC$endif +! INTEGER, INTENT(IN) :: error_no !Major error number - CHARACTER(LEN=*), INTENT(OUT) :: name ! File name + CHARACTER(LEN=*), INTENT(OUT) :: name ! Character string describing + ! the error. INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5eget_major_c + +! INTEGER, EXTERNAL :: h5eget_major_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5eget_major_c(error_no, name) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5EGET_MAJOR_C'::h5eget_major_c + !DEC$ATTRIBUTES reference :: name + INTEGER :: error_no + CHARACTER(LEN=*) :: name + END FUNCTION h5eget_major_c + END INTERFACE hdferr = h5eget_major_c(error_no, name) END SUBROUTINE h5eget_major_f +!---------------------------------------------------------------------- +! Name: h5eget_minor_f +! +! Purpose: Returns a character string describing an error specified +! by a minor error number. +! +! Inputs: +! error_no - minor error number +! Outputs: +! name - character string describing the error +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! +! +! +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). April 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5eget_minor_f(error_no, name, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5eget_minor_f +!DEC$endif +! INTEGER, INTENT(IN) :: error_no !Major error number - CHARACTER(LEN=*), INTENT(OUT) :: name ! File name - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5eget_minor_c + CHARACTER(LEN=*), INTENT(OUT) :: name ! Character string describing + ! the error + INTEGER, INTENT(OUT) :: hdferr ! Error code + +! INTEGER, EXTERNAL :: h5eget_minor_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5eget_minor_c(error_no, name) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5EGET_MINOR_C'::h5eget_minor_c + !DEC$ATTRIBUTES reference :: name + INTEGER :: error_no + CHARACTER(LEN=*) :: name + END FUNCTION h5eget_minor_c + END INTERFACE hdferr = h5eget_minor_c(error_no, name) END SUBROUTINE h5eget_minor_f +!---------------------------------------------------------------------- +! Name: h5eset_auto_f +! +! Purpose: Turns automatic error printing on or off +! +! Inputs: +! printflag - flag to turn automatic error +! - Possible values are: +! - 1 (on), 0 (off) +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! +! +! +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). April 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5eset_auto_f(printflag, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5eset_auto_f +!DEC$endif +! INTEGER, INTENT(IN) :: printflag !flag to turn automatic error !printing on or off !possible values are: !printon (1) !printoff(0) INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5eset_auto_c + +! INTEGER, EXTERNAL :: h5eset_auto_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5eset_auto_c(printflag) + USE H5GLOBAL + !MS$ATTRIBUTES C,reference,alias:'_H5ESET_AUTO_C'::h5eset_auto_c + INTEGER :: printflag + END FUNCTION h5eset_auto_c + END INTERFACE hdferr = h5eset_auto_c(printflag) END SUBROUTINE h5eset_auto_f diff --git a/fortran/src/H5FDmpioff.f90 b/fortran/src/H5FDmpioff.f90 index 491551e..ef2b7c2 100644 --- a/fortran/src/H5FDmpioff.f90 +++ b/fortran/src/H5FDmpioff.f90 @@ -2,9 +2,33 @@ ! This file contains Fortran90 interfaces for H5P functions needed by || MPI programs. ! MODULE H5FDMPIO - USE H5FORTRAN_TYPES - USE H5FORTRAN_FLAGS + USE H5GLOBAL CONTAINS + +!---------------------------------------------------------------------- +! Name: h5pset_fapl_mpio_f +! +! Purpose: Stores MPI IO communicator information to the file +! access property list. +! +! Inputs: +! prp_id - file access property list identifier +! comm - MPI-2 communicator +! info - MPI-2 info object +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! November, 2000 +! +! Modifications: +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5pset_fapl_mpio_f(prp_id, comm, info, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier @@ -18,11 +42,35 @@ hdferr = h5pset_fapl_mpio_c(prp_id, comm, info) END SUBROUTINE h5pset_fapl_mpio_f +!---------------------------------------------------------------------- +! Name: h5pget_fapl_mpio_f +! +! Purpose: Returns MPI communicator information. +! +! Inputs: +! prp_id - file access property list identifier +! Outputs: +! comm - MPI-2 communicator +! info - MPI-2 info object +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! November, 2000 +! +! Modifications: +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_fapl_mpio_f(prp_id, comm, info, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(OUT) :: comm ! buffer to return communicator - INTEGER, INTENT(IN) :: info ! buffer to return info object + INTEGER, INTENT(OUT) :: info ! buffer to return info object ! as defined in MPI_FILE_OPEN of MPI-2 INTEGER, INTENT(OUT) :: hdferr ! Error code @@ -30,24 +78,76 @@ hdferr = h5pget_fapl_mpio_c(prp_id, comm, info) END SUBROUTINE h5pget_fapl_mpio_f +!---------------------------------------------------------------------- +! Name: h5pset_dxpl_mpio_f +! +! Purpose: Sets data transfer mode. +! +! Inputs: +! prp_id - data transfer property list identifier +! data_xfer_mode - transfer mode +! Possible values are: +! H5FD_MPIO_INDEPENDENT_F +! H5FD_MPIO_COLLECTIVE_F +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! November, 2000 +! +! Modifications: +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pset_dxpl_mpio_f(prp_id, data_xfer_mode, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(IN) :: data_xfer_mode ! Data transfer mode. Possible values are: - ! H5FD_MPIO_INDEPENDENT_F (0) - ! H5FD_MPIO_COLLECTIVE_F (1) + ! H5FD_MPIO_INDEPENDENT_F + ! H5FD_MPIO_COLLECTIVE_F INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER, EXTERNAL :: h5pset_dxpl_mpio_c hdferr = h5pset_dxpl_mpio_c(prp_id, data_xfer_mode) END SUBROUTINE h5pset_dxpl_mpio_f +!---------------------------------------------------------------------- +! Name: h5pget_dxpl_mpio_f +! +! Purpose: Returns the data transfer mode. +! +! Inputs: +! prp_id - data transfer property list identifier +! Outputs: +! data_xfer_mode - transfer mode +! Possible values are: +! H5FD_MPIO_INDEPENDENT_F +! H5FD_MPIO_COLLECTIVE_F +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! November, 2000 +! +! Modifications: +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_dxpl_mpio_f(prp_id, data_xfer_mode, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(OUT) :: data_xfer_mode ! Data transfer mode. Possible values are: - ! H5FD_MPIO_INDEPENDENT_F (0) - ! H5FD_MPIO_COLLECTIVE_F (1) + ! H5FD_MPIO_INDEPENDENT_F + ! H5FD_MPIO_COLLECTIVE_F INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER, EXTERNAL :: h5pget_dxpl_mpio_c diff --git a/fortran/src/H5Fff.f90 b/fortran/src/H5Fff.f90 index 077f4f6..6e0cb3a 100644 --- a/fortran/src/H5Fff.f90 +++ b/fortran/src/H5Fff.f90 @@ -6,8 +6,42 @@ CONTAINS +!---------------------------------------------------------------------- +! Name: h5fcreate_f +! +! Purpose: Creates HDF5 files. +! +! Inputs: +! name - name of the file to create +! access_flags - File access flags. Allowable values are: +! H5F_ACC_TRUNC_F +! H5F_ACC_EXCL_F +! Outputs: +! file_id - file identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! creation_prp - file creation property list identifier +! access_prp - file access property list identifier +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5fcreate_f(name, access_flags, file_id, hdferr, & creation_prp, access_prp) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5fcreate_f +!DEC$endif +! IMPLICIT NONE CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file @@ -23,7 +57,26 @@ INTEGER :: creation_prp_default INTEGER :: access_prp_default INTEGER :: namelen ! Length of the name character string - INTEGER, EXTERNAL :: h5fcreate_c + +! INTEGER, EXTERNAL :: h5fcreate_c +! Interface is needed for MS FORTRAN +! + INTERFACE + INTEGER FUNCTION h5fcreate_c(name, namelen, access_flags, & + creation_prp_default, access_prp_default, file_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5FCREATE_C':: h5fcreate_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: access_flags + INTEGER(HID_T), INTENT(OUT) :: file_id + INTEGER, INTENT(IN) :: creation_prp_default + INTEGER, INTENT(IN) :: access_prp_default + INTEGER :: namelen + END FUNCTION h5fcreate_c + END INTERFACE creation_prp_default = H5P_DEFAULT_F access_prp_default = H5P_DEFAULT_F @@ -35,8 +88,44 @@ creation_prp_default, access_prp_default, file_id) END SUBROUTINE h5fcreate_f - + +!---------------------------------------------------------------------- +! Name: h5fflush_f +! +! Purpose: Flushes all buffers associated with a file to disk +! +! Inputs: +! object_id - identifier of object used to identify +! the file. +! scope - specifies the scope of the flushing action. +! Possible values are: +! H5F_SCOPE_GLOBAL_F +! H5F_SCOPE_LOCAL_F +! Outputs: +! file_id - file identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! creation_prp - file creation property list identifier +! access_prp - file access property list identifier +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5fflush_f(object_id, scope, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5fflush_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: object_id !identifier for any object @@ -57,54 +146,198 @@ INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5fflush_c +! INTEGER, EXTERNAL :: h5fflush_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5fflush_c(object_id, scope) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5FFLUSH_C':: h5fflush_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: object_id + INTEGER, INTENT(IN) :: scope + END FUNCTION h5fflush_c + END INTERFACE hdferr = h5fflush_c(object_id, scope) END SUBROUTINE h5fflush_f +!---------------------------------------------------------------------- +! Name: h5fmount_f +! +! Purpose: Mounts a file. +! +! Inputs: +! loc_id - the identifier for of file or group in +! which name is defined +! name - the name of the group onto which the file +! specified by child_id is to be mounted. +! child_id - the identifier of the file to be mounted. +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! access_prp - the identifier of the property list to be used +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- - SUBROUTINE h5fmount_f(loc_id, dsetname, file_id, hdferr, access_prp) + SUBROUTINE h5fmount_f(loc_id, name, child_id, hdferr, access_prp) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5fmount_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier for file or group ! in which dsetname is defined - CHARACTER(LEN=*), INTENT(IN) :: dsetname ! Name of the dataset - INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier for the + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group + INTEGER(HID_T), INTENT(IN) :: child_id ! File identifier for the ! file to be mounted INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp ! File access property list ! identifier INTEGER :: access_prp_default - INTEGER :: namelen ! Length of the dsetname character string - INTEGER, EXTERNAL :: h5fmount_c + INTEGER :: namelen ! Length of the name character string +! INTEGER, EXTERNAL :: h5fmount_c +! Interface is needed for MS FORTRAN +! + INTERFACE + INTEGER FUNCTION h5fmount_c(loc_id, name, namelen, & + child_id, access_prp_default) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5FMOUNT_C':: h5fmount_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER(HID_T), INTENT(IN) :: child_id + INTEGER(HID_T), INTENT(IN) :: access_prp_default + INTEGER :: namelen + END FUNCTION h5fmount_c + END INTERFACE + access_prp_default = H5P_DEFAULT_F if (present(access_prp)) access_prp_default = access_prp - namelen = LEN(dsetname) - hdferr = h5fmount_c(loc_id, dsetname, namelen, file_id, access_prp_default) + namelen = LEN(name) + hdferr = h5fmount_c(loc_id, name, namelen, child_id, access_prp_default) END SUBROUTINE h5fmount_f - SUBROUTINE h5funmount_f(loc_id, dsetname, hdferr) +!---------------------------------------------------------------------- +! Name: h5funmount_f +! +! Purpose: Unmounts a file. +! +! Inputs: +! loc_id - the identifier for of file or group in +! which name is defined +! name - the name of the mount point +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- + + SUBROUTINE h5funmount_f(loc_id, name, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5funmount_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier for file or group - ! in which dsetname is defined - CHARACTER(LEN=*), INTENT(IN) :: dsetname ! Name of the dataset + ! at which the specified file + ! is to be unmounted + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the mount point INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: namelen ! Length of the dsetname character string - INTEGER, EXTERNAL :: h5funmount_c + INTEGER :: namelen ! Length of the name character string - namelen = LEN(dsetname) - hdferr = h5funmount_c(loc_id, dsetname, namelen) +! INTEGER, EXTERNAL :: h5fumount_c +! Interface is needed for MS FORTRAN +! + INTERFACE + INTEGER FUNCTION h5funmount_c(loc_id, name, namelen) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5FUNMOUNT_C':: h5funmount_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + END FUNCTION h5funmount_c + END INTERFACE + + namelen = LEN(name) + hdferr = h5funmount_c(loc_id, name, namelen) END SUBROUTINE h5funmount_f +!---------------------------------------------------------------------- +! Name: h5fopen_f +! +! Purpose: Opens HDF5 file. +! +! Inputs: +! name - name of the file to acecss +! access_flags - File access flags. Allowable values are: +! H5F_ACC_RDWR_F +! H5F_ACC_RDONLY_F +! Outputs: +! file_id - file identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! access_prp - file access property list identifier +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5fopen_f(name, access_flags, file_id, hdferr, & access_prp) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5fopen_f +!DEC$endif +! IMPLICIT NONE CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file @@ -116,7 +349,25 @@ ! identifier INTEGER :: access_prp_default INTEGER :: namelen ! Length of the name character string - INTEGER, EXTERNAL :: h5fopen_c + +! INTEGER, EXTERNAL :: h5fopen_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5fopen_c(name, namelen, access_flags, & + access_prp_default, file_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5FOPEN_C':: h5fopen_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER, INTENT(IN) :: access_flags + INTEGER, INTENT(IN) :: access_prp_default + INTEGER(HID_T), INTENT(OUT) :: file_id + END FUNCTION h5fopen_c + END INTERFACE access_prp_default = H5P_DEFAULT_F if (present(access_prp)) access_prp_default = access_prp @@ -125,47 +376,213 @@ access_prp_default, file_id) END SUBROUTINE h5fopen_f + +!---------------------------------------------------------------------- +! Name: h5freopen_f +! +! Purpose: Reopens HDF5 file. +! +! Inputs: +! file_id - identifier of a file for which an +! additional identifier is required +! Outputs: +! ret_file_id - new file identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5freopen_f(file_id, ret_file_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5freopen_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier INTEGER(HID_T), INTENT(OUT) :: ret_file_id ! New File identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5freopen_c - - hdferr = h5freopen_c(file_id, ret_file_id) +! INTEGER, EXTERNAL :: h5freopen_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5freopen_c(file_id, ret_file_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5FREOPEN_C':: h5freopen_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: file_id + INTEGER(HID_T), INTENT(OUT) :: ret_file_id + END FUNCTION h5freopen_c + END INTERFACE + + hdferr = h5freopen_c(file_id, ret_file_id) + END SUBROUTINE h5freopen_f +!---------------------------------------------------------------------- +! Name: h5fget_create_plist_f +! +! Purpose: Returns a file creation property list identifier. +! +! Inputs: +! file_id - identifier of a file to get +! get creation property list of +! Outputs: +! prop_id - creation property list identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5fget_create_plist_f(file_id, prop_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5fget_create_plist_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier INTEGER(HID_T), INTENT(OUT) :: prop_id ! File creation property ! list identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5fget_create_plist_c + +! INTEGER, EXTERNAL :: h5fget_create_plist_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5fget_create_plist_c(file_id, prop_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) +!MS$ATTRIBUTES C,reference,alias:'_H5FGET_CREATE_PLIST_C':: h5fget_create_plist_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: file_id + INTEGER(HID_T), INTENT(OUT) :: prop_id + END FUNCTION h5fget_create_plist_c + END INTERFACE hdferr = h5fget_create_plist_c(file_id, prop_id) END SUBROUTINE h5fget_create_plist_f + +!---------------------------------------------------------------------- +! Name: h5fget_access_plist_f +! +! Purpose: Returns a file access property list identifier. +! +! Inputs: +! file_id - identifier of a file to get +! get creation property list of +! Outputs: +! access_id - access property list identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5fget_access_plist_f(file_id, access_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5fget_access_plist_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier INTEGER(HID_T), INTENT(OUT) :: access_id ! File access property ! list identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5fget_access_plist_c + +! INTEGER, EXTERNAL :: h5fget_access_plist_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5fget_access_plist_c(file_id, access_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) +!MS$ATTRIBUTES C,reference,alias:'_H5FGET_CREATE_PLIST_C':: h5fget_access_plist_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: file_id + INTEGER(HID_T), INTENT(OUT) :: access_id + END FUNCTION h5fget_access_plist_c + END INTERFACE + hdferr = h5fget_access_plist_c(file_id, access_id) END SUBROUTINE h5fget_access_plist_f + +!---------------------------------------------------------------------- +! Name: h5fis_hdf5_f +! +! Purpose: Determines whether a file is in the HDF5 format. +! +! Inputs: +! name - name of the file to check +! Outputs: +! status - indicates if file is and HDF5 file +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- - SUBROUTINE h5fis_hdf5_f(name, status, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5fis_hdf5_f +!DEC$endif +! IMPLICIT NONE CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file @@ -175,7 +592,22 @@ INTEGER :: namelen ! Length of the name character string INTEGER :: flag ! "TRUE/FALSE" flag from C routine ! to define status value. - INTEGER, EXTERNAL :: h5fis_hdf5_c + +! INTEGER, EXTERNAL :: h5fis_hdf5_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5fis_hdf5_c(name, namelen, flag) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5FIS_HDF5_C':: h5fis_hdf5_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER :: flag + END FUNCTION h5fis_hdf5_c + END INTERFACE namelen = LEN(name) hdferr = h5fis_hdf5_c(name, namelen, flag) @@ -184,12 +616,54 @@ END SUBROUTINE h5fis_hdf5_f +!---------------------------------------------------------------------- +! Name: h5fclose_f +! +! Purpose: Closes HDF5 file. +! +! Inputs: +! file_id - file identifier +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5fclose_f(file_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5fclose_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5fclose_c + +! INTEGER, EXTERNAL :: h5fclose_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5fclose_c(file_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5FCLOSE_C':: h5fclose_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: file_id + END FUNCTION h5fclose_c + END INTERFACE hdferr = h5fclose_c(file_id) diff --git a/fortran/src/H5Gff.f90 b/fortran/src/H5Gff.f90 index de6a8f0..96bc374 100644 --- a/fortran/src/H5Gff.f90 +++ b/fortran/src/H5Gff.f90 @@ -2,14 +2,44 @@ ! This file contains Fortran90 interfaces for H5F functions. ! MODULE H5G - USE H5FORTRAN_TYPES - USE H5FORTRAN_FLAGS + USE H5GLOBAL CONTAINS - !!!============================================================ - +!---------------------------------------------------------------------- +! Name: h5gcreate_f +! +! Purpose: Creates a new group. +! +! Inputs: +! loc_id - location identifier +! name - group name at the specified location +! Outputs: +! grp_id - group identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! size_hint - a parameter indicating the number of bytes +! to reserve for the names that will appear +! in the group +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5gcreate_f(loc_id, name, grp_id, hdferr, size_hint) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5gcreate_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier @@ -24,7 +54,26 @@ ! in the group INTEGER :: namelen ! Length of the name character string INTEGER(SIZE_T) :: size_hint_default - INTEGER, EXTERNAL :: h5gcreate_c + +! INTEGER, EXTERNAL :: h5gcreate_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5gcreate_c(loc_id, name, namelen, & + size_hint_default, grp_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5GCREATE_C'::h5gcreate_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(SIZE_T) :: size_hint_default + INTEGER(HID_T), INTENT(OUT) :: grp_id + END FUNCTION h5gcreate_c + END INTERFACE + size_hint_default = OBJECT_NAMELEN_DEFAULT_F if (present(size_hint)) size_hint_default = size_hint namelen = LEN(name) @@ -32,10 +81,39 @@ grp_id) END SUBROUTINE h5gcreate_f - - !!!============================================================ +!---------------------------------------------------------------------- +! Name: h5gopen_f +! +! Purpose: Opens an existing group. +! +! Inputs: +! loc_id - location identifier +! name - name of the group to open +! Outputs: +! grp_id - group identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5gopen_f(loc_id, name, grp_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5gopen_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier @@ -44,30 +122,118 @@ INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: namelen ! Length of the name character string - INTEGER, EXTERNAL :: h5gopen_c + +! INTEGER, EXTERNAL :: h5gopen_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5gopen_c(loc_id, name, namelen, grp_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5GOPEN_C'::h5gopen_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(HID_T), INTENT(OUT) :: grp_id + END FUNCTION h5gopen_c + END INTERFACE namelen = LEN(name) hdferr = h5gopen_c(loc_id, name, namelen, grp_id) END SUBROUTINE h5gopen_f - - !!!============================================================ +!---------------------------------------------------------------------- +! Name: h5gclose_f +! +! Purpose: Closes the specified group. +! +! Inputs: +! grp_id - group identifier +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5gclose_f(grp_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5gclose_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: grp_id ! Group identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5gclose_c + +! INTEGER, EXTERNAL :: h5gclose_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5gclose_c(grp_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5GCLOSE_C'::h5gclose_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: grp_id + END FUNCTION h5gclose_c + END INTERFACE hdferr = h5gclose_c(grp_id) END SUBROUTINE h5gclose_f - !!!============================================================ +!---------------------------------------------------------------------- +! Name: h5gget_obj_info_idx_f +! +! Purpose: Returns name and type of the group member identified by +! its index. +! +! Inputs: +! loc_id - location identifier +! name - name of the group at the specified location +! idx - object index (zero-based) +! Outputs: +! obj_name - object name +! obj_type - object type +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5gget_obj_info_idx_f(loc_id, name, idx, & obj_name, obj_type, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5gget_obj_info_idx_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier @@ -79,7 +245,29 @@ INTEGER :: namelen ! Length of the name character string INTEGER :: obj_namelen ! Length of the obj_name character string - INTEGER, EXTERNAL :: h5gget_obj_info_idx_c + +! INTEGER, EXTERNAL :: h5gget_obj_info_idx_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5gget_obj_info_idx_c(loc_id, name, & + namelen, idx, & + obj_name, obj_namelen, obj_type) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5GGET_OBJ_INFO_IDX_C'::h5gget_obj_info_idx_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + !DEC$ATTRIBUTES reference :: obj_name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER, INTENT(IN) :: idx + CHARACTER(LEN=*), INTENT(OUT) :: obj_name + INTEGER :: obj_namelen + INTEGER, INTENT(OUT) :: obj_type + END FUNCTION h5gget_obj_info_idx_c + END INTERFACE namelen = LEN(name) obj_namelen = LEN(obj_name) @@ -87,10 +275,40 @@ obj_name, obj_namelen, obj_type) END SUBROUTINE h5gget_obj_info_idx_f - - !!!============================================================ + +!---------------------------------------------------------------------- +! Name: h5gn_members_f +! +! Purpose: Returns the number of group members. +! +! Inputs: +! loc_id - location identifier +! name - name of the group at the specified location +! Outputs: +! nmembers - number of group members +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5gn_members_f(loc_id, name, nmembers, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5gn_members_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier @@ -100,17 +318,69 @@ INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: namelen ! Length of the name character string - INTEGER, EXTERNAL :: h5gn_members_c +! INTEGER, EXTERNAL :: h5gn_members_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5gn_members_c(loc_id, name, namelen, nmembers) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5GN_MEMBERS_C'::h5gn_members_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER, INTENT(OUT) :: nmembers + END FUNCTION h5gn_members_c + END INTERFACE + namelen = LEN(name) hdferr = h5gn_members_c(loc_id, name, namelen, nmembers) END SUBROUTINE h5gn_members_f - !!!============================================================ - +!---------------------------------------------------------------------- +! Name: h5glink_f +! +! Purpose: Creates a link of the specified type from new_name +! to current_name. +! +! Inputs: +! loc_id - location identifier +! link_type - link type +! Possible values are: +! H5G_LINK_HARD_F (0) or +! H5G_LINK_SOFT_F (1) +! current_name - name of the existing object if link is a +! hard link. Can be anything for the soft link. +! new_name - new name for the object +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5glink_f(loc_id, link_type, current_name, & new_name, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5glink_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier @@ -126,7 +396,28 @@ INTEGER :: current_namelen ! Lenghth of the current_name string INTEGER :: new_namelen ! Lenghth of the new_name string - INTEGER, EXTERNAL :: h5glink_c + +! INTEGER, EXTERNAL :: h5glink_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5glink_c(loc_id, link_type, current_name, & + current_namelen, new_name, new_namelen) + + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5GLINK_C'::h5glink_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: current_name + !DEC$ATTRIBUTES reference :: new_name + INTEGER(HID_T), INTENT(IN) :: loc_id + INTEGER, INTENT(IN) :: link_type + CHARACTER(LEN=*), INTENT(IN) :: current_name + INTEGER :: current_namelen + CHARACTER(LEN=*), INTENT(IN) :: new_name + INTEGER :: new_namelen + END FUNCTION h5glink_c + END INTERFACE current_namelen = LEN(current_name) new_namelen = LEN(new_name) @@ -134,9 +425,40 @@ current_namelen, new_name, new_namelen) END SUBROUTINE h5glink_f - !!!============================================================ +!---------------------------------------------------------------------- +! Name: h5gunlink_f +! +! Purpose: Removes the specified name from the group graph and +! decrements the link count for the object to which name +! points +! +! Inputs: +! loc_id - location identifier +! name - name of the object to unlink +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5gunlink_f(loc_id, name, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5gunlink_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier @@ -145,15 +467,60 @@ INTEGER :: namelen ! Lenghth of the name character string - INTEGER, EXTERNAL :: h5gunlink_c +! INTEGER, EXTERNAL :: h5gunlink_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5gunlink_c(loc_id, name, namelen) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5GUNLINK_C'::h5gunlink_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + END FUNCTION h5gunlink_c + END INTERFACE namelen = LEN(name) hdferr = h5gunlink_c(loc_id, name, namelen) END SUBROUTINE h5gunlink_f - !!!============================================================ +!---------------------------------------------------------------------- +! Name: h5gmove_f +! +! Purpose: Renames an object within an HDF5 file. +! +! Inputs: +! loc_id - location identifier +! name - object's name at specified location +! new_name - object's new name +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5gmove_f(loc_id, name, new_name, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5gmove_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier @@ -163,16 +530,68 @@ INTEGER :: namelen ! Lenghth of the current_name string INTEGER :: new_namelen ! Lenghth of the new_name string - INTEGER, EXTERNAL :: h5gmove_c + +! INTEGER, EXTERNAL :: h5gmove_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5gmove_c(loc_id, name, namelen, new_name, new_namelen) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5GMOVE_C'::h5gmove_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + !DEC$ATTRIBUTES reference :: new_name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + CHARACTER(LEN=*), INTENT(IN) :: new_name + INTEGER :: new_namelen + END FUNCTION h5gmove_c + END INTERFACE namelen = LEN(name) new_namelen = LEN(new_name) hdferr = h5gmove_c(loc_id, name, namelen, new_name, new_namelen) END SUBROUTINE h5gmove_f - !!!============================================================ +!---------------------------------------------------------------------- +! Name: h5gget_linkval_f +! +! Purpose: Returns the name of the object that the symbolic link +! points to. +! +! Inputs: +! loc_id - location identifier +! name - symbolic link to the object whose name +! is to be returned. +! size - maximum number of characters to be returned +! Outputs: +! buffer - a buffer to hold the name of the object +! being sought +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5gget_linkval_f(loc_id, name, size, buffer, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5gget_linkval_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier @@ -185,15 +604,63 @@ INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: namelen ! Lenghth of the current_name string - INTEGER, EXTERNAL :: h5gget_linkval_c + +! INTEGER, EXTERNAL :: h5gget_linkval_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5gget_linkval_c(loc_id, name, namelen, size, buffer) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5GGET_LINKVAL_C'::h5gget_linkval_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + !DEC$ATTRIBUTES reference :: buffer + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(SIZE_T), INTENT(IN) :: size + CHARACTER(LEN=*), INTENT(OUT) :: buffer + END FUNCTION h5gget_linkval_c + END INTERFACE namelen = LEN(name) hdferr = h5gget_linkval_c(loc_id, name, namelen, size, buffer) END SUBROUTINE h5gget_linkval_f - !!!============================================================ +!---------------------------------------------------------------------- +! Name: h5gset_comment_f +! +! Purpose: Sets comment for specified object. +! +! Inputs: +! loc_id - location identifier +! name - name of the object +! comment - comment to set for the object +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5gset_comment_f(loc_id, name, comment, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5gset_comment_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier @@ -203,16 +670,66 @@ INTEGER :: namelen ! Lenghth of the current_name string INTEGER :: commentlen ! Lenghth of the comment string - INTEGER, EXTERNAL :: h5gset_comment_c + +! INTEGER, EXTERNAL :: h5gset_comment_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5gset_comment_c(loc_id, name, namelen, & + comment, commentlen) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5GSET_COMMENT_C'::h5gset_comment_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + !DEC$ATTRIBUTES reference :: comment + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + CHARACTER(LEN=*), INTENT(IN) :: comment + INTEGER :: commentlen + END FUNCTION h5gset_comment_c + END INTERFACE namelen = LEN(name) commentlen = LEN(comment) hdferr = h5gset_comment_c(loc_id, name, namelen, comment, commentlen) END SUBROUTINE h5gset_comment_f - !!!============================================================ +!---------------------------------------------------------------------- +! Name: h5gget_comment_f +! +! Purpose: Retrieves comment for specified object. +! +! Inputs: +! loc_id - location identifier +! name - name of the object at specified location +! size - size of the buffer required to hold comment +! Outputs: +! buffer - buffer to hold object's comment +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5gget_comment_f(loc_id, name, size, buffer, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5gget_comment_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier @@ -223,12 +740,30 @@ INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: namelen ! Lenghth of the current_name string - INTEGER, EXTERNAL :: h5gget_comment_c + +! INTEGER, EXTERNAL :: h5gget_comment_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5gget_comment_c(loc_id, name, namelen, & + size, buffer) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5GGET_COMMENT_C'::h5gget_comment_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + !DEC$ATTRIBUTES reference :: buffer + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(SIZE_T), INTENT(IN) :: size + CHARACTER(LEN=*), INTENT(OUT) :: buffer + END FUNCTION h5gget_comment_c + END INTERFACE namelen = LEN(name) hdferr = h5gget_comment_c(loc_id, name, namelen, size, buffer) END SUBROUTINE h5gget_comment_f - !!!============================================================ END MODULE H5G diff --git a/fortran/src/H5Git.c b/fortran/src/H5Git.c index c18c3d3..4ffd8c8 100644 --- a/fortran/src/H5Git.c +++ b/fortran/src/H5Git.c @@ -7,7 +7,6 @@ #include "hdf5.h" #include "H5Git.h" - #define FALSE 0 herr_t count_elems(hid_t loc_id, const char *name, void *opdata); diff --git a/fortran/src/H5Iff.f90 b/fortran/src/H5Iff.f90 index cd50da3..f0ac299 100644 --- a/fortran/src/H5Iff.f90 +++ b/fortran/src/H5Iff.f90 @@ -3,25 +3,73 @@ ! MODULE H5I - USE H5FORTRAN_TYPES - USE H5FORTRAN_FLAGS + USE H5GLOBAL CONTAINS +!---------------------------------------------------------------------- +! Name: h5iget_type_f +! +! Purpose: Retrieves the type of an object. +! +! Inputs: obj_id - object identifier +! Outputs: +! type - type of the object, possible values: +! H5I_FILE_F +! H5I_GROUP_F +! H5I_DATATYPE_F +! H5I_DATASPACE_F +! H5I_DATASET_F +! H5I_ATTR_F +! H5I_BADID_F +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 5, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5iget_type_f(obj_id, type, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5iget_type_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: obj_id !Object identifier INTEGER, INTENT(OUT) :: type !type of an object. !possible values are: - !H5I_FILE_F(1) - !H5I_GROUP_F(2) - !H5I_DATATYPE_F(3) - !H5I_DATASPACE_F(4) - !H5I_DATASET_F(5) - !H5I_ATTR_F(6) - !H5I_BADID_F(-1) + !H5I_FILE_F + !H5I_GROUP_F + !H5I_DATATYPE_F + !H5I_DATASPACE_F + !H5I_DATASET_F + !H5I_ATTR_F + !H5I_BADID_F INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5iget_type_c + +! INTEGER, EXTERNAL :: h5iget_type_c +! Interface is needed for MS FORTRAN +! + INTERFACE + INTEGER FUNCTION h5iget_type_c(obj_id, type) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5IGET_TYPE_C':: h5iget_type_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: obj_id + INTEGER, INTENT(OUT) :: type + END FUNCTION h5iget_type_c + END INTERFACE hdferr = h5iget_type_c(obj_id, type) END SUBROUTINE h5iget_type_f diff --git a/fortran/src/H5Pf.c b/fortran/src/H5Pf.c index d145427..785157e 100644 --- a/fortran/src/H5Pf.c +++ b/fortran/src/H5Pf.c @@ -739,12 +739,12 @@ nh5pget_istore_k_c (hid_t_f *prp_id, int_f* ik) * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5pget_driver_c (hid_t_f *prp_id, int_f* driver) +nh5pget_driver_c (hid_t_f *prp_id, hid_t_f* driver) { int ret_value = -1; /* hid_t c_prp_id; - H5F_driver_t c_driver; + hid_t c_driver; */ /* @@ -753,7 +753,7 @@ nh5pget_driver_c (hid_t_f *prp_id, int_f* driver) /* c_prp_id = *prp_id; c_driver = H5Pget_driver(c_prp_id); - *driver = (int_f) c_driver; + *driver = (hid_t_f) c_driver; if (c_driver < 0) return ret_value; */ ret_value = 0; @@ -761,114 +761,118 @@ nh5pget_driver_c (hid_t_f *prp_id, int_f* driver) } /*---------------------------------------------------------------------------- - * Name: h5pset_stdio_c + * Name: h5pset_fapl_stdio_c * Purpose: Call H5Pset_stdio to set the low level file driver to * use the functions declared in the stdio.h * Inputs: prp_id - property list identifier * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Friday, February 25, 2000 + * Programmer: Elena Pourmal + * March 7, 2001 * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5pset_stdio_c (hid_t_f *prp_id) +nh5pset_fapl_stdio_c (hid_t_f *prp_id) { int ret_value = -1; hid_t c_prp_id; herr_t ret = -1; /* - * Call H5Pset_stdio function. + * Call H5Pset_fapl_stdio function. */ c_prp_id = *prp_id; - /* ret = H5Pset_stdio(c_prp_id); */ + ret = H5Pset_fapl_stdio(c_prp_id); if (ret < 0) return ret_value; ret_value = 0; return ret_value; } - +#ifdef NO_SUCH_F90_FUNCTION /*---------------------------------------------------------------------------- - * Name: h5pget_stdio_c - * Purpose: Call H5Pget_stdio to determine whther the low level file driver + * Name: h5pget_fapl_stdio_c + * Purpose: Call H5Pget_fapl_stdio to determine whther the low level file driver * uses the functions declared in the stdio.h * Inputs: prp_id - property list identifier * Outputs: io - value indicates whether the file driver uses * the functions declared in the stdio.h * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Friday, February 25, 2000 + * Programmer: Elena Pourmal + * March 9, 2001 * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5pget_stdio_c (hid_t_f *prp_id, int_f* io) +nh5pget_fapl_stdio_c (hid_t_f *prp_id, int_f* io) { int ret_value = -1; hid_t c_prp_id; herr_t ret = -1; /* - * Call H5Pget_stdio function. + * Call H5Pget_fapl_stdio function. */ c_prp_id = *prp_id; - /* ret = H5Pget_stdio(c_prp_id); */ + ret = H5Pget_fapl_stdio(c_prp_id); if (ret < 0) return ret_value; *io = (int_f)ret; ret_value = 0; return ret_value; } +#endif /*NO_SUCH_F90_FUNCTION*/ + /*---------------------------------------------------------------------------- - * Name: h5pset_sec2_c - * Purpose: Call H5Pset_sec2 to set the low level file driver to + * Name: h5pset_fapl_sec2_c + * Purpose: Call H5Pset_fapl_sec2 to set the low level file driver to * use the functions declared in the unistd.h * Inputs: prp_id - property list identifier * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Friday, February 25, 2000 + * Programmer: Elena Pourmal + * March 9, 2001 * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5pset_sec2_c (hid_t_f *prp_id) +nh5pset_fapl_sec2_c (hid_t_f *prp_id) { int ret_value = -1; hid_t c_prp_id; herr_t ret = -1; /* - * Call H5Pset_sec2 function. + * Call H5Pset_fapl_sec2 function. */ c_prp_id = *prp_id; - /* ret = H5Pset_sec2(c_prp_id); */ + ret = H5Pset_fapl_sec2(c_prp_id); if (ret < 0) return ret_value; ret_value = 0; return ret_value; } +#ifdef NO_SUCH_F90_FUNCTION /*---------------------------------------------------------------------------- - * Name: h5pget_sec2_c - * Purpose: Call H5Pget_stdio to determine whther the low level file driver + * Name: h5pget_fapl_sec2_c + * Purpose: Call H5Pget_fapl_stdio to determine whther the low level file driver * uses the functions declared in the unistd.h * Inputs: prp_id - property list identifier * Outputs: sec2 - value indicates whether the file driver uses * the functions declared in the unistd.h * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Friday, February 25, 2000 + * Programmer: Elena Pourmal + * March 9, 2001 * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5pget_sec2_c (hid_t_f *prp_id, int_f* sec2) +nh5pget_fapl_sec2_c (hid_t_f *prp_id, int_f* sec2) { int ret_value = -1; hid_t c_prp_id; herr_t ret = -1; /* - * Call H5Pget_sec2 function. + * Call H5Pget_fapl_sec2 function. */ c_prp_id = *prp_id; - /* ret = H5Pget_sec2(c_prp_id); */ + ret = H5Pget_fapl_sec2(c_prp_id); if (ret < 0) return ret_value; *sec2 = (int_f)ret; ret_value = 0; return ret_value; } +#endif /*NO_SUCH_F90_FUNCTION*/ /*---------------------------------------------------------------------------- * Name: h5pset_alignment_c @@ -889,12 +893,12 @@ nh5pset_alignment_c (hid_t_f *prp_id, hsize_t_f* threshold, hsize_t_f* alignment hid_t c_prp_id; herr_t ret; hsize_t c_threshold, c_alignment; - c_threshold = *threshold; - c_alignment = * alignment; + c_threshold = (hsize_t)*threshold; + c_alignment = (hsize_t)* alignment; /* * Call H5Pset_alignment function. */ - c_prp_id = *prp_id; + c_prp_id = (hid_t)*prp_id; ret = H5Pset_alignment(c_prp_id, c_threshold, c_alignment); if (ret < 0) return ret_value; ret_value = 0; @@ -923,7 +927,7 @@ nh5pget_alignment_c (hid_t_f *prp_id, hsize_t_f* threshold, hsize_t_f* alignment /* * Call H5Pget_alignment function. */ - c_prp_id = *prp_id; + c_prp_id = (hid_t)*prp_id; ret = H5Pget_alignment(c_prp_id, &c_threshold, &c_alignment); if (ret < 0) return ret_value; *threshold = (hsize_t_f)c_threshold; @@ -934,78 +938,86 @@ nh5pget_alignment_c (hid_t_f *prp_id, hsize_t_f* threshold, hsize_t_f* alignment } /*---------------------------------------------------------------------------- - * Name: h5pset_core_c - * Purpose: Call H5Pset_core to set the low-level file driver + * Name: h5pset_fapl_core_c + * Purpose: Call H5Pset_fapl_core to set the low-level file driver * to use malloc() and free() * Inputs: prp_id - property list identifier * increment - File block size in bytes + * flag - Boolean flag indicating whether to write the + * file contents to disk when the file is closed. * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Friday, February 25, 2000 + * Programmer: Elena Pourmal + * March 9, 2001 * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5pset_core_c (hid_t_f *prp_id, size_t_f* increment) +nh5pset_fapl_core_c (hid_t_f *prp_id, size_t_f* increment, int_f *flag) { int ret_value = -1; hid_t c_prp_id; herr_t ret = -1; size_t c_increment; + hbool_t c_backing_store; c_increment = (size_t)*increment; + c_backing_store = (hbool_t)*flag; + /* - * Call H5Pset_core function. + * Call H5Pset_fapl_core function. */ c_prp_id = *prp_id; - /* ret = H5Pset_core(c_prp_id, c_increment); */ + ret = H5Pset_fapl_core(c_prp_id, c_increment, c_backing_store); if (ret < 0) return ret_value; ret_value = 0; return ret_value; } /*---------------------------------------------------------------------------- - * Name: h5pget_core_c - * Purpose: Call H5Pget_core to determine whether the file access + * Name: h5pget_fapl_core_c + * Purpose: Call H5Pget_fapl_core to determine whether the file access * property list is set to the core drive * Inputs: prp_id - property list identifier * Outputs increment - File block size in bytes * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Friday, February 25, 2000 + * Programmer: Elena Pourmal + * March 9, 2001 * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5pget_core_c (hid_t_f *prp_id, size_t_f* increment) +nh5pget_fapl_core_c (hid_t_f *prp_id, size_t_f* increment, int_f *flag) { int ret_value = -1; hid_t c_prp_id; herr_t ret = -1; size_t c_increment = 0; + hbool_t c_backing_store; + *flag = 0; /* - * Call H5Pset_increment function. + * Call H5Pset_fapl_core function. */ c_prp_id = *prp_id; - /* ret = H5Pget_core(c_prp_id, &c_increment); */ + ret = H5Pget_fapl_core(c_prp_id, &c_increment, &c_backing_store); if (ret < 0) return ret_value; *increment = (size_t_f)c_increment; + if(c_backing_store > 0) *flag = 1; ret_value = 0; return ret_value; } /*---------------------------------------------------------------------------- - * Name: h5pset_family_c - * Purpose: Call H5Pset_family to set the file access properties list + * Name: h5pset_fapl_family_c + * Purpose: Call H5Pset_fapl_family to set the file access properties list * to the family driver * Inputs: prp_id - property list identifier * memb_size - Logical size, in bytes, of each family member. * memb_plist - Identifier of the file access property list * for each member of the family * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Friday, February 25, 2000 + * Programmer: Elena Pourmal + * March 9, 2001 * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5pset_family_c(hid_t_f *prp_id, hsize_t_f* memb_size, hid_t_f* memb_plist ) +nh5pset_fapl_family_c(hid_t_f *prp_id, hsize_t_f* memb_size, hid_t_f* memb_plist ) { int ret_value = -1; hid_t c_prp_id; @@ -1013,32 +1025,32 @@ nh5pset_family_c(hid_t_f *prp_id, hsize_t_f* memb_size, hid_t_f* memb_plist ) hsize_t c_memb_size; hid_t c_memb_plist; c_memb_size =(hsize_t) *memb_size; - c_memb_plist =(hsize_t) *memb_plist; + c_memb_plist =(hid_t) *memb_plist; /* - * Call H5Pset_family function. + * Call H5Pset_fapl_family function. */ c_prp_id = *prp_id; - /* ret = H5Pset_family(c_prp_id, c_memb_size, c_memb_plist); */ + ret = H5Pset_fapl_family(c_prp_id, c_memb_size, c_memb_plist); if (ret < 0) return ret_value; ret_value = 0; return ret_value; } /*---------------------------------------------------------------------------- - * Name: h5pget_family_c - * Purpose: Call H5Pget_family to determine whether the file access + * Name: h5pget_fapl_family_c + * Purpose: Call H5Pget_fapl_family to determine whether the file access * property list is set to the family driver * Inputs: prp_id - property list identifier * memb_size - Logical size, in bytes, of each family member. * memb_plist - Identifier of the file access property list * for each member of the family * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Friday, February 25, 2000 + * Programmer: Elena Pourmal + * March 9, 2001 * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5pget_family_c(hid_t_f *prp_id, hsize_t_f* memb_size, hid_t_f* memb_plist) +nh5pget_fapl_family_c(hid_t_f *prp_id, hsize_t_f* memb_size, hid_t_f* memb_plist) { int ret_value = -1; hid_t c_prp_id; @@ -1046,13 +1058,13 @@ nh5pget_family_c(hid_t_f *prp_id, hsize_t_f* memb_size, hid_t_f* memb_plist) hsize_t c_memb_size = 0; hid_t c_memb_plist = -1; /* - * Call H5Pget_family function. + * Call H5Pget_fapl_family function. */ c_prp_id = *prp_id; - /* ret = H5Pget_family(c_prp_id, &c_memb_size, &c_memb_plist); */ + ret = H5Pget_fapl_family(c_prp_id, &c_memb_size, &c_memb_plist); if (ret < 0) return ret_value; *memb_size = (hsize_t_f)c_memb_size; - *memb_plist = (hsize_t_f)c_memb_plist; + *memb_plist = (hid_t_f)c_memb_plist; ret_value = 0; return ret_value; @@ -1141,8 +1153,8 @@ nh5pget_cache_c(hid_t_f *prp_id, int_f* mdc_nelmts, int_f* rdcc_nelmts, size_t_f } /*---------------------------------------------------------------------------- - * Name: h5pset_split_c - * Purpose: Call H5Pset_split to set he low-level driver to split meta data + * Name: h5pset_fapl_split_c + * Purpose: Call H5Pset_fapl_split to set he low-level driver to split meta data * from raw data * Inputs: prp_id - property list identifier * meta_len - Length of meta_ext @@ -1152,12 +1164,12 @@ nh5pget_cache_c(hid_t_f *prp_id, int_f* mdc_nelmts, int_f* rdcc_nelmts, size_t_f * raw_ext - Name of the extension for the raw file filename. * raw_plist - Identifier of the raw file access property list * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Friday, February 25, 2000 + * Programmer: Elena Pourmal + * March 9, 2001 * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5pset_split_c(hid_t_f *prp_id, int_f* meta_len, _fcd meta_ext, hid_t_f* meta_plist, int_f* raw_len, _fcd raw_ext, hid_t_f * raw_plist) +nh5pset_fapl_split_c(hid_t_f *prp_id, int_f* meta_len, _fcd meta_ext, hid_t_f* meta_plist, int_f* raw_len, _fcd raw_ext, hid_t_f * raw_plist) { int ret_value = -1; hid_t c_prp_id; @@ -1172,21 +1184,22 @@ nh5pset_split_c(hid_t_f *prp_id, int_f* meta_len, _fcd meta_ext, hid_t_f* meta_p if (c_raw_ext == NULL) return ret_value; /* - * Call H5Pset_split function. + * Call H5Pset_fapl_split function. */ c_prp_id = *prp_id; c_meta_plist = *meta_plist; c_raw_plist = *raw_plist; - /*ret = H5Pset_split(c_prp_id, c_meta_ext, c_meta_plist, c_raw_ext, c_raw_plist );*/ + ret = H5Pset_fapl_split(c_prp_id, c_meta_ext, c_meta_plist, c_raw_ext, c_raw_plist ); if (ret < 0) return ret_value; ret_value = 0; return ret_value; } +#ifdef NO_SUCH_F90_FUNCTION /*---------------------------------------------------------------------------- - * Name: h5pget_split_c - * Purpose: Call H5Pget_split to determine whether the file access + * Name: h5pget_fapl_split_c + * Purpose: Call H5Pget_fapl_split to determine whether the file access * property list is set to the split driver * Inputs: prp_id - property list identifier * meta_ext_size - Number of characters of the meta file extension @@ -1198,12 +1211,12 @@ nh5pset_split_c(hid_t_f *prp_id, int_f* meta_len, _fcd meta_ext, hid_t_f* meta_p * raw_ext - Name of the extension for the raw file filename. * raw_plist - Identifier of the raw file access property list * Returns: 0 on success, -1 on failure - * Programmer: Xiangyang Su - * Friday, February 25, 2000 + * Programmer: Elena Pourmal + * March 9 , 2001 * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5pget_split_c(hid_t_f *prp_id, size_t_f* meta_ext_size , _fcd meta_ext, hid_t_f* meta_plist, size_t_f* raw_ext_size, _fcd raw_ext, hid_t_f * raw_plist) +nh5pget_fapl_split_c(hid_t_f *prp_id, size_t_f* meta_ext_size , _fcd meta_ext, hid_t_f* meta_plist, size_t_f* raw_ext_size, _fcd raw_ext, hid_t_f * raw_plist) { int ret_value = -1; hid_t c_prp_id; @@ -1222,10 +1235,10 @@ nh5pget_split_c(hid_t_f *prp_id, size_t_f* meta_ext_size , _fcd meta_ext, hid_t_ if(c_meta_ext == NULL || c_raw_ext == NULL) return ret_value; /* - * Call H5Pget_split function. + * Call H5Pget_fapl_split function. */ c_prp_id = *prp_id; - /*ret = H5Pget_split(c_prp_id, c_meta_ext_size, c_meta_ext,&c_meta_plist, c_raw_ext_size, c_raw_ext, &c_raw_plist ); */ + ret = H5Pget_fapl_split(c_prp_id, c_meta_ext_size, c_meta_ext,&c_meta_plist, c_raw_ext_size, c_raw_ext, &c_raw_plist ); if (ret < 0) return ret_value; *meta_plist = c_meta_plist; @@ -1236,6 +1249,7 @@ nh5pget_split_c(hid_t_f *prp_id, size_t_f* meta_ext_size , _fcd meta_ext, hid_t_ ret_value = 0; return ret_value; } +#endif /*NO_SUCH_F90_FUNCTION*/ /*---------------------------------------------------------------------------- * Name: h5pset_gc_references_c diff --git a/fortran/src/H5Pff.f90 b/fortran/src/H5Pff.f90 index ec3414c..9661990 100644 --- a/fortran/src/H5Pff.f90 +++ b/fortran/src/H5Pff.f90 @@ -3,8 +3,7 @@ ! MODULE H5P - USE H5FORTRAN_TYPES - USE H5FORTRAN_FLAGS + USE H5GLOBAL INTERFACE h5pset_fill_value_f MODULE PROCEDURE h5pset_fill_value_integer @@ -26,85 +25,403 @@ CONTAINS +!---------------------------------------------------------------------- +! Name: h5pcreate_f +! +! Purpose: Creates a new property as an instance of a property +! list class. +! +! Inputs: +! classtype - type of the property list to be created. +! Possible values are: +! H5P_FILE_CREATE_F +! H5P_FILE_ACCESS_F +! H5P_DATASET_CREATE_F +! H5P_DATASET_XFER_F +! H5P_MOUNT_F +! Outputs: +! prp_id - property list identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5pcreate_f(classtype, prp_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pcreate_f +!DEC$endif +! IMPLICIT NONE INTEGER, INTENT(IN) :: classtype ! The type of the property list ! to be created. Possible values ! are: - ! H5P_FILE_CREATE_F (0) - ! H5P_FILE_ACCESS_F (1) - ! H5P_DATASET_CREATE_F (2) - ! H5P_DATASET_XFER_F (3) - ! H5P_MOUNT_F (4) + ! H5P_FILE_CREATE_F + ! H5P_FILE_ACCESS_F + ! H5P_DATASET_CREATE_F + ! H5P_DATASET_XFER_F + ! H5P_MOUNT_F INTEGER(HID_T), INTENT(OUT) :: prp_id ! Property list identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pcreate_c + +! INTEGER, EXTERNAL :: h5pcreate_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pcreate_c(classtype, prp_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PCREATE_C'::h5pcreate_c + !DEC$ ENDIF + INTEGER, INTENT(IN) :: classtype + INTEGER(HID_T), INTENT(OUT) :: prp_id + END FUNCTION h5pcreate_c + END INTERFACE + hdferr = h5pcreate_c(classtype, prp_id) END SUBROUTINE h5pcreate_f +!---------------------------------------------------------------------- +! Name: h5pset_preserve_f +! +! Purpose: Sets the dataset transfer property list status to +! TRUE or FALSE for initializing compound datatype +! members during write/read operations. +! +! Inputs: +! prp_id - property list identifier +! flag - status flag +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pset_preserve_f(prp_id, flag, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_preserve_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(IN) :: flag ! TRUE/FALSE flag to set the dataset ! transfer property for partila writing/reading ! compound datatype INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_preserve_c + +! INTEGER, EXTERNAL :: h5pset_preserve_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_preserve_c(prp_id, flag) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_PRESERVE_C'::h5pset_preserve_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: flag + END FUNCTION h5pset_preserve_c + END INTERFACE + hdferr = h5pset_preserve_c(prp_id, flag) END SUBROUTINE h5pset_preserve_f +!---------------------------------------------------------------------- +! Name: h5pget_preserve_f +! +! Purpose: Checks status of the dataset transfer property list. +! +! Inputs: +! prp_id - property list identifier +! Outputs: +! flag - status flag +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_preserve_f(prp_id, flag, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_preserve_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(OUT) :: flag ! TRUE/FALSE flag. Shows status of the dataset's ! transfer property for partial writing/reading ! compound datatype INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_preserve_c + +! INTEGER, EXTERNAL :: h5pget_preserve_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_preserve_c(prp_id, flag) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_PRESERVE_C'::h5pget_preserve_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: flag + END FUNCTION h5pget_preserve_c + END INTERFACE + hdferr = h5pget_preserve_c(prp_id, flag) END SUBROUTINE h5pget_preserve_f +!---------------------------------------------------------------------- +! Name: h5pget_class_f +! +! Purpose: Returns the property list class for a property list. +! +! Inputs: +! prp_id - property list identifier +! Outputs: +! classtype - property list class +! Possible values are: +! H5P_NO_CLASS +! H5P_FILE_CREATE_F +! H5P_FILE_ACCESS_F +! H5PE_DATASET_CREATE_F +! H5P_DATASET_XFER_F +! H5P_MOUNT_F +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_class_f(prp_id, classtype, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_class_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(OUT) :: classtype ! The type of the property list ! to be created. Possible values ! are: - ! H5P_NO_CLASS (-1) - ! H5P_FILE_CREATE_F (0) - ! H5P_FILE_ACCESS_F (1) - ! H5PE_DATASET_CREATE_F (2) - ! H5P_DATASET_XFER_F (3) - ! H5P_MOUNT_F (4) + ! H5P_NO_CLASS + ! H5P_FILE_CREATE_F + ! H5P_FILE_ACCESS_F + ! H5PE_DATASET_CREATE_F + ! H5P_DATASET_XFER_F + ! H5P_MOUNT_F INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_class_c + +! INTEGER, EXTERNAL :: h5pget_class_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_class_c(prp_id, classtype) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_CLASS_C'::h5pget_class_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: classtype + END FUNCTION h5pget_class_c + END INTERFACE + hdferr = h5pget_class_c(prp_id, classtype) END SUBROUTINE h5pget_class_f +!---------------------------------------------------------------------- +! Name: h5pcopy_f +! +! Purpose: Copies an existing property list to create a new +! property list +! +! Inputs: +! prp_id - property list identifier +! Outputs: +! new_prp_id - new property list identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pcopy_f(prp_id, new_prp_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pcopy_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(HID_T), INTENT(OUT) :: new_prp_id ! Identifier of property list ! copy INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pcopy_c + +! INTEGER, EXTERNAL :: h5pcopy_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pcopy_c(prp_id, new_prp_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PCOPY_C'::h5pcopy_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(OUT) :: new_prp_id + END FUNCTION h5pcopy_c + END INTERFACE + hdferr = h5pcopy_c(prp_id, new_prp_id) END SUBROUTINE h5pcopy_f +!---------------------------------------------------------------------- +! Name: h5pclose_f +! +! Purpose: Terminates access to a property list. +! +! Inputs: +! prp_id - identifier of the property list to +! terminate access to. +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pclose_f(prp_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pclose_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pclose_c + +! INTEGER, EXTERNAL :: h5pclose_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pclose_c(prp_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PCLOSE_C'::h5pclose_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + END FUNCTION h5pclose_c + END INTERFACE + hdferr = h5pclose_c(prp_id) END SUBROUTINE h5pclose_f +!---------------------------------------------------------------------- +! Name: h5pset_chunk_f +! +! Purpose: Sets the size of the chunks used to store +! a chunked layout dataset. +! +! Inputs: +! prp_id - datatset creation property list identifier +! ndims - number of dimensions for each chunk +! dims - array with dimension sizes for each chunk +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pset_chunk_f(prp_id, ndims, dims, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_chunk_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(IN) :: ndims ! Number of chunk dimensions @@ -112,12 +429,60 @@ ! Array containing sizes of ! chunk dimensions INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_chunk_c + +! INTEGER, EXTERNAL :: h5pset_chunk_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_chunk_c(prp_id, ndims, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_CHUNK_C'::h5pset_chunk_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: ndims + INTEGER(HSIZE_T), DIMENSION(ndims), INTENT(IN) :: dims + END FUNCTION h5pset_chunk_c + END INTERFACE + hdferr = h5pset_chunk_c(prp_id, ndims, dims) END SUBROUTINE h5pset_chunk_f +!---------------------------------------------------------------------- +! Name: h5pget_chunk_f +! +! Purpose: Retrieves the size of chunks for the raw data of a +! chunked layout dataset +! +! Inputs: +! prp_id - property list identifier +! ndims - size of dims array +! Outputs: +! dims - array with dimension sizes for each chunk +! hdferr: - error code +! Success: number of chunk dimensions +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_chunk_f(prp_id, ndims, dims, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_chunk_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(IN) :: ndims ! Number of chunk dimensions to @@ -128,23 +493,118 @@ INTEGER, INTENT(OUT) :: hdferr ! Error code; number of ! chunk dimensions on success, ! -1 on failure - INTEGER, EXTERNAL :: h5pget_chunk_c + +! INTEGER, EXTERNAL :: h5pget_chunk_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_chunk_c(prp_id, ndims, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_CHUNK_C'::h5pget_chunk_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER :: ndims + INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: dims + END FUNCTION h5pget_chunk_c + END INTERFACE + hdferr = h5pget_chunk_c(prp_id, ndims, dims) END SUBROUTINE h5pget_chunk_f +!---------------------------------------------------------------------- +! Name: h5pset_deflate_f +! +! Purpose: Sets compression method and compression level. +! +! Inputs: +! prp_id - property list identifier +! level - compression level +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pset_deflate_f(prp_id, level, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_deflate_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(IN) :: level ! Compression level INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_deflate_c + +! INTEGER, EXTERNAL :: h5pset_deflate_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_deflate_c(prp_id, level) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_DEFLATE_C'::h5pset_deflate_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: level + END FUNCTION h5pset_deflate_c + END INTERFACE hdferr = h5pset_deflate_c(prp_id, level) + END SUBROUTINE h5pset_deflate_f +!---------------------------------------------------------------------- +! Name: h5pset(get)fill_value_f +! +! Purpose: Sets(gets) fill value for a dataset creation property list +! +! Inputs: +! prp_id - dataset creation property list identifier +! type_id - datatype identifier for fill value +! fillvalue - fill value +! Outputs: +! ( type_id - datatype identifier for fill value ) +! ( fillvalue - fill value ) +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: h5pset(get)fill_value_f function is overloaded to support +! INTEGER, REAL, DOUBLE PRECISION and CHARACTER dtatypes. +!---------------------------------------------------------------------- + SUBROUTINE h5pset_fill_value_integer(prp_id, type_id, fillvalue, & hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_fill_value_integer +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of @@ -152,13 +612,34 @@ ! (in memory) INTEGER, INTENT(IN) :: fillvalue ! Fillvalue INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_fill_value_c + +! INTEGER, EXTERNAL :: h5pset_fill_value_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_fill_value_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FILL_VALUE_C'::h5pset_fill_value_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(IN) :: fillvalue + END FUNCTION h5pset_fill_value_c + END INTERFACE + hdferr = h5pset_fill_value_c(prp_id, type_id, fillvalue) END SUBROUTINE h5pset_fill_value_integer SUBROUTINE h5pget_fill_value_integer(prp_id, type_id, fillvalue, & hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_fill_value_integer +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of @@ -166,13 +647,34 @@ ! (in memory) INTEGER, INTENT(IN) :: fillvalue ! Fillvalue INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_fill_value_c + +! INTEGER, EXTERNAL :: h5pget_fill_value_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_fill_value_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_FILL_VALUE_C'::h5pget_fill_value_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER :: fillvalue + END FUNCTION h5pget_fill_value_c + END INTERFACE + hdferr = h5pget_fill_value_c(prp_id, type_id, fillvalue) END SUBROUTINE h5pget_fill_value_integer SUBROUTINE h5pset_fill_value_real(prp_id, type_id, fillvalue, & hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_fill_value_real +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of @@ -180,13 +682,34 @@ ! (in memory) REAL, INTENT(IN) :: fillvalue ! Fillvalue INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_fill_value_c + +! INTEGER, EXTERNAL :: h5pset_fill_value_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_fill_value_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FILL_VALUE_C'::h5pset_fill_value_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(IN) :: type_id + REAL, INTENT(IN) :: fillvalue + END FUNCTION h5pset_fill_value_c + END INTERFACE + hdferr = h5pset_fill_value_c(prp_id, type_id, fillvalue) END SUBROUTINE h5pset_fill_value_real SUBROUTINE h5pget_fill_value_real(prp_id, type_id, fillvalue, & hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_fill_value_real +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of @@ -194,13 +717,34 @@ ! (in memory) REAL, INTENT(IN) :: fillvalue ! Fillvalue INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_fill_value_c + +! INTEGER, EXTERNAL :: h5pget_fill_value_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_fill_value_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_FILL_VALUE_C'::h5pget_fill_value_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(IN) :: type_id + REAL :: fillvalue + END FUNCTION h5pget_fill_value_c + END INTERFACE + hdferr = h5pget_fill_value_c(prp_id, type_id, fillvalue) END SUBROUTINE h5pget_fill_value_real SUBROUTINE h5pset_fill_value_double(prp_id, type_id, fillvalue, & hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_fill_value_double +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of @@ -208,13 +752,34 @@ ! (in memory) DOUBLE PRECISION, INTENT(IN) :: fillvalue ! Fillvalue INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_fill_value_c + +! INTEGER, EXTERNAL :: h5pset_fill_value_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_fill_value_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FILL_VALUE_C'::h5pset_fill_value_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(IN) :: type_id + DOUBLE PRECISION, INTENT(IN) :: fillvalue + END FUNCTION h5pset_fill_value_c + END INTERFACE + hdferr = h5pset_fill_value_c(prp_id, type_id, fillvalue) END SUBROUTINE h5pset_fill_value_double SUBROUTINE h5pget_fill_value_double(prp_id, type_id, fillvalue, & hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_fill_value_double +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of @@ -222,13 +787,33 @@ ! (in memory) DOUBLE PRECISION, INTENT(IN) :: fillvalue ! Fillvalue INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_fill_value_c + +! INTEGER, EXTERNAL :: h5pget_fill_value_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_fill_value_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_FILL_VALUE_C'::h5pget_fill_value_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(IN) :: type_id + DOUBLE PRECISION :: fillvalue + END FUNCTION h5pget_fill_value_c + END INTERFACE + hdferr = h5pget_fill_value_c(prp_id, type_id, fillvalue) END SUBROUTINE h5pget_fill_value_double - SUBROUTINE h5pset_fill_value_char(prp_id, type_id, fillvalue, & hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_fill_value_char +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of @@ -236,13 +821,34 @@ ! (in memory) CHARACTER, INTENT(IN) :: fillvalue ! Fillvalue INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_fill_valuec_c + +! INTEGER, EXTERNAL :: h5pset_fill_valuec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_fill_valuec_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FILL_VALUEC_C'::h5pset_fill_valuec_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: fillvalue + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(IN) :: type_id + CHARACTER, INTENT(IN) :: fillvalue + END FUNCTION h5pset_fill_valuec_c + END INTERFACE + hdferr = h5pset_fill_valuec_c(prp_id, type_id, fillvalue) END SUBROUTINE h5pset_fill_value_char - SUBROUTINE h5pget_fill_value_char(prp_id, type_id, fillvalue, & hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_fill_value_char +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of @@ -250,12 +856,63 @@ ! (in memory) CHARACTER, INTENT(IN) :: fillvalue ! Fillvalue INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_fill_valuec_c + +! INTEGER, EXTERNAL :: h5pget_fill_valuec_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_fill_valuec_c(prp_id, type_id, fillvalue) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_FILL_VALUEC_C'::h5pget_fill_valuec_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: fillvalue + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(IN) :: type_id + CHARACTER :: fillvalue + END FUNCTION h5pget_fill_valuec_c + END INTERFACE + hdferr = h5pget_fill_valuec_c(prp_id, type_id, fillvalue) END SUBROUTINE h5pget_fill_value_char +!---------------------------------------------------------------------- +! Name: h5pget_version_f +! +! Purpose: Retrieves the version information of various objects +! for a file creation property list +! +! Inputs: +! prp_id - file createion property list identifier +! Outputs: +! boot - super block version number +! freelist - global freelist version number +! stab - symbol table version number +! shhdr - shared object header version number +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_version_f(prp_id, boot, freelist, & stab, shhdr, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_version_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier @@ -269,32 +926,170 @@ INTEGER, DIMENSION(:), INTENT(OUT) :: shhdr !array to put shared !object header version number INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_version_c + +! INTEGER, EXTERNAL :: h5pget_version_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_version_c(prp_id, boot, freelist, stab, shhdr) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_VERSION_C'::h5pget_version_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, DIMENSION(:), INTENT(OUT) :: boot + INTEGER, DIMENSION(:), INTENT(OUT) :: freelist + INTEGER, DIMENSION(:), INTENT(OUT) :: stab + INTEGER, DIMENSION(:), INTENT(OUT) :: shhdr + END FUNCTION h5pget_version_c + END INTERFACE + hdferr = h5pget_version_c(prp_id, boot, freelist, stab, shhdr) END SUBROUTINE h5pget_version_f + +!---------------------------------------------------------------------- +! Name: h5pset_userblock_f +! +! Purpose: Sets user block size +! +! Inputs: +! prp_id - file creation property list to modify +! size - size of the user-block in bytes +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5pset_userblock_f (prp_id, size, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_userblock_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(HSIZE_T), INTENT(IN) :: size !Size of the user-block in bytes INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_userblock_c + +! INTEGER, EXTERNAL :: h5pset_userblock_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_userblock_c(prp_id, size) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_USERBLOCK_C'::h5pset_userblock_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HSIZE_T), INTENT(IN) :: size + END FUNCTION h5pset_userblock_c + END INTERFACE + hdferr = h5pset_userblock_c(prp_id, size) END SUBROUTINE h5pset_userblock_f +!---------------------------------------------------------------------- +! Name: h5pget_userblock_f +! +! Purpose: Gets user block size. +! +! Inputs: +! prp_id - file creation property list identifier +! Outputs: +! block_size - size of the user block in bytes +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_userblock_f(prp_id, block_size, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_userblock_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(HSIZE_T), DIMENSION(:), INTENT(OUT) :: block_size !Size of the + INTEGER(HSIZE_T), INTENT(OUT) :: block_size !Size of the !user-block in bytes INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_userblock_c - INTEGER :: len + +! INTEGER, EXTERNAL :: h5pget_userblock_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_userblock_c(prp_id, block_size) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_USERBLOCK_C'::h5pget_userblock_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HSIZE_T), INTENT(OUT) :: block_size + END FUNCTION h5pget_userblock_c + END INTERFACE hdferr = h5pget_userblock_c(prp_id, block_size) END SUBROUTINE h5pget_userblock_f +!---------------------------------------------------------------------- +! Name: h5pset_sizes_f +! +! Purpose: Sets the byte size of the offsets and lengths used +! to address objects in an HDF5 file. +! +! Inputs: +! prp_id - file creation property list identifier +! sizeof_addr - size of an object offset in bytes +! sizeof_size - size of an object length in bytes +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pset_sizes_f (prp_id, sizeof_addr, sizeof_size, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_sizes_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(SIZE_T), INTENT(IN) :: sizeof_addr !Size of an object @@ -302,152 +1097,816 @@ INTEGER(SIZE_T), INTENT(IN) :: sizeof_size !Size of an object !length in bytes INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_sizes_c + +! INTEGER, EXTERNAL :: h5pset_sizes_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_sizes_c(prp_id, sizeof_addr, sizeof_size) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_SIZES_C'::h5pset_sizes_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(SIZE_T), INTENT(IN) :: sizeof_addr + INTEGER(SIZE_T), INTENT(IN) :: sizeof_size + END FUNCTION h5pset_sizes_c + END INTERFACE + hdferr = h5pset_sizes_c(prp_id, sizeof_addr, sizeof_size) END SUBROUTINE h5pset_sizes_f +!---------------------------------------------------------------------- +! Name: h5pget_sizes_f +! +! Purpose: Retrieves the size of the offsets and lengths used +! in an HDF5 file +! +! Inputs: +! prp_id - file creation property list identifier +! Outputs: +! sizeof_addr - size of an object offset in bytes +! sizeof_size - size of an object length in bytes +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_sizes_f(prp_id, sizeof_addr, sizeof_size, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_sizes_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(SIZE_T), DIMENSION(:), INTENT(OUT) :: sizeof_addr !Size of an object + INTEGER(SIZE_T), INTENT(OUT) :: sizeof_addr !Size of an object !offset in bytes - INTEGER(SIZE_T), DIMENSION(:), INTENT(OUT) :: sizeof_size !Size of an object + INTEGER(SIZE_T), INTENT(OUT) :: sizeof_size !Size of an object !length in bytes INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_sizes_c + +! INTEGER, EXTERNAL :: h5pget_sizes_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_sizes_c(prp_id, sizeof_addr, sizeof_size) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_SIZES_C'::h5pget_sizes_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(SIZE_T), INTENT(OUT) :: sizeof_addr + INTEGER(SIZE_T), INTENT(OUT) :: sizeof_size + END FUNCTION h5pget_sizes_c + END INTERFACE + hdferr = h5pget_sizes_c(prp_id, sizeof_addr, sizeof_size) END SUBROUTINE h5pget_sizes_f +!---------------------------------------------------------------------- +! Name: h5pset_sym_k_f +! +! Purpose: Sets the size of parameters used to control the +! symbol table nodes +! +! Inputs: +! prp_id - file creation property list identifier +! ik - symbol table tree rank +! lk - symbol table node size +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pset_sym_k_f (prp_id, ik, lk, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_sym_k_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(IN) :: ik ! Symbol table tree rank INTEGER, INTENT(IN) :: lk ! Symbol table node size INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_sym_k_c + +! INTEGER, EXTERNAL :: h5pset_sym_k_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_sym_k_c(prp_id, ik, lk) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_SYM_K_C'::h5pset_sym_k_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: ik + INTEGER, INTENT(IN) :: lk + END FUNCTION h5pset_sym_k_c + END INTERFACE + hdferr = h5pset_sym_k_c(prp_id, ik, lk) END SUBROUTINE h5pset_sym_k_f +!---------------------------------------------------------------------- +! Name: h5pget_sym_k_f +! +! Purpose: Retrieves the size of the symbol table B-tree 1/2 rank +! and the symbol table leaf node 1/2 size. +! +! Inputs: +! prp_id - file creation property list identifier +! Outputs: +! ik - symbol table tree 1/2 rank +! lk - symbol table node 1/2 size +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_sym_k_f(prp_id, ik, lk, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_sym_k_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(OUT) :: ik !Symbol table tree rank INTEGER, INTENT(OUT) :: lk !Symbol table node size INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_sym_k_c + +! INTEGER, EXTERNAL :: h5pget_sym_k_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_sym_k_c(prp_id, ik, lk) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_SYM_K_C'::h5pget_sym_k_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: ik + INTEGER, INTENT(OUT) :: lk + END FUNCTION h5pget_sym_k_c + END INTERFACE + hdferr = h5pget_sym_k_c(prp_id, ik, lk) END SUBROUTINE h5pget_sym_k_f +!---------------------------------------------------------------------- +! Name: h5pset_istore_k_f +! +! Purpose: Sets the size of the parameter used to control the +! B-trees for indexing chunked datasets +! +! Inputs: +! prp_id - file creation property list identifier +! ik - 1/2 rank of chunked storage B-tree +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pset_istore_k_f (prp_id, ik, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_istore_k_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(IN) :: ik ! 1/2 rank of chunked storage B-tree INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_istore_k_c + +! INTEGER, EXTERNAL :: h5pset_istore_k_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_istore_k_c(prp_id, ik) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_ISTORE_K_C'::h5pset_istore_k_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: ik + END FUNCTION h5pset_istore_k_c + END INTERFACE + hdferr = h5pset_istore_k_c(prp_id, ik) END SUBROUTINE h5pset_istore_k_f +!---------------------------------------------------------------------- +! Name: h5pget_istore_k_f +! +! Purpose: Queries the 1/2 rank of an indexed storage B-tree. +! +! Inputs: +! prp_id - file creation property list identifier +! Outputs: +! ik - 1/2 rank of chunked storage B-tree +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_istore_k_f(prp_id, ik, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_istore_k_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(OUT) :: ik !1/2 rank of chunked storage B-tree INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_istore_k_c + +! INTEGER, EXTERNAL :: h5pget_istore_k_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_istore_k_c(prp_id, ik) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_ISTORE_K_C'::h5pget_istore_k_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: ik + END FUNCTION h5pget_istore_k_c + END INTERFACE + hdferr = h5pget_istore_k_c(prp_id, ik) END SUBROUTINE h5pget_istore_k_f +!---------------------------------------------------------------------- +! Name: h5pget_driver_f +! +! Purpose: Returns low-lever driver identifier. +! +! Inputs: +! prp_id - file access or data transfer property +! list identifier. +! Outputs: +! driver - low-level driver identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_driver_f(prp_id, driver, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_driver_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: driver !low-level file driver identifier + INTEGER(HID_T), INTENT(OUT) :: driver !low-level file driver identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_driver_c + +! INTEGER, EXTERNAL :: h5pget_driver_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_driver_c(prp_id, driver) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_DRIVER_C'::h5pget_driver_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HID_T), INTENT(OUT) :: driver + END FUNCTION h5pget_driver_c + END INTERFACE + hdferr = h5pget_driver_c(prp_id, driver) END SUBROUTINE h5pget_driver_f - SUBROUTINE h5pset_stdio_f (prp_id, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_stdio_c - hdferr = h5pset_stdio_c(prp_id) - END SUBROUTINE h5pset_stdio_f +!---------------------------------------------------------------------- +! Name: h5pset_fapl_stdio_f +! +! Purpose: Sets the standard I/O driver. +! +! Inputs: +! prp_id - file access property list identifier +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- - SUBROUTINE h5pget_stdio_f (prp_id, io, hdferr) + SUBROUTINE h5pset_fapl_stdio_f (prp_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_fapl_stdio_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: io ! value indicates that the file + INTEGER, INTENT(OUT) :: hdferr ! Error code + +! INTEGER, EXTERNAL :: h5pset_fapl_stdio_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_fapl_stdio_c(prp_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FAPL_STDIO_C'::h5pset_fapl_stdio_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + END FUNCTION h5pset_fapl_stdio_c + END INTERFACE + + hdferr = h5pset_fapl_stdio_c(prp_id) + END SUBROUTINE h5pset_fapl_stdio_f + +!---------------------------------------------------------------------- +! Name: h5pget_stdio_f +! +! Purpose: NOT AVAILABLE +! +! Inputs: +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + +! SUBROUTINE h5pget_stdio_f (prp_id, io, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_stdio_f +!DEC$endif +! +! IMPLICIT NONE +! INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier +! INTEGER, INTENT(OUT) :: io ! value indicates that the file !access property list is set to !the stdio driver - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_stdio_c - hdferr = h5pget_stdio_c(prp_id, io) - END SUBROUTINE h5pget_stdio_f +! INTEGER, INTENT(OUT) :: hdferr ! Error code +! INTEGER, EXTERNAL :: h5pget_stdio_c +! hdferr = h5pget_stdio_c(prp_id, io) +! END SUBROUTINE h5pget_stdio_f + +!---------------------------------------------------------------------- +! Name: h5pset_fapl_sec2_f +! +! Purpose: Sets the sec2 driver. +! +! Inputs: +! prp_id - file access property list identifier +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- - SUBROUTINE h5pset_sec2_f (prp_id, hdferr) + SUBROUTINE h5pset_fapl_sec2_f (prp_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_fapl_sec2_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_sec2_c - hdferr = h5pset_sec2_c(prp_id) - END SUBROUTINE h5pset_sec2_f - SUBROUTINE h5pget_sec2_f (prp_id, sec2, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER, INTENT(OUT) :: sec2 ! value indicates whether the file +! INTEGER, EXTERNAL :: h5pset_fapl_sec2_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_fapl_sec2_c(prp_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FAPL_SEC2_C'::h5pset_fapl_sec2_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + END FUNCTION h5pset_fapl_sec2_c + END INTERFACE + + hdferr = h5pset_fapl_sec2_c(prp_id) + END SUBROUTINE h5pset_fapl_sec2_f + +!---------------------------------------------------------------------- +! Name: h5pget_sec2_f +! +! Purpose: NOT AVAILABLE +! +! Inputs: +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + +! SUBROUTINE h5pget_sec2_f (prp_id, sec2, hdferr) +! IMPLICIT NONE +! INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier +! INTEGER, INTENT(OUT) :: sec2 ! value indicates whether the file !driver uses the functions declared !in the unistd.h file - INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_sec2_c - hdferr = h5pget_sec2_c(prp_id, sec2) - END SUBROUTINE h5pget_sec2_f +! INTEGER, INTENT(OUT) :: hdferr ! Error code +! INTEGER, EXTERNAL :: h5pget_sec2_c +! hdferr = h5pget_sec2_c(prp_id, sec2) +! END SUBROUTINE h5pget_sec2_f + +!---------------------------------------------------------------------- +! Name: h5pset_alignment_f +! +! Purpose: Sets alignment properties of a file access property list. +! +! Inputs: +! prp_id - file access property list identifier +! threshold - threshold value +! alignment - alignment value +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5pset_alignment_f(prp_id, threshold, alignment, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_alignment_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(HSIZE_T), INTENT(IN) :: threshold ! Threshold value INTEGER(HSIZE_T), INTENT(IN) :: alignment ! alignment value INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_alignment_c + +! INTEGER, EXTERNAL :: h5pset_alignment_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_alignment_c(prp_id, threshold, alignment) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_ALIGNMENT_C'::h5pset_alignment_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HSIZE_T), INTENT(IN) :: threshold + INTEGER(HSIZE_T), INTENT(IN) :: alignment + END FUNCTION h5pset_alignment_c + END INTERFACE + hdferr = h5pset_alignment_c(prp_id, threshold, alignment) END SUBROUTINE h5pset_alignment_f +!---------------------------------------------------------------------- +! Name: h5pget_alignment_f +! +! Purpose: Retrieves the current settings for alignment +! properties from a file access property list. +! +! Inputs: +! prp_id - file access property list identifier +! Outputs: +! threshold - threshold value +! alignment - alignment value +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_alignment_f(prp_id, threshold, alignment, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_alignment_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(HSIZE_T), INTENT(OUT) :: threshold ! Threshold value INTEGER(HSIZE_T), INTENT(OUT) :: alignment ! alignment value INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_alignment_c + +! INTEGER, EXTERNAL :: h5pget_alignment_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_alignment_c(prp_id, threshold, alignment) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_ALIGNMENT_C'::h5pget_alignment_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HSIZE_T), INTENT(OUT) :: threshold + INTEGER(HSIZE_T), INTENT(OUT) :: alignment + END FUNCTION h5pget_alignment_c + END INTERFACE + hdferr = h5pget_alignment_c(prp_id, threshold, alignment) END SUBROUTINE h5pget_alignment_f - SUBROUTINE h5pset_core_f(prp_id, increment, hdferr) +!---------------------------------------------------------------------- +! Name: h5pset_fapl_core_f +! +! Purpose: Modifies the file access property list to use the +! H5FD_CORE driver. +! +! Inputs: prp_id - file access property list identifier +! increment - size, in bytes, of memory increments +! backing_store - boolean flag indicating whether to write +! the file contents to disk when the file is closed. +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + + SUBROUTINE h5pset_fapl_core_f(prp_id, increment, backing_store, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_fapl_core_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(SIZE_T), INTENT(IN) :: increment ! File block size in bytes. + INTEGER, INTENT(IN) :: backing_store ! flag to indicate that + ! entire file contents are flushed to a file + ! with the same name as this core file. INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_core_c - hdferr = h5pset_core_c(prp_id, increment) - END SUBROUTINE h5pset_core_f - SUBROUTINE h5pget_core_f(prp_id, increment, hdferr) +! INTEGER, EXTERNAL :: h5pset_fapl_core_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_fapl_core_c(prp_id, increment, backing_store) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FAPL_CORE_C'::h5pset_fapl_core_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(SIZE_T), INTENT(IN) :: increment + INTEGER, INTENT(IN) :: backing_store + END FUNCTION h5pset_fapl_core_c + END INTERFACE + + hdferr = h5pset_fapl_core_c(prp_id, increment, backing_store) + END SUBROUTINE h5pset_fapl_core_f + +!---------------------------------------------------------------------- +! Name: h5pget_fapl_core_f +! +! Purpose: Queries core file driver properties. +! +! Inputs: +! prp_id - file access property list identifier +! Outputs: +! increment - size, in bytes, of memory increments +! backing_store - boolean flag indicating whether to write +! the file contents to disk when the file is closed. +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + + SUBROUTINE h5pget_fapl_core_f(prp_id, increment, backing_store, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_fapl_core_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(SIZE_T), INTENT(OUT) :: increment ! File block size in bytes. + INTEGER, INTENT(OUT) :: backing_store ! flag to indicate that + ! entire file contents are flushed to a file + ! with the same name as this core file. INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_core_c - hdferr = h5pget_core_c(prp_id, increment) - END SUBROUTINE h5pget_core_f - SUBROUTINE h5pset_family_f(prp_id, memb_size, memb_plist , hdferr) +! INTEGER, EXTERNAL :: h5pget_fapl_core_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_fapl_core_c(prp_id, increment, backing_store) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_FAPL_CORE_C'::h5pget_fapl_core_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(SIZE_T), INTENT(OUT) :: increment + INTEGER, INTENT(OUT) :: backing_store + END FUNCTION h5pget_fapl_core_c + END INTERFACE + + hdferr = h5pget_fapl_core_c(prp_id, increment, backing_store) + END SUBROUTINE h5pget_fapl_core_f + +!---------------------------------------------------------------------- +! Name: h5pset_fapl_family_f +! +! Purpose: Sets the file access property list to use the family driver. +! +! Inputs: +! prp_id - file access property list identifier +! memb_size - size in bytes of each file member +! memb_plist - identifier of the file access property +! list to be used for each family member +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + + SUBROUTINE h5pset_fapl_family_f(prp_id, memb_size, memb_plist , hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_fapl_family_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(HSIZE_T), INTENT(IN) :: memb_size ! Logical size, in bytes, @@ -456,12 +1915,60 @@ !access property list for !each member of the family INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_family_c - hdferr = h5pset_family_c(prp_id, memb_size, memb_plist) - END SUBROUTINE h5pset_family_f + +! INTEGER, EXTERNAL :: h5pset_fapl_family_f +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_fapl_family_c(prp_id, memb_size, memb_plist) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FAPL_FAMILY_C'::h5pset_fapl_family_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HSIZE_T), INTENT(IN) :: memb_size + INTEGER(HID_T), INTENT(IN) :: memb_plist + END FUNCTION h5pset_fapl_family_c + END INTERFACE + + hdferr = h5pset_fapl_family_c(prp_id, memb_size, memb_plist) + END SUBROUTINE h5pset_fapl_family_f + +!---------------------------------------------------------------------- +! Name: h5pget_fapl_family_f +! +! Purpose: Returns file access property list information. +! +! Inputs: +! prp_id - file access property list identifier +! Outputs: +! memb_size - size in bytes of each file member +! memb_plist - identifier of the file access property +! list to be used for each family member +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- - SUBROUTINE h5pget_family_f(prp_id, memb_size, memb_plist , hdferr) + SUBROUTINE h5pget_fapl_family_f(prp_id, memb_size, memb_plist , hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_fapl_family_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER(HSIZE_T), INTENT(OUT) :: memb_size ! Logical size, in bytes, @@ -470,11 +1977,63 @@ !access property list for !each member of the family INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_family_c - hdferr = h5pget_family_c(prp_id, memb_size, memb_plist) - END SUBROUTINE h5pget_family_f + +! INTEGER, EXTERNAL :: h5pget_fapl_family_f +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_fapl_family_c(prp_id, memb_size, memb_plist) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_FAPL_FAMILY_C'::h5pget_fapl_family_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HSIZE_T), INTENT(OUT) :: memb_size + INTEGER(HID_T), INTENT(OUT) :: memb_plist + END FUNCTION h5pget_fapl_family_c + END INTERFACE + + hdferr = h5pget_fapl_family_c(prp_id, memb_size, memb_plist) + END SUBROUTINE h5pget_fapl_family_f + +!---------------------------------------------------------------------- +! Name: h5pset_cache_f +! +! Purpose: Sets the meta data cache and raw data chunk +! cache parameters +! +! Inputs: +! prp_id - file access property list identifier +! mdc_nelmts - number of elements (objects) in the meta +! data cache +! rdcc_nelmts - number of elements (objects) in the raw +! data chunk cache +! rdcc_nbytes - total size of the raw data chunk cache, in bytes +! rdcc_w0 - preemption policy (0 or 1) +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5pset_cache_f(prp_id, mdc_nelmts,rdcc_nelmts, rdcc_nbytes, rdcc_w0, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_cache_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(IN) :: mdc_nelmts !Number of elements (objects) @@ -486,11 +2045,64 @@ REAL, INTENT(IN) :: rdcc_w0 !Preemption policy INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_cache_c +! INTEGER, EXTERNAL :: h5pset_cache_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_cache_c(prp_id,mdc_nelmts,rdcc_nelmts,rdcc_nbytes,rdcc_w0) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_CACHE_C'::h5pset_cache_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: mdc_nelmts + INTEGER, INTENT(IN) :: rdcc_nelmts + INTEGER(SIZE_T), INTENT(IN) :: rdcc_nbytes + REAL, INTENT(IN) :: rdcc_w0 + END FUNCTION h5pset_cache_c + END INTERFACE + hdferr = h5pset_cache_c(prp_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0 ) END SUBROUTINE h5pset_cache_f +!---------------------------------------------------------------------- +! Name: h5pget_cache_f +! +! Purpose: Queries the meta data cache and raw data chunk cache +! parameters. +! +! Inputs: +! prp_id - file access property list identifier +! Outputs: +! mdc_nelmts - number of elements (objects) in the meta +! data cache +! rdcc_nelmts - number of elements (objects) in the raw +! data chunk cache +! rdcc_nbytes - total size of the raw data chunk cache, in bytes +! rdcc_w0 - preemption policy (0 or 1) +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_cache_f(prp_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_cache_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(OUT) :: mdc_nelmts !Number of elements (objects) @@ -502,11 +2114,64 @@ REAL, INTENT(OUT) :: rdcc_w0 !Preemption policy INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_cache_c + +! INTEGER, EXTERNAL :: h5pget_cache_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_cache_c(prp_id,mdc_nelmts,rdcc_nelmts,rdcc_nbytes,rdcc_w0) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_CACHE_C'::h5pget_cache_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: mdc_nelmts + INTEGER, INTENT(OUT) :: rdcc_nelmts + INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nbytes + REAL, INTENT(OUT) :: rdcc_w0 + END FUNCTION h5pget_cache_c + END INTERFACE + hdferr = h5pget_cache_c(prp_id, mdc_nelmts,rdcc_nelmts, rdcc_nbytes, rdcc_w0 ) END SUBROUTINE h5pget_cache_f - SUBROUTINE h5pset_split_f(prp_id, meta_ext, meta_plist, raw_ext, raw_plist, hdferr) +!---------------------------------------------------------------------- +! Name: h5pset_fapl_split_f +! +! Purpose: Emulates the old split file driver. +! +! Inputs: +! prp_id - file access property list identifier +! meta_ext - name of the extension for the metafile +! filename +! meta_plist - identifier of the meta file access property +! list +! raw_ext - name extension for the raw file filename +! raw_plist - identifier of the raw file access property list +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + + SUBROUTINE h5pset_fapl_split_f(prp_id, meta_ext, meta_plist, raw_ext, raw_plist, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_fapl_split_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier CHARACTER(LEN=*), INTENT(IN) :: meta_ext !Name of the extension for @@ -517,74 +2182,293 @@ INTEGER(HID_T), INTENT(IN) :: raw_plist !Identifier of the raw file !access property list INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: meta_len, raw_len; + INTEGER :: meta_len, raw_len + +! INTEGER, EXTERNAL :: h5pset_fapl_split_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_fapl_split_c(prp_id,meta_len,meta_ext,meta_plist,raw_len,raw_ext,raw_plist) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FAPL_SPLIT_C'::h5pset_fapl_split_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: meta_ext + !DEC$ATTRIBUTES reference :: raw_ext + INTEGER(HID_T), INTENT(IN) :: prp_id + CHARACTER(LEN=*), INTENT(IN) :: meta_ext + INTEGER(HID_T), INTENT(IN) :: meta_plist + CHARACTER(LEN=*), INTENT(IN) :: raw_ext + INTEGER(HID_T), INTENT(IN) :: raw_plist + INTEGER :: meta_len, raw_len + END FUNCTION h5pset_fapl_split_c + END INTERFACE - INTEGER, EXTERNAL :: h5pset_split_c meta_len = LEN(meta_ext) raw_len = LEN(raw_ext) - hdferr = h5pset_split_c(prp_id, meta_len, meta_ext, meta_plist, raw_len, raw_ext, raw_plist ) - END SUBROUTINE h5pset_split_f + hdferr = h5pset_fapl_split_c(prp_id,meta_len,meta_ext,meta_plist,raw_len,raw_ext,raw_plist) + END SUBROUTINE h5pset_fapl_split_f - SUBROUTINE h5pget_split_f(prp_id, meta_ext_size, meta_ext, meta_plist,raw_ext_size,& - raw_ext, raw_plist, hdferr) - IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier - INTEGER(SIZE_T), INTENT(IN) :: meta_ext_size ! Number of characters of the meta +!---------------------------------------------------------------------- +! Name: h5pget_split_f +! +! Purpose: NOT AVAILABLE +! +! Inputs: +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + +! SUBROUTINE h5pget_split_f(prp_id, meta_ext_size, meta_ext, meta_plist,raw_ext_size,& +! raw_ext, raw_plist, hdferr) +! IMPLICIT NONE +! INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier +! INTEGER(SIZE_T), INTENT(IN) :: meta_ext_size ! Number of characters of the meta ! file extension to be copied to the ! meta_ext buffer - CHARACTER(LEN=*), INTENT(OUT) :: meta_ext !Name of the extension for +! CHARACTER(LEN=*), INTENT(OUT) :: meta_ext !Name of the extension for !the metafile filename - INTEGER(HID_T), INTENT(OUT) :: meta_plist ! Identifier of the meta file +! INTEGER(HID_T), INTENT(OUT) :: meta_plist ! Identifier of the meta file ! access property list - INTEGER(SIZE_T), INTENT(IN) :: raw_ext_size ! Number of characters of the raw +! INTEGER(SIZE_T), INTENT(IN) :: raw_ext_size ! Number of characters of the raw ! file extension to be copied to the ! raw_ext buffer - CHARACTER(LEN=*), INTENT(OUT) :: raw_ext !Name extension for the raw file filename - INTEGER(HID_T), INTENT(OUT) :: raw_plist !Identifier of the raw file +! CHARACTER(LEN=*), INTENT(OUT) :: raw_ext !Name extension for the raw file filename +! INTEGER(HID_T), INTENT(OUT) :: raw_plist !Identifier of the raw file !access property list - INTEGER, INTENT(OUT) :: hdferr ! Error code +! INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_split_c - hdferr = h5pget_split_c(prp_id, meta_ext_size, meta_ext, meta_plist, & - raw_ext_size, raw_ext, raw_plist ) - END SUBROUTINE h5pget_split_f +! INTEGER, EXTERNAL :: h5pget_split_c +! hdferr = h5pget_split_c(prp_id, meta_ext_size, meta_ext, meta_plist, & +! raw_ext_size, raw_ext, raw_plist ) +! END SUBROUTINE h5pget_split_f + +!---------------------------------------------------------------------- +! Name: h5pset_gc_references_f +! +! Purpose: Sets garbage collecting references flag. +! +! Inputs: +! prp_id - file access property list identifier +! gc_reference - flag for stting garbage collection on +! and off (1 or 0) +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5pset_gc_references_f (prp_id, gc_reference, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_gc_references_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(IN) :: gc_reference !the flag for garbage collecting ! references for the file INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_gc_references_c + +! INTEGER, EXTERNAL :: h5pset_gc_references_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_gc_references_c(prp_id, gc_reference) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_GC_REFERENCES_C'::h5pset_gc_references_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: gc_reference + END FUNCTION h5pset_gc_references_c + END INTERFACE + hdferr = h5pset_gc_references_c(prp_id, gc_reference) END SUBROUTINE h5pset_gc_references_f +!---------------------------------------------------------------------- +! Name: h5pget_gc_references_f +! +! Purpose: Returns garbage collecting references setting. +! +! Inputs: +! prp_id - file access property list identifier +! Outputs: +! gc_reference - flag for stting garbage collection on +! and off (1 or 0) +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_gc_references_f (prp_id, gc_reference, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_gc_references_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(OUT) :: gc_reference !the flag for garbage collecting ! references for the file INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_gc_references_c + +! INTEGER, EXTERNAL :: h5pget_gc_references_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_gc_references_c(prp_id, gc_reference) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_GC_REFERENCES_C'::h5pget_gc_references_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: gc_reference + END FUNCTION h5pget_gc_references_c + END INTERFACE + hdferr = h5pget_gc_references_c(prp_id, gc_reference) END SUBROUTINE h5pget_gc_references_f +!---------------------------------------------------------------------- +! Name: h5pset_layout_f +! +! Purpose: Sets the type of storage used store the raw data +! for a dataset. +! +! Inputs: +! prp_id - data creation property list identifier +! layout - type of storage layout for raw data +! possible values are: +! H5D_COMPACT_F +! H5D_CONTIGUOUS_F +! H5D_CHUNKED_F +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pset_layout_f (prp_id, layout, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_layout_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(IN) :: layout !Type of storage layout for raw data !possible values are: - !H5D_COMPACT_F(0) - !H5D_CONTIGUOUS_F(1) - !H5D_CHUNKED_F(2) + !H5D_COMPACT_F + !H5D_CONTIGUOUS_F + !H5D_CHUNKED_F INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_layout_c + +! INTEGER, EXTERNAL :: h5pset_layout_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_layout_c(prp_id, layout) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_LAYOUT_C'::h5pset_layout_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: layout + END FUNCTION h5pset_layout_c + END INTERFACE + hdferr = h5pset_layout_c(prp_id, layout) END SUBROUTINE h5pset_layout_f +!---------------------------------------------------------------------- +! Name: h5pget_layout_f +! +! Purpose: Returns the layout of the raw data for a dataset. +! +! Inputs: +! prp_id - data creation property list identifier +! Outputs: +! layout - type of storage layout for raw data +! possible values are: +! H5D_COMPACT_F +! H5D_CONTIGUOUS_F +! H5D_CHUNKED_F +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_layout_f (prp_id, layout, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_layout_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(OUT) :: layout !Type of storage layout for raw data @@ -593,11 +2477,61 @@ !H5D_CONTIGUOUS_F(1) !H5D_CHUNKED_F(2) INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_layout_c + +! INTEGER, EXTERNAL :: h5pget_layout_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_layout_c(prp_id, layout) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_LAYOUT_C'::h5pget_layout_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: layout + END FUNCTION h5pget_layout_c + END INTERFACE + hdferr = h5pget_layout_c(prp_id, layout) END SUBROUTINE h5pget_layout_f +!---------------------------------------------------------------------- +! Name: h5pset_filter_f +! +! Purpose: Adds a filter to the filter pipeline. +! +! Inputs: +! prp_id - data creation or transfer property list +! identifier +! filter - filter to be added to the pipeline +! flags - bit vector specifying certain general +! properties of the filter +! cd_nelmts - number of elements in cd_values +! cd_values - auxiliary data for the filter +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pset_filter_f(prp_id, filter, flags, cd_nelmts, cd_values, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_filter_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(IN) :: filter !Filter to be added to the pipeline. @@ -608,20 +2542,121 @@ INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_filter_c +! INTEGER, EXTERNAL :: h5pset_filter_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_filter_c(prp_id, filter, flags, cd_nelmts, cd_values) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FILTER_C'::h5pset_filter_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: filter + INTEGER, INTENT(IN) :: flags + INTEGER(SIZE_T), INTENT(IN) :: cd_nelmts + INTEGER, DIMENSION(*), INTENT(IN) :: cd_values + END FUNCTION h5pset_filter_c + END INTERFACE + hdferr = h5pset_filter_c(prp_id, filter, flags, cd_nelmts, cd_values ) END SUBROUTINE h5pset_filter_f +!---------------------------------------------------------------------- +! Name: h5pget_nfilters_f +! +! Purpose: Returns the number of filters in the pipeline. +! +! Inputs: +! prp_id - data creation or transfer property list +! identifier +! Outputs: +! nfilters - number of filters in the pipeline +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_nfilters_f (prp_id, nfilters, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_nfilters_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(OUT) :: nfilters !the number of filters in the pipeline INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_nfilters_c + +! INTEGER, EXTERNAL :: h5pget_nfilters_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_nfilters_c(prp_id, nfilters) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_NFILTERS_C'::h5pget_nfilters_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: nfilters + END FUNCTION h5pget_nfilters_c + END INTERFACE + hdferr = h5pget_nfilters_c(prp_id, nfilters) END SUBROUTINE h5pget_nfilters_f +!---------------------------------------------------------------------- +! Name: h5pget_filter_f +! +! Purpose: Returns information about a filter in a pipeline +! +! Inputs: +! prp_id - data creation or transfer property list +! identifier +! Outputs: +! identifier +! filter - filter to be added to the pipeline +! flags - bit vector specifying certain general +! properties of the filter +! cd_nelmts - number of elements in cd_values +! cd_values - auxiliary data for the filter +! namelen - number of characters in the name buffer +! name - buffer to retrieve filter name +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_filter_f(prp_id, filter_number, flags, cd_nelmts, cd_values, namelen, name, filter_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_filter_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(IN) :: filter_number !Sequence number within the filter @@ -637,12 +2672,69 @@ INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_filter_c + +! INTEGER, EXTERNAL :: h5pget_filter_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_filter_c(prp_id, filter_number, flags, cd_nelmts, & + cd_values, namelen, name, filter_id ) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_FILTER_C'::h5pget_filter_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: filter_number + INTEGER, DIMENSION(*), INTENT(OUT) :: cd_values + INTEGER, INTENT(OUT) :: flags + INTEGER(SIZE_T), INTENT(INOUT) :: cd_nelmts + INTEGER(SIZE_T), INTENT(IN) :: namelen + CHARACTER(LEN=*), INTENT(OUT) :: name + INTEGER, INTENT(OUT) :: filter_id + END FUNCTION h5pget_filter_c + END INTERFACE + hdferr = h5pget_filter_c(prp_id, filter_number, flags, cd_nelmts, & cd_values, namelen, name, filter_id ) END SUBROUTINE h5pget_filter_f +!---------------------------------------------------------------------- +! Name: h5pset_external_f +! +! Purpose: Adds an external file to the list of external files. +! +! Inputs: +! prp_id - dataset creation property list identifier +! name - name of external file +! offset - offset in bytes from the beginning of the +! file to the location in the file +! where the data starts +! bytes - size of the external file data. +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pset_external_f(prp_id, name, offset,bytes, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_external_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier CHARACTER(LEN=*), INTENT(IN) :: name !Name of an external file @@ -653,25 +2745,125 @@ !file for the data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_external_c INTEGER :: namelen - namelen = LEN(name) - hdferr = h5pset_external_c(prp_id, name,namelen, offset, bytes) +! INTEGER, EXTERNAL :: h5pset_external_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_external_c(prp_id, name,namelen, offset, bytes) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_EXTERNAL_C'::h5pset_external_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER, INTENT(IN) :: offset + INTEGER(HSIZE_T), INTENT(IN) :: bytes + END FUNCTION h5pset_external_c + END INTERFACE + + namelen = LEN(name) + hdferr = h5pset_external_c(prp_id, name, namelen, offset, bytes) END SUBROUTINE h5pset_external_f +!---------------------------------------------------------------------- +! Name: h5pget_external_count_f +! +! Purpose: Returns the number of external files for a dataset. +! +! Inputs: +! prp_id - dataset creation property list identifier +! Outputs: +! count - number of external files for the +! specified dataset +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_external_count_f (prp_id, count, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_external_count_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(OUT) :: count !number of external files for the !specified dataset INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_external_count_c +! INTEGER, EXTERNAL :: h5pget_external_count_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_external_count_c(prp_id, count) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_EXTERNAL_COUNT_C'::h5pget_external_count_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: count + END FUNCTION h5pget_external_count_c + END INTERFACE + hdferr = h5pget_external_count_c(prp_id, count) END SUBROUTINE h5pget_external_count_f +!---------------------------------------------------------------------- +! Name: h5pget_external_f +! +! Purpose: Returns information about an external file. +! +! Inputs: +! prp_id - dataset creation property list identifier +! Outputs: +! idx - external file index +! name_size - maximum size of name array +! name - name of the external file +! name - name of external file +! offset - offset in bytes from the beginning of the +! file to the location in the file +! where the data starts +! bytes - size of the external file data +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_external_f(prp_id, idx, name_size, name, offset,bytes, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_external_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(IN) :: idx !External file index. @@ -684,12 +2876,63 @@ !file for the data INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_external_c +! INTEGER, EXTERNAL :: h5pget_external_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_external_c(prp_id, idx, name_size, name, offset, bytes) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_EXTERNAL_C'::h5pget_external_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: idx + INTEGER(SIZE_T), INTENT(IN) :: name_size + CHARACTER(LEN=*), INTENT(OUT) :: name + INTEGER, INTENT(OUT) :: offset + INTEGER(HSIZE_T), INTENT(OUT) :: bytes + END FUNCTION h5pget_external_c + END INTERFACE hdferr = h5pget_external_c(prp_id, idx, name_size, name, offset, bytes) END SUBROUTINE h5pget_external_f +!---------------------------------------------------------------------- +! Name: h5pset_hyper_cache_f +! +! Purpose: Indicates whether to cache hyperslab blocks during I/O +! +! Inputs: +! prp_id - dataset transfer property list identifier +! cache - A flag indicating whether caching is to +! be set to on (1) or off (0). +! limit - maximum size of the hyperslab block to +! cache; 0 (zero) indicates no limit +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pset_hyper_cache_f(prp_id, cache, limit, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_hyper_cache_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(IN) :: cache ! @@ -697,11 +2940,60 @@ !cache. 0 (zero) indicates no limit. INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_hyper_cache_c +! INTEGER, EXTERNAL :: h5pset_hyper_cache_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_hyper_cache_c(prp_id, cache, limit) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_HYPER_CACHE_C'::h5pset_hyper_cache_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: cache + INTEGER, INTENT(IN) :: limit + END FUNCTION h5pset_hyper_cache_c + END INTERFACE + hdferr = h5pset_hyper_cache_c(prp_id, cache, limit) END SUBROUTINE h5pset_hyper_cache_f +!---------------------------------------------------------------------- +! Name: h5pget_hyper_cache_f +! +! Purpose: Returns information regarding the caching of hyperslab +! blocks during I/O. +! +! Inputs: +! prp_id - dataset transfer property list identifier +! Outputs: +! cache - a flag indicating whether caching is +! set to on (1) or off (0). +! limit - maximum size of the hyperslab block to +! cache; 0 (zero) indicates no limit +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_hyper_cache_f(prp_id, cache, limit, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_hyper_cache_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier INTEGER, INTENT(OUT) :: cache ! @@ -709,11 +3001,61 @@ !cache. 0 (zero) indicates no limit. INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_hyper_cache_c + +! INTEGER, EXTERNAL :: h5pget_hyper_cache_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_hyper_cache_c(prp_id, cache, limit) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_HYPER_CACHE_C'::h5pget_hyper_cache_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: cache + INTEGER, INTENT(OUT) :: limit + END FUNCTION h5pget_hyper_cache_c + END INTERFACE + hdferr = h5pget_hyper_cache_c(prp_id, cache, limit) END SUBROUTINE h5pget_hyper_cache_f +!---------------------------------------------------------------------- +! Name: h5pset_btree_ratios_f +! +! Purpose: Sets B-tree split ratios for a dataset transfer +! property list. +! +! Inputs: +! prp_id - the dataset transfer property list +! identifier +! left - the B-tree split ratio for left-most nodes +! middle - the B-tree split ratio for all other nodes +! right - the B-tree split ratio for right-most nodes +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pset_btree_ratios_f(prp_id, left, middle, right, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_btree_ratios_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier REAL, INTENT(IN) :: left !The B-tree split ratio for left-most nodes. @@ -723,11 +3065,60 @@ INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pset_btree_ratios_c +! INTEGER, EXTERNAL :: h5pset_btree_ratios_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_btree_ratios_c(prp_id, left, middle, right) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_BTREE_RATIOS_C'::h5pset_btree_ratios_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + REAL, INTENT(IN) :: left + REAL, INTENT(IN) :: middle + REAL, INTENT(IN) :: right + END FUNCTION h5pset_btree_ratios_c + END INTERFACE + hdferr = h5pset_btree_ratios_c(prp_id, left, middle, right) END SUBROUTINE h5pset_btree_ratios_f +!---------------------------------------------------------------------- +! Name: h5pget_btree_ratios_f +! +! Purpose: Gets B-tree split ratios for a dataset transfer property list +! +! Inputs: +! prp_id - the dataset transfer property list +! identifier +! Outputs: +! left - the B-tree split ratio for left-most nodes +! middle - the B-tree split ratio for all other nodes +! right - the B-tree split ratio for right-most nodes +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 14, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5pget_btree_ratios_f(prp_id, left, middle, right, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_btree_ratios_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier REAL, INTENT(OUT) :: left !The B-tree split ratio for left-most nodes. @@ -737,7 +3128,23 @@ INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5pget_btree_ratios_c + +! INTEGER, EXTERNAL :: h5pget_btree_ratios_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_btree_ratios_c(prp_id, left, middle, right) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_BTREE_RATIOS_C'::h5pget_btree_ratios_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + REAL, INTENT(OUT) :: left + REAL, INTENT(OUT) :: middle + REAL, INTENT(OUT) :: right + END FUNCTION h5pget_btree_ratios_c + END INTERFACE + hdferr = h5pget_btree_ratios_c(prp_id, left, middle, right) END SUBROUTINE h5pget_btree_ratios_f diff --git a/fortran/src/H5Rff.f90 b/fortran/src/H5Rff.f90 index 860fba3..86106ec 100644 --- a/fortran/src/H5Rff.f90 +++ b/fortran/src/H5Rff.f90 @@ -6,17 +6,17 @@ ! If you change the value of these parameters, do not forget to change corresponding ! values in the H5f90.h file. - INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2 - INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 - - TYPE hobj_ref_t_f - INTEGER ref(REF_OBJ_BUF_LEN) - END TYPE - - TYPE hdset_reg_ref_t_f - INTEGER ref(REF_REG_BUF_LEN) - END TYPE - +! INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2 +! INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 +! +! TYPE hobj_ref_t_f +! INTEGER ref(REF_OBJ_BUF_LEN) +! END TYPE +! +! TYPE hdset_reg_ref_t_f +! INTEGER ref(REF_REG_BUF_LEN) +! END TYPE +! INTERFACE h5rcreate_f MODULE PROCEDURE h5rcreate_object_f @@ -46,8 +46,40 @@ CONTAINS +!---------------------------------------------------------------------- +! Name: h5rcreate_object_f +! +! Purpose: Creates reference to the object +! +! Inputs: +! loc_id - location identifier +! name - name of the object at the specified location +! Outputs: +! ref - reference to the specified object +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: This is a module procedure for the h5rcreate_f +! subroutine. +!---------------------------------------------------------------------- SUBROUTINE h5rcreate_object_f(loc_id, name, ref, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5rcreate_object_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the object at location specified @@ -57,16 +89,67 @@ INTEGER :: namelen ! Name length INTEGER :: ref_f(REF_OBJ_BUF_LEN) ! Local buffer to pass reference - INTEGER, EXTERNAL :: h5rcreate_object_c + +! INTEGER, EXTERNAL :: h5fcreate_object_c +! Interface is needed for MS FORTRAN +! + INTERFACE + INTEGER FUNCTION h5rcreate_object_c(ref_f, loc_id, name, namelen) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5RCREATE_OBJECT_C':: h5rcreate_object_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name +! INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2 + INTEGER :: ref_f(REF_OBJ_BUF_LEN) + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + END FUNCTION h5rcreate_object_c + END INTERFACE + namelen = LEN(name) ref_f = 0 hdferr = h5rcreate_object_c(ref_f, loc_id, name, namelen ) ref%ref = ref_f END SUBROUTINE h5rcreate_object_f - +!---------------------------------------------------------------------- +! Name: h5rcreate_region_f +! +! Purpose: Creates r eference to the dataset region +! +! Inputs: +! loc_id - location identifier +! name - name of the dataset at the specified location +! space_id - dataspace identifier that describes selected region +! Outputs: +! ref - reference to the dataset region +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: This is a module procedure for the h5rcreate_f +! subroutine. +!---------------------------------------------------------------------- + SUBROUTINE h5rcreate_region_f(loc_id, name, space_id, ref, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5rcreate_region_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset at location specified @@ -77,7 +160,26 @@ INTEGER :: namelen ! Name length INTEGER :: ref_f(REF_REG_BUF_LEN) ! Local buffer to pass reference - INTEGER, EXTERNAL :: h5rcreate_region_c + +! INTEGER, EXTERNAL :: h5fcreate_region_c +! Interface is needed for MS FORTRAN +! + INTERFACE + INTEGER FUNCTION h5rcreate_region_c(ref_f, loc_id, name, namelen, space_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5RCREATE_REGION_C':: h5rcreate_region_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name +! INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 + INTEGER :: ref_f(REF_REG_BUF_LEN) + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(HID_T), INTENT(IN) :: space_id + END FUNCTION h5rcreate_region_c + END INTERFACE + namelen = LEN(name) ref_f = 0 hdferr = h5rcreate_region_c(ref_f, loc_id, name, namelen, space_id ) @@ -85,7 +187,42 @@ END SUBROUTINE h5rcreate_region_f +!---------------------------------------------------------------------- +! Name: h5rdereference_object_f +! +! Purpose: Opens the HDF5 object referenced +! +! Inputs: +! dset_id - identifier of the dataset containing +! reference +! ref - reference to open +! Outputs: +! obj_id - object_identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: This is a module procedure for the h5rdereference_f +! subroutine. +!---------------------------------------------------------------------- + + SUBROUTINE h5rdereference_object_f(dset_id, ref, obj_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5rdereference_object_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier TYPE(hobj_ref_t_f), INTENT(IN) :: ref ! Object reference @@ -94,30 +231,132 @@ INTEGER :: ref_type ! Reference type INTEGER :: ref_f(REF_OBJ_BUF_LEN) ! Local buffer to pass reference - INTEGER, EXTERNAL :: h5rdereference_object_c + +! INTEGER, EXTERNAL :: h5h5rdereference_object_c +! Interface is needed for MS FORTRAN +! + INTERFACE + INTEGER FUNCTION h5rdereference_object_c(dset_id, ref_f, obj_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5RDEREFERENCE_OBJECT_C':: h5rdereference_object_c + !DEC$ ENDIF +! INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2 + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER :: ref_f(REF_OBJ_BUF_LEN) + INTEGER(HID_T), INTENT(OUT) :: obj_id + END FUNCTION h5rdereference_object_c + END INTERFACE + ref_f = ref%ref hdferr = h5rdereference_object_c(dset_id, ref_f, obj_id ) END SUBROUTINE h5rdereference_object_f +!---------------------------------------------------------------------- +! Name: h5rdereference_region_f +! +! Purpose: Opens the dataset region +! +! Inputs: +! dset_id - identifier of the dataset containing +! reference to teh regions +! ref - reference to open +! Outputs: +! obj_id - dataspace identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: This is a module procedure for the h5rdereference_f +! subroutine. +!---------------------------------------------------------------------- + + SUBROUTINE h5rdereference_region_f(dset_id, ref, obj_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5rdereference_region_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Object reference - INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object identifier + INTEGER(HID_T), INTENT(OUT) :: obj_id ! Dataspace identifier INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: ref_type ! Reference type INTEGER :: ref_f(REF_REG_BUF_LEN) ! Local buffer to pass reference - INTEGER, EXTERNAL :: h5rdereference_region_c + +! INTEGER, EXTERNAL :: h5rdereference_region_c +! Interface is needed for MS FORTRAN +! + INTERFACE + INTEGER FUNCTION h5rdereference_region_c(dset_id, ref_f, obj_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5RDEREFERENCE_REGION_C':: h5rdereference_region_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id +! INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 + INTEGER :: ref_f(REF_REG_BUF_LEN) + INTEGER(HID_T), INTENT(OUT) :: obj_id + END FUNCTION h5rdereference_region_c + END INTERFACE + ref_type = H5R_DATASET_REGION_F ref_f = ref%ref hdferr = h5rdereference_region_c(dset_id, ref_f, obj_id ) END SUBROUTINE h5rdereference_region_f +!---------------------------------------------------------------------- +! Name: h5rget_region_region_f +! +! Purpose: Retrieves a dataspace with the specified region selected +! +! Inputs: +! dset_id - identifier of the dataset containing +! reference to the regions +! ref - reference to open +! Outputs: +! space_id - dataspace identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: This is a module procedure for the h5rget_region_f +! subroutine. +!---------------------------------------------------------------------- + + SUBROUTINE h5rget_region_region_f(dset_id, ref, space_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5rget_region_region_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Dataset region reference @@ -125,13 +364,69 @@ INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: ref_f(REF_REG_BUF_LEN) ! Local buffer to pass reference - INTEGER, EXTERNAL :: h5rget_region_region_c +! INTEGER, EXTERNAL :: h5rget_region_region_c +! Interface is needed for MS FORTRAN +! + INTERFACE + INTEGER FUNCTION h5rget_region_region_c(dset_id, ref_f, space_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5RGET_REGION_REGION_C':: h5rget_region_region_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dset_id +! INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 + INTEGER :: ref_f(REF_REG_BUF_LEN) + INTEGER(HID_T), INTENT(OUT) :: space_id + END FUNCTION h5rget_region_region_c + END INTERFACE + ref_f = ref%ref hdferr = h5rget_region_region_c(dset_id, ref_f, space_id ) END SUBROUTINE h5rget_region_region_f + +!---------------------------------------------------------------------- +! Name: h5rget_object_type_obj_f +! +! Purpose: Retrieves the type of object that an object reference points to. +! +! Inputs: +! dset_id - identifier of the dataset containing +! reference to the objects +! ref - reference to open +! Outputs: +! obj_type - object_type, possible values: +! H5G_UNKNOWN_F (-1) +! H5G_LINK_F 0 +! H5G_GROUP_F 1 +! H5G_DATASET_F 2 +! H5G_TYPE_F 3 +! +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). February 28, 2001 +! +! Comment: This is a module procedure for the h5rget_object_type_f +! subroutine. +!---------------------------------------------------------------------- + SUBROUTINE h5rget_object_type_obj_f(dset_id, ref, obj_type, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5rget_object_type_obj_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier TYPE(hobj_ref_t_f), INTENT(IN) :: ref ! Object reference @@ -145,7 +440,22 @@ INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: ref_f(REF_OBJ_BUF_LEN) ! Local buffer to pass reference - INTEGER, EXTERNAL :: h5rget_object_type_obj_c +! INTEGER, EXTERNAL :: h5rget_object_type_obj_c +! Interface is needed for MS FORTRAN +! + INTERFACE + INTEGER FUNCTION h5rget_object_type_obj_c(dset_id, ref_f, obj_type) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5RGET_OBJECT_TYPE_OBJ_C':: h5rget_object_type_obj_c + !DEC$ ENDIF +! INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2 + INTEGER(HID_T), INTENT(IN) :: dset_id + INTEGER :: ref_f(REF_OBJ_BUF_LEN) + INTEGER, INTENT(OUT) :: obj_type + END FUNCTION h5rget_object_type_obj_c + END INTERFACE + ref_f = ref%ref hdferr = h5rget_object_type_obj_c(dset_id, ref_f, obj_type ) diff --git a/fortran/src/H5Sff.f90 b/fortran/src/H5Sff.f90 index 1df0569..d5d1c48 100644 --- a/fortran/src/H5Sff.f90 +++ b/fortran/src/H5Sff.f90 @@ -6,8 +6,39 @@ CONTAINS - +!---------------------------------------------------------------------- +! Name: h5screate_simple_f +! +! Purpose: Creates a new simple data space and opens it for access . +! +! Inputs: +! rank - number of dimensions +! dims - an array of the size of each dimension +! Outputs: +! space_id - dataspace identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! maxdims - an array of the maximum size of each +! dimension +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5screate_simple_f(rank, dims, space_id, hdferr, maxdims) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5screate_simple_f +!DEC$endif +! IMPLICIT NONE INTEGER, INTENT(IN) :: rank ! Number of dataspace dimensions @@ -20,7 +51,22 @@ ! Array with the maximum ! dimension sizes INTEGER(HSIZE_T), ALLOCATABLE, DIMENSION(:) :: f_maxdims - INTEGER, EXTERNAL :: h5screate_simple_c + +! INTEGER, EXTERNAL :: h5screate_simple_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5screate_simple_c(rank, dims, maxdims, space_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SCREATE_SIMPLE_C'::h5screate_simple_c + !DEC$ ENDIF + INTEGER, INTENT(IN) :: rank + INTEGER(HSIZE_T), INTENT(IN) :: dims(rank) + INTEGER(HSIZE_T), DIMENSION(:),INTENT(IN) :: maxdims(rank) + INTEGER(HID_T), INTENT(OUT) :: space_id + END FUNCTION h5screate_simple_c + END INTERFACE allocate (f_maxdims(rank), stat=hdferr) if (hdferr .NE. 0) then @@ -37,18 +83,91 @@ END SUBROUTINE h5screate_simple_f +!---------------------------------------------------------------------- +! Name: h5sclose_f +! +! Purpose: Releases and terminates access to a dataspace. +! +! Inputs: +! space_id - identifier of dataspace to release +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5sclose_f(space_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sclose_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5sclose_c + +! INTEGER, EXTERNAL :: h5sclose_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sclose_c(space_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SCLOSE_C'::h5sclose_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + END FUNCTION h5sclose_c + END INTERFACE hdferr = h5sclose_c(space_id) END SUBROUTINE h5sclose_f +!---------------------------------------------------------------------- +! Name: h5screate_f +! +! Purpose: Creates a new dataspace of a specified type. +! +! Inputs: +! classtype - the type of the dataspace to be created +! Outputs: +! space_id - dataspace identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5screate_f(classtype, space_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5screate_f +!DEC$endif +! IMPLICIT NONE INTEGER, INTENT(IN) :: classtype ! The type of the dataspace @@ -58,25 +177,114 @@ ! H5S_SIMPLE_F(1) INTEGER(HID_T), INTENT(OUT) :: space_id ! Dataspace identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5screate_c + +! INTEGER, EXTERNAL :: h5screate_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5screate_c(classtype, space_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SCREATE_C'::h5screate_c + !DEC$ ENDIF + INTEGER, INTENT(IN) :: classtype + INTEGER(HID_T), INTENT(OUT) :: space_id + END FUNCTION h5screate_c + END INTERFACE + hdferr = h5screate_c(classtype, space_id) END SUBROUTINE h5screate_f +!---------------------------------------------------------------------- +! Name: h5scopy_f +! +! Purpose: Creates an exact copy of a dataspace. +! +! Inputs: +! space_id - dataspace identifier +! Outputs: +! new_space_id - identifier of dataspace's copy +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5scopy_f(space_id, new_space_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5scopy_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER(HID_T), INTENT(OUT) :: new_space_id ! Identifier of dataspace's copy INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5scopy_c + +! INTEGER, EXTERNAL :: h5scopy_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5scopy_c(space_id, new_space_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SCOPY_C'::h5scopy_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER(HID_T), INTENT(OUT):: new_space_id + END FUNCTION h5scopy_c + END INTERFACE + hdferr = h5scopy_c(space_id, new_space_id) END SUBROUTINE h5scopy_f +!---------------------------------------------------------------------- +! Name: h5sget_select_hyper_nblocks_f +! +! Purpose: Get number of hyperslab blocks. +! +! Inputs: +! space_id - dataspace identifier +! Outputs: +! num_blocks - number of hyperslab blocks in the current +! hyperslab selection +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5sget_select_hyper_nblocks_f(space_id, num_blocks, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sget_select_hyper_nblocks_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -85,13 +293,60 @@ !in the current dataspace !selection INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5sget_select_hyper_nblocks_c + +! INTEGER, EXTERNAL :: h5sget_select_hyper_nblocks_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sget_select_hyper_nblocks_c (space_id, num_blocks) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) +!MS$ATTRIBUTES C,reference,alias:'_H5SGET_SELECT_HYPER_NBLOCKS_C'::h5sget_select_hyper_nblocks_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER(HSSIZE_T), INTENT(OUT) :: num_blocks + END FUNCTION h5sget_select_hyper_nblocks_c + END INTERFACE + hdferr = h5sget_select_hyper_nblocks_c (space_id, num_blocks) END SUBROUTINE h5sget_select_hyper_nblocks_f +!---------------------------------------------------------------------- +! Name: h5sget_select_hyper_blocklist_f +! +! Purpose: Gets the list of hyperslab blocks currently selected. +! +! Inputs: +! space_id - dataspace identifier +! startblock - hyperslab block to start with +! num_blocks - number of blocks to get +! Outputs: +! buf - buffer to hold block list +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5sget_select_hyper_blocklist_f(space_id, startblock, & num_blocks, buf, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sget_select_hyper_blocklist_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -105,14 +360,64 @@ !List of hyperslab blocks selected INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5sget_select_hyper_blocklist_c + +! INTEGER, EXTERNAL :: h5sget_select_hyper_blocklist_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sget_select_hyper_blocklist_c(space_id, startblock, & + num_blocks, buf ) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SGET_SELECT_HYPER_BLOCKLIST_C'::h5sget_select_hyper_blocklist_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: startblock + INTEGER(HSSIZE_T), INTENT(IN) :: num_blocks + INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: buf + END FUNCTION h5sget_select_hyper_blocklist_c + END INTERFACE + hdferr = h5sget_select_hyper_blocklist_c(space_id, startblock, & num_blocks, buf ) END SUBROUTINE h5sget_select_hyper_blocklist_f +!---------------------------------------------------------------------- +! Name: h5sget_select_bounds_f +! +! Purpose: Gets the bounding box containing the current selection. +! +! Inputs: +! space_id - dataspace identifier +! +! Outputs: +! start - starting coordinates of bounding box +! end - ending coordinates of bounding box +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5sget_select_bounds_f(space_id, start, end, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sget_select_bounds_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -123,12 +428,58 @@ !i.e., the coordinates of the diagonally !opposite corner INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5sget_select_bounds_c + +! INTEGER, EXTERNAL :: h5sget_select_bounds_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sget_select_bounds_c(space_id, start, end) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) +!MS$ATTRIBUTES C,reference,alias:'_H5SGET_SELECT_BOUNDS_C'::h5sget_select_bounds_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: start + INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: end + END FUNCTION h5sget_select_bounds_c + END INTERFACE + hdferr = h5sget_select_bounds_c(space_id, start, end) END SUBROUTINE h5sget_select_bounds_f +!---------------------------------------------------------------------- +! Name: h5sget_select_elem_npoints_f +! +! Purpose: Gets the number of element points in the current selection +! +! Inputs: +! space_id - dataspace identifier +! Outputs: +! num_points - number of element points in the current +! dataspace selection +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5sget_select_elem_npoints_f(space_id, num_points, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sget_select_elem_npoints_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -137,13 +488,60 @@ !in the current dataspace !selection INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5sget_select_elem_npoints_c + +! INTEGER, EXTERNAL :: h5sget_select_elem_npoints_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sget_select_elem_npoints_c (space_id, num_points) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) +!MS$ATTRIBUTES C,reference,alias:'_H5SGET_SELECT_ELEM_NPOINTS_C'::h5sget_select_elem_npoints_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER(HSSIZE_T), INTENT(OUT) :: num_points + END FUNCTION h5sget_select_elem_npoints_c + END INTERFACE + hdferr = h5sget_select_elem_npoints_c (space_id, num_points) END SUBROUTINE h5sget_select_elem_npoints_f +!---------------------------------------------------------------------- +! Name: h5sget_select_elem_pointlist_f +! +! Purpose: Gets the list of element points currently selected. +! +! Inputs: +! space_id - dataspace identifier +! startpoint - element point to start with +! num_points - number of elemnt points to get +! Outputs: +! buf - buffer with element points selected +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5sget_select_elem_pointlist_f(space_id, startpoint, & num_points, buf, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sget_select_elem_pointlist_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER(HSIZE_T),DIMENSION(*), INTENT(IN) :: startpoint @@ -153,13 +551,67 @@ INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: buf !List of element points selected INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5sget_select_elem_pointlist_c + +! INTEGER, EXTERNAL :: h5sget_select_elem_pointlist_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sget_select_elem_pointlist_c(space_id, startpoint, & + num_points, buf ) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) +!MS$ATTRIBUTES C,reference,alias:'_H5SGET_SELECT_ELEM_POINTLIST_C'::h5sget_select_elem_pointlist_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER(HSIZE_T),DIMENSION(*), INTENT(IN) :: startpoint + INTEGER(HSIZE_T), INTENT(IN) :: num_points + INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: buf + END FUNCTION h5sget_select_elem_pointlist_c + END INTERFACE + hdferr = h5sget_select_elem_pointlist_c(space_id, startpoint, & num_points, buf ) END SUBROUTINE h5sget_select_elem_pointlist_f +!---------------------------------------------------------------------- +! Name: h5sselect_elements_f +! +! Purpose: Selects elements to be included in the selection for +! a dataspace +! +! Inputs: +! space_id - dataspace identifier +! operator - flag, valid values are: +! H5S_SELECT_SET_F (0) +! H5S_SELECT_OR_F (1) +! rank - number of dataspace dimensions +! num_elements - number of elements to be selected +! coord - 2D (rank x num_elements) array with the +! elements coordinates +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5sselect_elements_f(space_id, operator, rank, & num_elements, coord, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sselect_elements_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER, INTENT(IN) :: operator ! Flag, valid values are: @@ -174,9 +626,26 @@ ! of the selected elements ! coord(rank, num_elements) INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5sselect_elements_c INTEGER(HSSIZE_T), ALLOCATABLE, DIMENSION(:,:) :: c_coord INTEGER :: error, i,j + +! INTEGER, EXTERNAL :: h5sselect_elements_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sselect_elements_c(space_id, operator,& + num_elements,c_c_coord) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SSELECT_ELEMENTS_C'::h5sselect_elements_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER, INTENT(IN) :: operator + INTEGER(SIZE_T), INTENT(IN) :: num_elements + INTEGER(HSSIZE_T),DIMENSION(*) :: c_c_coord + END FUNCTION h5sselect_elements_c + END INTERFACE + allocate(c_coord(rank, num_elements), stat = error) if (error.NE. 0) then hdferr = -1 @@ -191,30 +660,145 @@ END SUBROUTINE h5sselect_elements_f +!---------------------------------------------------------------------- +! Name: h5sselect_all_f +! +! Purpose: Selects the entire dataspace. +! +! Inputs: +! space_id - identifier for the dataspace in which +! selection being made +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5sselect_all_f(space_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sselect_all_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5sselect_all_c + +! INTEGER, EXTERNAL :: h5sselect_all_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sselect_all_c(space_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SSELECT_ALL_C'::h5sselect_all_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + END FUNCTION h5sselect_all_c + END INTERFACE + hdferr = h5sselect_all_c(space_id) END SUBROUTINE h5sselect_all_f +!---------------------------------------------------------------------- +! Name: h5sselect_none_f +! +! Purpose: Resets the selection region to include no elements. +! +! Inputs: +! space_id - the identifier for the dataspace in which +! the selection is being reset. +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5sselect_none_f(space_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sselect_none_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5sselect_none_c - hdferr = h5sselect_none_c(space_id) - END SUBROUTINE h5sselect_none_f +! INTEGER, EXTERNAL :: h5sselect_none_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sselect_none_c(space_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SSELECT_NONE_C'::h5sselect_none_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + END FUNCTION h5sselect_none_c + END INTERFACE + hdferr = h5sselect_none_c(space_id) + END SUBROUTINE h5sselect_none_f +!---------------------------------------------------------------------- +! Name: h5sselect_valid_f +! +! Purpose: Verifies that the selection is within the extent of +! the dataspace. +! +! Inputs: +! space_id - identifier for the dataspace for which +! selection is verified +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5sselect_valid_f(space_id, status, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sselect_valid_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -223,53 +807,231 @@ ! FALSE otherwise. INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: flag ! "TRUE/FALSE/ERROR" flag from C routine - INTEGER, EXTERNAL :: h5sselect_valid_c + +! INTEGER, EXTERNAL :: h5sselect_valid_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sselect_valid_c(space_id, flag) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SSELECT_VALID_C'::h5sselect_valid_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER :: flag + END FUNCTION h5sselect_valid_c + END INTERFACE + hdferr = h5sselect_valid_c(space_id, flag) status = .TRUE. if (flag .EQ. 0) status = .FALSE. END SUBROUTINE h5sselect_valid_f +!---------------------------------------------------------------------- +! Name: h5sget_simple_extent_npoints_f +! +! Purpose: Determines the number of elements in a dataspace. +! +! Inputs: +! space_id - dataspace identifier +! Outputs: +! npoints - number of elements in the dataspace +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5sget_simple_extent_npoints_f(space_id, npoints, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sget_simple_extent_npoints_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER(HSIZE_T), INTENT(OUT) :: npoints ! Number of elements in ! dataspace INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5sget_simple_extent_npoints_c + +! INTEGER, EXTERNAL :: h5sget_simple_extent_npoints_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sget_simple_extent_npoints_c( space_id, npoints) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SGET_SIMPLE_EXTENT_NPOINTS_C'::h5sget_simple_extent_npoints_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER(HSIZE_T), INTENT(OUT) :: npoints + END FUNCTION h5sget_simple_extent_npoints_c + END INTERFACE + hdferr = h5sget_simple_extent_npoints_c( space_id, npoints) END SUBROUTINE h5sget_simple_extent_npoints_f +!---------------------------------------------------------------------- +! Name: h5sget_select_npoints_f +! +! Purpose: Determines the number of elements in a dataspace selection. +! +! Inputs: +! space_id - dataspace identifier +! Outputs: +! npoints - number of points in the dataspace selection +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5sget_select_npoints_f(space_id, npoints, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sget_select_npoints_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER(HSSIZE_T), INTENT(OUT) :: npoints ! Number of elements in the ! selection INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5sget_select_npoints_c + +! INTEGER, EXTERNAL :: h5sget_select_npoints_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sget_select_npoints_c(space_id, npoints) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SGET_SELECT_NPOINTS_C'::h5sget_select_npoints_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER(HSSIZE_T), INTENT(OUT) :: npoints + END FUNCTION h5sget_select_npoints_c + END INTERFACE + hdferr = h5sget_select_npoints_c(space_id, npoints) END SUBROUTINE h5sget_select_npoints_f +!---------------------------------------------------------------------- +! Name: h5sget_simple_extent_ndims_f +! +! Purpose: Determines the dimensionality of a dataspace +! +! Inputs: +! space_id - dataspace identifier +! Outputs: +! rank - number of dataspace dimensions +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5sget_simple_extent_ndims_f(space_id, rank, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sget_simple_extent_ndims_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER, INTENT(OUT) :: rank ! Number of dimensions INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5sget_simple_extent_ndims_c + +! INTEGER, EXTERNAL :: h5sget_simple_extent_ndims_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sget_simple_extent_ndims_c(space_id, rank) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SGET_SIMPLE_EXTENT_NDIMS_C'::h5sget_simple_extent_ndims_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER, INTENT(OUT) :: rank + END FUNCTION h5sget_simple_extent_ndims_c + END INTERFACE + hdferr = h5sget_simple_extent_ndims_c(space_id, rank) END SUBROUTINE h5sget_simple_extent_ndims_f +!---------------------------------------------------------------------- +! Name: h5sget_simple_extent_dims_f +! +! Purpose: Retrieves dataspace dimension size and maximum size. +! +! Inputs: +! space_id - dataspace identifier +! Outputs: +! dims - array to store size of each dimension +! maxdims - array to store maximum size of each +! dimension +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5sget_simple_extent_dims_f(space_id, dims, maxdims, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sget_simple_extent_dims_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -281,13 +1043,61 @@ INTEGER, INTENT(OUT) :: hdferr ! Error code: -1 on failure, ! number of dimensions on ! on success - INTEGER, EXTERNAL :: h5sget_simple_extent_dims_c + +! INTEGER, EXTERNAL :: h5sget_simple_extent_dims_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sget_simple_extent_dims_c(space_id, dims, maxdims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SGET_SIMPLE_EXTENT_DIMS_C'::h5sget_simple_extent_dims_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: dims + INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: maxdims + END FUNCTION h5sget_simple_extent_dims_c + END INTERFACE + hdferr = h5sget_simple_extent_dims_c(space_id, dims, maxdims) END SUBROUTINE h5sget_simple_extent_dims_f +!---------------------------------------------------------------------- +! Name: h5sget_simple_extent_type_f +! +! Purpose: Determine the current class of a dataspace +! +! Inputs: +! space_id - dataspace identifier +! Outputs: +! classtype - class type, possible values are: +! H5S_NO_CLASS_F (-1) +! H5S_SCALAR_F (0) +! H5S_SIMPLE_F (1) +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5sget_simple_extent_type_f(space_id, classtype, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sget_simple_extent_type_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -297,14 +1107,61 @@ ! H5S_SCALAR_F (0) ! H5S_SIMPLE_F (1) INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5sget_simple_extent_type_c + +! INTEGER, EXTERNAL :: h5sget_simple_extent_type_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sget_simple_extent_type_c(space_id, classtype) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SGET_SIMPLE_EXTENT_TYPE_C'::h5sget_simple_extent_type_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER, INTENT(OUT) :: classtype + END FUNCTION h5sget_simple_extent_type_c + END INTERFACE + hdferr = h5sget_simple_extent_type_c(space_id, classtype) END SUBROUTINE h5sget_simple_extent_type_f +!---------------------------------------------------------------------- +! Name: h5sset_extent_simple_f +! +! Purpose: Sets or resets the size of an existing dataspace. +! +! Inputs: +! space_id - dataspace identifier +! rank - dataspace number of dimensions +! current_size - array with the new sizes of dimensions +! maximum_size - array with the new maximum sizes of +! dimensions +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5sset_extent_simple_f(space_id, rank, current_size, & maximum_size, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sset_extent_simple_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -317,14 +1174,62 @@ ! sizes of dimensions ! sizes INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5sset_extent_simple_c + +! INTEGER, EXTERNAL :: h5sset_extent_simple_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sset_extent_simple_c(space_id, rank, & + current_size, maximum_size) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SSET_EXTENT_SIMPLE_C'::h5sset_extent_simple_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER, INTENT(IN) :: rank + INTEGER(HSIZE_T), DIMENSION(rank), INTENT(IN) :: current_size + INTEGER(HSIZE_T), DIMENSION(rank), INTENT(IN) :: maximum_size + END FUNCTION h5sset_extent_simple_c + END INTERFACE + hdferr = h5sset_extent_simple_c(space_id, rank, current_size, & maximum_size) END SUBROUTINE h5sset_extent_simple_f +!---------------------------------------------------------------------- +! Name: h5sis_simple_f +! +! Purpose: Determines whether a dataspace is a simple dataspace. +! +! Inputs: +! space_id - dataspace identifier +! Outputs: +! status - flag to indicate if dataspace +! is simple or not +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5sis_simple_f(space_id, status, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sis_simple_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -333,14 +1238,59 @@ ! FALSE) INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: flag ! "TRUE/FALSE/ERROR from C" - INTEGER, EXTERNAL :: h5sis_simple_c + +! INTEGER, EXTERNAL :: h5sis_simple_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sis_simple_c(space_id, flag) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SIS_SIMPLE_C'::h5sis_simple_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER :: flag + END FUNCTION h5sis_simple_c + END INTERFACE + hdferr = h5sis_simple_c(space_id, flag) status = .TRUE. if (flag .EQ. 0) status = .FALSE. END SUBROUTINE h5sis_simple_f +!---------------------------------------------------------------------- +! Name: h5soffset_simple_f +! +! Purpose: Sets the offset of a simple dataspace. +! +! Inputs: +! space_id - dataspace identifier +! offset - the offset at which to position the +! selection +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5soffset_simple_f(space_id, offset, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5soffset_simple_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier @@ -348,13 +1298,59 @@ ! The offset at which to position ! the selection INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5soffset_simple_c + +! INTEGER, EXTERNAL :: h5soffset_simple_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5soffset_simple_c(space_id, offset) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SOFFSET_SIMPLE_C'::h5soffset_simple_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER(HSSIZE_T), DIMENSION(*), INTENT(IN) :: offset + END FUNCTION h5soffset_simple_c + END INTERFACE + hdferr = h5soffset_simple_c(space_id, offset) END SUBROUTINE h5soffset_simple_f +!---------------------------------------------------------------------- +! Name: h5sextent_copy_f +! +! Purpose: Copies the extent of a dataspace. +! +! Inputs: +! dest_space_id - the identifier for the dataspace to which +! the extent is copied +! source_space_id - the identifier for the dataspace from +! which the extent is copied +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5sextent_copy_f(dest_space_id, source_space_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sextent_copy_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: dest_space_id ! Identifier of destination @@ -362,25 +1358,117 @@ INTEGER(HID_T), INTENT(IN) :: source_space_id ! Identifier of source ! dataspace INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5sextent_copy_c + +! INTEGER, EXTERNAL :: h5sextent_copy_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sextent_copy_c(dest_space_id, source_space_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SEXTENT_COPY_C'::h5sextent_copy_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: dest_space_id + INTEGER(HID_T), INTENT(IN) :: source_space_id + END FUNCTION h5sextent_copy_c + END INTERFACE + hdferr = h5sextent_copy_c(dest_space_id, source_space_id) END SUBROUTINE h5sextent_copy_f - +!---------------------------------------------------------------------- +! Name: h5sset_extent_none_f +! +! Purpose: Removes the extent from a dataspace. +! +! Inputs: +! space_id - dataspace identifier +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5sset_extent_none_f(space_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sset_extent_none_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5sset_extent_none_c + +! INTEGER, EXTERNAL :: h5sset_extent_none_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sset_extent_none_c(space_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SSET_EXTENT_NONE_C'::h5sset_extent_none_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + END FUNCTION h5sset_extent_none_c + END INTERFACE + hdferr = h5sset_extent_none_c(space_id) END SUBROUTINE h5sset_extent_none_f +!---------------------------------------------------------------------- +! Name: h5sselect_hyperslab_f +! +! Purpose: Selects a hyperslab region to add to the current selected +! region +! +! Inputs: +! space_id - dataspace identifier +! operator - flag, valid values are: +! H5S_SELECT_SET_F (0) +! H5S_SELECT_OR_F (1) +! start - array with hyperslab offsets +! count - number of blocks included in the +! hyperslab +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! stride - array with hyperslab strides +! block - array with hyperslab block sizes +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 6, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5sselect_hyperslab_f(space_id, operator, start, count, & hdferr, stride, block) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5sselect_hyperslab_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier INTEGER, INTENT(IN) :: operator ! Flag, valid values are: @@ -400,9 +1488,28 @@ ! Sizes of element block INTEGER(HSIZE_T), DIMENSION(:), ALLOCATABLE :: def_block INTEGER(HSIZE_T), DIMENSION(:), ALLOCATABLE :: def_stride - INTEGER, EXTERNAL :: h5sselect_hyperslab_c INTEGER :: rank INTEGER :: error1, error2 + +! INTEGER, EXTERNAL :: h5sselect_hyperslab_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5sselect_hyperslab_c(space_id, operator, & + start, count, stride, block) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5SSELECT_HYPERSLAB_C'::h5sselect_hyperslab_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER, INTENT(IN) :: operator + INTEGER(HSSIZE_T), DIMENSION(*), INTENT(IN) :: start + INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: count + INTEGER(HSIZE_T), DIMENSION(*), OPTIONAL, INTENT(IN) :: stride + INTEGER(HSIZE_T), DIMENSION(*), OPTIONAL, INTENT(IN) :: block + END FUNCTION h5sselect_hyperslab_c + END INTERFACE + if (present(stride).and. present(block)) then hdferr = h5sselect_hyperslab_c(space_id, operator, start, count, & stride, block) diff --git a/fortran/src/H5Tf.c b/fortran/src/H5Tf.c index fcb5f41..06ca00b 100644 --- a/fortran/src/H5Tf.c +++ b/fortran/src/H5Tf.c @@ -1,5 +1,6 @@ #include "H5f90.h" + /*---------------------------------------------------------------------------- * Name: h5topen_c * Purpose: Call H5Topen to open a datatype diff --git a/fortran/src/H5Tff.f90 b/fortran/src/H5Tff.f90 index 344bfd8..6cfc525 100644 --- a/fortran/src/H5Tff.f90 +++ b/fortran/src/H5Tff.f90 @@ -3,12 +3,43 @@ ! MODULE H5T - USE H5FORTRAN_TYPES - USE H5FORTRAN_FLAGS + USE H5GLOBAL CONTAINS +!---------------------------------------------------------------------- +! Name: h5topen_f +! +! Purpose: Opens named datatype. +! +! Inputs: +! loc_id - location identifier +! name - a datatype name +! Outputs: +! type_id - datatype identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5topen_f(loc_id, name, type_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5topen_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier CHARACTER(LEN=*), INTENT(IN) :: name @@ -16,12 +47,63 @@ INTEGER(HID_T), INTENT(OUT) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: namelen ! Name length - INTEGER, EXTERNAL :: h5topen_c + +! INTEGER, EXTERNAL :: h5topen_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5topen_c(loc_id, name, namelen, type_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TOPEN_C'::h5topen_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference ::name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(HID_T), INTENT(OUT) :: type_id + END FUNCTION h5topen_c + END INTERFACE + namelen = LEN(name) hdferr = h5topen_c(loc_id, name, namelen, type_id) END SUBROUTINE h5topen_f +!---------------------------------------------------------------------- +! Name: h5tcommit_f +! +! Purpose: Commits a transient datatype to a file, creating a +! new named datatype. +! +! Inputs: +! loc_id - location identifier +! name - name of the datatype to be stored +! at the specified location +! type_id - identifier of a datatype to be stored +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tcommit_f(loc_id, name, type_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tcommit_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier CHARACTER(LEN=*), INTENT(IN) :: name @@ -29,23 +111,119 @@ INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: namelen ! Name length - INTEGER, EXTERNAL :: h5tcommit_c + +! INTEGER, EXTERNAL :: h5tcommit_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tcommit_c(loc_id, name, namelen, type_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TCOMMIT_C'::h5tcommit_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference ::name + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER :: namelen + INTEGER(HID_T), INTENT(IN) :: type_id + END FUNCTION h5tcommit_c + END INTERFACE + namelen = LEN(name) hdferr = h5tcommit_c(loc_id, name, namelen, type_id) END SUBROUTINE h5tcommit_f +!---------------------------------------------------------------------- +! Name: h5tcopy_f +! +! Purpose: iCreates a copy of exisiting datatype. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! new_type_id - identifier of datatype's copy +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tcopy_f(type_id, new_type_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tcopy_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(HID_T), INTENT(OUT) :: new_type_id ! Identifier of datatype's copy INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tcopy_c + +! INTEGER, EXTERNAL :: h5tcopy_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tcopy_c(type_id, new_type_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TCOPY_C'::h5tcopy_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(HID_T), INTENT(OUT) :: new_type_id + END FUNCTION h5tcopy_c + END INTERFACE + hdferr = h5tcopy_c(type_id, new_type_id) END SUBROUTINE h5tcopy_f +!---------------------------------------------------------------------- +! Name: h5tequal_f +! +! Purpose: Determines whether two datatype identifiers refer +! to the same datatype. +! +! Inputs: +! type1_id - datatype identifier +! type2_id - datatype identifier +! Outputs: +! flag - TRUE/FALSE flag to indicate +! if two datatypes are equal +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tequal_f(type1_id, type2_id, flag, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tequal_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type1_id ! Datatype identifier INTEGER(HID_T), INTENT(IN) :: type2_id ! Datatype identifier @@ -53,23 +231,121 @@ ! datatypes are equal INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: c_flag - INTEGER, EXTERNAL :: h5tequal_c + +! INTEGER, EXTERNAL :: h5tequal_c +! MS FORTRAN needs explicit interface for C functions called here + INTERFACE + INTEGER FUNCTION h5tequal_c(type1_id, type2_id, c_flag) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TEQUAL_C'::h5tequal_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type1_id + INTEGER(HID_T), INTENT(IN) :: type2_id + INTEGER :: c_flag + END FUNCTION h5tequal_c + END INTERFACE + flag = .FALSE. hdferr = h5tequal_c(type1_id, type2_id, c_flag) if(c_flag .gt. 0) flag = .TRUE. END SUBROUTINE h5tequal_f +!---------------------------------------------------------------------- +! Name: h5tclose_f +! +! Purpose: Releases a datatype. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tclose_f(type_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tclose_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tclose_c + +! INTEGER, EXTERNAL :: h5tclose_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tclose_c(type_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TCLOSE_C'::h5tclose_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + END FUNCTION h5tclose_c + END INTERFACE + hdferr = h5tclose_c(type_id) END SUBROUTINE h5tclose_f +!---------------------------------------------------------------------- +! Name: h5tget_class_f +! +! Purpose: Returns the datatype class identifier. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! class - class, possible values are: +! H5T_NO_CLASS_F (-1) +! H5T_INTEGER_F (0) +! H5T_FLOAT_F (1) +! H5T_TIME_F (2) +! H5T_STRING_F (3) +! H5T_BITFIELD_F (4) +! H5T_OPAQUE_F (5) +! H5T_COMPOUND_F (6) +! H5T_REFERENCE_F (7) +! H5T_ENUM_F (8) +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_class_f(type_id, class, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_class_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: class @@ -85,32 +361,171 @@ ! H5T_REFERENCE_F (7) ! H5T_ENUM_F (8) INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_class_c + +! INTEGER, EXTERNAL :: h5tget_class_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_class_c(type_id, class) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_CLASS_C'::h5tget_class_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(OUT) :: class + END FUNCTION h5tget_class_c + END INTERFACE + hdferr = h5tget_class_c(type_id, class) END SUBROUTINE h5tget_class_f +!---------------------------------------------------------------------- +! Name: h5tget_size_f +! +! Purpose: Returns the size of a datatype. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! size - datatype size +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_size_f(type_id, size, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_size_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(OUT) :: size ! Datatype size INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_size_c + +! INTEGER, EXTERNAL :: h5tget_size_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_size_c(type_id, size) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_SIZE_C'::h5tget_size_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(SIZE_T), INTENT(OUT) :: size + END FUNCTION h5tget_size_c + END INTERFACE + hdferr = h5tget_size_c(type_id, size) END SUBROUTINE h5tget_size_f +!---------------------------------------------------------------------- +! Name: h5tset_size_f +! +! Purpose: Sets the total size for an atomic datatype. +! +! Inputs: +! type_id - datatype identifier +! size - size of the datatype +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tset_size_f(type_id, size, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tset_size_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(IN) :: size ! Datatype size INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tset_size_c + +! INTEGER, EXTERNAL :: h5tset_size_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tset_size_c(type_id, size) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TSET_SIZE_C'::h5tset_size_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(SIZE_T), INTENT(IN) :: size + END FUNCTION h5tset_size_c + END INTERFACE + hdferr = h5tset_size_c(type_id, size) END SUBROUTINE h5tset_size_f +!---------------------------------------------------------------------- +! Name: h5tget_order_f +! +! Purpose: Returns the byte order of an atomic datatype. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! order - byte order for the datatype, possible +! values are: +! H5T_ORDER_LE_F +! H5T_ORDER_BE_F +! H5T_ORDER_VAX_F (not implemented yet) +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_order_f(type_id, order, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_order_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: order @@ -119,12 +534,61 @@ ! H5T_ORDER_BE_F ! H5T_ORDER_VAX_F INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_order_c + +! INTEGER, EXTERNAL :: h5tget_order_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_order_c(type_id, order) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_ORDER_C'::h5tget_order_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(OUT) :: order + END FUNCTION h5tget_order_c + END INTERFACE + hdferr = h5tget_order_c(type_id, order) END SUBROUTINE h5tget_order_f +!---------------------------------------------------------------------- +! Name: h5tset_order_f +! +! Purpose: Sets the byte ordering of an atomic datatype. +! +! Inputs: +! type_id - datatype identifier +! order - datatype byte order +! Possible values are: +! H5T_ORDER_LE_F +! H5T_ORDER_BE_F +! H5T_ORDER_VAX_F (not implemented yet) +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tset_order_f(type_id, order, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tset_order_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: order ! Datatype byte order, bossible values @@ -133,50 +597,283 @@ ! H5T_ORDER_BE_F ! H5T_ORDER_VAX_F INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tset_order_c + +! INTEGER, EXTERNAL :: h5tset_order_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tset_order_c(type_id, order) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TSET_ORDER_C'::h5tset_order_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(IN) :: order + END FUNCTION h5tset_order_c + END INTERFACE + hdferr = h5tset_order_c(type_id, order) END SUBROUTINE h5tset_order_f +!---------------------------------------------------------------------- +! Name: h5tget_precision_f +! +! Purpose: Returns the precision of an atomic datatype. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! precision - precision of the datatype +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_precision_f(type_id, precision, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_precision_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(OUT) :: precision ! Datatype precision INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_precision_c + +! INTEGER, EXTERNAL :: h5tget_precision_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_precision_c (type_id, precision) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_PRECISION_C'::h5tget_precision_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(SIZE_T), INTENT(OUT) :: precision + END FUNCTION h5tget_precision_c + END INTERFACE + hdferr = h5tget_precision_c(type_id, precision) END SUBROUTINE h5tget_precision_f +!---------------------------------------------------------------------- +! Name: h5tset_precision_f +! +! Purpose: Sets the precision of an atomic datatype. +! +! Inputs: +! type_id - datatype identifier +! precision - datatype precision +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tset_precision_f(type_id, precision, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tset_precision_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(IN) :: precision ! Datatype precision INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tset_precision_c + +! INTEGER, EXTERNAL :: h5tset_precision_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tset_precision_c (type_id, precision) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TSET_PRECISION_C'::h5tset_precision_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(SIZE_T), INTENT(IN) :: precision + END FUNCTION h5tset_precision_c + END INTERFACE + hdferr = h5tset_precision_c(type_id, precision) END SUBROUTINE h5tset_precision_f +!---------------------------------------------------------------------- +! Name: h5tget_offset_f +! +! Purpose: Retrieves the bit offset of the first significant bit. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! offset - offset value +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_offset_f(type_id, offset, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_offset_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(OUT) :: offset ! Datatype bit offset of the ! first significant bit INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_offset_c + +! INTEGER, EXTERNAL :: h5tget_offset_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_offset_c(type_id, offset) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_OFFSET_C'::h5tget_offset_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(SIZE_T), INTENT(OUT) :: offset + END FUNCTION h5tget_offset_c + END INTERFACE + hdferr = h5tget_offset_c(type_id, offset) END SUBROUTINE h5tget_offset_f +!---------------------------------------------------------------------- +! Name: h5tset_offset_f +! +! Purpose: Sets the bit offset of the first significant bit. +! +! Inputs: +! type_id - datatype identifier +! offset - offset value +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tset_offset_f(type_id, offset, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tset_offset_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(IN) :: offset ! Datatype bit offset of the ! first significant bit INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tset_offset_c + +! INTEGER, EXTERNAL :: h5tset_offset_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tset_offset_c(type_id, offset) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TSET_OFFSET_C'::h5tset_offset_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(SIZE_T), INTENT(IN) :: offset + END FUNCTION h5tset_offset_c + END INTERFACE + hdferr = h5tset_offset_c(type_id, offset) END SUBROUTINE h5tset_offset_f +!---------------------------------------------------------------------- +! Name: h5tget_pad_f +! +! Purpose: Retrieves the padding type of the least and +! most-significant bit padding. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! lsbpad - least-significant bit padding type +! msbpad - most-significant bit padding type +! Possible values of padding type are: +! H5T_PAD_ERROR_F = -1 +! H5T_PAD_ZERO_F = 0 +! H5T_PAD_ONE_F = 1 +! H5T_PAD_BACKGROUND_F = 2 +! H5T_PAD_NPAD_F = 3 +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_pad_f(type_id, lsbpad, msbpad, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_pad_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: lsbpad ! padding type of the @@ -191,11 +888,64 @@ ! H5T_PAD_NPAD_F = 3 INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_pad_c + +! INTEGER, EXTERNAL :: h5tget_pad_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_pad_c(type_id, lsbpad, msbpad) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_PAD_C'::h5tget_pad_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(OUT) :: lsbpad + INTEGER, INTENT(OUT) :: msbpad + END FUNCTION h5tget_pad_c + END INTERFACE + hdferr = h5tget_pad_c(type_id, lsbpad, msbpad) END SUBROUTINE h5tget_pad_f +!---------------------------------------------------------------------- +! Name: h5tset_pad_f +! +! Purpose: Sets the least and most-significant bits padding types. +! +! Inputs: +! type_id - datatype identifier +! lsbpad - least-significant bit padding type +! msbpad - most-significant bit padding type +! Possible values of padding type are: +! H5T_PAD_ERROR_F = -1 +! H5T_PAD_ZERO_F = 0 +! H5T_PAD_ONE_F = 1 +! H5T_PAD_BACKGROUND_F = 2 +! H5T_PAD_NPAD_F = 3 +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tset_pad_f(type_id, lsbpad, msbpad, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tset_pad_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: lsbpad ! padding type of the @@ -209,11 +959,62 @@ ! H5T_PAD_ERROR_F = -1 ! H5T_PAD_NPAD_F = 3 INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tset_pad_c + +! INTEGER, EXTERNAL :: h5sget_pad_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tset_pad_c(type_id, lsbpad, msbpad) + USE H5GLOBAL + INTEGER(HID_T), INTENT(IN) :: type_id + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TSET_PAD_C'::h5tset_pad_c + !DEC$ ENDIF + INTEGER, INTENT(IN) :: lsbpad + INTEGER, INTENT(IN) :: msbpad + END FUNCTION h5tset_pad_c + END INTERFACE + hdferr = h5tset_pad_c(type_id, lsbpad, msbpad) END SUBROUTINE h5tset_pad_f +!---------------------------------------------------------------------- +! Name: h5tget_sign_f +! +! Purpose: Retrieves the sign type for an integer type. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! sign - sign type +! Possible values are: +! Unsigned integer type H5T_SGN_NONE_F = 0 +! Two's complement signed integer type +! H5T_SGN_2_F = 1 +! or error value: H5T_SGN_ERROR_F=-1 +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_sign_f(type_id, sign, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_sign_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: sign ! sign type for an integer type @@ -223,11 +1024,61 @@ !H5T_SGN_2_F = 1 !or error value: H5T_SGN_ERROR_F=-1 INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_sign_c + +! INTEGER, EXTERNAL :: h5tget_sign_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_sign_c(type_id, sign) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_SIGN_C'::h5tget_sign_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(OUT) :: sign + END FUNCTION h5tget_sign_c + END INTERFACE + hdferr = h5tget_sign_c(type_id, sign) END SUBROUTINE h5tget_sign_f +!---------------------------------------------------------------------- +! Name: h5tset_sign_f +! +! Purpose: Sets the sign proprety for an integer type. +! +! Inputs: +! type_id - datatype identifier +! sign - sign type +! Possible values are: +! Unsigned integer type H5T_SGN_NONE_F = 0 +! Two's complement signed integer type +! H5T_SGN_2_F = 1 +! or error value: H5T_SGN_ERROR_F=-1 +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tset_sign_f(type_id, sign, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tset_sign_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: sign !sign type for an integer type @@ -237,11 +1088,59 @@ !H5T_SGN_2_F = 1 !or error value: H5T_SGN_ERROR_F=-1 INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tset_sign_c + +! INTEGER, EXTERNAL :: h5tset_sign_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tset_sign_c(type_id, sign) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TSET_SIGN_C'::h5tset_sign_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(IN) :: sign + END FUNCTION h5tset_sign_c + END INTERFACE + hdferr = h5tset_sign_c(type_id, sign) END SUBROUTINE h5tset_sign_f +!---------------------------------------------------------------------- +! Name: h5tget_fields_f +! +! Purpose: Retrieves floating point datatype bit field information. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! epos - exponent bit-position +! esize - size of exponent in bits +! mpos - mantissa position +! msize - size of mantissa in bits +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_fields_f(type_id, epos, esize, mpos, msize, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_fields_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: epos ! exponent bit-position @@ -250,11 +1149,62 @@ INTEGER, INTENT(OUT) :: msize ! size of mantissa in bits INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_fields_c - hdferr = h5tget_fields_c(type_id, epos, esize, mpos, msize, hdferr) +! INTEGER, EXTERNAL :: h5tget_fields_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_fields_c(type_id, epos, esize, mpos, msize) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_FIELDS_C'::h5tget_fields_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(OUT) :: epos + INTEGER, INTENT(OUT) :: esize + INTEGER, INTENT(OUT) :: mpos + INTEGER, INTENT(OUT) :: msize + END FUNCTION h5tget_fields_c + END INTERFACE + + hdferr = h5tget_fields_c(type_id, epos, esize, mpos, msize) END SUBROUTINE h5tget_fields_f +!---------------------------------------------------------------------- +! Name: h5tset_fields_f +! +! Purpose: Sets locations and sizes of floating point bit fields. +! +! Inputs: +! type_id - datatype identifier +! epos - exponent bit-position +! esize - size of exponent in bits +! mpos - mantissa position +! msize - size of mantissa in bits +! hdferr: - error code +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tset_fields_f(type_id, epos, esize, mpos, msize, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tset_fields_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: epos ! exponent bit-position @@ -263,30 +1213,171 @@ INTEGER, INTENT(IN) :: msize ! size of mantissa in bits INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tset_fields_c +! INTEGER, EXTERNAL :: h5tset_fields_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tset_fields_c(type_id, epos, esize, mpos, msize) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TSET_FIELDS_C'::h5tset_fields_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(IN) :: epos + INTEGER, INTENT(IN) :: esize + INTEGER, INTENT(IN) :: mpos + INTEGER, INTENT(IN) :: msize + END FUNCTION h5tset_fields_c + END INTERFACE + hdferr = h5tset_fields_c(type_id, epos, esize, mpos, msize) END SUBROUTINE h5tset_fields_f +!---------------------------------------------------------------------- +! Name: h5tget_ebias_f +! +! Purpose: Retrieves the exponent bias of a floating-point type. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! ebias - datatype exponent bias +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_ebias_f(type_id, ebias, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_ebias_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(OUT) :: ebias ! Datatype exponent bias of a floating-point type INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_ebias_c + +! INTEGER, EXTERNAL :: h5tget_ebias_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_ebias_c(type_id, ebias) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_EBIAS_C'::h5tget_ebias_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(SIZE_T), INTENT(OUT) :: ebias + END FUNCTION h5tget_ebias_c + END INTERFACE + hdferr = h5tget_ebias_c(type_id, ebias) END SUBROUTINE h5tget_ebias_f +!---------------------------------------------------------------------- +! Name: h5tset_ebias_f +! +! Purpose: Sets the exponent bias of a floating-point type. +! +! Inputs: +! type_id - datatype identifier +! ebias - datatype exponent bias +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tset_ebias_f(type_id, ebias, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tset_ebias_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER(SIZE_T), INTENT(IN) :: ebias !Datatype exponent bias of a floating-point type INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tset_ebias_c + +! INTEGER, EXTERNAL :: h5tset_ebias_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tset_ebias_c(type_id, ebias) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TSET_EBIAS_C'::h5tset_ebias_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(SIZE_T), INTENT(IN) :: ebias + END FUNCTION h5tset_ebias_c + END INTERFACE + hdferr = h5tset_ebias_c(type_id, ebias) END SUBROUTINE h5tset_ebias_f +!---------------------------------------------------------------------- +! Name: h5tget_norm_f +! +! Purpose: Retrieves mantissa normalization of a floating-point +! datatype. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! norm - normalization types, valid values are: +! H5T_NORM_IMPLIED_F(0) +! H5T_NORM_MSBSET_F(1) +! H5T_NORM_NONE_F(2) +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_norm_f(type_id, norm, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_norm_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: norm !mantissa normalization of a floating-point datatype @@ -296,13 +1387,61 @@ !mantissa is always 1, H5T_NORM_NONE_F(2) !Mantissa is not normalize INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_norm_c + +! INTEGER, EXTERNAL :: h5tget_norm_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_norm_c(type_id, norm) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_NORM_C'::h5tget_norm_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(OUT) :: norm + END FUNCTION h5tget_norm_c + END INTERFACE + hdferr = h5tget_norm_c(type_id, norm) END SUBROUTINE h5tget_norm_f +!---------------------------------------------------------------------- +! Name: h5tset_norm_f +! +! Purpose: Sets the mantissa normalization of a floating-point datatype. +! +! Inputs: +! type_id - datatype identifier +! norm - normalization types, valid values are: +! H5T_NORM_IMPLIED_F(0) +! H5T_NORM_MSBSET_F(1) +! H5T_NORM_NONE_F(2) +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tset_norm_f(type_id, norm, hdferr) - IMPLICIT NONE +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tset_norm_f +!DEC$endif +! + IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: norm !mantissa normalization of a floating-point datatype !Valid normalization types are: @@ -311,11 +1450,61 @@ !mantissa is always 1, H5T_NORM_NONE_F(2) !Mantissa is not normalize INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tset_norm_c + +! INTEGER, EXTERNAL :: h5tset_norm_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tset_norm_c(type_id, norm) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TSET_NORM_C'::h5tset_norm_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(IN) :: norm + END FUNCTION h5tset_norm_c + END INTERFACE + hdferr = h5tset_norm_c(type_id, norm) END SUBROUTINE h5tset_norm_f +!---------------------------------------------------------------------- +! Name: h5tget_inpad_f +! +! Purpose: Retrieves the internal padding type for unused bits +! in floating-point datatypes. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! padtype - padding type for unused bits +! Possible values of padding type are: +! H5T_PAD_ZERO_F = 0 +! H5T_PAD_ONE_F = 1 +! H5T_PAD_BACKGROUND_F = 2 +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_inpad_f(type_id, padtype, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_inpad_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: padtype ! padding type for unused bits @@ -326,11 +1515,60 @@ ! H5T__PAD_BACKGROUND_F = 2 INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_inpad_c + +! INTEGER, EXTERNAL :: h5tget_inpad_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_inpad_c(type_id, padtype) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_INPAD_C'::h5tget_inpad_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(OUT) :: padtype + END FUNCTION h5tget_inpad_c + END INTERFACE + hdferr = h5tget_inpad_c(type_id, padtype) END SUBROUTINE h5tget_inpad_f +!---------------------------------------------------------------------- +! Name: h5tset_inpad_f +! +! Purpose: Fills unused internal floating point bits. +! +! Inputs: +! type_id - datatype identifier +! padtype - padding type for unused bits +! Possible values of padding type are: +! H5T_PAD_ZERO_F = 0 +! H5T_PAD_ONE_F = 1 +! H5T_PAD_BACKGROUND_F = 2 +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tset_inpad_f(type_id, padtype, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tset_inpad_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: padtype ! padding type for unused bits @@ -340,92 +1578,463 @@ ! H5T__PAD_ONE_F = 1 ! H5T__PAD_BACKGROUND_F = 2 INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tset_inpad_c + +! INTEGER, EXTERNAL :: h5tset_inpad_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tset_inpad_c(type_id, padtype) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TSET_INPAD_C'::h5tset_inpad_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(IN) :: padtype + END FUNCTION h5tset_inpad_c + END INTERFACE + hdferr = h5tset_inpad_c(type_id, padtype) END SUBROUTINE h5tset_inpad_f +!---------------------------------------------------------------------- +! Name: h5tget_cset_f +! +! Purpose: Retrieves the character set type of a string datatype. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! cset - character set type of a string datatype +! Possible values of padding type are: +! H5T_CSET_ASCII_F = 0 +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_cset_f(type_id, cset, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_cset_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: cset ! character set type of a string datatype ! Possible values of padding type are: !H5T_CSET_ASCII_F = 0 INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_cset_c + +! INTEGER, EXTERNAL :: h5tget_cset_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_cset_c(type_id, cset) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_CSET_C'::h5tget_cset_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(OUT) :: cset + END FUNCTION h5tget_cset_c + END INTERFACE + hdferr = h5tget_cset_c(type_id, cset) END SUBROUTINE h5tget_cset_f +!---------------------------------------------------------------------- +! Name: h5tset_cset_f +! +! Purpose: Sets character set to be used. +! +! Inputs: +! type_id - datatype identifier +! cset - character set type of a string datatype +! Possible values of padding type are: +! H5T_CSET_ASCII_F = 0 +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tset_cset_f(type_id, cset, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tset_cset_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: cset !character set type of a string datatype !Possible values of padding type are: !H5T_CSET_ASCII_F = 0 INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tset_cset_c + +! INTEGER, EXTERNAL :: h5tset_cset_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tset_cset_c(type_id, cset) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TSET_CSET_C'::h5tset_cset_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(IN) :: cset + END FUNCTION h5tset_cset_c + END INTERFACE + hdferr = h5tset_cset_c(type_id, cset) END SUBROUTINE h5tset_cset_f +!---------------------------------------------------------------------- +! Name: h5tget_strpad_f +! +! Purpose: Retrieves the storage mechanism for a string datatype. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! strpad - storage method for a string datatype +! Possible values are: +! H5T_STR_NULLTERM_F, +! H5T_STR_NULLPAD_F, +! H5T_STR_SPACEPAD_F +! H5T_STR_ERROR_F +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_strpad_f(type_id, strpad, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_strpad_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier - INTEGER, INTENT(OUT) :: strpad ! string padding method for a string datatype - ! Possible values of padding type are: - !Pad with zeros (as C does): H5T_STR_NULL_F(0), - !Pad with spaces (as FORTRAN does): - !H5T_STR_SPACE_F(1) + INTEGER, INTENT(OUT) :: strpad INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_strpad_c + +! INTEGER, EXTERNAL :: h5tget_strpad_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_strpad_c(type_id, strpad) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_STRPAD_C'::h5tget_strpad_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(OUT) :: strpad + END FUNCTION h5tget_strpad_c + END INTERFACE + hdferr = h5tget_strpad_c(type_id, strpad) END SUBROUTINE h5tget_strpad_f +!---------------------------------------------------------------------- +! Name: h5tset_strpad_f +! +! Purpose: Defines the storage mechanism for character strings. +! +! Inputs: +! type_id - datatype identifier +! strpad - storage method for a string datatype +! Possible values are: +! H5T_STR_NULLTERM_F, +! H5T_STR_NULLPAD_F, +! H5T_STR_SPACEPAD_F +! H5T_STR_ERROR_F +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tset_strpad_f(type_id, strpad, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tset_strpad_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: strpad ! string padding method for a string datatype - ! Possible values of padding type are: - !Pad with zeros (as C does): H5T_STR_NULL_F(0), - !Pad with spaces (as FORTRAN does): - !H5T_STR_SPACE_F(1) INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tset_strpad_c + +! INTEGER, EXTERNAL :: h5tset_strpad_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tset_strpad_c(type_id, strpad) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TSET_STRPAD_C'::h5tset_strpad_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(IN) :: strpad + END FUNCTION h5tset_strpad_c + END INTERFACE + hdferr = h5tset_strpad_c(type_id, strpad) END SUBROUTINE h5tset_strpad_f +!---------------------------------------------------------------------- +! Name: h5tget_nmembers_f +! +! Purpose: Retrieves the number of fields in a compound datatype. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! num_members - number of members +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_nmembers_f(type_id, num_members, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_nmembers_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: num_members !number of fields in a compound datatype INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_nmembers_c + +! INTEGER, EXTERNAL :: h5tget_nmembers_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_nmembers_c(type_id, num_members) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_NMEMBERS_C'::h5tget_nmembers_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(OUT) :: num_members + END FUNCTION h5tget_nmembers_c + END INTERFACE + hdferr = h5tget_nmembers_c(type_id, num_members) END SUBROUTINE h5tget_nmembers_f +!---------------------------------------------------------------------- +! Name: h5tget_member_name_f +! +! Purpose: Retrieves the name of a field of a compound datatype. +! +! Inputs: +! type_id - datatype identifier +! index - filed index (0-based) +! Outputs: +! member_name - buffer to hold member's name +! namelen - name lenght +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_member_name_f(type_id,index, member_name, namelen, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_member_name_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: index !Field index (0-based) of the field name to retrieve CHARACTER(LEN=*), INTENT(OUT) :: member_name !name of a field of !a compound datatype - INTEGER, INTENT(OUT) :: namelen ! Length the name + INTEGER, INTENT(OUT) :: namelen ! Length of the name INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_member_name_c + +! INTEGER, EXTERNAL :: h5tget_member_name_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_member_name_c(type_id, index, member_name, namelen) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_MEMBER_NAME_C'::h5tget_member_name_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: member_name + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(IN) :: index + CHARACTER(LEN=*), INTENT(OUT) :: member_name + INTEGER, INTENT(OUT) :: namelen + END FUNCTION + END INTERFACE + hdferr = h5tget_member_name_c(type_id, index, member_name, namelen) END SUBROUTINE h5tget_member_name_f +!---------------------------------------------------------------------- +! Name: h5tget_member_offset_f +! +! Purpose: Retrieves the offset of a field of a compound datatype. +! +! Inputs: +! type_id - datatype identifier +! member_no - number of the field +! Outputs: +! offset - byte offset of the requested field +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_member_offset_f(type_id, member_no, offset, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_member_offset_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: member_no !Number of the field !whose offset is requested - INTEGER(SIZE_T), INTENT(OUT) :: offset !byte offset of the the beginning of the field + INTEGER(SIZE_T), INTENT(OUT) :: offset !byte offset of the beginning of the field INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_member_offset_c + +! INTEGER, EXTERNAL :: h5tget_member_offset_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_member_offset_c(type_id, member_no, offset ) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_MEMBER_OFFSET_C'::h5tget_member_offset_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(IN) :: member_no + INTEGER(SIZE_T), INTENT(OUT) :: offset + END FUNCTION h5tget_member_offset_c + END INTERFACE + hdferr = h5tget_member_offset_c(type_id, member_no, offset ) END SUBROUTINE h5tget_member_offset_f +!---------------------------------------------------------------------- +! Name: h5tget_member_dim_f +! +! Purpose: This function is not supported in hdf5-1.4.* +! +! Inputs: +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + ! SUBROUTINE h5tget_member_dims_f(type_id, field_idx,dims, field_dims, perm, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_member_dims_f +!DEC$endif +! ! IMPLICIT NONE ! INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier ! INTEGER, INTENT(IN) :: field_idx !Field index (0-based) of @@ -442,90 +2051,448 @@ ! ! END SUBROUTINE h5tget_member_dims_f +!---------------------------------------------------------------------- +! Name: h5tget_array_dims_f +! +! Purpose: Returns sizes of array dimensions. +! +! Inputs: +! type_id - array datatype identifier +! Outputs: +! dims - buffer to store array datatype +! dimensions +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_array_dims_f(type_id, dims, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_array_dims_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Array datatype identifier INTEGER(HSIZE_T),DIMENSION(*), INTENT(OUT) :: dims !buffer to store array datatype ! dimensions INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_array_dims_c + +! INTEGER, EXTERNAL :: h5tget_array_dims_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_array_dims_c(type_id, dims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_ARRAY_DIMS_C'::h5tget_array_dims_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(HSIZE_T),DIMENSION(*), INTENT(OUT) :: dims + END FUNCTION h5tget_array_dims_c + END INTERFACE + hdferr = h5tget_array_dims_c(type_id, dims) END SUBROUTINE h5tget_array_dims_f +!---------------------------------------------------------------------- +! Name: h5tget_array_ndims_f +! +! Purpose: Returns the rank of an array datatype. +! +! Inputs: +! type_id - array datatype identifier +! Outputs: +! ndims - number of array dimensions +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_array_ndims_f(type_id, ndims, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_array_ndims_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Array datatype identifier INTEGER, INTENT(OUT) :: ndims ! number of array dimensions INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_array_ndims_c + +! INTEGER, EXTERNAL :: h5tget_array_ndims_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_array_ndims_c(type_id, ndims) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_ARRAY_NDIMS_C'::h5tget_array_ndims_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(OUT) :: ndims + END FUNCTION h5tget_array_ndims_c + END INTERFACE + hdferr = h5tget_array_ndims_c(type_id, ndims) END SUBROUTINE h5tget_array_ndims_f +!---------------------------------------------------------------------- +! Name: h5tget_super_f +! +! Purpose: Returns the base datatype from which a datatype is derived. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! base_type_id - identifier of the base type +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_super_f(type_id, base_type_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_super_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! datatype identifier INTEGER(HID_T), INTENT(OUT) :: base_type_id ! identifier of the datatype ! from which datatype (type_id) was derived INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_super_c + +! INTEGER, EXTERNAL :: h5tget_super_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_super_c(type_id, base_type_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_SUPER_C'::h5tget_super_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER(HID_T), INTENT(OUT) :: base_type_id + END FUNCTION h5tget_super_c + END INTERFACE + hdferr = h5tget_super_c(type_id, base_type_id) END SUBROUTINE h5tget_super_f +!---------------------------------------------------------------------- +! Name: h5tget_member_type_f +! +! Purpose: Returns the datatype of the specified member. +! +! Inputs: +! type_id - compound datatype identifier +! field_idx - field index (0-based) +! +! Outputs: +! datatype - idnetifier of the member's datatype +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_member_type_f(type_id, field_idx, datatype, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_member_type_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: field_idx !Field index (0-based) of the field type to retrieve INTEGER(HID_T), INTENT(OUT) :: datatype !identifier of a copy of !the datatype of the field INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_member_type_c + +! INTEGER, EXTERNAL :: h5tget_member_type_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_member_type_c(type_id, field_idx , datatype) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_MEMBER_TYPE_C'::h5tget_member_type_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(IN) :: field_idx + INTEGER(HID_T), INTENT(OUT) :: datatype + END FUNCTION h5tget_member_type_c + END INTERFACE + hdferr = h5tget_member_type_c(type_id, field_idx , datatype) END SUBROUTINE h5tget_member_type_f +!---------------------------------------------------------------------- +! Name: h5tcreate_f +! +! Purpose: Creates a new dataype +! +! Inputs: +! class - datatype class, possible values are: +! H5T_COMPOUND_F +! H5T_ENUM_F +! H5T_OPAQUE_F +! size - datattype size +! Outputs: +! type_id - datatype identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tcreate_f(class, size, type_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tcreate_f +!DEC$endif +! IMPLICIT NONE - INTEGER, INTENT(IN) :: class ! Datatype class cna be one of - ! H5T_COMPOUND_F (6) - ! H5T_ENUM_F (8) - ! H5T_OPAQUE_F (9) + INTEGER, INTENT(IN) :: class ! Datatype class can be one of + ! H5T_COMPOUND_F + ! H5T_ENUM_F + ! H5T_OPAQUE_F INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the datatype INTEGER(HID_T), INTENT(OUT) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tcreate_c + +! INTEGER, EXTERNAL :: h5tcreate_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tcreate_c(class, size, type_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TCREATE_C'::h5tcreate_c + !DEC$ ENDIF + INTEGER, INTENT(IN) :: class + INTEGER(SIZE_T), INTENT(IN) :: size + INTEGER(HID_T), INTENT(OUT) :: type_id + END FUNCTION h5tcreate_c + END INTERFACE hdferr = h5tcreate_c(class, size, type_id) END SUBROUTINE h5tcreate_f +!---------------------------------------------------------------------- +! Name: h5tinsert_f +! +! Purpose: Adds a new member to a compound datatype. +! +! Inputs: +! type_id - compound dattype identifier +! name - name of the field to insert +! offset - start of the member in an instance of +! the compound datatype +! field_id - datatype identifier of the field to insert +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tinsert_f(type_id, name, offset, field_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tinsert_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier CHARACTER(LEN=*), INTENT(IN) :: name !Name of the field to insert - INTEGER(SIZE_T), INTENT(IN) :: offset !Offset in memory structure of the field to insert + INTEGER(SIZE_T), INTENT(IN) :: offset !start of the member in an instance of + !the compound datatype INTEGER(HID_T), INTENT(IN) :: field_id !datatype identifier of the new member INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: namelen - INTEGER, EXTERNAL :: h5tinsert_c + +! INTEGER, EXTERNAL :: h5tinsert_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tinsert_c(type_id, name, namelen, offset, field_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TINSERT_C'::h5tinsert_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: type_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER(SIZE_T), INTENT(IN) :: offset + INTEGER(HID_T), INTENT(IN) :: field_id + INTEGER :: namelen + END FUNCTION h5tinsert_c + END INTERFACE + namelen = LEN(name) hdferr = h5tinsert_c(type_id, name, namelen, offset, field_id ) END SUBROUTINE h5tinsert_f +!---------------------------------------------------------------------- +! Name: h5tpack_f +! +! Purpose: Recursively removes padding from within a compound datatype. +! +! Inputs: +! type_id - compound datatype identifier +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tpack_f(type_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tpack_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tpack_c + +! INTEGER, EXTERNAL :: h5tpack_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tpack_c(type_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TPACK_C'::h5tpack_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + END FUNCTION h5tpack_c + END INTERFACE + hdferr = h5tpack_c(type_id) END SUBROUTINE h5tpack_f +!---------------------------------------------------------------------- +! Name: h5tinsert_array_f +! +! Purpose: This function is not available on hdf5-1.4.* +! +! Inputs: +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + ! SUBROUTINE h5tinsert_array_f(parent_id,name,offset, ndims, dims, member_id, hdferr, perm) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tinsert_array_f +!DEC$endif +! ! IMPLICIT NONE ! INTEGER(HID_T), INTENT(IN) :: parent_id ! identifier of the parent compound datatype ! CHARACTER(LEN=*), INTENT(IN) :: name !Name of the new member @@ -550,8 +2517,42 @@ ! end if ! ! END SUBROUTINE h5tinsert_array_f + +!---------------------------------------------------------------------- +! Name: h5tarray_create_f +! +! Purpose: Creates an array datatype object. +! +! Inputs: +! base_id - datatype identifier for the array +! base datatype +! rank - rank of the array +! dims - array dimension sizes +! Outputs: +! type_id - array datatype identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5tarray_create_f(base_id, rank, dims, type_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tarray_create_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: base_id ! identifier of array base datatype INTEGER, INTENT(IN) :: rank ! Rank of the array @@ -559,12 +2560,60 @@ INTEGER(HID_T), INTENT(OUT) :: type_id ! identifier of the array datatype INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tarray_create_c - hdferr = h5tarray_create_c(base_id, rank, dims, type_id) + +! INTEGER, EXTERNAL :: h5tarray_create_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tarray_create_c(base_id, rank, dims, type_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TARRAY_CREATE_C'::h5tarray_create_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: base_id + INTEGER, INTENT(IN) :: rank + INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: dims + INTEGER(HID_T), INTENT(OUT) :: type_id + END FUNCTION h5tarray_create_c + END INTERFACE + + hdferr = h5tarray_create_c(base_id, rank, dims, type_id) END SUBROUTINE h5tarray_create_f +!---------------------------------------------------------------------- +! Name: h5tenum_create_f +! +! Purpose: Creates a new enumeration datatype. +! +! Inputs: +! parent_id - datatype identifier for base datatype +! Outputs: +! new_type_id - datatype identifier for the enumeration +! datatype +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tenum_create_f(parent_id, new_type_id, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tenum_create_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: parent_id ! Datatype identifier for ! the base datatype @@ -572,75 +2621,380 @@ !datatype identifier for the ! new enumeration datatype INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tenum_create_c + +! INTEGER, EXTERNAL :: h5tenum_create_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tenum_create_c(parent_id, new_type_id) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TENUM_CREATE_C'::h5tenum_create_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: parent_id + INTEGER(HID_T), INTENT(OUT) :: new_type_id + END FUNCTION h5tenum_create_c + END INTERFACE + hdferr = h5tenum_create_c(parent_id, new_type_id) END SUBROUTINE h5tenum_create_f + +!---------------------------------------------------------------------- +! Name: h5tenaum_insert_f +! +! Purpose: Inserts a new enumeration datatype member. +! +! Inputs: +! type_id - datatype identifier +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5tenum_insert_f(type_id, name, value, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tenum_insert_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier CHARACTER(LEN=*), INTENT(IN) :: name !Name of the new member INTEGER, INTENT(IN) :: value !value of the new member INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: namelen - INTEGER, EXTERNAL :: h5tenum_insert_c + +! INTEGER, EXTERNAL :: h5tenum_insert_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tenum_insert_c(type_id, name, namelen, value) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TENUM_INSERT_C'::h5tenum_insert_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: type_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: value + INTEGER :: namelen + END FUNCTION h5tenum_insert_c + END INTERFACE + namelen = LEN(name) hdferr = h5tenum_insert_c(type_id, name, namelen, value) END SUBROUTINE h5tenum_insert_f - SUBROUTINE h5tenum_nameof_f(type_id, name, namelen, value, hdferr) +!---------------------------------------------------------------------- +! Name: h5tenum_nameof_f +! +! Purpose: Returns the symbol name corresponding to a specified +! member of an enumeration datatype. +! +! Inputs: +! type_id - datatype identifier +! value - value of the enumeration datatype +! namelen - name buffer size +! Outputs: +! name - buffer to hold symbol name +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + + SUBROUTINE h5tenum_nameof_f(type_id, value, namelen, name, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tenum_nameof_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier CHARACTER(LEN=*), INTENT(OUT) :: name !Name of the enumeration datatype. INTEGER(SIZE_T), INTENT(IN) :: namelen !length of the name INTEGER, INTENT(IN) :: value !value of the enumeration datatype. INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tenum_nameof_c + +! INTEGER, EXTERNAL :: h5tenum_nameof_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tenum_nameof_c(type_id, value, name, namelen) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TENUM_NAMEOF_C'::h5tenum_nameof_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: type_id + CHARACTER(LEN=*), INTENT(OUT) :: name + INTEGER(SIZE_T), INTENT(IN) :: namelen + INTEGER, INTENT(IN) :: value + END FUNCTION h5tenum_nameof_c + END INTERFACE + hdferr = h5tenum_nameof_c(type_id, value, name, namelen) END SUBROUTINE h5tenum_nameof_f + +!---------------------------------------------------------------------- +! Name: h5tenum_valuof_f +! +! Purpose: Returns the value corresponding to a specified +! member of an enumeration datatype. +! +! Inputs: +! type_id - datatype identifier +! name - symbol name +! Outputs: +! value - value of the enumeration datatype +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- SUBROUTINE h5tenum_valueof_f(type_id, name, value, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tenum_valueof_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier CHARACTER(LEN=*), INTENT(IN) :: name !Name of the enumeration datatype. INTEGER, INTENT(OUT) :: value !value of the enumeration datatype. INTEGER, INTENT(OUT) :: hdferr ! Error code INTEGER :: namelen - INTEGER, EXTERNAL :: h5tenum_valueof_c + +! INTEGER, EXTERNAL :: h5tenum_valueof_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tenum_valueof_c(type_id, name, namelen, value) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TENUM_VALUEOF_C'::h5tenum_valueof_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: name + INTEGER(HID_T), INTENT(IN) :: type_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER, INTENT(IN) :: namelen + INTEGER, INTENT(OUT) :: value + END FUNCTION h5tenum_valueof_c + END INTERFACE + namelen = LEN(name) hdferr = h5tenum_valueof_c(type_id, name, namelen, value) END SUBROUTINE h5tenum_valueof_f +!---------------------------------------------------------------------- +! Name: h5tget_member_value_f +! +! Purpose: Returns the value of an enumeration datatype member. +! +! Inputs: +! type_id - datatype identifier +! member_no - number of the enumeration datatype member +! Outputs: +! value - value of the enumeration datatype +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_member_value_f(type_id, member_no, value, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_member_value_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier INTEGER, INTENT(IN) :: member_no !Number of the enumeration datatype member INTEGER, INTENT(OUT) :: value !value of the enumeration datatype. INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_member_value_c + +! INTEGER, EXTERNAL :: h5tget_member_value_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_member_value_c(type_id, member_no, value) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_MEMBER_VALUE_C'::h5tget_member_value_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: type_id + INTEGER, INTENT(IN) :: member_no + INTEGER, INTENT(OUT) :: value + END FUNCTION + END INTERFACE + hdferr = h5tget_member_value_c(type_id, member_no, value) END SUBROUTINE h5tget_member_value_f +!---------------------------------------------------------------------- +! Name: h5tset_tag_f +! +! Purpose: Tags an opaque datatype. +! +! Inputs: +! type_id - identifier for opaque datatype +! tag - unique ASCII string with which the opaque +! datatype is to be tagged. +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tset_tag_f(type_id, tag, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tset_tag_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier CHARACTER(LEN=*), INTENT(IN) :: tag !Unique ASCII string with which !the opaque datatype is to be tagged INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER :: namelen - INTEGER, EXTERNAL :: h5tset_tag_c - namelen = LEN(tag) - hdferr = h5tset_tag_c(type_id, tag, namelen) + INTEGER :: taglen + +! INTEGER, EXTERNAL :: h5tset_tag_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tset_tag_c(type_id, tag, namelen) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TSET_TAG_C'::h5tset_tag_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: tag + INTEGER(HID_T), INTENT(IN) :: type_id + CHARACTER(LEN=*), INTENT(IN) :: tag + INTEGER :: taglen + END FUNCTION h5tset_tag_c + END INTERFACE + + taglen = LEN(tag) + hdferr = h5tset_tag_c(type_id, tag, taglen) END SUBROUTINE h5tset_tag_f +!---------------------------------------------------------------------- +! Name: h5tget_tag_f +! +! Purpose: Gets the tag associated with an opaque datatype. +! +! Inputs: +! type_id - identifier for opaque datatype +! Outputs: +! tag - unique ASCII string associated with opaque +! datatype +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! August 12, 1999 +! +! Modifications: Explicit Fortran interfaces were added for +! called C functions (it is needed for Windows +! port). March 7, 2001 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5tget_tag_f(type_id, tag,taglen, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5tget_tag_f +!DEC$endif +! IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier CHARACTER(LEN=*), INTENT(OUT) :: tag !Unique ASCII string with which !the opaque datatype is to be tagged INTEGER, INTENT(OUT) :: taglen !length of tag INTEGER, INTENT(OUT) :: hdferr ! Error code - INTEGER, EXTERNAL :: h5tget_tag_c + +! INTEGER, EXTERNAL :: h5tget_tag_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5tget_tag_c(type_id, tag, taglen) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5TGET_TAG_C'::h5tget_tag_c + !DEC$ ENDIF + !DEC$ATTRIBUTES reference :: tag + INTEGER(HID_T), INTENT(IN) :: type_id + CHARACTER(LEN=*), INTENT(OUT) :: tag + INTEGER, INTENT(OUT) :: taglen + END FUNCTION h5tget_tag_c + END INTERFACE + hdferr = h5tget_tag_c(type_id, tag, taglen) END SUBROUTINE h5tget_tag_f diff --git a/fortran/src/H5f90global.f90 b/fortran/src/H5f90global.f90 index 94b1e20..9a2ce67 100644 --- a/fortran/src/H5f90global.f90 +++ b/fortran/src/H5f90global.f90 @@ -1,5 +1,20 @@ MODULE H5GLOBAL USE H5FORTRAN_TYPES +! +! Definitions for reference datatypes. +! If you change the value of these parameters, do not forget to change corresponding +! values in the H5f90.h file. + INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2 + INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3 + + TYPE hobj_ref_t_f + INTEGER ref(REF_OBJ_BUF_LEN) + END TYPE + + TYPE hdset_reg_ref_t_f + INTEGER ref(REF_REG_BUF_LEN) + END TYPE + INTEGER, PARAMETER :: PREDEF_TYPES_LEN = 6 ! Do not forget to change this ! value when new predefined ! datatypes are added @@ -78,12 +93,18 @@ ! H5T_NATIVE_CHARACTER, & ! H5T_STD_REF_OBJ, & ! H5T_STD_REF_DSETREG +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$ ATTRIBUTES DLLEXPORT :: /PREDEFINED_TYPES/ +!DEC$endif COMMON /PREDEFINED_TYPES/ predef_types ! COMMON /FLOATING_TYPES/ H5T_IEEE_F32BE, & ! H5T_IEEE_F32LE, & ! H5T_IEEE_F64BE, & ! H5T_IEEE_F64LE +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$ ATTRIBUTES DLLEXPORT :: /FLOATING_TYPES/ +!DEC$endif COMMON /FLOATING_TYPES/ floating_types ! ! COMMON /INTEGER_TYPES/ H5T_STD_I8BE, & @@ -102,6 +123,9 @@ ! H5T_STD_U32LE, & ! H5T_STD_U64BE, & ! H5T_STD_U64LE +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$ ATTRIBUTES DLLEXPORT :: /INTEGER_TYPES/ +!DEC$endif COMMON /INTEGER_TYPES/ integer_types ! ! Fortran flags @@ -113,6 +137,9 @@ ! INTEGER, PARAMETER :: H5F_FLAGS_LEN = 7 INTEGER H5F_flags(H5F_FLAGS_LEN) +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$ ATTRIBUTES DLLEXPORT :: /H5F_FLAGS/ +!DEC$endif COMMON /H5F_FLAGS/ H5F_flags INTEGER :: H5F_ACC_RDWR_F @@ -135,6 +162,9 @@ ! INTEGER, PARAMETER :: H5G_FLAGS_LEN = 8 INTEGER H5G_flags(H5G_FLAGS_LEN) +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$ ATTRIBUTES DLLEXPORT :: /H5G_FLAGS/ +!DEC$endif COMMON /H5G_FLAGS/ H5G_flags INTEGER :: H5G_UNKNOWN_F @@ -160,6 +190,9 @@ INTEGER, PARAMETER :: H5D_FLAGS_LEN = 3 INTEGER H5D_flags(H5D_FLAGS_LEN) +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$ ATTRIBUTES DLLEXPORT :: /H5D_FLAGS/ +!DEC$endif COMMON /H5D_FLAGS/ H5D_flags INTEGER :: H5D_COMPACT_F @@ -188,6 +221,9 @@ ! INTEGER, PARAMETER :: H5E_FLAGS_LEN = 24 INTEGER H5E_flags(H5E_FLAGS_LEN) +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$ ATTRIBUTES DLLEXPORT :: /H5E_FLAGS/ +!DEC$endif COMMON /H5E_FLAGS/ H5E_flags INTEGER :: H5E_NONE_MAJOR_F @@ -245,6 +281,9 @@ ! INTEGER, PARAMETER :: H5I_FLAGS_LEN = 7 INTEGER H5I_flags(H5I_FLAGS_LEN) +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$ ATTRIBUTES DLLEXPORT :: /H5I_FLAGS/ +!DEC$endif COMMON /H5I_FLAGS/ H5I_flags INTEGER :: H5I_FILE_F @@ -268,6 +307,9 @@ ! INTEGER, PARAMETER :: H5P_FLAGS_LEN = 6 INTEGER H5P_flags(H5P_FLAGS_LEN) +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$ ATTRIBUTES DLLEXPORT :: /H5P_FLAGS/ +!DEC$endif COMMON /H5P_FLAGS/ H5P_flags INTEGER :: H5P_FILE_CREATE_F @@ -289,6 +331,9 @@ ! INTEGER, PARAMETER :: H5R_FLAGS_LEN = 2 INTEGER H5R_flags(H5R_FLAGS_LEN) +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$ ATTRIBUTES DLLEXPORT :: /H5R_FLAGS/ +!DEC$endif COMMON /H5R_FLAGS/ H5R_flags INTEGER :: H5R_OBJECT_F @@ -302,6 +347,9 @@ ! INTEGER, PARAMETER :: H5S_FLAGS_LEN = 6 INTEGER H5S_flags(H5S_FLAGS_LEN) +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$ ATTRIBUTES DLLEXPORT :: /H5S_FLAGS/ +!DEC$endif COMMON /H5S_FLAGS/ H5S_flags INTEGER :: H5S_SCALAR_F @@ -323,6 +371,9 @@ ! INTEGER, PARAMETER :: H5T_FLAGS_LEN = 28 INTEGER H5T_flags(H5T_FLAGS_LEN) +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$ ATTRIBUTES DLLEXPORT :: /H5T_FLAGS/ +!DEC$endif COMMON /H5T_FLAGS/ H5T_flags INTEGER :: H5T_NO_CLASS_F diff --git a/fortran/src/H5f90i.h b/fortran/src/H5f90i.h index c46cf39..b19a3c5 100644 --- a/fortran/src/H5f90i.h +++ b/fortran/src/H5f90i.h @@ -147,7 +147,8 @@ typedef float real_f; #endif /*SUN*/ -#if defined DEC_ALPHA || (defined __alpha && defined __unix__ && !defined __linux__) + +#if defined DEC_ALPHA || (defined __alpha && defined __unix__) #ifndef DEC_ALPHA #define DEC_ALPHA @@ -158,6 +159,7 @@ If you get an error on this line more than one machine type has been defined. Please check your Makefile. #endif #define GOT_MACHINE + #include /* for unbuffered i/o stuff */ #include #define DF_MT DFMT_ALPHA @@ -173,32 +175,6 @@ typedef float real_f; #endif /* DEC_ALPHA */ -#if defined __alpha__ && defined __linux__ - -#ifndef DEC_ALPHA_LINUX -#define DEC_ALPHA_LINUX -#endif - -#ifdef GOT_MACHINE -If you get an error on this line more than one machine type has been defined. -Please check your Makefile. -#endif -#define GOT_MACHINE - -#include /* for unbuffered i/o stuff */ -#include -#define DF_MT DFMT_ALPHA -typedef char *_fcd; -typedef long long hsize_t_f; -typedef long long hssize_t_f; -typedef long long size_t_f; -typedef int int_f; -typedef int hid_t_f; -typedef float real_f; -#define FNAME_POST2_UNDERSCORE -#define _fcdtocp(desc) (desc) - -#endif /* DEC_ALPHA_LINUX */ #if defined(HP9000) || (!defined(__convexc__) && (defined(hpux) || defined(__hpux))) @@ -300,9 +276,6 @@ typedef float real_f; #if !defined(FNAME_PRE_UNDERSCORE) && !defined(FNAME_POST_UNDERSCORE) # define FNAME(x) x #endif -#if !defined(FNAME_PRE_UNDERSCORE) && defined(FNAME_POST2_UNDERSCORE) -# define FNAME(x) x##__ -#endif # define HDfree(p) (free((void*)p)) # define HDmalloc(s) (malloc((size_t)s)) diff --git a/fortran/src/H5f90proto.h b/fortran/src/H5f90proto.h index 40dbfe7..0265af9 100644 --- a/fortran/src/H5f90proto.h +++ b/fortran/src/H5f90proto.h @@ -2,9 +2,9 @@ #define _H5f90proto_H #include "H5Git.h" -extern int HD5c2fstr(char *str, int len); -extern char * HD5fcstring (_fcd fdesc, int len); -extern int HDpackFstring(char *src, char *dest, int len); +__DLL__ int HD5c2fstr(char *str, int len); +__DLL__ char * HD5fcstring (_fcd fdesc, int len); +__DLL__ int HDpackFstring(char *src, char *dest, int len); /* * Functions from H5Ff.c @@ -36,23 +36,23 @@ extern int HDpackFstring(char *src, char *dest, int len); #endif /* DF_CAPFNAMES */ #endif /* H5Ff90_FNAMES */ -extern int_f nh5fcreate_c +__DLL__ int_f nh5fcreate_c (_fcd name, int_f *namelen, int_f *access_flags, hid_t_f *crt_prp, hid_t_f *acc_prp, hid_t_f *file_id); -extern int_f nh5fopen_c +__DLL__ int_f nh5fopen_c (_fcd name, int_f *namelen, int_f *access_flags, hid_t_f *acc_prp, hid_t_f *file_id); -extern int_f nh5fis_hdf5_c +__DLL__ int_f nh5fis_hdf5_c (_fcd name, int_f *namelen, int_f *flag); -extern int_f nh5fclose_c (hid_t_f *file_id); -extern int_f nh5fmount_c +__DLL__ int_f nh5fclose_c (hid_t_f *file_id); +__DLL__ int_f nh5fmount_c (hid_t_f *loc_id, _fcd dsetname, int_f *namelen, hid_t_f *file_id, hid_t_f *acc_prp); -extern int_f nh5funmount_c +__DLL__ int_f nh5funmount_c (hid_t_f *loc_id, _fcd dsetname, int_f *namelen); -extern int_f nh5freopen_c (hid_t_f *file_id1, hid_t_f *file_id2); -extern int_f nh5fget_create_plist_c (hid_t_f *file_id, hid_t_f *prop_id); -extern int_f nh5fget_access_plist_c (hid_t_f *file_id, hid_t_f *access_id); +__DLL__ int_f nh5freopen_c (hid_t_f *file_id1, hid_t_f *file_id2); +__DLL__ int_f nh5fget_create_plist_c (hid_t_f *file_id, hid_t_f *prop_id); +__DLL__ int_f nh5fget_access_plist_c (hid_t_f *file_id, hid_t_f *access_id); /* * Functions from H5Sf.c */ @@ -113,53 +113,53 @@ extern int_f nh5fget_access_plist_c (hid_t_f *file_id, hid_t_f *access_id); #endif /* DF_CAPFNAMES */ #endif -extern int_f nh5screate_simple_c +__DLL__ int_f nh5screate_simple_c ( int_f *rank, hsize_t_f *dims, hsize_t_f *maxdims, hid_t_f *space_id ); -extern int_f nh5sclose_c ( hid_t_f *space_id ); +__DLL__ int_f nh5sclose_c ( hid_t_f *space_id ); -extern int_f nh5screate_c ( int_f *classtype, hid_t_f *space_id ); +__DLL__ int_f nh5screate_c ( int_f *classtype, hid_t_f *space_id ); -extern int_f nh5scopy_c ( hid_t_f *space_id , hid_t_f *new_space_id); -extern int_f nh5sget_select_hyper_nblocks_c( hid_t_f *space_id , hssize_t_f * num_blocks); -extern int_f nh5sget_select_hyper_blocklist_c( hid_t_f *space_id ,hsize_t_f * startblock, hsize_t_f * num_blocks, hsize_t_f * buf); +__DLL__ int_f nh5scopy_c ( hid_t_f *space_id , hid_t_f *new_space_id); +__DLL__ int_f nh5sget_select_hyper_nblocks_c( hid_t_f *space_id , hssize_t_f * num_blocks); +__DLL__ int_f nh5sget_select_hyper_blocklist_c( hid_t_f *space_id ,hsize_t_f * startblock, hsize_t_f * num_blocks, hsize_t_f * buf); -extern int_f nh5sget_select_bounds_c( hid_t_f *space_id , hsize_t_f * start, hsize_t_f * end); +__DLL__ int_f nh5sget_select_bounds_c( hid_t_f *space_id , hsize_t_f * start, hsize_t_f * end); -extern int_f nh5sget_select_elem_npoints_c( hid_t_f *space_id , hssize_t_f * num_points); +__DLL__ int_f nh5sget_select_elem_npoints_c( hid_t_f *space_id , hssize_t_f * num_points); -extern int_f nh5sget_select_elem_pointlist_c( hid_t_f *space_id ,hsize_t_f * startpoint, hsize_t_f * numpoints, hsize_t_f * buf); -extern int_f nh5sselect_all_c ( hid_t_f *space_id ); +__DLL__ int_f nh5sget_select_elem_pointlist_c( hid_t_f *space_id ,hsize_t_f * startpoint, hsize_t_f * numpoints, hsize_t_f * buf); +__DLL__ int_f nh5sselect_all_c ( hid_t_f *space_id ); -extern int_f nh5sselect_none_c ( hid_t_f *space_id ); +__DLL__ int_f nh5sselect_none_c ( hid_t_f *space_id ); -extern int_f nh5sselect_valid_c ( hid_t_f *space_id , int_f *flag ); +__DLL__ int_f nh5sselect_valid_c ( hid_t_f *space_id , int_f *flag ); -extern int_f nh5sget_simple_extent_npoints_c ( hid_t_f *space_id , hsize_t_f *npoints ); +__DLL__ int_f nh5sget_simple_extent_npoints_c ( hid_t_f *space_id , hsize_t_f *npoints ); -extern int_f nh5sget_select_npoints_c ( hid_t_f *space_id , hssize_t_f *npoints ); +__DLL__ int_f nh5sget_select_npoints_c ( hid_t_f *space_id , hssize_t_f *npoints ); -extern int_f nh5sget_simple_extent_ndims_c ( hid_t_f *space_id , int_f *ndims ); +__DLL__ int_f nh5sget_simple_extent_ndims_c ( hid_t_f *space_id , int_f *ndims ); -extern int_f nh5sget_simple_extent_type_c ( hid_t_f *space_id , int_f *classtype); +__DLL__ int_f nh5sget_simple_extent_type_c ( hid_t_f *space_id , int_f *classtype); -extern int_f nh5soffset_simple_c ( hid_t_f *space_id , hssize_t_f *offset); +__DLL__ int_f nh5soffset_simple_c ( hid_t_f *space_id , hssize_t_f *offset); -extern int_f nh5sset_extent_simple_c ( hid_t_f *space_id , int_f *rank, hsize_t_f * current_size, hsize_t_f *maximum_size); +__DLL__ int_f nh5sset_extent_simple_c ( hid_t_f *space_id , int_f *rank, hsize_t_f * current_size, hsize_t_f *maximum_size); -extern int_f nh5sis_simple_c ( hid_t_f *space_id , int_f *flag ); +__DLL__ int_f nh5sis_simple_c ( hid_t_f *space_id , int_f *flag ); -extern int_f nh5sextent_class_c ( hid_t_f *space_id , int_f *classtype); +__DLL__ int_f nh5sextent_class_c ( hid_t_f *space_id , int_f *classtype); -extern int_f nh5sget_simple_extent_dims_c ( hid_t_f *space_id , hsize_t_f *dims, hsize_t_f *maxdims); +__DLL__ int_f nh5sget_simple_extent_dims_c ( hid_t_f *space_id , hsize_t_f *dims, hsize_t_f *maxdims); -extern int_f nh5sextent_copy_c ( hid_t_f *dest_space_id , hid_t_f *source_space_id); +__DLL__ int_f nh5sextent_copy_c ( hid_t_f *dest_space_id , hid_t_f *source_space_id); -extern int_f nh5sset_extent_none_c ( hid_t_f *space_id ); +__DLL__ int_f nh5sset_extent_none_c ( hid_t_f *space_id ); -extern int_f nh5sselect_hyperslab_c ( hid_t_f *space_id , int_f *op, hssize_t_f *start, hsize_t_f *count, hsize_t_f *stride, hsize_t_f *block); +__DLL__ int_f nh5sselect_hyperslab_c ( hid_t_f *space_id , int_f *op, hssize_t_f *start, hsize_t_f *count, hsize_t_f *stride, hsize_t_f *block); -extern int_f nh5sselect_elements_c ( hid_t_f *space_id , int_f *op, size_t_f *nelements, hssize_t_f *coord); +__DLL__ int_f nh5sselect_elements_c ( hid_t_f *space_id , int_f *op, size_t_f *nelements, hssize_t_f *coord); /* @@ -203,45 +203,45 @@ extern int_f nh5sselect_elements_c ( hid_t_f *space_id , int_f *op, size_t_f *ne #endif /* DF_CAPFNAMES */ #endif -extern int_f nh5dcreate_c +__DLL__ int_f nh5dcreate_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *space_id, hid_t_f *crt_prp, hid_t_f *dset_id); -extern int_f nh5dopen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *dset_id); +__DLL__ int_f nh5dopen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *dset_id); -extern int_f nh5dclose_c ( hid_t_f *dset_id ); +__DLL__ int_f nh5dclose_c ( hid_t_f *dset_id ); -extern int_f nh5dwrite_c -(hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf); +__DLL__ int_f nh5dwrite_c +(hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, int_f *dims); -extern int_f nh5dwrite_ref_obj_c -(hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, int_f *n); +__DLL__ int_f nh5dwrite_ref_obj_c +(hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, int_f *dims); -extern int_f nh5dwrite_ref_reg_c -(hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, int_f *n); +__DLL__ int_f nh5dwrite_ref_reg_c +(hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, int_f *dims); -extern int_f nh5dwritec_c -(hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf); +__DLL__ int_f nh5dwritec_c +(hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, int_f *dims); -extern int_f nh5dread_c -(hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf); +__DLL__ int_f nh5dread_c +(hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, int_f *dims); -extern int_f nh5dread_ref_obj_c -(hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, int_f *n); +__DLL__ int_f nh5dread_ref_obj_c +(hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, int_f *dims); -extern int_f nh5dread_ref_reg_c -(hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, int_f *n); +__DLL__ int_f nh5dread_ref_reg_c +(hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, int_f *dims); -extern int_f nh5dreadc_c -(hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf); +__DLL__ int_f nh5dreadc_c +(hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, int_f *dims); -extern int_f nh5dget_space_c ( hid_t_f *dset_id , hid_t_f *space_id); +__DLL__ int_f nh5dget_space_c ( hid_t_f *dset_id , hid_t_f *space_id); -extern int_f nh5dget_type_c ( hid_t_f *dset_id , hid_t_f *type_id); +__DLL__ int_f nh5dget_type_c ( hid_t_f *dset_id , hid_t_f *type_id); -extern int_f nh5dget_create_plist_c ( hid_t_f *dset_id , hid_t_f *plist_id); +__DLL__ int_f nh5dget_create_plist_c ( hid_t_f *dset_id , hid_t_f *plist_id); -extern int_f nh5dextend_c ( hid_t_f *dset_id , hsize_t_f *dims); +__DLL__ int_f nh5dextend_c ( hid_t_f *dset_id , hsize_t_f *dims); /* * Functions from H5Gf.c */ @@ -275,35 +275,35 @@ extern int_f nh5dextend_c ( hid_t_f *dset_id , hsize_t_f *dims); #endif /* DF_CAPFNAMES */ #endif -extern int_f nh5gcreate_c +__DLL__ int_f nh5gcreate_c (hid_t_f *loc_id, _fcd name, int_f *namelen, size_t_f *size_hint, hid_t_f *grp_id); -extern int_f nh5gopen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *grp_id); +__DLL__ int_f nh5gopen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *grp_id); -extern int_f nh5gclose_c ( hid_t_f *grp_id ); +__DLL__ int_f nh5gclose_c ( hid_t_f *grp_id ); -extern int_f nh5gget_obj_info_idx_c +__DLL__ int_f nh5gget_obj_info_idx_c (hid_t_f *loc_id, _fcd name, int_f *namelen, int_f *idx, _fcd obj_name, int_f *obj_namelen, int_f *obj_type); -extern int_f nh5gn_members_c +__DLL__ int_f nh5gn_members_c (hid_t_f *loc_id, _fcd name, int_f *namelen, int_f *nmembers); -extern int_f nh5glink_c +__DLL__ int_f nh5glink_c (hid_t_f *loc_id, int_f *link_type, _fcd current_name, int_f *current_namelen, _fcd new_name, int_f *new_namelen); -extern int_f nh5gunlink_c +__DLL__ int_f nh5gunlink_c (hid_t_f *loc_id, _fcd name, int_f *namelen); -extern int_f nh5gmove_c +__DLL__ int_f nh5gmove_c (hid_t_f *loc_id, _fcd src_name, int_f *src_namelen, _fcd dst_name, int_f *dst_namelen); -extern int_f nh5gget_linkval_c +__DLL__ int_f nh5gget_linkval_c (hid_t_f *loc_id, _fcd name, int_f *namelen, size_t_f *size, _fcd value ); -extern int_f nh5gset_comment_c +__DLL__ int_f nh5gset_comment_c (hid_t_f *loc_id, _fcd name, int_f *namelen, _fcd comment, int_f *commentlen); -extern int_f nh5gget_comment_c +__DLL__ int_f nh5gget_comment_c (hid_t_f *loc_id, _fcd name, int_f *namelen, size_t_f *bufsize, _fcd comment); @@ -345,32 +345,32 @@ extern int_f nh5gget_comment_c #endif -extern int_f nh5acreate_c (hid_t_f *obj_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *space_id, hid_t_f *crt_prp, hid_t_f *attr_id); +__DLL__ int_f nh5acreate_c (hid_t_f *obj_id, _fcd name, int_f *namelen, hid_t_f *type_id, hid_t_f *space_id, hid_t_f *crt_prp, hid_t_f *attr_id); -extern int_f +__DLL__ int_f nh5aopen_name_c (hid_t_f *obj_id, _fcd name, int_f *namelen, hid_t_f *attr_id); -extern int_f nh5awritec_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf); +__DLL__ int_f nh5awritec_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, int_f *dims); -extern int_f nh5awrite_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf); +__DLL__ int_f nh5awrite_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, int_f *dims); -extern int_f nh5areadc_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf); +__DLL__ int_f nh5areadc_c (hid_t_f *attr_id, hid_t_f *mem_type_id, _fcd buf, int_f *dims); -extern int_f nh5aread_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf); +__DLL__ int_f nh5aread_c (hid_t_f *attr_id, hid_t_f *mem_type_id, void *buf, int_f *dims); -extern int_f nh5aclose_c ( hid_t_f *attr_id ); +__DLL__ int_f nh5aclose_c ( hid_t_f *attr_id ); -extern int_f nh5adelete_c (hid_t_f *obj_id, _fcd name, int_f *namelen); +__DLL__ int_f nh5adelete_c (hid_t_f *obj_id, _fcd name, int_f *namelen); -extern int_f nh5aopen_idx_c (hid_t_f *obj_id, int_f *idx, hid_t_f *attr_id); +__DLL__ int_f nh5aopen_idx_c (hid_t_f *obj_id, int_f *idx, hid_t_f *attr_id); -extern int_f nh5aget_space_c (hid_t_f *attr_id, hid_t_f *space_id); +__DLL__ int_f nh5aget_space_c (hid_t_f *attr_id, hid_t_f *space_id); -extern int_f nh5aget_type_c (hid_t_f *attr_id, hid_t_f *type_id); +__DLL__ int_f nh5aget_type_c (hid_t_f *attr_id, hid_t_f *type_id); -extern int_f nh5aget_num_attrs_c (hid_t_f *obj_id, int_f *attr_num); +__DLL__ int_f nh5aget_num_attrs_c (hid_t_f *obj_id, int_f *attr_num); -extern int_f nh5aget_name_c(hid_t_f *attr_id, size_t_f *size, _fcd buf); +__DLL__ int_f nh5aget_name_c(hid_t_f *attr_id, size_t_f *size, _fcd buf); /* * Functions form H5Tf.c file @@ -487,83 +487,83 @@ extern int_f nh5aget_name_c(hid_t_f *attr_id, size_t_f *size, _fcd buf); #endif #endif -extern int_f nh5tcreate_c(int_f *class, size_t_f *size, hid_t_f *type_id); +__DLL__ int_f nh5tcreate_c(int_f *class, size_t_f *size, hid_t_f *type_id); -extern int_f nh5topen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id); +__DLL__ int_f nh5topen_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id); -extern int_f +__DLL__ int_f nh5tcommit_c (hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *type_id); -extern int_f nh5tclose_c ( hid_t_f *type_id ); +__DLL__ int_f nh5tclose_c ( hid_t_f *type_id ); -extern int_f nh5tequal_c ( hid_t_f *type1_id , hid_t_f *type2_id, int_f *c_flag); +__DLL__ int_f nh5tequal_c ( hid_t_f *type1_id , hid_t_f *type2_id, int_f *c_flag); -extern int_f nh5tcopy_c ( hid_t_f *type_id , hid_t_f *new_type_id); +__DLL__ int_f nh5tcopy_c ( hid_t_f *type_id , hid_t_f *new_type_id); -extern int_f nh5tget_class_c ( hid_t_f *type_id , int_f *classtype); +__DLL__ int_f nh5tget_class_c ( hid_t_f *type_id , int_f *classtype); -extern int_f nh5tget_order_c ( hid_t_f *type_id , int_f *order); +__DLL__ int_f nh5tget_order_c ( hid_t_f *type_id , int_f *order); -extern int_f nh5tset_order_c ( hid_t_f *type_id , int_f *order); +__DLL__ int_f nh5tset_order_c ( hid_t_f *type_id , int_f *order); -extern int_f nh5tget_size_c ( hid_t_f *type_id , size_t_f *size); +__DLL__ int_f nh5tget_size_c ( hid_t_f *type_id , size_t_f *size); -extern int_f nh5tset_size_c ( hid_t_f *type_id , size_t_f *size); -extern int_f nh5tcommitted_c (hid_t_f *type_id); -extern int_f nh5tget_precision_c ( hid_t_f *type_id , size_t_f *precision); -extern int_f nh5tset_precision_c ( hid_t_f *type_id , size_t_f *precision); -extern int_f nh5tget_offset_c ( hid_t_f *type_id , size_t_f *offset); -extern int_f nh5tset_offset_c ( hid_t_f *type_id , size_t_f *offset); -extern int_f nh5tget_pad_c ( hid_t_f *type_id , int_f * lsbpad, int_f * msbpad); -extern int_f nh5tset_pad_c ( hid_t_f *type_id, int_f * lsbpad, int_f * msbpad ); -extern int_f nh5tget_sign_c ( hid_t_f *type_id , int_f* sign); -extern int_f nh5tset_sign_c ( hid_t_f *type_id , int_f *sign); -extern int_f nh5tget_fields_c ( hid_t_f *type_id, size_t_f *spos, size_t_f *epos, size_t_f* esize, size_t_f* mpos, size_t_f* msize); -extern int_f nh5tset_fields_c ( hid_t_f *type_id, size_t_f *spos, size_t_f *epos, size_t_f* esize, size_t_f* mpos, size_t_f* msize); -extern int_f nh5tget_ebias_c ( hid_t_f *type_id , size_t_f *ebias); +__DLL__ int_f nh5tset_size_c ( hid_t_f *type_id , size_t_f *size); +__DLL__ int_f nh5tcommitted_c (hid_t_f *type_id); +__DLL__ int_f nh5tget_precision_c ( hid_t_f *type_id , size_t_f *precision); +__DLL__ int_f nh5tset_precision_c ( hid_t_f *type_id , size_t_f *precision); +__DLL__ int_f nh5tget_offset_c ( hid_t_f *type_id , size_t_f *offset); +__DLL__ int_f nh5tset_offset_c ( hid_t_f *type_id , size_t_f *offset); +__DLL__ int_f nh5tget_pad_c ( hid_t_f *type_id , int_f * lsbpad, int_f * msbpad); +__DLL__ int_f nh5tset_pad_c ( hid_t_f *type_id, int_f * lsbpad, int_f * msbpad ); +__DLL__ int_f nh5tget_sign_c ( hid_t_f *type_id , int_f* sign); +__DLL__ int_f nh5tset_sign_c ( hid_t_f *type_id , int_f *sign); +__DLL__ int_f nh5tget_fields_c ( hid_t_f *type_id, size_t_f *spos, size_t_f *epos, size_t_f* esize, size_t_f* mpos, size_t_f* msize); +__DLL__ int_f nh5tset_fields_c ( hid_t_f *type_id, size_t_f *spos, size_t_f *epos, size_t_f* esize, size_t_f* mpos, size_t_f* msize); +__DLL__ int_f nh5tget_ebias_c ( hid_t_f *type_id , size_t_f *ebias); -extern int_f nh5tset_ebias_c ( hid_t_f *type_id , size_t_f *ebias); -extern int_f nh5tget_norm_c ( hid_t_f *type_id , int_f *norm); +__DLL__ int_f nh5tset_ebias_c ( hid_t_f *type_id , size_t_f *ebias); +__DLL__ int_f nh5tget_norm_c ( hid_t_f *type_id , int_f *norm); -extern int_f nh5tset_norm_c ( hid_t_f *type_id , int_f *norm); -extern int_f nh5tget_inpad_c ( hid_t_f *type_id, int_f * padtype); -extern int_f nh5tset_inpad_c ( hid_t_f *type_id, int_f * padtype); -extern int_f nh5tget_cset_c ( hid_t_f *type_id, int_f * cset); -extern int_f nh5tset_cset_c ( hid_t_f *type_id, int_f * cset); -extern int_f nh5tget_strpad_c ( hid_t_f *type_id, int_f * strpad); -extern int_f nh5tset_strpad_c ( hid_t_f *type_id, int_f * strpad); -extern int_f nh5tget_nmembers_c ( hid_t_f *type_id , int_f * num_members); -extern int_f nh5tget_member_name_c ( hid_t_f *type_id ,int_f* index, _fcd member_name, int_f *namelen); -extern int_f nh5tget_member_dims_c ( hid_t_f *type_id ,int_f* field_idx, int_f * dims, size_t_f * field_dims, int_f * perm ); -extern int_f nh5tget_member_offset_c ( hid_t_f *type_id ,int_f* member_no, size_t_f* offset); -extern int_f nh5tget_member_type_c ( hid_t_f *type_id ,int_f* field_idx, hid_t_f * datatype); -extern int_f nh5tinsert_c(hid_t_f *type_id, _fcd name, int_f* namelen, size_t_f *offset, hid_t_f * field_id); -extern int_f nh5tpack_c(hid_t_f * type_id); +__DLL__ int_f nh5tset_norm_c ( hid_t_f *type_id , int_f *norm); +__DLL__ int_f nh5tget_inpad_c ( hid_t_f *type_id, int_f * padtype); +__DLL__ int_f nh5tset_inpad_c ( hid_t_f *type_id, int_f * padtype); +__DLL__ int_f nh5tget_cset_c ( hid_t_f *type_id, int_f * cset); +__DLL__ int_f nh5tset_cset_c ( hid_t_f *type_id, int_f * cset); +__DLL__ int_f nh5tget_strpad_c ( hid_t_f *type_id, int_f * strpad); +__DLL__ int_f nh5tset_strpad_c ( hid_t_f *type_id, int_f * strpad); +__DLL__ int_f nh5tget_nmembers_c ( hid_t_f *type_id , int_f * num_members); +__DLL__ int_f nh5tget_member_name_c ( hid_t_f *type_id ,int_f* index, _fcd member_name, int_f *namelen); +__DLL__ int_f nh5tget_member_dims_c ( hid_t_f *type_id ,int_f* field_idx, int_f * dims, size_t_f * field_dims, int_f * perm ); +__DLL__ int_f nh5tget_member_offset_c ( hid_t_f *type_id ,int_f* member_no, size_t_f* offset); +__DLL__ int_f nh5tget_member_type_c ( hid_t_f *type_id ,int_f* field_idx, hid_t_f * datatype); +__DLL__ int_f nh5tinsert_c(hid_t_f *type_id, _fcd name, int_f* namelen, size_t_f *offset, hid_t_f * field_id); +__DLL__ int_f nh5tpack_c(hid_t_f * type_id); -extern int_f nh5tinsert_array_c(hid_t_f * parent_id, _fcd name, int_f* namelen, size_t_f* offset, int_f* ndims, size_t_f* dims, hid_t_f* member_id, int_f* perm ); +__DLL__ int_f nh5tinsert_array_c(hid_t_f * parent_id, _fcd name, int_f* namelen, size_t_f* offset, int_f* ndims, size_t_f* dims, hid_t_f* member_id, int_f* perm ); -extern int_f nh5tinsert_array_c2(hid_t_f * parent_id, _fcd name, int_f* namelen, size_t_f* offset, int_f* ndims, size_t_f* dims, hid_t_f* member_id); +__DLL__ int_f nh5tinsert_array_c2(hid_t_f * parent_id, _fcd name, int_f* namelen, size_t_f* offset, int_f* ndims, size_t_f* dims, hid_t_f* member_id); -extern int_f nh5tenum_create_c ( hid_t_f *parent_id , hid_t_f *new_type_id); +__DLL__ int_f nh5tenum_create_c ( hid_t_f *parent_id , hid_t_f *new_type_id); -extern int_f nh5tenum_insert_c(hid_t_f *type_id, _fcd name, int_f* namelen, int_f* value); -extern int_f +__DLL__ int_f nh5tenum_insert_c(hid_t_f *type_id, _fcd name, int_f* namelen, int_f* value); +__DLL__ int_f nh5tenum_nameof_c(hid_t_f *type_id, int_f* value, _fcd name, size_t_f* namelen); -extern int_f +__DLL__ int_f nh5tenum_valueof_c(hid_t_f *type_id, _fcd name, int_f* namelen, int_f* value); -extern int_f +__DLL__ int_f nh5tget_member_value_c(hid_t_f *type_id, int_f* member_no, int_f* value); -extern int_f +__DLL__ int_f nh5tset_tag_c(hid_t_f* type_id, _fcd tag, int_f* namelen); -extern int_f +__DLL__ int_f nh5tget_tag_c(hid_t_f* type_id, _fcd tag, int_f* namelen); -extern int_f +__DLL__ int_f nh5tarray_create_c(hid_t_f * base_id, int_f *rank, hsize_t_f* dims, hid_t_f* type_id); -extern int_f +__DLL__ int_f nh5tget_array_dims_c ( hid_t_f *type_id , hsize_t_f * dims); -extern int_f +__DLL__ int_f nh5tget_array_ndims_c ( hid_t_f *type_id , int_f * ndims); -extern int_f +__DLL__ int_f nh5tget_super_c ( hid_t_f *type_id , hid_t_f *base_type_id); @@ -597,22 +597,22 @@ nh5tget_super_c ( hid_t_f *type_id , hid_t_f *base_type_id); # define nh5pget_istore_k_c FNAME(H5PGET_ISTORE_K_C) # define nh5pset_istore_k_c FNAME(H5PSET_ISTORE_K_C) # define nh5pget_driver_c FNAME(H5PGET_DRIVER_C) -# define nh5pset_stdio_c FNAME(H5PSET_STDIO_C) -# define nh5pget_stdio_c FNAME(H5PGET_STDIO_C) -# define nh5pset_sec2_c FNAME(H5PSET_SEC2_C) -# define nh5pget_sec2_c FNAME(H5PGET_SEC2_C) +# define nh5pset_fapl_stdio_c FNAME(H5PSET_FAPL_STDIO_C) +# define nh5pget_fapl_stdio_c FNAME(H5PGET_FAPL_STDIO_C) +# define nh5pset_fapl_sec2_c FNAME(H5PSET_FAPL_SEC2_C) +# define nh5pget_fapl_sec2_c FNAME(H5PGET_FAPL_SEC2_C) # define nh5pset_alignment_c FNAME(H5PSET_ALIGNMENT_C) # define nh5pget_alignment_c FNAME(H5PGET_ALIGNMENT_C) -# define nh5pset_core_c FNAME(H5PSET_CORE_C) -# define nh5pget_core_c FNAME(H5PGET_CORE_C) -# define nh5pset_family_c FNAME(H5PSET_FAMILY_C) -# define nh5pget_family_c FNAME(H5PGET_FAMILY_C) +# define nh5pset_fapl_core_c FNAME(H5PSET_FAPL_CORE_C) +# define nh5pget_fapl_core_c FNAME(H5PGET_FAPL_CORE_C) +# define nh5pset_fapl_family_c FNAME(H5PSET_FAPL_FAMILY_C) +# define nh5pget_fapl_family_c FNAME(H5PGET_FAPL_FAMILY_C) # define nh5pset_cache_c FNAME(H5PSET_CACHE_C) # define nh5pget_cache_c FNAME(H5PGET_CACHE_C) -# define nh5pset_split_c FNAME(H5PSET_SPLIT_C) -# define nh5pget_split_c FNAME(H5PGET_SPLIT_C) -# define nh5pset_gc_refernces_c FNAME(H5PSET_GC_REFERENCES_C) -# define nh5pget_gc_refernces_c FNAME(H5PGET_GC_REFERENCES_C) +# define nh5pset_fapl_split_c FNAME(H5PSET_FAPL_SPLIT_C) +# define nh5pget_fapl_split_c FNAME(H5PGET_FAPL_SPLIT_C) +# define nh5pset_gc_references_c FNAME(H5PSET_GC_REFERENCES_C) +# define nh5pget_gc_references_c FNAME(H5PGET_GC_REFERENCES_C) # define nh5pset_layout_c FNAME(H5PSET_LAYOUT_C) # define nh5pget_layout_c FNAME(H5PGET_LAYOUT_C) # define nh5pset_filter_c FNAME(H5PSET_FILTER_C) @@ -654,20 +654,20 @@ nh5tget_super_c ( hid_t_f *type_id , hid_t_f *base_type_id); # define nh5pget_istore_k_c FNAME(h5pget_istore_k_c) # define nh5pset_istore_k_c FNAME(h5pset_istore_k_c) # define nh5pget_driver_c FNAME(h5pget_driver_c) -# define nh5pset_stdio_c FNAME(h5pset_stdio_c) -# define nh5pget_stdio_c FNAME(h5pget_stdio_c) -# define nh5pset_sec2_c FNAME(h5pset_sec2_c) -# define nh5pget_sec2_c FNAME(h5pget_sec2_c) +# define nh5pset_fapl_stdio_c FNAME(h5pset_fapl_stdio_c) +# define nh5pget_fapl_stdio_c FNAME(h5pget_fapl_stdio_c) +# define nh5pset_fapl_sec2_c FNAME(h5pset_fapl_sec2_c) +# define nh5pget_fapl_sec2_c FNAME(h5pget_fapl_sec2_c) # define nh5pset_alignment_c FNAME(h5pset_alignment_c) # define nh5pget_alignment_c FNAME(h5pget_alignment_c) -# define nh5pset_core_c FNAME(h5pset_core_c) -# define nh5pget_core_c FNAME(h5pget_core_c) -# define nh5pset_family_c FNAME(h5pset_family_c) -# define nh5pget_family_c FNAME(h5pget_family_c) +# define nh5pset_fapl_core_c FNAME(h5pset_fapl_core_c) +# define nh5pget_fapl_core_c FNAME(h5pget_fapl_core_c) +# define nh5pset_fapl_family_c FNAME(h5pset_fapl_family_c) +# define nh5pget_fapl_family_c FNAME(h5pget_fapl_family_c) # define nh5pset_cache_c FNAME(h5pset_cache_c) # define nh5pget_cache_c FNAME(h5pget_cache_c) -# define nh5pset_split_c FNAME(h5pset_split_c) -# define nh5pget_split_c FNAME(h5pget_split_c) +# define nh5pset_fapl_split_c FNAME(h5pset_fapl_split_c) +# define nh5pget_fapl_split_c FNAME(h5pget_fapl_split_c) # define nh5pset_gc_references_c FNAME(h5pset_gc_references_c) # define nh5pget_gc_references_c FNAME(h5pget_gc_references_c) # define nh5pset_layout_c FNAME(h5pset_layout_c) @@ -690,120 +690,120 @@ nh5tget_super_c ( hid_t_f *type_id , hid_t_f *base_type_id); #endif #endif -extern int_f nh5pcreate_c ( int_f *classtype, hid_t_f *prp_id ); +__DLL__ int_f nh5pcreate_c ( int_f *classtype, hid_t_f *prp_id ); -extern int_f nh5pclose_c ( hid_t_f *prp_id ); +__DLL__ int_f nh5pclose_c ( hid_t_f *prp_id ); -extern int_f nh5pcopy_c ( hid_t_f *prp_id , hid_t_f *new_prp_id); +__DLL__ int_f nh5pcopy_c ( hid_t_f *prp_id , hid_t_f *new_prp_id); -extern int_f nh5pget_class_c ( hid_t_f *prp_id , int_f *classtype); +__DLL__ int_f nh5pget_class_c ( hid_t_f *prp_id , int_f *classtype); -extern int_f nh5pset_deflate_c ( hid_t_f *prp_id , int_f *level); +__DLL__ int_f nh5pset_deflate_c ( hid_t_f *prp_id , int_f *level); -extern int_f nh5pset_chunk_c ( hid_t_f *prp_id, int_f *rank, hsize_t_f *dims ); +__DLL__ int_f nh5pset_chunk_c ( hid_t_f *prp_id, int_f *rank, hsize_t_f *dims ); -extern int_f nh5pget_chunk_c ( hid_t_f *prp_id, int_f *max_rank, hsize_t_f *dims ); +__DLL__ int_f nh5pget_chunk_c ( hid_t_f *prp_id, int_f *max_rank, hsize_t_f *dims ); -extern int_f +__DLL__ int_f nh5pset_fill_valuec_c (hid_t_f *prp_id, hid_t_f *type_id, _fcd fillvalue); -extern int_f +__DLL__ int_f nh5pset_fill_value_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue); -extern int_f +__DLL__ int_f nh5pget_fill_valuec_c (hid_t_f *prp_id, hid_t_f *type_id, _fcd fillvalue); -extern int_f +__DLL__ int_f nh5pget_fill_value_c (hid_t_f *prp_id, hid_t_f *type_id, void *fillvalue); -extern int_f +__DLL__ int_f nh5pset_preserve_c ( hid_t_f *prp_id , int_f *flag); -extern int_f +__DLL__ int_f nh5pget_preserve_c ( hid_t_f *prp_id , int_f *flag); -extern int_f +__DLL__ int_f nh5pget_version_c (hid_t_f *prp_id, int_f * boot,int_f * freelist, int_f * stab, int_f *shhdr); -extern int_f +__DLL__ int_f nh5pset_userblock_c (hid_t_f *prp_id, hsize_t_f * size); -extern int_f +__DLL__ int_f nh5pget_userblock_c (hid_t_f *prp_id, hsize_t_f * size); -extern int_f +__DLL__ int_f nh5pget_sizes_c (hid_t_f *prp_id, size_t_f * sizeof_addr, size_t_f * sizeof_size); -extern int_f +__DLL__ int_f nh5pset_sizes_c (hid_t_f *prp_id, size_t_f * sizeof_addr, size_t_f * sizeof_size); -extern int_f +__DLL__ int_f nh5pset_sym_k_c (hid_t_f *prp_id, int_f* ik, int_f* lk); -extern int_f +__DLL__ int_f nh5pget_sym_k_c (hid_t_f *prp_id, int_f* ik, int_f* lk); -extern int_f +__DLL__ int_f nh5pset_istore_k_c (hid_t_f *prp_id, int_f* ik); -extern int_f +__DLL__ int_f nh5pget_istore_k_c (hid_t_f *prp_id, int_f* ik); -extern int_f -nh5pget_driver_c (hid_t_f *prp_id, int_f*driver); -extern int_f -nh5pset_stdio_c (hid_t_f *prp_id); -extern int_f -nh5pget_stdio_c (hid_t_f *prp_id, int_f* io); -extern int_f -nh5pset_sec2_c (hid_t_f *prp_id); -extern int_f -nh5pget_sec2_c (hid_t_f *prp_id, int_f* sec2); -extern int_f +__DLL__ int_f +nh5pget_driver_c (hid_t_f *prp_id, hid_t_f*driver); +__DLL__ int_f +nh5pset_fapl_stdio_c (hid_t_f *prp_id); +__DLL__ int_f +nh5pget_fapl_stdio_c (hid_t_f *prp_id, int_f* io); +__DLL__ int_f +nh5pset_fapl_sec2_c (hid_t_f *prp_id); +__DLL__ int_f +nh5pget_fapl_sec2_c (hid_t_f *prp_id, int_f* sec2); +__DLL__ int_f nh5pset_alignment_c(hid_t_f *prp_id, hsize_t_f* threshold, hsize_t_f* alignment); -extern int_f +__DLL__ int_f nh5pget_alignment_c(hid_t_f *prp_id, hsize_t_f* threshold, hsize_t_f* alignment); -extern int_f -nh5pget_core_c (hid_t_f *prp_id, size_t_f* increment); -extern int_f -nh5pset_core_c (hid_t_f *prp_id, size_t_f* increment); -extern int_f -nh5pset_family_c (hid_t_f *prp_id, hsize_t_f* memb_size, hid_t_f* memb_plist ); -extern int_f -nh5pget_family_c (hid_t_f *prp_id, hsize_t_f* memb_size, hid_t_f* memb_plist ); -extern int_f +__DLL__ int_f +nh5pget_fapl_core_c (hid_t_f *prp_id, size_t_f* increment, int_f *flag); +__DLL__ int_f +nh5pset_fapl_core_c (hid_t_f *prp_id, size_t_f* increment, int_f *flag); +__DLL__ int_f +nh5pset_fapl_family_c (hid_t_f *prp_id, hsize_t_f* memb_size, hid_t_f* memb_plist ); +__DLL__ int_f +nh5pget_fapl_family_c (hid_t_f *prp_id, hsize_t_f* memb_size, hid_t_f* memb_plist ); +__DLL__ int_f nh5pset_cache_c(hid_t_f *prp_id, int_f* mdc_nelmts, int_f* rdcc_nelmts, size_t_f* rdcc_nbytes, real_f* rdcc_w0); -extern int_f +__DLL__ int_f nh5pget_cache_c(hid_t_f *prp_id, int_f* mdc_nelmts, int_f* rdcc_nelmts, size_t_f* rdcc_nbytes, real_f* rdcc_w0); -extern int_f -nh5pget_split_c(hid_t_f *prp_id, size_t_f* meta_ext_size , _fcd meta_ext, hid_t_f* meta_plist, size_t_f* raw_ext_size, _fcd raw_ext, hid_t_f * raw_plist); -extern int_f -nh5pset_split_c(hid_t_f *prp_id, int_f* meta_len, _fcd meta_ext, hid_t_f* meta_plist, int_f* raw_len, _fcd raw_ext, hid_t_f * raw_plist); -extern int_f +__DLL__ int_f +nh5pget_fapl_split_c(hid_t_f *prp_id, size_t_f* meta_ext_size , _fcd meta_ext, hid_t_f* meta_plist, size_t_f* raw_ext_size, _fcd raw_ext, hid_t_f * raw_plist); +__DLL__ int_f +nh5pset_fapl_split_c(hid_t_f *prp_id, int_f* meta_len, _fcd meta_ext, hid_t_f* meta_plist, int_f* raw_len, _fcd raw_ext, hid_t_f * raw_plist); +__DLL__ int_f nh5pset_gc_references_c(hid_t_f *prp_id, int_f* gc_references); -extern int_f +__DLL__ int_f nh5pget_gc_references_c(hid_t_f *prp_id, int_f* gc_references); -extern int_f +__DLL__ int_f nh5pset_layout_c (hid_t_f *prp_id, int_f* layout); -extern int_f +__DLL__ int_f nh5pget_layout_c (hid_t_f *prp_id, int_f* layout); -extern int_f +__DLL__ int_f nh5pset_filter_c (hid_t_f *prp_id, int_f* filter, int_f* flags, size_t_f* cd_nelmts, int_f* cd_values ); -extern int_f +__DLL__ int_f nh5pget_nfilters_c (hid_t_f *prp_id, int_f* nfilters); -extern int_f +__DLL__ int_f nh5pget_filter_c(hid_t_f *prp_id, int_f* filter_number, int_f* flags, size_t_f* cd_nelmts, int_f* cd_values, size_t_f *namelen, _fcd name, int_f* filter_id); -extern int_f +__DLL__ int_f nh5pset_external_c (hid_t_f *prp_id, _fcd name, int_f* namelen, int_f* offset, hsize_t_f*bytes); -extern int_f +__DLL__ int_f nh5pget_external_count_c (hid_t_f *prp_id, int_f* count); -extern int_f +__DLL__ int_f nh5pget_external_c(hid_t_f *prp_id,int*idx, size_t_f* name_size, _fcd name, int_f* offset, hsize_t_f*bytes); -extern int_f +__DLL__ int_f nh5pset_hyper_cache_c(hid_t_f *prp_id, int_f* cache, int_f* limit); -extern int_f +__DLL__ int_f nh5pget_hyper_cache_c(hid_t_f *prp_id, int_f* cache, int_f* limit); -extern int_f +__DLL__ int_f nh5pget_btree_ratios_c(hid_t_f *prp_id, real_f* left, real_f* middle, real_f* right); -extern int_f +__DLL__ int_f nh5pset_btree_ratios_c(hid_t_f *prp_id, real_f* left, real_f* middle, real_f* right); -extern int_f +__DLL__ int_f nh5pget_fapl_mpio_c(hid_t_f *prp_id, int_f* comm, int_f* info); -extern int_f +__DLL__ int_f nh5pset_fapl_mpio_c(hid_t_f *prp_id, int_f* comm, int_f* info); -extern int_f +__DLL__ int_f nh5pget_dxpl_mpio_rc(hid_t_f *prp_id, int_f* data_xfer_mode); -extern int_f +__DLL__ int_f nh5pset_dxpl_mpio_c(hid_t_f *prp_id, int_f* data_xfer_mode); /* @@ -828,23 +828,23 @@ nh5pset_dxpl_mpio_c(hid_t_f *prp_id, int_f* data_xfer_mode); #endif /* DF_CAPFNAMES */ #endif /* H5Rf90_FNAMES */ -extern int_f +__DLL__ int_f nh5rcreate_object_c (int_f *ref, hid_t_f *loc_id, _fcd name, int_f *namelen); -extern int_f +__DLL__ int_f nh5rcreate_region_c (int_f *ref, hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *space_id); -extern int_f +__DLL__ int_f nh5rdereference_region_c (hid_t_f *dset_id, int_f *ref, hid_t_f *obj_id); -extern int_f +__DLL__ int_f nh5rdereference_object_c (hid_t_f *dset_id, int_f *ref, hid_t_f *obj_id); -extern int_f +__DLL__ int_f nh5rget_region_region_c (hid_t_f *dset_id, int_f *ref, hid_t_f *space_id); -extern int_f +__DLL__ int_f nh5rget_object_type_obj_c (hid_t_f *dset_id, int_f *ref, int_f *obj_type); /* @@ -859,7 +859,7 @@ nh5rget_object_type_obj_c (hid_t_f *dset_id, int_f *ref, int_f *obj_type); #endif #endif -extern int_f nh5iget_type_c(hid_t_f *obj_id, int_f *type); +__DLL__ int_f nh5iget_type_c(hid_t_f *obj_id, int_f *type); #ifndef H5Ef90_FNAMES @@ -881,12 +881,12 @@ extern int_f nh5iget_type_c(hid_t_f *obj_id, int_f *type); #endif #endif -extern int_f nh5eclear_c(); -extern int_f nh5eprint_c1(_fcd name, int_f* namelen); -extern int_f nh5eprint_c2(); -extern int_f nh5eget_major_c(int_f* error_no, _fcd name); -extern int_f nh5eget_minor_c(int_f* error_no, _fcd name); -extern int_f nh5eset_auto_c(int_f* printflag); +__DLL__ int_f nh5eclear_c(); +__DLL__ int_f nh5eprint_c1(_fcd name, int_f* namelen); +__DLL__ int_f nh5eprint_c2(); +__DLL__ int_f nh5eget_major_c(int_f* error_no, _fcd name); +__DLL__ int_f nh5eget_minor_c(int_f* error_no, _fcd name); +__DLL__ int_f nh5eset_auto_c(int_f* printflag); /* * Functions from H5f.c @@ -907,12 +907,12 @@ extern int_f nh5eset_auto_c(int_f* printflag); # define nh5init_flags_c FNAME(h5init_flags_c) #endif #endif -extern int_f nh5open_c(void); -extern int_f nh5close_c(void); -extern int_f nh5init_types_c(hid_t_f *types, hid_t_f * floatingtypes, hid_t_f * integertypes); -extern int_f nh5close_types_c(hid_t_f *types, int_f *lentypes, hid_t_f * floatingtypes, int_f * floatinglen, hid_t_f * integertypes, int_f * integerlen); +__DLL__ int_f nh5open_c(void); +__DLL__ int_f nh5close_c(void); +__DLL__ int_f nh5init_types_c(hid_t_f *types, hid_t_f * floatingtypes, hid_t_f * integertypes); +__DLL__ int_f nh5close_types_c(hid_t_f *types, int_f *lentypes, hid_t_f * floatingtypes, int_f * floatinglen, hid_t_f * integertypes, int_f * integerlen); -extern int_f nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, int_f *h5f_flags, +__DLL__ int_f nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, int_f *h5f_flags, int_f *h5fd_flags, int_f *h5g_flags, int_f *h5i_flags, int_f *h5p_flags, int_f *h5r_flags, int_f *h5s_flags, int_f *h5t_flags); diff --git a/fortran/src/Makefile.in b/fortran/src/Makefile.in index e37cd08..810c00f 100644 --- a/fortran/src/Makefile.in +++ b/fortran/src/Makefile.in @@ -27,11 +27,11 @@ ADD_PARALLEL_FILES=@ADD_PARALLEL_FILES@ FPAR_MOD=${ADD_PARALLEL_FILES:yes=HDF5mpio.f90} CPARALLEL=${ADD_PARALLEL_FILES:yes=H5FDmpiof.c} -CLIB_SRC=H5f90kit.c H5f.c H5Git.c H5Rf.c H5Ff.c H5Sf.c H5Df.c H5Gf.c \ +CLIB_SRC=H5f90kit.c H5_f.c H5Git.c H5Rf.c H5Ff.c H5Sf.c H5Df.c H5Gf.c \ H5Af.c H5Tf.c H5Pf.c H5If.c H5Ef.c ${CPARALLEL:no=} FPARALLEL=${ADD_PARALLEL_FILES:yes=H5FDmpioff.f90} -FLIB_SRC=H5fortran_types.f90 H5fortran_flags.f90 H5f90global.f90 H5ff.f90 \ +FLIB_SRC=H5fortran_types.f90 H5fortran_flags.f90 H5f90global.f90 H5_ff.f90 \ H5Rff.f90 H5Fff.f90 H5Sff.f90 H5Dff.f90 H5Gff.f90 H5Aff.f90 H5Tff.f90 \ H5Pff.f90 H5Iff.f90 H5Eff.f90 ${FPARALLEL:no=} ${FPAR_MOD:no=HDF5.f90} -- cgit v0.12