From 0cb43aefd9fd58dbe2ae9b72dda305e0c10496ab Mon Sep 17 00:00:00 2001 From: Elena Pourmal Date: Thu, 1 Mar 2001 09:27:57 -0500 Subject: [svn-r3531] Purpose: Windows port and maintenance Description: Windows Fortran requires interface bocks for each C function called from F90 stub. I also added comment blocks for each F90 API. Solution: Added interface blocks. Platforms tested: Linux (eirene) to test that things are still working on UNIX. --- fortran/src/H5ff.f90 | 117 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 113 insertions(+), 4 deletions(-) diff --git a/fortran/src/H5ff.f90 b/fortran/src/H5ff.f90 index 234c012..0a17099 100644 --- a/fortran/src/H5ff.f90 +++ b/fortran/src/H5ff.f90 @@ -1,12 +1,79 @@ + +!---------------------------------------------------------------------- +! Name: h5open_f +! +! Purpose: Initializes the HDF5 library and Fortran90 interface. +! +! Inputs: +! Outputs: +! error: - 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 h5open_f(error) USE H5GLOBAL IMPLICIT NONE INTEGER, INTENT(OUT) :: error INTEGER :: error_0, error_1, error_2 - INTEGER, EXTERNAL :: h5init_types_c - INTEGER, EXTERNAL :: h5init_flags_c - INTEGER, EXTERNAL :: h5open_c +! INTEGER, EXTERNAL :: h5init_types_c +! INTEGER, EXTERNAL :: h5init_flags_c +! INTEGER, EXTERNAL :: h5open_c + +! +! MS FORTRAN needs explicit interfaces for C functions called here. +! + INTERFACE + INTEGER FUNCTION h5open_c() + !MS$ATTRIBUTES C,reference,alias:'_H5OPEN_C'::h5dopen_c + END FUNCTION h5open_c + END INTERFACE + INTERFACE + INTEGER FUNCTION h5init_types_c(predef_types, floating_types, integer_types) + USE H5GLOBAL + INTEGER(HID_T), DIMENSION(PREDEF_TYPES_LEN) :: predef_types + INTEGER(HID_T), DIMENSION(FLOATING_TYPES_LEN) :: floating_types + INTEGER(HID_T), DIMENSION(INTEGER_TYPES_LEN) :: integer_types + !MS$ATTRIBUTES C,reference,alias:'_H5INIT_TYPES_C'::h5init_types_c + END FUNCTION h5init_types_c + END INTERFACE + INTERFACE + INTEGER FUNCTION h5init_flags_c(H5D_flags, & + H5E_flags, & + H5F_flags, & + H5FD_flags, & + H5G_flags, & + H5I_flags, & + H5P_flags, & + H5R_flags, & + H5S_flags, & + H5T_flags ) + USE H5GLOBAL + INTEGER H5F_flags(H5F_FLAGS_LEN) + INTEGER H5G_flags(H5G_FLAGS_LEN) + INTEGER H5D_flags(H5D_FLAGS_LEN) + INTEGER H5FD_flags(H5FD_FLAGS_LEN) + INTEGER H5E_flags(H5E_FLAGS_LEN) + INTEGER H5I_flags(H5I_FLAGS_LEN) + INTEGER H5P_flags(H5P_FLAGS_LEN) + INTEGER H5R_flags(H5R_FLAGS_LEN) + INTEGER H5S_flags(H5S_FLAGS_LEN) + INTEGER H5T_flags(H5T_FLAGS_LEN) + + !MS$ATTRIBUTES C,reference,alias:'_H5INIT_FLAGS_C'::h5init_flags_c + END FUNCTION h5init_flags_c + END INTERFACE error_0 = h5open_c() error_1 = h5init_types_c(predef_types, floating_types, integer_types) error_2 = h5init_flags_c(H5D_flags, & @@ -23,13 +90,55 @@ END SUBROUTINE h5open_f +!---------------------------------------------------------------------- +! Name: h5close_f +! +! Purpose: Closes the HDF5 library and Fortran90 interface. +! +! Inputs: +! Outputs: +! error: - 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 h5close_f(error) USE H5GLOBAL IMPLICIT NONE INTEGER :: error_1, error_2 INTEGER, INTENT(OUT) :: error - INTEGER, EXTERNAL :: h5close_types_c, h5close_c +! INTEGER, EXTERNAL :: h5close_types_c, h5close_c + INTERFACE + INTEGER FUNCTION h5close_c() + !MS$ATTRIBUTES C,reference,alias:'_H5CLOSE_C'::h5close_c + END FUNCTION h5close_c + END INTERFACE + INTERFACE + INTEGER FUNCTION h5close_types_c(predef_types, PREDEF_TYPES_LEN, & + floating_types, FLOATING_TYPES_LEN, & + integer_types, INTEGER_TYPES_LEN ) + USE H5GLOBAL + INTEGER PREDEF_TYPES_LEN + INTEGER FLOATING_TYPES_LEN + INTEGER INTEGER_TYPES_LEN + INTEGER(HID_T), DIMENSION(PREDEF_TYPES_LEN) :: predef_types + INTEGER(HID_T), DIMENSION(FLOATING_TYPES_LEN) :: floating_types + INTEGER(HID_T), DIMENSION(INTEGER_TYPES_LEN) :: integer_types + !MS$ATTRIBUTES C,reference,alias:'_H5CLOSE_TYPES_C'::h5close_types_c + END FUNCTION h5close_types_c + END INTERFACE error_1 = h5close_types_c(predef_types, PREDEF_TYPES_LEN, & floating_types, FLOATING_TYPES_LEN, & integer_types, INTEGER_TYPES_LEN ) -- cgit v0.12