summaryrefslogtreecommitdiffstats
path: root/fortran
diff options
context:
space:
mode:
authorElena Pourmal <epourmal@hdfgroup.org>2001-03-01 14:27:57 (GMT)
committerElena Pourmal <epourmal@hdfgroup.org>2001-03-01 14:27:57 (GMT)
commit0cb43aefd9fd58dbe2ae9b72dda305e0c10496ab (patch)
treed155598f879e18d612dec24068e30a71720ef4a8 /fortran
parente18749d7ac9e79e312d8116a723913f2fe6e841a (diff)
downloadhdf5-0cb43aefd9fd58dbe2ae9b72dda305e0c10496ab.zip
hdf5-0cb43aefd9fd58dbe2ae9b72dda305e0c10496ab.tar.gz
hdf5-0cb43aefd9fd58dbe2ae9b72dda305e0c10496ab.tar.bz2
[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.
Diffstat (limited to 'fortran')
-rw-r--r--fortran/src/H5ff.f90117
1 files 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 )