summaryrefslogtreecommitdiffstats
path: root/fortran/src
diff options
context:
space:
mode:
Diffstat (limited to 'fortran/src')
-rw-r--r--fortran/src/CMakeLists.txt7
-rw-r--r--fortran/src/H5Ff.c92
-rw-r--r--fortran/src/H5Fff.F90166
-rw-r--r--fortran/src/H5Pff.F90266
-rw-r--r--fortran/src/H5Sff.F90144
-rw-r--r--fortran/src/H5_f.c3
-rw-r--r--fortran/src/H5_ff.F904
-rw-r--r--fortran/src/H5config_f.inc.cmake8
-rw-r--r--fortran/src/H5config_f.inc.in3
-rw-r--r--fortran/src/H5f90global.F905
-rw-r--r--fortran/src/h5fc.in16
-rw-r--r--fortran/src/hdf5_fortrandll.def.in17
12 files changed, 547 insertions, 184 deletions
diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt
index 60c0c3a..4c28046 100644
--- a/fortran/src/CMakeLists.txt
+++ b/fortran/src/CMakeLists.txt
@@ -24,6 +24,13 @@ if (WIN32)
endif ()
endif ()
+if (H5_HAVE_MPI_F08) # MPI-3 module mpi_f08 supported
+ set (CMAKE_H5_HAVE_MPI_F08 1)
+else ()
+ set (H5_NOMPI_F08 ";")
+ set (CMAKE_H5_HAVE_MPI_F08 0)
+endif ()
+
# configure for Fortran preprocessor
# Define Parallel variable for passing to H5config_f.inc.cmake
diff --git a/fortran/src/H5Ff.c b/fortran/src/H5Ff.c
index 9703486..4b56cca 100644
--- a/fortran/src/H5Ff.c
+++ b/fortran/src/H5Ff.c
@@ -189,98 +189,6 @@ h5funmount_c(hid_t_f *loc_id, _fcd dsetname, int_f *namelen)
return ret_value;
}
-/****if* H5Ff/h5fget_create_plist_c
- * NAME
- * h5fget_create_plist_c
- * PURPOSE
- * Call H5Fget_create_plist to get the file creation property list
- * INPUTS
- * file_id - file identifier
- * OUTPUTS
- * prop_id - creation property list identifier
- * RETURNS
- * 0 on success, -1 on failure
- * SOURCE
- */
-int_f
-h5fget_create_plist_c(hid_t_f *file_id, hid_t_f *prop_id)
-/******/
-{
- int ret_value = -1;
- hid_t c_file_id, c_prop_id;
-
- c_file_id = (hid_t)*file_id;
- c_prop_id = H5Fget_create_plist(c_file_id);
-
- if (c_prop_id < 0)
- return ret_value;
- *prop_id = (hid_t_f)c_prop_id;
-
- ret_value = 0;
- return ret_value;
-}
-
-/****if* H5Ff/h5fget_access_plist_c
- * NAME
- * h5fget_access_plist_c
- * PURPOSE
- * Call H5Fget_access_plist to get the file access property list
- * INPUTS
- * file_id - file identifier
- * OUTPUTS
- * access_id - access property list identifier
- * RETURNS
- * 0 on success, -1 on failure
- * SOURCE
- */
-int_f
-h5fget_access_plist_c(hid_t_f *file_id, hid_t_f *access_id)
-/******/
-{
- int ret_value = -1;
- hid_t c_file_id, c_access_id;
-
- c_file_id = (hid_t)*file_id;
- c_access_id = H5Fget_access_plist(c_file_id);
-
- if (c_access_id < 0)
- return ret_value;
- *access_id = (hid_t_f)c_access_id;
-
- ret_value = 0;
- return ret_value;
-}
-
-/****if* H5Ff/h5fget_obj_count_c
- * NAME
- * h5fget_obj_count_c
- * PURPOSE
- * Call H5Fget_obj_count to get number of open objects within a file
- * INPUTS
- * file_id - identifier of the file to be closed
- * obj_type - type of the object
- * RETURNS
- * obj_count - number of objects
- * 0 on success, -1 on failure
- * SOURCE
- */
-
-int_f
-h5fget_obj_count_c(hid_t_f *file_id, int_f *obj_type, size_t_f *obj_count)
-/******/
-{
- int ret_value = 0;
- hid_t c_file_id;
- unsigned c_obj_type;
- ssize_t c_obj_count;
-
- c_file_id = (hid_t)*file_id;
- c_obj_type = (unsigned)*obj_type;
- if ((c_obj_count = H5Fget_obj_count(c_file_id, c_obj_type)) < 0)
- ret_value = -1;
- *obj_count = (size_t_f)c_obj_count;
- return ret_value;
-}
/****if* H5Ff/h5fget_obj_ids_c
* NAME
* h5fget_obj_ids_c
diff --git a/fortran/src/H5Fff.F90 b/fortran/src/H5Fff.F90
index 79aa5a7..e8b765b 100644
--- a/fortran/src/H5Fff.F90
+++ b/fortran/src/H5Fff.F90
@@ -639,19 +639,21 @@ CONTAINS
!!
SUBROUTINE h5fget_create_plist_f(file_id, prop_id, hdferr)
IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id
+ INTEGER(HID_T), INTENT(IN) :: file_id
INTEGER(HID_T), INTENT(OUT) :: prop_id
- INTEGER, INTENT(OUT) :: hdferr
+ INTEGER , INTENT(OUT) :: hdferr
INTERFACE
- INTEGER FUNCTION h5fget_create_plist_c(file_id, prop_id) BIND(C,NAME='h5fget_create_plist_c')
+ INTEGER(HID_T) FUNCTION H5Fget_create_plist(file_id) BIND(C,NAME='H5Fget_create_plist')
IMPORT :: HID_T
IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id
- INTEGER(HID_T), INTENT(OUT) :: prop_id
- END FUNCTION h5fget_create_plist_c
+ INTEGER(HID_T), VALUE :: file_id
+ END FUNCTION H5Fget_create_plist
END INTERFACE
- hdferr = h5fget_create_plist_c(file_id, prop_id)
+ prop_id = H5Fget_create_plist(file_id)
+
+ hdferr = 0
+ IF(prop_id.LT.0) hdferr = -1
END SUBROUTINE h5fget_create_plist_f
!>
@@ -667,19 +669,21 @@ CONTAINS
!!
SUBROUTINE h5fget_access_plist_f(file_id, access_id, hdferr)
IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id
+ INTEGER(HID_T), INTENT(IN) :: file_id
INTEGER(HID_T), INTENT(OUT) :: access_id
INTEGER, INTENT(OUT) :: hdferr
INTERFACE
- INTEGER FUNCTION h5fget_access_plist_c(file_id, access_id) BIND(C,NAME='h5fget_access_plist_c')
+ INTEGER(HID_T) FUNCTION H5Fget_access_plist(file_id) BIND(C,NAME='H5Fget_access_plist')
IMPORT :: HID_T
IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id
- INTEGER(HID_T), INTENT(OUT) :: access_id
- END FUNCTION h5fget_access_plist_c
+ INTEGER(HID_T), VALUE :: file_id
+ END FUNCTION H5Fget_access_plist
END INTERFACE
- hdferr = h5fget_access_plist_c(file_id, access_id)
+ access_id = H5Fget_access_plist(file_id)
+
+ hdferr = 0
+ IF(access_id.LT.0) hdferr = -1
END SUBROUTINE h5fget_access_plist_f
@@ -835,37 +839,41 @@ CONTAINS
!>
!! \ingroup FH5F
!!
-!! \brief Gets number of the objects open within a file
+!! \brief Gets number of the objects open within a file.
!!
-!! \param file_id File identifier.
+!! \param file_id File identifier
!! \param obj_type Type of the object; possible values are:
!! \li H5F_OBJ_FILE_F
!! \li H5F_OBJ_DATASET_F
!! \li H5F_OBJ_GROUP_F
!! \li H5F_OBJ_DATATYPE_F
!! \li H5F_OBJ_ALL_F
-!! \param obj_count Number of open objects.
+!! \param obj_count Number of open objects
!! \param hdferr \fortran_error
!!
!! See C API: @ref H5Fget_obj_count()
!!
SUBROUTINE h5fget_obj_count_f(file_id, obj_type, obj_count, hdferr)
IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id
- INTEGER, INTENT(IN) :: obj_type
+ INTEGER(HID_T) , INTENT(IN) :: file_id
+ INTEGER , INTENT(IN) :: obj_type
INTEGER(SIZE_T), INTENT(OUT) :: obj_count
- INTEGER, INTENT(OUT) :: hdferr
+ INTEGER , INTENT(OUT) :: hdferr
+
INTERFACE
- INTEGER FUNCTION h5fget_obj_count_c(file_id, obj_type, obj_count) BIND(C,NAME='h5fget_obj_count_c')
+ INTEGER(SIZE_T) FUNCTION H5Fget_obj_count(file_id, obj_type) BIND(C,NAME='H5Fget_obj_count')
+ IMPORT :: C_INT
IMPORT :: HID_T, SIZE_T
IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id
- INTEGER, INTENT(IN) :: obj_type
- INTEGER(SIZE_T), INTENT(OUT) :: obj_count
- END FUNCTION h5fget_obj_count_c
+ INTEGER(HID_T), VALUE :: file_id
+ INTEGER(C_INT), VALUE :: obj_type
+ END FUNCTION H5Fget_obj_count
END INTERFACE
- hdferr = h5fget_obj_count_c(file_id, obj_type, obj_count)
+ obj_count = H5Fget_obj_count(file_id, INT(obj_type, C_INT))
+
+ hdferr = 0
+ IF(obj_count.LT.0) hdferr = -1
! Don't include objects created by H5open in the H5F_OBJ_ALL_F count
IF(file_id.EQ.INT(H5F_OBJ_ALL_F,HID_T))THEN
@@ -877,47 +885,51 @@ CONTAINS
!>
!! \ingroup FH5F
!!
-!! \brief Get list of open objects identifiers within a file
+!! \brief Get list of open objects identifiers within a file.
!!
-!! \param file_id File identifier.
+!! \param file_id File identifier
!! \param obj_type Type of the object; possible values are:
!! \li H5F_OBJ_FILE_F
!! \li H5F_OBJ_DATASET_F
!! \li H5F_OBJ_GROUP_F
!! \li H5F_OBJ_DATATYPE_F
!! \li H5F_OBJ_ALL_F
-!! \param max_objs Maximum # of objects to retrieve.
-!! \param obj_ids Array of open object identifiers.
+!! \param max_objs Maximum # of objects to retrieve
+!! \param obj_ids Array of open object identifiers
!! \param hdferr \fortran_error
-!! \param num_objs Number of open objects.
+!! \param num_objs Number of open objects
!!
!! See C API: @ref H5Fget_obj_ids()
!!
SUBROUTINE h5fget_obj_ids_f(file_id, obj_type, max_objs, obj_ids, hdferr, num_objs)
IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id
- INTEGER, INTENT(IN) :: obj_type
+ INTEGER(HID_T) , INTENT(IN) :: file_id
+ INTEGER , INTENT(IN) :: obj_type
INTEGER(SIZE_T), INTENT(IN) :: max_objs
- INTEGER(HID_T), DIMENSION(*), INTENT(INOUT) :: obj_ids
- INTEGER, INTENT(OUT) :: hdferr
+ INTEGER(HID_T) , DIMENSION(*), INTENT(INOUT) :: obj_ids
+ INTEGER , INTENT(OUT) :: hdferr
INTEGER(SIZE_T), INTENT(OUT), OPTIONAL :: num_objs
INTEGER(SIZE_T) :: c_num_objs ! Number of open objects of the specified type
INTERFACE
- INTEGER FUNCTION h5fget_obj_ids_c(file_id, obj_type, max_objs, obj_ids, c_num_objs) &
- BIND(C,NAME='h5fget_obj_ids_c')
+ INTEGER(SIZE_T) FUNCTION H5Fget_obj_ids(file_id, obj_type, max_objs, obj_ids) &
+ BIND(C,NAME='H5Fget_obj_ids')
+ IMPORT :: C_INT
IMPORT :: HID_T, SIZE_T
IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id
- INTEGER, INTENT(IN) :: obj_type
- INTEGER(SIZE_T), INTENT(IN) :: max_objs
- INTEGER(HID_T), DIMENSION(*), INTENT(INOUT) :: obj_ids
- INTEGER(SIZE_T), INTENT(OUT) :: c_num_objs
- END FUNCTION h5fget_obj_ids_c
+ INTEGER(HID_T) , VALUE :: file_id
+ INTEGER(C_INT) , VALUE :: obj_type
+ INTEGER(SIZE_T), VALUE :: max_objs
+ INTEGER(HID_T) , DIMENSION(*) :: obj_ids
+ END FUNCTION H5Fget_obj_ids
END INTERFACE
- hdferr = h5fget_obj_ids_c(file_id, obj_type, max_objs, obj_ids, c_num_objs)
+ c_num_objs = H5Fget_obj_ids(file_id, INT(obj_type, C_INT), max_objs, obj_ids)
+
+ hdferr = 0
+ IF(c_num_objs.LT.0) hdferr = -1
+
IF (PRESENT(num_objs)) num_objs= c_num_objs
END SUBROUTINE h5fget_obj_ids_f
@@ -926,8 +938,8 @@ CONTAINS
!!
!! \brief Get amount of free space within a file.
!!
-!! \param file_id File identifier.
-!! \param free_space Amount of free space in file.
+!! \param file_id File identifier
+!! \param free_space Amount of free space in file
!! \param hdferr \fortran_error
!!
!! See C API: @ref H5Fget_freespace()
@@ -955,9 +967,9 @@ CONTAINS
!!
!! \brief Gets the name of the file from the object identifier.
!!
-!! \param obj_id Object identifier.
-!! \param buf Buffer to store the read name.
-!! \param size Actual size of the name.
+!! \param obj_id Object identifier
+!! \param buf Buffer to store the read name
+!! \param size Actual size of the name
!! \param hdferr \fortran_error
!!
!! See C API: @ref H5Fget_name()
@@ -990,8 +1002,8 @@ CONTAINS
!!
!! \brief Retrieves the file size of the HDF5 file.
!!
-!! \param file_id File identifier.
-!! \param size File size.
+!! \param file_id File identifier
+!! \param size File size
!! \param hdferr \fortran_error
!!
!! See C API: @ref H5Fget_filesize()
@@ -1018,8 +1030,8 @@ CONTAINS
!!
!! \brief Retrieves the file number of the HDF5 file.
!!
-!! \param file_id File identifier.
-!! \param fileno File number.
+!! \param file_id File identifier
+!! \param fileno File number
!! \param hdferr \fortran_error
!!
!! See C API: @ref H5Fget_fileno()
@@ -1046,11 +1058,11 @@ CONTAINS
!!
!! \brief Retrieves a copy of the image of an existing, open file.
!!
-!! \param file_id Target file identifier.
-!! \param buf_ptr Pointer to the buffer into which the image of the HDF5 file is to be copied.
-!! \param buf_len Size of the supplied buffer.
+!! \param file_id Target file identifier
+!! \param buf_ptr Pointer to the buffer into which the image of the HDF5 file is to be copied
+!! \param buf_len Size of the supplied buffer
!! \param hdferr \fortran_error
-!! \param buf_size Returns the size in bytes of the buffer required to store the file image, no data will be copied.
+!! \param buf_size Returns the size in bytes of the buffer required to store the file image, no data will be copied
!!
!! See C API: @ref H5Fget_file_image()
!!
@@ -1094,8 +1106,8 @@ CONTAINS
!! \brief Gets the value of the "minimize dataset headers" value which creates
!! smaller dataset object headers when its set and no attributes are present.
!!
-!! \param file_id Target file identifier.
-!! \param minimize Value of the setting.
+!! \param file_id Target file identifier
+!! \param minimize Value of the setting
!! \param hdferr \fortran_error
!!
!! See C API: @ref H5Fget_dset_no_attrs_hint()
@@ -1129,8 +1141,8 @@ CONTAINS
!! \brief Sets the value of the "minimize dataset headers" value which creates
!! smaller dataset object headers when its set and no attributes are present.
!!
-!! \param file_id Target file identifier.
-!! \param minimize Value of the setting.
+!! \param file_id Target file identifier
+!! \param minimize Value of the setting
!! \param hdferr \fortran_error
!!
!! See C API: @ref H5Fset_dset_no_attrs_hint()
@@ -1192,5 +1204,39 @@ CONTAINS
END SUBROUTINE H5Fget_info_f
+!>
+!! \ingroup FH5F
+!!
+!! \brief Determines the read/write or read-only status of a file.
+!!
+!! \param file_id File identifier
+!! \param intent Access mode flag as originally passed with H5Fopen_f()
+!! \param hdferr \fortran_error
+!!
+!! See C API: @ref H5Fget_intent()
+!!
+ SUBROUTINE h5fget_intent_f(file_id, intent, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: file_id
+ INTEGER, INTENT(OUT) :: intent
+ INTEGER, INTENT(OUT) :: hdferr
+
+ INTEGER(C_INT) :: c_intent
+
+ INTERFACE
+ INTEGER(C_INT) FUNCTION H5Fget_intent(file_id, intent) BIND(C,NAME='H5Fget_intent')
+ IMPORT :: C_INT
+ IMPORT :: HID_T
+ IMPLICIT NONE
+ INTEGER(HID_T), VALUE :: file_id
+ INTEGER(C_INT) :: intent
+ END FUNCTION H5Fget_intent
+ END INTERFACE
+
+ hdferr = INT(H5Fget_intent(file_id, c_intent))
+ intent = INT(c_intent)
+
+ END SUBROUTINE h5fget_intent_f
+
END MODULE H5F
diff --git a/fortran/src/H5Pff.F90 b/fortran/src/H5Pff.F90
index afd17f3..90a74f7 100644
--- a/fortran/src/H5Pff.F90
+++ b/fortran/src/H5Pff.F90
@@ -49,6 +49,12 @@ MODULE H5P
PRIVATE h5pget_integer, h5pget_char, h5pget_ptr
PRIVATE h5pregister_integer, h5pregister_ptr
PRIVATE h5pinsert_integer, h5pinsert_char, h5pinsert_ptr
+#ifdef H5_HAVE_PARALLEL
+ PRIVATE h5pset_fapl_mpio_f90, h5pget_fapl_mpio_f90
+#ifdef H5_HAVE_MPI_F08
+ PRIVATE h5pset_fapl_mpio_f08, h5pget_fapl_mpio_f08
+#endif
+#endif
#ifndef H5_DOXYGEN
@@ -101,7 +107,6 @@ MODULE H5P
MODULE PROCEDURE h5pinsert_ptr
END INTERFACE
-
INTERFACE
INTEGER(C_INT) FUNCTION H5Pset_fill_value(prp_id, type_id, fillvalue) &
BIND(C, NAME='H5Pset_fill_value')
@@ -182,6 +187,35 @@ MODULE H5P
#endif
#ifdef H5_HAVE_PARALLEL
+
+ INTERFACE h5pset_fapl_mpio_f
+ MODULE PROCEDURE h5pset_fapl_mpio_f90
+#ifdef H5_HAVE_MPI_F08
+ MODULE PROCEDURE h5pset_fapl_mpio_f08
+#endif
+ END INTERFACE
+
+ INTERFACE h5pget_fapl_mpio_f
+ MODULE PROCEDURE h5pget_fapl_mpio_f90
+#ifdef H5_HAVE_MPI_F08
+ MODULE PROCEDURE h5pget_fapl_mpio_f08
+#endif
+ END INTERFACE
+
+ INTERFACE H5Pset_mpi_params_f
+ MODULE PROCEDURE H5Pset_mpi_params_f90
+#ifdef H5_HAVE_MPI_F08
+ MODULE PROCEDURE H5Pset_mpi_params_f08
+#endif
+ END INTERFACE
+
+ INTERFACE H5Pget_mpi_params_f
+ MODULE PROCEDURE H5Pget_mpi_params_f90
+#ifdef H5_HAVE_MPI_F08
+ MODULE PROCEDURE H5Pget_mpi_params_f08
+#endif
+ END INTERFACE
+
#ifdef H5_HAVE_SUBFILING_VFD
!> \addtogroup FH5P
!> @{
@@ -5125,6 +5159,8 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr)
! *********************************************************************
#ifdef H5_HAVE_PARALLEL
+
+#ifdef H5_DOXYGEN
!>
!! \ingroup FH5P
!!
@@ -5143,21 +5179,69 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr)
INTEGER, INTENT(IN) :: comm
INTEGER, INTENT(IN) :: info
INTEGER, INTENT(OUT) :: hdferr
+ END SUBROUTINE h5pset_fapl_mpio_f
+!>
+!! \ingroup FH5P
+!!
+!! \brief Stores MPI IO communicator information to the file access property list.
+!!
+!! \note Supports MPI Fortran module mpi_f08
+!!
+!! \param prp_id File access property list identifier.
+!! \param comm MPI-3 communicator.
+!! \param info MPI-3 info object.
+!! \param hdferr \fortran_error
+!!
+!! See C API: @ref H5Pset_fapl_mpio()
+!!
+ SUBROUTINE h5pset_fapl_mpio_f(prp_id, comm, info, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ TYPE(MPI_COMM), INTENT(IN) :: comm
+ TYPE(MPI_INFO), INTENT(IN) :: info
+ INTEGER, INTENT(OUT) :: hdferr
+ END SUBROUTINE h5pset_fapl_mpio_f
+
+#else
+
+ SUBROUTINE h5pset_fapl_mpio_f90(prp_id, comm, info, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ INTEGER, INTENT(IN) :: comm
+ INTEGER, INTENT(IN) :: info
+ INTEGER, INTENT(OUT) :: hdferr
INTERFACE
INTEGER FUNCTION h5pset_fapl_mpio_c(prp_id, comm, info) &
BIND(C,NAME='h5pset_fapl_mpio_c')
IMPORT :: HID_T
IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id
- INTEGER , INTENT(IN) :: comm
- INTEGER , INTENT(IN) :: info
+ INTEGER(HID_T) :: prp_id
+ INTEGER :: comm
+ INTEGER :: info
END FUNCTION h5pset_fapl_mpio_c
END INTERFACE
hdferr = h5pset_fapl_mpio_c(prp_id, comm, info)
- END SUBROUTINE h5pset_fapl_mpio_f
+ END SUBROUTINE h5pset_fapl_mpio_f90
+#ifdef H5_HAVE_MPI_F08
+ SUBROUTINE h5pset_fapl_mpio_f08(prp_id, comm, info, hdferr)
+ USE mpi_f08
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ TYPE(MPI_COMM), INTENT(IN) :: comm
+ TYPE(MPI_INFO), INTENT(IN) :: info
+ INTEGER, INTENT(OUT) :: hdferr
+
+ CALL h5pset_fapl_mpio_f90(prp_id, comm%mpi_val, info%mpi_val, hdferr)
+
+ END SUBROUTINE h5pset_fapl_mpio_f08
+#endif
+
+#endif
+
+#ifdef H5_DOXYGEN
!>
!! \ingroup FH5P
!!
@@ -5168,9 +5252,44 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr)
!! \param info MPI-2 info object.
!! \param hdferr \fortran_error
!!
+!! \attention It is the responsibility of the application to free the MPI objects.
+!!
!! See C API: @ref H5Pget_fapl_mpio()
!!
- SUBROUTINE h5pget_fapl_mpio_f(prp_id, comm, info, hdferr)
+SUBROUTINE h5pget_fapl_mpio_f(prp_id, comm, info, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ INTEGER, INTENT(OUT) :: comm
+ INTEGER, INTENT(OUT) :: info
+ INTEGER, INTENT(OUT) :: hdferr
+END SUBROUTINE h5pget_fapl_mpio_f
+!>
+!! \ingroup FH5P
+!!
+!! \brief Returns MPI communicator information.
+!!
+!! \note Supports MPI Fortran module mpi_f08
+!!
+!! \param prp_id File access property list identifier.
+!! \param comm MPI-3 communicator.
+!! \param info MPI-3 info object.
+!! \param hdferr \fortran_error
+!!
+!! \attention It is the responsibility of the application to free the MPI objects.
+!!
+!! See C API: @ref H5Pget_fapl_mpio()
+!!
+SUBROUTINE h5pget_fapl_mpio_f(prp_id, comm, info, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ TYPE(MPI_COMM), INTENT(OUT) :: comm
+ TYPE(MPI_INFO), INTENT(OUT) :: info
+ INTEGER , INTENT(OUT) :: hdferr
+END SUBROUTINE h5pget_fapl_mpio_f
+
+#else
+
+ SUBROUTINE h5pget_fapl_mpio_f90(prp_id, comm, info, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: prp_id
INTEGER, INTENT(OUT) :: comm
@@ -5181,15 +5300,30 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr)
BIND(C,NAME='h5pget_fapl_mpio_c')
IMPORT :: HID_T
IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id
- INTEGER , INTENT(OUT) :: comm
- INTEGER , INTENT(OUT) :: info
+ INTEGER(HID_T) :: prp_id
+ INTEGER :: comm
+ INTEGER :: info
END FUNCTION h5pget_fapl_mpio_c
END INTERFACE
hdferr = h5pget_fapl_mpio_c(prp_id, comm, info)
- END SUBROUTINE h5pget_fapl_mpio_f
+ END SUBROUTINE h5pget_fapl_mpio_f90
+
+#ifdef H5_HAVE_MPI_F08
+ SUBROUTINE h5pget_fapl_mpio_f08(prp_id, comm, info, hdferr)
+ USE mpi_f08
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ TYPE(MPI_COMM), INTENT(OUT) :: comm
+ TYPE(MPI_INFO), INTENT(OUT) :: info
+ INTEGER, INTENT(OUT) :: hdferr
+
+ CALL h5pget_fapl_mpio_f90(prp_id, comm%mpi_val, info%mpi_val, hdferr)
+
+ END SUBROUTINE h5pget_fapl_mpio_f08
+#endif
+#endif
#ifdef H5_HAVE_SUBFILING_VFD
!>
@@ -5376,14 +5510,15 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr)
END SUBROUTINE h5pget_mpio_no_collective_cause_f
+#ifdef H5_DOXYGEN
!>
!! \ingroup FH5P
!!
-!! \brief Set the MPI communicator and info.
+!! \brief Set the MPI communicator and information.
!!
!! \param prp_id File access property list identifier.
-!! \param comm The MPI communicator.
-!! \param info The MPI info object.
+!! \param comm MPI-2 communicator.
+!! \param info MPI-2 info object.
!! \param hdferr \fortran_error
!!
!! See C API: @ref H5Pset_mpi_params()
@@ -5394,6 +5529,37 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr)
INTEGER , INTENT(IN) :: comm
INTEGER , INTENT(IN) :: info
INTEGER , INTENT(OUT) :: hdferr
+ END SUBROUTINE H5Pset_mpi_params_f
+!>
+!! \ingroup FH5P
+!!
+!! \brief Set the MPI communicator and information.
+!!
+!! \note Supports MPI Fortran module mpi_f08
+!!
+!! \param prp_id File access property list identifier.
+!! \param comm MPI-3 communicator.
+!! \param info MPI-3 info object.
+!! \param hdferr \fortran_error
+!!
+!! See C API: @ref H5Pset_mpi_params()
+!!
+ SUBROUTINE H5Pset_mpi_params_f(prp_id, comm, info, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ TYPE(MPI_COMM), INTENT(IN) :: comm
+ TYPE(MPI_INFO), INTENT(IN) :: info
+ INTEGER , INTENT(OUT) :: hdferr
+ END SUBROUTINE H5Pset_mpi_params_f
+
+#else
+
+ SUBROUTINE H5Pset_mpi_params_f90(prp_id, comm, info, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ INTEGER , INTENT(IN) :: comm
+ INTEGER , INTENT(IN) :: info
+ INTEGER , INTENT(OUT) :: hdferr
INTERFACE
INTEGER FUNCTION h5pset_mpi_params_c(prp_id, comm, info) &
@@ -5408,16 +5574,33 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr)
hdferr = H5Pset_mpi_params_c(prp_id, comm, info)
- END SUBROUTINE H5Pset_mpi_params_f
+ END SUBROUTINE H5Pset_mpi_params_f90
+
+#ifdef H5_HAVE_MPI_F08
+ SUBROUTINE H5Pset_mpi_params_f08(prp_id, comm, info, hdferr)
+ USE mpi_f08
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ TYPE(MPI_COMM), INTENT(IN) :: comm
+ TYPE(MPI_INFO), INTENT(IN) :: info
+ INTEGER , INTENT(OUT) :: hdferr
+
+ CALL H5Pset_mpi_params_f90(prp_id, comm%mpi_val, info%mpi_val, hdferr)
+
+ END SUBROUTINE H5Pset_mpi_params_f08
+#endif
+
+#endif
+#ifdef H5_DOXYGEN
!>
!! \ingroup FH5P
!!
!! \brief Get the MPI communicator and info.
!!
!! \param prp_id File access property list identifier.
-!! \param comm The MPI communicator.
-!! \param info The MPI info object.
+!! \param comm MPI-2 communicator.
+!! \param info MPI-2 info object.
!! \param hdferr \fortran_error
!!
!! See C API: @ref H5Pget_mpi_params()
@@ -5428,6 +5611,39 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr)
INTEGER , INTENT(OUT) :: comm
INTEGER , INTENT(OUT) :: info
INTEGER , INTENT(OUT) :: hdferr
+ END SUBROUTINE H5Pget_mpi_params_f
+!>
+!! \ingroup FH5P
+!!
+!! \brief Get the MPI communicator and information.
+!!
+!! \note Supports MPI Fortran module mpi_f08
+!!
+!! \param prp_id File access property list identifier.
+!! \param comm MPI-3 communicator.
+!! \param info MPI-3 info object.
+!! \param hdferr \fortran_error
+!!
+!! \attention It is the responsibility of the application to free the MPI objects.
+!!
+!! See C API: @ref H5Pget_mpi_params()
+!!
+ SUBROUTINE H5Pget_mpi_params_f(prp_id, comm, info, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ TYPE(MPI_COMM), INTENT(OUT) :: comm
+ TYPE(MPI_INFO), INTENT(OUT) :: info
+ INTEGER , INTENT(OUT) :: hdferr
+ END SUBROUTINE H5Pget_mpi_params_f
+
+#else
+
+ SUBROUTINE H5Pget_mpi_params_f90(prp_id, comm, info, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ INTEGER , INTENT(OUT) :: comm
+ INTEGER , INTENT(OUT) :: info
+ INTEGER , INTENT(OUT) :: hdferr
INTERFACE
INTEGER FUNCTION h5pget_mpi_params_c(prp_id, comm, info) &
@@ -5442,7 +5658,23 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr)
hdferr = H5Pget_mpi_params_c(prp_id, comm, info)
- END SUBROUTINE H5Pget_mpi_params_f
+ END SUBROUTINE H5Pget_mpi_params_f90
+
+#ifdef H5_HAVE_MPI_F08
+ SUBROUTINE H5Pget_mpi_params_f08(prp_id, comm, info, hdferr)
+ USE mpi_f08
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: prp_id
+ TYPE(MPI_COMM), INTENT(OUT) :: comm
+ TYPE(MPI_INFO), INTENT(OUT) :: info
+ INTEGER , INTENT(OUT) :: hdferr
+
+ CALL H5Pget_mpi_params_f90(prp_id, comm%mpi_val, info%mpi_val, hdferr)
+
+ END SUBROUTINE H5Pget_mpi_params_f08
+#endif
+
+#endif
!>
!! \ingroup FH5P
diff --git a/fortran/src/H5Sff.F90 b/fortran/src/H5Sff.F90
index e734c03..5f2f1d2 100644
--- a/fortran/src/H5Sff.F90
+++ b/fortran/src/H5Sff.F90
@@ -1445,4 +1445,148 @@ CONTAINS
END SUBROUTINE H5Sis_regular_hyperslab_f
+!>
+!! \ingroup FH5S
+!!
+!! \brief Closes a dataspace selection iterator.
+!!
+!! \param sel_iter_id Dataspace selection iterator identifier
+!! \param hdferr \fortran_error
+!!
+!! See C API: @ref H5Ssel_iter_close()
+!!
+ SUBROUTINE h5ssel_iter_close_f(sel_iter_id, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: sel_iter_id
+ INTEGER, INTENT(OUT) :: hdferr
+ INTERFACE
+ INTEGER(C_INT) FUNCTION H5Ssel_iter_close(sel_iter_id) &
+ BIND(C,NAME='H5Ssel_iter_close')
+ IMPORT :: HID_T, C_INT
+ IMPLICIT NONE
+ INTEGER(HID_T), VALUE :: sel_iter_id
+ END FUNCTION H5Ssel_iter_close
+ END INTERFACE
+
+ hdferr = INT(h5ssel_iter_close(sel_iter_id), C_INT)
+
+ END SUBROUTINE h5ssel_iter_close_f
+
+!>
+!! \ingroup FH5S
+!!
+!! \brief Creates a dataspace selection iterator for a dataspace's selection.
+!!
+!! \param space_id Dataspace identifier
+!! \param elmt_size Size of element in the selection
+!! \param flags Selection iterator flag, valid values are:
+!! \li H5S_SEL_ITER_GET_SEQ_LIST_SORTED_F, ref. @ref H5S_SEL_ITER_GET_SEQ_LIST_SORTED
+!! \li H5S_SEL_ITER_SHARE_WITH_DATASPACE_F, ref. @ref H5S_SEL_ITER_SHARE_WITH_DATASPACE
+!! \param ds_iter_id Dataspace selection iterator identifier
+!! \param hdferr \fortran_error
+!!
+!! See C API: @ref H5Ssel_iter_create()
+!!
+ SUBROUTINE h5ssel_iter_create_f(space_id, elmt_size, flags, ds_iter_id, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T) , INTENT(IN) :: space_id
+ INTEGER(SIZE_T), INTENT(IN) :: elmt_size
+ INTEGER , INTENT(IN) :: flags
+ INTEGER(HID_T) , INTENT(OUT) :: ds_iter_id
+ INTEGER , INTENT(OUT) :: hdferr
+ INTERFACE
+ INTEGER(HID_T) FUNCTION H5Ssel_iter_create(space_id, elmt_size, flags) &
+ BIND(C,NAME='H5Ssel_iter_create')
+ IMPORT :: HID_T, C_INT, SIZE_T
+ IMPLICIT NONE
+ INTEGER(HID_T) , VALUE :: space_id
+ INTEGER(SIZE_T), VALUE :: elmt_size
+ INTEGER(C_INT) , VALUE :: flags
+ END FUNCTION H5Ssel_iter_create
+ END INTERFACE
+
+ ds_iter_id = H5Ssel_iter_create(space_id, elmt_size, INT(flags, C_INT))
+
+ hdferr = 0
+ IF(ds_iter_id.LT.0) hdferr = -1
+
+ END SUBROUTINE h5ssel_iter_create_f
+
+!>
+!! \ingroup FH5S
+!!
+!! \brief Retrieves a list of offset / length sequences for the elements in an iterator.
+!!
+!! \param sel_iter_id Dataspace selection iterator identifier
+!! \param maxseq Maximum number of sequences to retrieve
+!! \param maxbytes Maximum number of bytes to retrieve in sequences
+!! \param nseq Number of sequences retrieved
+!! \param nbytes Number of bytes retrieved, in all sequences
+!! \param off Array of sequence offsets
+!! \param len Array of sequence lengths
+!! \param hdferr \fortran_error
+!!
+!! See C API: @ref H5Ssel_iter_get_seq_list()
+!!
+ SUBROUTINE h5ssel_iter_get_seq_list_f(sel_iter_id, maxseq, maxbytes, nseq, nbytes, off, len, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T) , INTENT(IN) :: sel_iter_id
+ INTEGER(SIZE_T), INTENT(IN) :: maxseq
+ INTEGER(SIZE_T), INTENT(IN) :: maxbytes
+ INTEGER(SIZE_T), INTENT(OUT) :: nseq
+ INTEGER(SIZE_T), INTENT(OUT) :: nbytes
+ INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: off
+ INTEGER(SIZE_T), DIMENSION(*), INTENT(OUT) :: len
+ INTEGER, INTENT(OUT) :: hdferr
+
+ INTERFACE
+ INTEGER(C_INT) FUNCTION H5Ssel_iter_get_seq_list(sel_iter_id, maxseq, maxbytes, nseq, nbytes, off, len) &
+ BIND(C,NAME='H5Ssel_iter_get_seq_list')
+ IMPORT :: HID_T, C_INT, SIZE_T, HSIZE_T
+ IMPLICIT NONE
+ INTEGER(HID_T) , VALUE :: sel_iter_id
+ INTEGER(SIZE_T), VALUE :: maxseq
+ INTEGER(SIZE_T), VALUE :: maxbytes
+ INTEGER(SIZE_T) :: nseq
+ INTEGER(SIZE_T) :: nbytes
+ INTEGER(HSIZE_T), DIMENSION(*) :: off
+ INTEGER(SIZE_T), DIMENSION(*) :: len
+ END FUNCTION H5Ssel_iter_get_seq_list
+ END INTERFACE
+
+ hdferr = INT(H5Ssel_iter_get_seq_list(sel_iter_id, maxseq, maxbytes, nseq, nbytes, off, len), C_INT)
+
+ END SUBROUTINE h5ssel_iter_get_seq_list_f
+
+!>
+!! \ingroup FH5S
+!!
+!! \brief Resets a dataspace selection iterator back to an initial state.
+!!
+!! \param sel_iter_id Identifier of the dataspace selection iterator to reset
+!! \param space_id Identifier of the dataspace with selection to iterate over
+!! \param hdferr \fortran_error
+!!
+!! See C API: @ref H5Ssel_iter_reset()
+!!
+ SUBROUTINE h5ssel_iter_reset_f(sel_iter_id, space_id, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: sel_iter_id
+ INTEGER(HID_T), INTENT(IN) :: space_id
+ INTEGER, INTENT(OUT) :: hdferr
+ INTERFACE
+ INTEGER(C_INT) FUNCTION H5Ssel_iter_reset(sel_iter_id, space_id) &
+ BIND(C,NAME='H5Ssel_iter_reset')
+ IMPORT :: HID_T, C_INT
+ IMPLICIT NONE
+ INTEGER(HID_T), VALUE :: sel_iter_id
+ INTEGER(HID_T), VALUE :: space_id
+ END FUNCTION H5Ssel_iter_reset
+ END INTERFACE
+
+ hdferr = INT(h5ssel_iter_reset(sel_iter_id, space_id), C_INT)
+
+ END SUBROUTINE h5ssel_iter_reset_f
+
+
END MODULE H5S
diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c
index b1dc7db..e6f7b6d 100644
--- a/fortran/src/H5_f.c
+++ b/fortran/src/H5_f.c
@@ -798,6 +798,9 @@ h5init_flags_c(int_f *h5d_flags, size_t_f *h5d_size_flags, int_f *h5e_flags, hid
h5s_flags[16] = (int_f)H5S_SEL_HYPERSLABS;
h5s_flags[17] = (int_f)H5S_SEL_ALL;
+ h5s_flags[18] = (int_f)H5S_SEL_ITER_GET_SEQ_LIST_SORTED;
+ h5s_flags[19] = (int_f)H5S_SEL_ITER_SHARE_WITH_DATASPACE;
+
/*
* H5T flags
*/
diff --git a/fortran/src/H5_ff.F90 b/fortran/src/H5_ff.F90
index fe6337a..e83768a 100644
--- a/fortran/src/H5_ff.F90
+++ b/fortran/src/H5_ff.F90
@@ -135,7 +135,7 @@ MODULE H5LIB
!
! H5S flags declaration
!
- INTEGER, PARAMETER :: H5S_FLAGS_LEN = 18
+ INTEGER, PARAMETER :: H5S_FLAGS_LEN = 20
INTEGER, DIMENSION(1:H5S_FLAGS_LEN) :: H5S_flags
INTEGER, PARAMETER :: H5S_HSIZE_FLAGS_LEN = 1
INTEGER(HSIZE_T), DIMENSION(1:H5S_HSIZE_FLAGS_LEN) :: H5S_hsize_flags
@@ -656,6 +656,8 @@ CONTAINS
H5S_SEL_POINTS_F = H5S_flags(16)
H5S_SEL_HYPERSLABS_F = H5S_flags(17)
H5S_SEL_ALL_F = H5S_flags(18)
+ H5S_SEL_ITER_GET_SEQ_LIST_SORTED_F = H5S_flags(19)
+ H5S_SEL_ITER_SHARE_WITH_DATASPACE_F = H5S_flags(20)
!
! H5T flags declaration
!
diff --git a/fortran/src/H5config_f.inc.cmake b/fortran/src/H5config_f.inc.cmake
index 77ff707..e6fa7b9 100644
--- a/fortran/src/H5config_f.inc.cmake
+++ b/fortran/src/H5config_f.inc.cmake
@@ -19,6 +19,14 @@
#define H5_HAVE_PARALLEL
#endif
+! Define if MPI supports mpi_f08 module
+#cmakedefine01 CMAKE_H5_HAVE_MPI_F08
+#if CMAKE_H5_HAVE_MPI_F08 == 0
+#undef H5_HAVE_MPI_F08
+#else
+#define H5_HAVE_MPI_F08
+#endif
+
! Define if there is subfiling support
#cmakedefine01 CMAKE_H5_HAVE_SUBFILING_VFD
#if CMAKE_H5_HAVE_SUBFILING_VFD == 0
diff --git a/fortran/src/H5config_f.inc.in b/fortran/src/H5config_f.inc.in
index afcfa6e..7f52255 100644
--- a/fortran/src/H5config_f.inc.in
+++ b/fortran/src/H5config_f.inc.in
@@ -17,6 +17,9 @@
! Define if we have parallel support
#undef HAVE_PARALLEL
+! Define if MPI supports mpi_f08 module
+#undef HAVE_MPI_F08
+
! Define if we have subfiling support
#undef HAVE_SUBFILING_VFD
diff --git a/fortran/src/H5f90global.F90 b/fortran/src/H5f90global.F90
index fb25f7e..5b4fc64 100644
--- a/fortran/src/H5f90global.F90
+++ b/fortran/src/H5f90global.F90
@@ -793,6 +793,8 @@ MODULE H5GLOBAL
!DEC$ATTRIBUTES DLLEXPORT :: H5S_SEL_POINTS_F
!DEC$ATTRIBUTES DLLEXPORT :: H5S_SEL_HYPERSLABS_F
!DEC$ATTRIBUTES DLLEXPORT :: H5S_SEL_ALL_F
+ !DEC$ATTRIBUTES DLLEXPORT :: H5S_SEL_ITER_GET_SEQ_LIST_SORTED_F
+ !DEC$ATTRIBUTES DLLEXPORT :: H5S_SEL_ITER_SHARE_WITH_DATASPACE_F
!DEC$endif
!> \addtogroup FH5S
!> @{
@@ -822,6 +824,9 @@ MODULE H5GLOBAL
INTEGER :: H5S_SEL_POINTS_F !< H5S_SEL_POINTS
INTEGER :: H5S_SEL_HYPERSLABS_F !< H5S_SEL_HYPERSLABS
INTEGER :: H5S_SEL_ALL_F !< H5S_SEL_ALL
+
+ INTEGER :: H5S_SEL_ITER_GET_SEQ_LIST_SORTED_F !< H5S_SEL_ITER_GET_SEQ_LIST_SORTED
+ INTEGER :: H5S_SEL_ITER_SHARE_WITH_DATASPACE_F !< H5S_SEL_ITER_SHARE_WITH_DATASPACE
!> @}
!
! H5T flags declaration
diff --git a/fortran/src/h5fc.in b/fortran/src/h5fc.in
index c5da815..6d7329a 100644
--- a/fortran/src/h5fc.in
+++ b/fortran/src/h5fc.in
@@ -60,7 +60,7 @@ host_os="@host_os@"
prog_name="`basename $0`"
-allargs=""
+misc_args=""
compile_args=""
link_args=""
link_objs=""
@@ -176,7 +176,6 @@ for arg in $@ ; do
case "$arg" in
-c)
- allargs="$allargs $arg"
compile_args="$compile_args $arg"
if test "x$do_link" = "xyes" -a -n "$output_file"; then
@@ -187,7 +186,6 @@ for arg in $@ ; do
dash_c="yes"
;;
-o)
- allargs="$allargs $arg"
dash_o="yes"
if test "x$dash_c" = "xyes"; then
@@ -199,14 +197,12 @@ for arg in $@ ; do
fi
;;
-E|-M|-MT)
- allargs="$allargs $arg"
compile_args="$compile_args $arg"
dash_c="yes"
do_link="no"
;;
-l*)
link_args="$link_args $arg"
- allargs="$allargs $arg"
;;
-prefix=*)
prefix="`expr "$arg" : '-prefix=\(.*\)'`"
@@ -238,14 +234,14 @@ for arg in $@ ; do
;;
*\"*)
qarg="'"$arg"'"
- allargs="$allargs $qarg"
+ misc_args="$misc_args $qarg"
;;
*\'*)
- qarg='\"'"$arg"'\"'
- allargs="$allargs $qarg"
+ qarg='"'"$arg"'"'
+ misc_args="$misc_args $qarg"
;;
- *) allargs="$allargs $arg"
+ *) misc_args="$misc_args $arg"
if [ -s "$arg" ] ; then
ext=`expr "$arg" : '.*\(\..*\)'`
if [ "$ext" = ".f" -o "$ext" = ".F" -o \
@@ -293,7 +289,7 @@ if test "x$do_compile" = "xyes"; then
fi
- $SHOW $FC $H5BLD_FCFLAGS $FCFLAGS ${F9XSUFFIXFLAG} ${fmodules} $compile_args
+ $SHOW $FC $H5BLD_FCFLAGS $FCFLAGS ${F9XSUFFIXFLAG} ${fmodules} $misc_args $compile_args
status=$?
if test "$status" != "0"; then
diff --git a/fortran/src/hdf5_fortrandll.def.in b/fortran/src/hdf5_fortrandll.def.in
index 119e140..e29488f 100644
--- a/fortran/src/hdf5_fortrandll.def.in
+++ b/fortran/src/hdf5_fortrandll.def.in
@@ -147,6 +147,7 @@ H5F_mp_H5FGET_FILE_IMAGE_F
H5F_mp_H5FGET_DSET_NO_ATTRS_HINT_F
H5F_mp_H5FSET_DSET_NO_ATTRS_HINT_F
H5F_mp_H5FGET_INFO_F
+H5F_mp_H5FGET_INTENT_F
; H5G
H5G_mp_H5GOPEN_F
H5G_mp_H5GOPEN_ASYNC_F
@@ -420,14 +421,18 @@ H5P_mp_H5PSET_FILE_SPACE_PAGE_SIZE_F
H5P_mp_H5PGET_FILE_SPACE_PAGE_SIZE_F
H5P_mp_H5PGET_ACTUAL_SELECTION_IO_MODE_F
; Parallel
-@H5_NOPAREXP@H5P_mp_H5PSET_FAPL_MPIO_F
-@H5_NOPAREXP@H5P_mp_H5PGET_FAPL_MPIO_F
+@H5_NOPAREXP@H5P_mp_H5PSET_FAPL_MPIO_F90
+@H5_NOPAREXP@@H5_NOMPI_F08@H5P_mp_H5PSET_FAPL_MPIO_F08
+@H5_NOPAREXP@H5P_mp_H5PGET_FAPL_MPIO_F90
+@H5_NOPAREXP@@H5_NOMPI_F08@H5P_mp_H5PGET_FAPL_MPIO_F08
@H5_NOPAREXP@@H5_NOSUBFILING@H5P_mp_H5PSET_FAPL_SUBFILING_F
@H5_NOPAREXP@@H5_NOSUBFILING@H5P_mp_H5PGET_FAPL_SUBFILING_F
@H5_NOPAREXP@@H5_NOSUBFILING@H5P_mp_H5PSET_FAPL_IOC_F
@H5_NOPAREXP@@H5_NOSUBFILING@H5P_mp_H5PGET_FAPL_IOC_F
-@H5_NOPAREXP@H5P_mp_H5PSET_MPI_PARAMS_F
-@H5_NOPAREXP@H5P_mp_H5PGET_MPI_PARAMS_F
+@H5_NOPAREXP@H5P_mp_H5PSET_MPI_PARAMS_F90
+@H5_NOPAREXP@@H5_NOMPI_F08@H5P_mp_H5PSET_MPI_PARAMS_F08
+@H5_NOPAREXP@H5P_mp_H5PGET_MPI_PARAMS_F90
+@H5_NOPAREXP@@H5_NOMPI_F08@H5P_mp_H5PGET_MPI_PARAMS_F08
@H5_NOPAREXP@H5P_mp_H5PSET_DXPL_MPIO_F
@H5_NOPAREXP@H5P_mp_H5PGET_DXPL_MPIO_F
@H5_NOPAREXP@H5P_mp_H5PGET_MPIO_ACTUAL_IO_MODE_F
@@ -483,6 +488,10 @@ H5S_mp_H5SENCODE_F
H5S_mp_H5SEXTENT_EQUAL_F
H5S_mp_H5SGET_REGULAR_HYPERSLAB_F
H5S_mp_H5SIS_REGULAR_HYPERSLAB_F
+H5S_mp_H5SSEL_ITER_CREATE_F
+H5S_mp_H5SSEL_ITER_GET_SEQ_LIST_F
+H5S_mp_H5SSEL_ITER_CLOSE_F
+H5S_mp_H5SSEL_ITER_RESET_F
; H5T
H5T_mp_H5TOPEN_F
H5T_mp_H5TCOMMIT_F