summaryrefslogtreecommitdiffstats
path: root/fortran/src
diff options
context:
space:
mode:
authorElena Pourmal <epourmal@hdfgroup.org>2001-03-02 21:31:56 (GMT)
committerElena Pourmal <epourmal@hdfgroup.org>2001-03-02 21:31:56 (GMT)
commitd53b78c03ba92862f4aaf0e5454bfdaaa84ea243 (patch)
treeb15234d89d5bbadb835102aa79cc206c341a65d2 /fortran/src
parent42e15a3d6af05b67c07de7dcd579db39504fffa7 (diff)
downloadhdf5-d53b78c03ba92862f4aaf0e5454bfdaaa84ea243.zip
hdf5-d53b78c03ba92862f4aaf0e5454bfdaaa84ea243.tar.gz
hdf5-d53b78c03ba92862f4aaf0e5454bfdaaa84ea243.tar.bz2
[svn-r3542]
Purpose: Windows port and maintenance Description: Windows Fortran requires interface blocks for each C function called from F90 stub. I also added comment blocks for each F90 API and fixed several typos. Solution: Added interface blocks. Platforms tested: Linux (eirene) to test that things are not broken on UNIX.
Diffstat (limited to 'fortran/src')
-rw-r--r--fortran/src/H5Fff.f90446
1 files changed, 420 insertions, 26 deletions
diff --git a/fortran/src/H5Fff.f90 b/fortran/src/H5Fff.f90
index 077f4f6..afea23f 100644
--- a/fortran/src/H5Fff.f90
+++ b/fortran/src/H5Fff.f90
@@ -6,6 +6,34 @@
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)
@@ -23,7 +51,24 @@
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
+ !MS$ATTRIBUTES C,reference,alias:'_H5FCREATE_C':: h5fcreate_c
+ !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,7 +80,37 @@
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)
IMPLICIT NONE
@@ -57,52 +132,172 @@
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
+ !MS$ATTRIBUTES C,reference,alias:'_H5FFLUSH_C':: h5fflush_c
+ 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)
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
+ !MS$ATTRIBUTES C,reference,alias:'_H5FMOUNT_C':: h5fmount_c
+ !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)
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
+
+! INTEGER, EXTERNAL :: h5fumount_c
+! Interface is needed for MS FORTRAN
+!
+ INTERFACE
+ INTEGER FUNCTION h5funmount_c(loc_id, name, namelen)
+ USE H5GLOBAL
+ !MS$ATTRIBUTES C,reference,alias:'_H5FUNMOUNT_C':: h5funmount_c
+ !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(dsetname)
- hdferr = h5funmount_c(loc_id, dsetname, namelen)
+ 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)
@@ -116,7 +311,23 @@
! 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
+ !MS$ATTRIBUTES C,reference,alias:'_H5FOPEN_C':: h5fopen_c
+ !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,6 +336,32 @@
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)
@@ -132,12 +369,49 @@
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
+ !MS$ATTRIBUTES C,reference,alias:'_H5FREOPEN_C':: h5freopen_c
+ 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)
IMPLICIT NONE
@@ -145,11 +419,48 @@
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
+!MS$ATTRIBUTES C,reference,alias:'_H5FGET_CREATE_PLIST_C':: h5fget_create_plist_c
+ 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)
@@ -158,13 +469,49 @@
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
+!MS$ATTRIBUTES C,reference,alias:'_H5FGET_CREATE_PLIST_C':: h5fget_access_plist_c
+ 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)
IMPLICIT NONE
@@ -175,7 +522,20 @@
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
+ !MS$ATTRIBUTES C,reference,alias:'_H5FIS_HDF5_C':: h5fis_hdf5_c
+ !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 +544,46 @@
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)
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
+ !MS$ATTRIBUTES C,reference,alias:'_H5FCLOSE_C':: h5fclose_c
+ INTEGER(HID_T), INTENT(IN) :: file_id
+ END FUNCTION h5fclose_c
+ END INTERFACE
hdferr = h5fclose_c(file_id)