diff options
author | Elena Pourmal <epourmal@hdfgroup.org> | 2003-04-02 21:42:41 (GMT) |
---|---|---|
committer | Elena Pourmal <epourmal@hdfgroup.org> | 2003-04-02 21:42:41 (GMT) |
commit | cd1b5623f0b092960542d38751b6f3453d18e7e7 (patch) | |
tree | 92f25216f3a49716394d37f877634422deefb74c /fortran/src/H5Pff.f90 | |
parent | 6e9724c46c38649b2ddc95a878e872a3c3eb5972 (diff) | |
download | hdf5-cd1b5623f0b092960542d38751b6f3453d18e7e7.zip hdf5-cd1b5623f0b092960542d38751b6f3453d18e7e7.tar.gz hdf5-cd1b5623f0b092960542d38751b6f3453d18e7e7.tar.bz2 |
[svn-r6573]
Purpose: Maintenance
Description: New fortran APIs h5pset_fapl_multi and h5pget_fapl_multi have been
added
Solution:
Platforms tested: burrwhite with PGI compilers, arabica and modi4 with
--enable-parallel
Misc. update:
Diffstat (limited to 'fortran/src/H5Pff.f90')
-rw-r--r-- | fortran/src/H5Pff.f90 | 272 |
1 files changed, 272 insertions, 0 deletions
diff --git a/fortran/src/H5Pff.f90 b/fortran/src/H5Pff.f90 index 528c462..23d59f0 100644 --- a/fortran/src/H5Pff.f90 +++ b/fortran/src/H5Pff.f90 @@ -58,6 +58,12 @@ ! End comment if on T3E MODULE PROCEDURE h5pinsert_char END INTERFACE + + INTERFACE h5pset_fapl_multi_f + MODULE PROCEDURE h5pset_fapl_multi_l + MODULE PROCEDURE h5pset_fapl_multi_s + END INTERFACE + CONTAINS @@ -5893,4 +5899,270 @@ END SUBROUTINE h5pset_fletcher32_f +!---------------------------------------------------------------------- +! Name: h5pset_family_offset_f +! +! Purpose: Sets offset for family file driver. +! +! Inputs: +! prp_id - file creation property list identifier +! offset - file offset +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! 19 March 2003 +! +! Modifications: +! +! Comment: +!---------------------------------------------------------------------- + + + SUBROUTINE h5pset_family_offset_f(prp_id, offset, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_family_offset_f +!DEC$endif +! + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier + INTEGER(HSIZE_T), INTENT(IN) :: offset ! Offset in bytes + INTEGER, INTENT(OUT) :: hdferr ! Error code + +! INTEGER, EXTERNAL :: h5pset_family_offset_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_family_offset_c(prp_id, offset) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FAMILY_OFFSET_C'::h5pset_family_offset_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER(HSIZE_T), INTENT(IN) :: offset + END FUNCTION h5pset_family_offset_c + END INTERFACE + hdferr = h5pset_family_offset_c(prp_id, offset) + + END SUBROUTINE h5pset_family_offset_f + +!---------------------------------------------------------------------- +! Name: h5pset_fapl_multi_l +! +! Purpose: Sets up use of the multi-file driver. +! +! Inputs: +! prp_id - file creation property list identifier +! mem_map - mapping array +! memb_fapl - property list for each memory usage type +! memb_name - names of member file +! relax - flag +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! 20 March 2003 +! +! Modifications: +! +! Comment: +!---------------------------------------------------------------------- + + + SUBROUTINE h5pset_fapl_multi_l(prp_id, memb_map, memb_fapl, memb_name, memb_addr, relax, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_fapl_multi_l +!DEC$endif +! + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier + INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_map + INTEGER(HID_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_fapl + CHARACTER(LEN=*), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_name + !INTEGER(HADDR_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_addr + REAL, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_addr + LOGICAL, INTENT(IN) :: relax + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1) :: lenm + INTEGER :: maxlen + INTEGER :: flag + INTEGER :: i + +! INTEGER, EXTERNAL :: h5pset_fapl_multi_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_fapl_multi_c(prp_id, memb_map, memb_fapl, memb_name, lenm, & + maxlen, memb_addr, flag) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FAPL_MULTI_C'::h5pset_fapl_multi_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier + INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_map + INTEGER(HID_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_fapl + CHARACTER(LEN=*), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_name + REAL, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_addr + !INTEGER(HADDR_T), DIMENSION(H5FD_MEM_NTYPES_F), INTENT(IN) :: memb_addr + INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1) :: lenm + INTEGER :: maxlen + INTEGER, INTENT(IN) :: flag + END FUNCTION h5pset_fapl_multi_c + END INTERFACE + maxlen = LEN(memb_name(1)) + do i=0, H5FD_MEM_NTYPES_F-1 + lenm(i) = LEN_TRIM(memb_name(i)) + enddo + flag = 0 + if (relax) flag = 1 + hdferr = h5pset_fapl_multi_c(prp_id, memb_map, memb_fapl, memb_name, lenm, maxlen, memb_addr, flag) + + END SUBROUTINE h5pset_fapl_multi_l +!---------------------------------------------------------------------- +! Name: h5pset_fapl_multi_s +! +! Purpose: Sets up use of the multi-file driver. +! +! Inputs: +! prp_id - file creation property list identifier +! relax - flag +! Outputs: +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! NONE +! +! Programmer: Elena Pourmal +! 31 March 2003 +! +! Modifications: +! +! Comment: +!---------------------------------------------------------------------- + + + SUBROUTINE h5pset_fapl_multi_s(prp_id, relax, hdferr) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pset_fapl_multi_s +!DEC$endif +! + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier + LOGICAL, INTENT(IN) :: relax + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER :: flag + +! INTEGER, EXTERNAL :: h5pset_fapl_multi_sc +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pset_fapl_multi_sc(prp_id,flag) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PSET_FAPL_MULTI_SC'::h5pset_fapl_multi_sc + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier + INTEGER, INTENT(IN) :: flag + END FUNCTION h5pset_fapl_multi_sc + END INTERFACE + flag = 0 + if (relax) flag = 1 + hdferr = h5pset_fapl_multi_sc(prp_id, flag) + + END SUBROUTINE h5pset_fapl_multi_s +!---------------------------------------------------------------------- +! Name: h5pget_fapl_multi_f +! +! Purpose: Sets up use of the multi-file driver. +! +! Inputs: +! prp_id - file creation property list identifier +! Outputs: +! mem_map - mapping array +! memb_fapl - property list for each memory usage type +! memb_name - names of member file +! relax - flag +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Optional parameters: +! maxlen_out - maximum length for memb_name array element +! +! Programmer: Elena Pourmal +! 24 March 2003 +! +! Modifications: +! +! Comment: +!---------------------------------------------------------------------- + + + SUBROUTINE h5pget_fapl_multi_f(prp_id, memb_map, memb_fapl, memb_name, memb_addr, relax, hdferr, maxlen_out) +! +!This definition is needed for Windows DLLs +!DEC$if defined(BUILD_HDF5_DLL) +!DEC$attributes dllexport :: h5pget_fapl_multi_f +!DEC$endif +! + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier + INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_map + INTEGER(HID_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_fapl + CHARACTER(LEN=*), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_name + !INTEGER(HADDR_T), DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_addr + REAL, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_addr + INTEGER, OPTIONAL, INTENT(OUT) :: maxlen_out + LOGICAL, INTENT(OUT) :: relax + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1) :: lenm + INTEGER :: maxlen + INTEGER :: c_maxlen_out + INTEGER :: flag + INTEGER :: i + +! INTEGER, EXTERNAL :: h5pget_fapl_multi_c +! MS FORTRAN needs explicit interface for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5pget_fapl_multi_c(prp_id, memb_map, memb_fapl, memb_name, lenm, & + maxlen, memb_addr, flag, c_maxlen_out) + USE H5GLOBAL + !DEC$ IF DEFINED(HDF5F90_WINDOWS) + !MS$ATTRIBUTES C,reference,alias:'_H5PGET_FAPL_MULTI_C'::h5pget_fapl_multi_c + !DEC$ ENDIF + INTEGER(HID_T), INTENT(IN) :: prp_id ! File creation property list identifier + INTEGER, DIMENSION(H5FD_MEM_NTYPES_F), INTENT(OUT) :: memb_map + INTEGER(HID_T), DIMENSION(H5FD_MEM_NTYPES_F), INTENT(OUT) :: memb_fapl + CHARACTER(LEN=*), DIMENSION(H5FD_MEM_NTYPES_F), INTENT(OUT) :: memb_name + REAL, DIMENSION(H5FD_MEM_NTYPES_F), INTENT(OUT) :: memb_addr + INTEGER, DIMENSION(0:H5FD_MEM_NTYPES_F-1) :: lenm + INTEGER :: maxlen + INTEGER :: c_maxlen_out + INTEGER, INTENT(IN) :: flag + END FUNCTION h5pget_fapl_multi_c + END INTERFACE + maxlen = LEN(memb_name(0)) + do i=0, H5FD_MEM_NTYPES_F-1 + lenm(i) = LEN_TRIM(memb_name(i)) + enddo + hdferr = h5pget_fapl_multi_c(prp_id, memb_map, memb_fapl, memb_name, lenm, maxlen, memb_addr, flag, c_maxlen_out) + relax = .TRUE. + if(flag .eq. 0) relax = .FALSE. + if(present(maxlen_out)) maxlen_out = c_maxlen_out + END SUBROUTINE h5pget_fapl_multi_f END MODULE H5P |