summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMohamad Chaarawi <chaarawi@hdfgroup.org>2016-03-28 18:20:58 (GMT)
committerMohamad Chaarawi <chaarawi@hdfgroup.org>2016-03-28 18:20:58 (GMT)
commit45b57227d47476490cd720dc65e9c2fbfc94cd9f (patch)
tree1052fa20213abff0877ffce630be817052c3c7fb
parentea0f5d813bb26ec536f468d47f79bf93fb5a9401 (diff)
downloadhdf5-45b57227d47476490cd720dc65e9c2fbfc94cd9f.zip
hdf5-45b57227d47476490cd720dc65e9c2fbfc94cd9f.tar.gz
hdf5-45b57227d47476490cd720dc65e9c2fbfc94cd9f.tar.bz2
[svn-r29584] resolve some old merge conflicts.
-rw-r--r--fortran/src/H5Fff.F9026
-rw-r--r--fortran/src/H5Fff.f90843
-rw-r--r--fortran/test/tH5F.F9015
-rw-r--r--fortran/test/tH5F.f90782
4 files changed, 12 insertions, 1654 deletions
diff --git a/fortran/src/H5Fff.F90 b/fortran/src/H5Fff.F90
index f342ad2..165fba0 100644
--- a/fortran/src/H5Fff.F90
+++ b/fortran/src/H5Fff.F90
@@ -4,7 +4,7 @@
! MODULE H5F
!
! FILE
-! H5Fff.f90
+! H5Fff.F90
!
! PURPOSE
! This file contains Fortran interfaces for H5F functions.
@@ -485,10 +485,10 @@ CONTAINS
END SUBROUTINE h5fget_access_plist_f
-!****s* H5F/h5fis_accessible_f
+!****s* H5F/h5fis_hdf5_f
!
! NAME
-! h5fis_accessible_f
+! h5fis_hdf5_f
!
! PURPOSE
! Determines whether a file is in the HDF5 format.
@@ -498,8 +498,6 @@ CONTAINS
! OUTPUTS
! status - indicates if file is and HDF5 file
! hdferr - Returns 0 if successful and -1 if fails
-! OPTIONAL PARAMETERS
-! access_prp - file access property list identifier
! AUTHOR
! Elena Pourmal
! August 12, 1999
@@ -510,41 +508,33 @@ CONTAINS
! port). February 28, 2001
!
! SOURCE
- SUBROUTINE h5fis_accessible_f(name, status, hdferr, access_prp)
+ SUBROUTINE h5fis_hdf5_f(name, status, hdferr)
IMPLICIT NONE
CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file
LOGICAL, INTENT(OUT) :: status ! Indicates if file
! is an HDF5 file
INTEGER, INTENT(OUT) :: hdferr ! Error code
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp
- ! File access property list
- ! identifier
!*****
INTEGER :: namelen ! Length of the name character string
- INTEGER(HID_T) :: access_prp_default
INTEGER :: flag ! "TRUE/FALSE" flag from C routine
! to define status value.
INTERFACE
- INTEGER FUNCTION h5fis_accessible_c(name, namelen, access_prp_default, flag) BIND(C,NAME='h5fis_accessible_c')
+ INTEGER FUNCTION h5fis_hdf5_c(name, namelen, flag) BIND(C,NAME='h5fis_hdf5_c')
IMPORT :: C_CHAR
- IMPORT :: HID_T
IMPLICIT NONE
CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: name
INTEGER :: namelen
- INTEGER(HID_T), INTENT(IN) :: access_prp_default
INTEGER :: flag
- END FUNCTION h5fis_accessible_c
+ END FUNCTION h5fis_hdf5_c
END INTERFACE
namelen = LEN_TRIM(name)
- access_prp_default = H5P_DEFAULT_F
- IF (PRESENT(access_prp)) access_prp_default = access_prp
- hdferr = h5fis_accessible_c(name, namelen, access_prp_default, flag)
+ hdferr = h5fis_hdf5_c(name, namelen, flag)
status = .TRUE.
IF (flag .EQ. 0) status = .FALSE.
- END SUBROUTINE h5fis_accessible_f
+ END SUBROUTINE h5fis_hdf5_f
!****s* H5F/h5fclose_f
!
! NAME
diff --git a/fortran/src/H5Fff.f90 b/fortran/src/H5Fff.f90
deleted file mode 100644
index c3af8c4..0000000
--- a/fortran/src/H5Fff.f90
+++ /dev/null
@@ -1,843 +0,0 @@
-!****h* ROBODoc/H5F
-!
-! NAME
-! MODULE H5F
-!
-! FILE
-! H5Fff.f90
-!
-! PURPOSE
-! This file contains Fortran interfaces for H5F functions.
-!
-! COPYRIGHT
-! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-! Copyright by The HDF Group. *
-! Copyright by the Board of Trustees of the University of Illinois. *
-! All rights reserved. *
-! *
-! This file is part of HDF5. The full HDF5 copyright notice, including *
-! terms governing use, modification, and redistribution, is contained in *
-! the files COPYING and Copyright.html. COPYING can be found at the root *
-! of the source code distribution tree; Copyright.html can be found at the *
-! root level of an installed copy of the electronic HDF5 document set and *
-! is linked from the top-level documents page. It can also be found at *
-! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
-! access to either file, you may request a copy from help@hdfgroup.org. *
-! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-!
-! NOTES
-! *** IMPORTANT ***
-! If you add a new H5F function you must add the function name to the
-! Windows dll file 'hdf5_fortrandll.def.in' in the fortran/src directory.
-! This is needed for Windows based operating systems.
-!
-!*****
-
-MODULE H5F
- USE H5GLOBAL
-
-CONTAINS
-!****s* H5F/h5fcreate_f
-!
-! 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 - Returns 0 if successful and -1 if fails
-!
-! OPTIONAL PARAMETERS
-! creation_prp - file creation property list identifier
-! access_prp - file access property list identifier
-!
-! AUTHOR
-! Elena Pourmal
-! August 12, 1999
-!
-! HISTORY
-! Explicit Fortran interfaces were added for
-! called C functions (it is needed for Windows
-! port). February 28, 2001
-!
-! SOURCE
- SUBROUTINE h5fcreate_f(name, access_flags, file_id, hdferr, &
- creation_prp, access_prp)
- IMPLICIT NONE
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file
- INTEGER, INTENT(IN) :: access_flags ! File access flags
- INTEGER(HID_T), INTENT(OUT) :: file_id ! File identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: creation_prp
- ! File creation propertly
- ! list identifier
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp
- ! File access property list
- ! identifier
-!*****
- INTEGER(HID_T) :: creation_prp_default
- INTEGER(HID_T) :: access_prp_default
- INTEGER :: namelen ! Length of the name character string
-
- INTERFACE
- INTEGER FUNCTION h5fcreate_c(name, namelen, access_flags, &
- creation_prp_default, access_prp_default, file_id)
- USE H5GLOBAL
- !DEC$IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FCREATE_C':: h5fcreate_c
- !DEC$ENDIF
- !DEC$ATTRIBUTES reference :: name
- CHARACTER(LEN=*), INTENT(IN) :: name
- INTEGER, INTENT(IN) :: access_flags
- INTEGER(HID_T), INTENT(OUT) :: file_id
- INTEGER(HID_T), INTENT(IN) :: creation_prp_default
- INTEGER(HID_T), 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
-
- IF (PRESENT(creation_prp)) creation_prp_default = creation_prp
- IF (PRESENT(access_prp)) access_prp_default = access_prp
- namelen = LEN_TRIM(name)
- hdferr = h5fcreate_c(name, namelen, access_flags, &
- creation_prp_default, access_prp_default, file_id)
-
- END SUBROUTINE h5fcreate_f
-!****s* H5F/h5fflush_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
-! hdferr - Returns 0 if successful and -1 if fails
-!
-! OPTIONAL PARAMETERS
-! creation_prp - file creation property list identifier
-! access_prp - file access property list identifier
-!
-! AUTHOR
-! Elena Pourmal
-! August 12, 1999
-!
-! HISTORY
-! Explicit Fortran interfaces were added for
-! called C functions (it is needed for Windows
-! port). February 28, 2001
-!
-! SOURCE
- SUBROUTINE h5fflush_f(object_id, scope, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: object_id !identifier for any object
- !associate with a file,
- !including the file itself,
- !a dataset, a group, an
- !attribute, or a named
- !data type
-
- INTEGER, INTENT(IN) :: scope !scope of the flushing
- !action, possible values
- !are: H5F_SCOPE_GLOBAL_F
- ! which flushes the entire
- !virtual file,
- !and H5F_SCOPE_LOCAL_F
- !which flushes only the
- !specified file.
-
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-!*****
- INTERFACE
- INTEGER FUNCTION h5fflush_c(object_id, scope)
- USE H5GLOBAL
- !DEC$IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FFLUSH_C':: h5fflush_c
- !DEC$ENDIF
- 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
-!****s* H5F/h5fmount_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 - Returns 0 if successful and -1 if fails
-! OPTIONAL PARAMETERS
-! access_prp - the identifier of the property list to be used
-!
-! AUTHOR
-! Elena Pourmal
-! August 12, 1999
-!
-! HISTORY
-! Explicit Fortran interfaces were added for
-! called C functions (it is needed for Windows
-! port). February 28, 2001
-!
-! SOURCE
- 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) :: 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(HID_T) :: access_prp_default
- INTEGER :: namelen ! Length of the name character string
-
- INTERFACE
- INTEGER FUNCTION h5fmount_c(loc_id, name, namelen, &
- child_id, access_prp_default)
- USE H5GLOBAL
- !DEC$IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FMOUNT_C':: h5fmount_c
- !DEC$ENDIF
- !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_TRIM(name)
- hdferr = h5fmount_c(loc_id, name, namelen, child_id, access_prp_default)
-
- END SUBROUTINE h5fmount_f
-
-!****s* H5F/h5funmount_f
-!
-! 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 - Returns 0 if successful and -1 if fails
-! AUTHOR
-! Elena Pourmal
-! August 12, 1999
-!
-! HISTORY
-! Explicit Fortran interfaces were added for
-! called C functions (it is needed for Windows
-! port). February 28, 2001
-!
-! SOURCE
- SUBROUTINE h5funmount_f(loc_id, name, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! Identifier for file or group
- ! 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 name character string
-
- INTERFACE
- INTEGER FUNCTION h5funmount_c(loc_id, name, namelen)
- USE H5GLOBAL
- !DEC$IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FUNMOUNT_C':: h5funmount_c
- !DEC$ENDIF
- !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_TRIM(name)
- hdferr = h5funmount_c(loc_id, name, namelen)
-
- END SUBROUTINE h5funmount_f
-!****s* H5F/h5fopen_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 - Returns 0 if successful and -1 if fails
-! OPTIONAL PARAMETERS
-! access_prp - file access property list identifier
-!
-! AUTHOR
-! Elena Pourmal
-! August 12, 1999
-!
-! HISTORY
-! Explicit Fortran interfaces were added for
-! called C functions (it is needed for Windows
-! port). February 28, 2001
-!
-! SOURCE
- SUBROUTINE h5fopen_f(name, access_flags, file_id, hdferr, access_prp)
- IMPLICIT NONE
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file
- INTEGER, INTENT(IN) :: access_flags ! File access flags
- INTEGER(HID_T), INTENT(OUT) :: file_id ! File identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp
- ! File access property list
- ! identifier
-!*****
- INTEGER(HID_T) :: access_prp_default
- INTEGER :: namelen ! Length of the name character string
-
- INTERFACE
- INTEGER FUNCTION h5fopen_c(name, namelen, access_flags, &
- access_prp_default, file_id)
- USE H5GLOBAL
- !DEC$IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FOPEN_C':: h5fopen_c
- !DEC$ENDIF
- !DEC$ATTRIBUTES reference :: name
- CHARACTER(LEN=*), INTENT(IN) :: name
- INTEGER :: namelen
- INTEGER, INTENT(IN) :: access_flags
- INTEGER(HID_T), 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
- namelen = LEN_TRIM(name)
- hdferr = h5fopen_c(name, namelen, access_flags, &
- access_prp_default, file_id)
- END SUBROUTINE h5fopen_f
-!****s* H5F/h5freopen_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 - Returns 0 if successful and -1 if fails
-! AUTHOR
-! Elena Pourmal
-! August 12, 1999
-!
-! HISTORY
-! Explicit Fortran interfaces were added for
-! called C functions (it is needed for Windows
-! port). February 28, 2001
-!
-! SOURCE
- SUBROUTINE h5freopen_f(file_id, ret_file_id, hdferr)
- IMPLICIT NONE
- 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
-!*****
- INTERFACE
- INTEGER FUNCTION h5freopen_c(file_id, ret_file_id)
- USE H5GLOBAL
- !DEC$IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FREOPEN_C':: h5freopen_c
- !DEC$ENDIF
- 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
-!****s* H5F/h5fget_create_plist_f
-!
-! NAME
-! h5fget_create_plist_f
-!
-! PURPOSE
-! Returns a file creation property list identifier.
-!
-! INPUTS
-! file_id - identifier of a file to creation property list of
-! OUTPUTS
-! prop_id - creation property list identifier
-! hdferr - Returns 0 if successful and -1 if fails
-!
-! AUTHOR
-! Elena Pourmal
-! August 12, 1999
-!
-! HISTORY
-! Explicit Fortran interfaces were added for
-! called C functions (it is needed for Windows
-! port). February 28, 2001
-!
-! SOURCE
- SUBROUTINE h5fget_create_plist_f(file_id, prop_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
- INTEGER(HID_T), INTENT(OUT) :: prop_id ! File creation property
- ! list identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-!*****
- INTERFACE
- INTEGER FUNCTION h5fget_create_plist_c(file_id, prop_id)
- USE H5GLOBAL
- !DEC$IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_CREATE_PLIST_C':: h5fget_create_plist_c
- !DEC$ENDIF
- 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
-!****s* H5F/h5fget_access_plist_f
-!
-! NAME
-! h5fget_access_plist_f
-!
-! PURPOSE
-! Returns a file access property list identifier.
-!
-! INPUTS
-! file_id - identifier of a file to creation property list of
-! OUTPUTS
-! access_id - access property list identifier
-! hdferr - Returns 0 if successful and -1 if fails
-! AUTHOR
-! Elena Pourmal
-! August 12, 1999
-!
-! HISTORY
-! Explicit Fortran interfaces were added for
-! called C functions (it is needed for Windows
-! port). February 28, 2001
-!
-! SOURCE
- SUBROUTINE h5fget_access_plist_f(file_id, access_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
- INTEGER(HID_T), INTENT(OUT) :: access_id ! File access property
- ! list identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-!*****
- INTERFACE
- INTEGER FUNCTION h5fget_access_plist_c(file_id, access_id)
- USE H5GLOBAL
- !DEC$IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_CREATE_PLIST_C':: h5fget_access_plist_c
- !DEC$ENDIF
- 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
-
-!****s* H5F/h5fis_accessible_f
-!
-! NAME
-! h5fis_accessible_f
-!
-! PURPOSE
-! Determines whether a file is accessible with the fapl.
-!
-! INPUTS
-! name - name of the file to check
-! OUTPUTS
-! status - indicates if file is accessible
-! hdferr - Returns 0 if successful and -1 if fails
-! OPTIONAL PARAMETERS
-! access_prp - file access property list identifier
-! AUTHOR
-! Elena Pourmal
-! August 12, 1999
-!
-! HISTORY
-! Explicit Fortran interfaces were added for
-! called C functions (it is needed for Windows
-! port). February 28, 2001
-!
-! SOURCE
- SUBROUTINE h5fis_accessible_f(name, status, hdferr, access_prp)
- IMPLICIT NONE
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file
- LOGICAL, INTENT(OUT) :: status ! Indicates if file
- ! is an HDF5 file
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp
- ! File access property list
- ! identifier
-!*****
- INTEGER :: namelen ! Length of the name character string
- INTEGER(HID_T) :: access_prp_default
- INTEGER :: flag ! "TRUE/FALSE" flag from C routine
- ! to define status value.
-
- INTERFACE
- INTEGER FUNCTION h5fis_accessible_c(name, namelen, access_prp_default, flag)
- USE H5GLOBAL
- !DEC$IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FIS_ACCESSIBLE_C':: h5fis_accessible_c
- !DEC$ENDIF
- !DEC$ATTRIBUTES reference :: name
- CHARACTER(LEN=*), INTENT(IN) :: name
- INTEGER :: namelen
- INTEGER(HID_T), INTENT(IN) :: access_prp_default
- INTEGER :: flag
- END FUNCTION h5fis_accessible_c
- END INTERFACE
-
- namelen = LEN_TRIM(name)
- access_prp_default = H5P_DEFAULT_F
- IF (PRESENT(access_prp)) access_prp_default = access_prp
- hdferr = h5fis_accessible_c(name, namelen, access_prp_default, flag)
- status = .TRUE.
- IF (flag .EQ. 0) status = .FALSE.
-
- END SUBROUTINE h5fis_accessible_f
-!****s* H5F/h5fclose_f
-!
-! NAME
-! h5fclose_f
-!
-! PURPOSE
-! Closes HDF5 file.
-!
-! INPUTS
-! file_id - file identifier
-! OUTPUTS
-! hdferr - Returns 0 if successful and -1 if fails
-! AUTHOR
-! Elena Pourmal
-! August 12, 1999
-!
-! HISTORY
-! Explicit Fortran interfaces were added for
-! called C functions (it is needed for Windows
-! port). February 28, 2001
-!
-! SOURCE
- SUBROUTINE h5fclose_f(file_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-!*****
- INTERFACE
- INTEGER FUNCTION h5fclose_c(file_id)
- USE H5GLOBAL
- !DEC$IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FCLOSE_C':: h5fclose_c
- !DEC$ENDIF
- INTEGER(HID_T), INTENT(IN) :: file_id
- END FUNCTION h5fclose_c
- END INTERFACE
-
- hdferr = h5fclose_c(file_id)
-
- END SUBROUTINE h5fclose_f
-
-!****s* H5F/h5fget_obj_count_f
-!
-! NAME
-! h5fget_obj_count_f
-!
-! PURPOSE
-! Gets number of the objects open within a file
-!
-! INPUTS
-! file_id - file identifier
-! obj_type - type of the object; possible values are:
-! H5F_OBJ_FILE_F
-! H5F_OBJ_DATASET_F
-! H5F_OBJ_GROUP_F
-! H5F_OBJ_DATATYPE_F
-! H5F_OBJ_ALL_F
-! OUTPUTS
-! obj_count - number of open objects
-! hdferr - Returns 0 if successful and -1 if fails
-! AUTHOR
-! Elena Pourmal
-! September 30, 2002
-!
-! HISTORY
-! Changed the type of obj_count to INTEGER(SIZE_T)
-! September 25, 2008 EIP
-!
-! SOURCE
- SUBROUTINE h5fget_obj_count_f(file_id, obj_type, obj_count, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
- INTEGER, INTENT(IN) :: obj_type ! Object type
- INTEGER(SIZE_T), INTENT(OUT) :: obj_count
- ! Number of open objects
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-!*****
- INTERFACE
- INTEGER FUNCTION h5fget_obj_count_c(file_id, obj_type, obj_count)
- USE H5GLOBAL
- !DEC$IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_OBJ_COUNT_C':: h5fget_obj_count_c
- !DEC$ENDIF
- INTEGER(HID_T), INTENT(IN) :: file_id
- INTEGER, INTENT(IN) :: obj_type ! Object type
- INTEGER(SIZE_T), INTENT(OUT) :: obj_count
- ! Number of open objects
- END FUNCTION h5fget_obj_count_c
- END INTERFACE
-
- hdferr = h5fget_obj_count_c(file_id, obj_type, obj_count)
-
- END SUBROUTINE h5fget_obj_count_f
-
-!****s* H5F/h5fget_obj_ids_f
-!
-! NAME
-! h5fget_obj_ids_f
-!
-! PURPOSE
-! Get list of open objects identifiers within a file
-!
-! INPUTS
-! file_id - file identifier
-! obj_type - type of the object; possible values are:
-! H5F_OBJ_FILE_F
-! H5F_OBJ_DATASET_F
-! H5F_OBJ_GROUP_F
-! H5F_OBJ_DATATYPE_F
-! H5F_OBJ_ALL_F
-! OUTPUTS
-! obj_ids - array of open object identifiers
-! hdferr - Returns 0 if successful and -1 if fails
-!
-! OPTIONAL PARAMETERS
-! num_objs - number of open objects
-!
-! AUTHOR
-! Elena Pourmal
-! September 30, 2002
-!
-! HISTORY
-! Added optional parameter num_objs for number of open objects
-! of the specified type and changed type of max_obj to
-! INTEGER(SIZE_T)
-! September 25, 2008 EIP
-!
-! SOURCE
- 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 ! File identifier
- INTEGER, INTENT(IN) :: obj_type ! Object type
- INTEGER(SIZE_T), INTENT(IN) :: max_objs ! Maximum # of objects to retrieve
- INTEGER(HID_T), DIMENSION(*), INTENT(INOUT) :: obj_ids
- ! Array of open objects iidentifiers
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- INTEGER(SIZE_T), INTENT(OUT), OPTIONAL :: num_objs ! number of open objects
-!*****
- 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)
- USE H5GLOBAL
- !DEC$IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_OBJ_IDS_C':: h5fget_obj_ids_c
- !DEC$ENDIF
- 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
- END INTERFACE
-
- hdferr = h5fget_obj_ids_c(file_id, obj_type, max_objs, obj_ids, c_num_objs)
- IF (PRESENT(num_objs)) num_objs= c_num_objs
-
- END SUBROUTINE h5fget_obj_ids_f
-!****s* H5F/h5fget_freespace_f
-!
-! NAME
-! h5fget_freespace_f
-!
-! PURPOSE
-! Get amount of free space within a file
-!
-! INPUTS
-! file_id - file identifier
-! OUTPUTS
-! free_space - amount of free space in file
-! hdferr - Returns 0 if successful and -1 if fails
-!
-! AUTHOR
-! Quincey Koziol
-! October 7, 2003
-!
-! SOURCE
- SUBROUTINE h5fget_freespace_f(file_id, free_space, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
- INTEGER(HSSIZE_T), INTENT(OUT) :: free_space
- ! amount of free space in file
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-!*****
- INTERFACE
- INTEGER FUNCTION h5fget_freespace_c(file_id, free_space)
- USE H5GLOBAL
- !DEC$IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_FREESPACE_C':: h5fget_freespace_c
- !DEC$ENDIF
- INTEGER(HID_T), INTENT(IN) :: file_id
- INTEGER(HSSIZE_T), INTENT(OUT) :: free_space
- END FUNCTION h5fget_freespace_c
- END INTERFACE
-
- hdferr = h5fget_freespace_c(file_id, free_space)
-
- END SUBROUTINE h5fget_freespace_f
-!****s* H5F/h5fget_name_f
-!
-! NAME
-! h5fget_name_f
-!
-! PURPOSE
-! Gets the name of the file from the object identifier
-!
-! INPUTS
-! obj_id - object identifier
-! OUTPUTS
-! buf - buffer to store the read name
-! size - actual size of the name
-! hdferr - Returns 0 if successful and -1 if fails
-! AUTHOR
-! Elena Pourmal
-! July 6, 2004
-!
-! SOURCE
- SUBROUTINE h5fget_name_f(obj_id, buf, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
- CHARACTER(LEN=*), INTENT(INOUT) :: buf
- ! Buffer to hold file name
- INTEGER(SIZE_T), INTENT(OUT) :: size ! Size of the file name
- INTEGER, INTENT(OUT) :: hdferr ! Error code: 0 on success,
- ! -1 if fail
-!*****
- INTEGER(SIZE_T) :: buflen
-
- INTERFACE
- INTEGER FUNCTION h5fget_name_c(obj_id, size, buf, buflen)
- USE H5GLOBAL
- !DEC$IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_NAME_C'::h5fget_name_c
- !DEC$ENDIF
- !DEC$ATTRIBUTES reference :: buf
- INTEGER(HID_T), INTENT(IN) :: obj_id
- INTEGER(SIZE_T), INTENT(OUT) :: size
- INTEGER(SIZE_T) :: buflen
- CHARACTER(LEN=*), INTENT(OUT) :: buf
- END FUNCTION h5fget_name_c
- END INTERFACE
- buflen = LEN_TRIM(buf)
- hdferr = h5fget_name_c(obj_id, size, buf, buflen)
- END SUBROUTINE h5fget_name_f
-!****s* H5F/h5fget_filesize_f
-!
-! NAME
-! h5fget_filesize_f
-!
-! PURPOSE
-! Retrieves the file size of the HDF5 file.
-!
-! INPUTS
-! file_id - file identifier
-! OUTPUTS
-! size - file size
-! hdferr - Returns 0 if successful and -1 if fails
-!
-! AUTHOR
-! Elena Pourmal
-! July 7, 2004
-!
-! SOURCE
- SUBROUTINE h5fget_filesize_f(file_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id ! file identifier
- INTEGER(HSIZE_T), INTENT(OUT) :: size ! Size of the file
- INTEGER, INTENT(OUT) :: hdferr ! Error code: 0 on success,
- ! -1 if fail
-!*****
- INTERFACE
- INTEGER FUNCTION h5fget_filesize_c(file_id, size)
- USE H5GLOBAL
- !DEC$IF DEFINED(HDF5F90_WINDOWS)
- !DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_FILESIZE_C'::h5fget_filesize_c
- !DEC$ENDIF
- INTEGER(HID_T), INTENT(IN) :: file_id
- INTEGER(HSIZE_T), INTENT(OUT) :: size
- END FUNCTION h5fget_filesize_c
- END INTERFACE
- hdferr = h5fget_filesize_c(file_id, size)
- END SUBROUTINE h5fget_filesize_f
-
-
-END MODULE H5F
diff --git a/fortran/test/tH5F.F90 b/fortran/test/tH5F.F90
index 1a7be10..020d2c8 100644
--- a/fortran/test/tH5F.F90
+++ b/fortran/test/tH5F.F90
@@ -194,15 +194,15 @@ CONTAINS
!
!test whether files are in hdf5 format
!
- CALL h5fis_accessible_f(fix_filename1, status, error)
- CALL check("h5fis_accessible_f",error,total_error)
+ CALL h5fis_hdf5_f(fix_filename1, status, error)
+ CALL check("h5fis_hdf5_f",error,total_error)
IF ( .NOT. status ) THEN
write(*,*) "File ", fix_filename1, " is not in hdf5 format"
stop
END IF
- CALL h5fis_accessible_f(fix_filename2, status, error)
- CALL check("h5fis_accessible_f",error,total_error)
+ CALL h5fis_hdf5_f(fix_filename2, status, error)
+ CALL check("h5fis_hdf5_f",error,total_error)
IF ( .NOT. status ) THEN
write(*,*) "File ", fix_filename2, " is not in hdf5 format"
stop
@@ -357,13 +357,6 @@ CONTAINS
end do
!
- !Initialize FORTRAN predifined datatypes
- !
-! CALL h5init_types_f(error)
-! CALL check("h5init_types_f",error,total_error)
-
-
- !
!Create file "reopen.h5" using default properties.
!
CALL h5_fixname_f(filename, fix_filename, H5P_DEFAULT_F, error)
diff --git a/fortran/test/tH5F.f90 b/fortran/test/tH5F.f90
deleted file mode 100644
index 1a7be10..0000000
--- a/fortran/test/tH5F.f90
+++ /dev/null
@@ -1,782 +0,0 @@
-!***rh* root/fortran/test/tH5F.f90
-!
-! NAME
-! tH5F.f90
-!
-! FUNCTION
-! Basic testing of Fortran H5F APIs.
-!
-! COPYRIGHT
-! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-! Copyright by The HDF Group. *
-! Copyright by the Board of Trustees of the University of Illinois. *
-! All rights reserved. *
-! *
-! This file is part of HDF5. The full HDF5 copyright notice, including *
-! terms governing use, modification, and redistribution, is contained in *
-! the files COPYING and Copyright.html. COPYING can be found at the root *
-! of the source code distribution tree; Copyright.html can be found at the *
-! root level of an installed copy of the electronic HDF5 document set and *
-! is linked from the top-level documents page. It can also be found at *
-! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
-! access to either file, you may request a copy from help@hdfgroup.org. *
-! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-!
-! CONTAINS SUBROUTINES
-! mountingtest, reopentest, plisttest, file_close, file_space
-!
-!*****
-!
-! In the mountingtest subroutine we create one file with a group in it,
-! and another file with a dataset. Mounting is used to
-! access the dataset from the second file as a member of a group
-! in the first file.
-
-
-
-MODULE TH5F
-
-CONTAINS
-
- SUBROUTINE mountingtest(cleanup, total_error)
- USE HDF5 ! This module contains all necessary modules
- USE TH5_MISC
- IMPLICIT NONE
- LOGICAL, INTENT(IN) :: cleanup
- INTEGER, INTENT(INOUT) :: total_error
-
- !
- !the respective filename is "mount1.h5" and "mount2.h5"
- !
- CHARACTER(LEN=6) :: filename1
- CHARACTER(LEN=6) :: filename2
- CHARACTER(LEN=80) :: fix_filename1
- CHARACTER(LEN=80) :: fix_filename2
-
- !
- !data space rank and dimensions
- !
- INTEGER, PARAMETER :: RANK = 2
- INTEGER, PARAMETER :: NX = 4
- INTEGER, PARAMETER :: NY = 5
-
- !
- ! File identifiers
- !
- INTEGER(HID_T) :: file1_id, file2_id
-
- !
- ! Group identifier
- !
- INTEGER(HID_T) :: gid
-
- !
- ! dataset identifier
- !
- INTEGER(HID_T) :: dset_id
-
- !
- ! data space identifier
- !
- INTEGER(HID_T) :: dataspace
-
- !
- ! data type identifier
- !
- INTEGER(HID_T) :: dtype_id
-
- !
- !The dimensions for the dataset.
- !
- INTEGER(HSIZE_T), DIMENSION(2) :: dims = (/NX,NY/)
-
- !
- !return value for testing whether a file is in hdf5 format
- !
- LOGICAL :: status
-
- !
- !flag to check operation success
- !
- INTEGER :: error
-
- !
- !general purpose integer
- !
- INTEGER :: i, j
-
- !
- !data buffers
- !
- INTEGER, DIMENSION(NX,NY) :: data_in, data_out
-
- INTEGER(HSIZE_T), DIMENSION(2) :: data_dims
- filename1 = "mount1"
- filename2 = "mount2"
-
- do i = 1,80
- fix_filename1(i:i) = " "
- fix_filename2(i:i) = " "
- enddo
- !
- !Initialize data_in buffer
- !
- do j = 1, NY
- do i = 1, NX
- data_in(i,j) = (i-1) + (j-1)
- end do
- end do
-
- !
- ! Fix names of the files
- !
- CALL h5_fixname_f(filename1, fix_filename1, H5P_DEFAULT_F, error)
- if(error .ne. 0) stop
- CALL h5_fixname_f(filename2, fix_filename2, H5P_DEFAULT_F, error)
- if(error .ne. 0) stop
-
- !
- !Create first file "mount1.h5" using default properties.
- !
- CALL h5fcreate_f(fix_filename1, H5F_ACC_TRUNC_F, file1_id, error)
- CALL check("h5fcreate_f",error,total_error)
-
- !
- !Create group "/G" inside file "mount1.h5".
- !
- CALL h5gcreate_f(file1_id, "/G", gid, error)
- CALL check("h5gcreate_f",error,total_error)
- !
- !close file and group identifiers.
- !
- CALL h5gclose_f(gid, error)
- CALL check("h5gclose_f",error,total_error)
- CALL h5fclose_f(file1_id, error)
- CALL check("h5fclose_f",error,total_error)
-
- !
- !Create second file "mount2.h5" using default properties.
- !
- CALL h5fcreate_f(fix_filename2, H5F_ACC_TRUNC_F, file2_id, error)
- CALL check("h5fcreate_f",error,total_error)
-
- !
- !Create data space for the dataset.
- !
- CALL h5screate_simple_f(RANK, dims, dataspace, error)
- CALL check("h5screate_simple_f",error,total_error)
-
- !
- !Create dataset "/D" inside file "mount2.h5".
- !
- CALL h5dcreate_f(file2_id, "/D", H5T_NATIVE_INTEGER, dataspace, &
- dset_id, error)
- CALL check("h5dcreate_f",error,total_error)
-
- !
- ! Write data_in to the dataset
- !
- data_dims(1) = NX
- data_dims(2) = NY
- CALL h5dwrite_f(dset_id, H5T_NATIVE_INTEGER, data_in, data_dims, error)
- CALL check("h5dwrite_f",error,total_error)
-
- !
- !close file, dataset and dataspace identifiers.
- !
- CALL h5sclose_f(dataspace, error)
- CALL check("h5sclose_f",error,total_error)
- CALL h5dclose_f(dset_id, error)
- CALL check("h5dclose_f",error,total_error)
- CALL h5fclose_f(file2_id, error)
- CALL check("h5fclose_f",error,total_error)
-
- !
- !test whether files are in hdf5 format
- !
- CALL h5fis_accessible_f(fix_filename1, status, error)
- CALL check("h5fis_accessible_f",error,total_error)
- IF ( .NOT. status ) THEN
- write(*,*) "File ", fix_filename1, " is not in hdf5 format"
- stop
- END IF
-
- CALL h5fis_accessible_f(fix_filename2, status, error)
- CALL check("h5fis_accessible_f",error,total_error)
- IF ( .NOT. status ) THEN
- write(*,*) "File ", fix_filename2, " is not in hdf5 format"
- stop
- END IF
-
- !
- !reopen both files.
- !
- CALL h5fopen_f (fix_filename1, H5F_ACC_RDWR_F, file1_id, error)
- CALL check("hfopen_f",error,total_error)
- CALL h5fopen_f (fix_filename2, H5F_ACC_RDWR_F, file2_id, error)
- CALL check("h5fopen_f",error,total_error)
-
- !
- !mount the second file under the first file's "/G" group.
- !
- CALL h5fmount_f (file1_id, "/G", file2_id, error)
- CALL check("h5fmount_f",error,total_error)
-
-
- !
- !Access dataset D in the first file under /G/D name.
- !
- CALL h5dopen_f(file1_id, "/G/D", dset_id, error)
- CALL check("h5dopen_f",error,total_error)
-
- !
- !Get dataset's data type.
- !
- CALL h5dget_type_f(dset_id, dtype_id, error)
- CALL check("h5dget_type_f",error,total_error)
-
- !
- !Read the dataset.
- !
- CALL h5dread_f(dset_id, dtype_id, data_out, data_dims, error)
- CALL check("h5dread_f",error,total_error)
-
- !
- !Compare the data.
- !
- do i = 1, NX
- do j = 1, NY
- IF (data_out(i,j) .NE. data_in(i, j)) THEN
- END IF
- end do
- end do
-
-
- !
- !Close dset_id and dtype_id.
- !
- CALL h5dclose_f(dset_id, error)
- CALL check("h5dclose_f",error,total_error)
- CALL h5tclose_f(dtype_id, error)
- CALL check("h5tclose_f",error,total_error)
-
- !
- !unmount the second file.
- !
- CALL h5funmount_f(file1_id, "/G", error);
- CALL check("h5funmount_f",error,total_error)
-
- !
- !Close both files.
- !
- CALL h5fclose_f(file1_id, error)
- CALL check("h5fclose_f",error,total_error)
- CALL h5fclose_f(file2_id, error)
- CALL check("h5fclose_f",error,total_error)
-
- if(cleanup) CALL h5_cleanup_f(filename1, H5P_DEFAULT_F, error)
- CALL check("h5_cleanup_f", error, total_error)
- if(cleanup) CALL h5_cleanup_f(filename2, H5P_DEFAULT_F, error)
- CALL check("h5_cleanup_f", error, total_error)
- RETURN
- END SUBROUTINE mountingtest
-
-!
-! The following subroutine tests h5freopen_f.
-! It creates the file which has name "reopen.h5" and
-! the "/dset" dataset inside the file.
-! writes the data to the file, close the dataset.
-! Reopen the file based upon the file_id, open the
-! dataset use the reopen_id then reads the
-! dataset back to memory to test whether the data
-! read is identical to the data written
-!
-
- SUBROUTINE reopentest(cleanup, total_error)
- USE HDF5 ! This module contains all necessary modules
- USE TH5_MISC
- IMPLICIT NONE
- LOGICAL, INTENT(IN) :: cleanup
- INTEGER, INTENT(INOUT) :: total_error
-
- !
- CHARACTER(LEN=6), PARAMETER :: filename = "reopen"
- CHARACTER(LEN=80) :: fix_filename
-
- INTEGER(HID_T) :: file_id, reopen_id ! File identifiers
- INTEGER(HID_T) :: dset_id ! Dataset identifier
-
- !
- !dataset name is "dset"
- !
- CHARACTER(LEN=4), PARAMETER :: dsetname = "dset"
-
- !
- !data space rank and dimensions
- !
- INTEGER, PARAMETER :: RANK = 2
- INTEGER, PARAMETER :: NX = 4
- INTEGER, PARAMETER :: NY = 6
-
- !
- ! data space identifier
- !
- INTEGER(HID_T) :: dataspace
-
- !
- !The dimensions for the dataset.
- !
- INTEGER(HSIZE_T), DIMENSION(2) :: dims = (/NX,NY/)
-
- !
- !flag to check operation success
- !
- INTEGER :: error
-
- !
- !general purpose integer
- !
- INTEGER :: i, j
-
- !
- !array to store data
- !
- INTEGER, DIMENSION(4,6) :: dset_data, data_out
- INTEGER(HSIZE_T), DIMENSION(2) :: data_dims
- INTEGER(HSIZE_T) :: file_size
- CHARACTER(LEN=80) :: file_name
- INTEGER(SIZE_T) :: name_size
-
- !
- !initialize the dset_data array which will be written to the "/dset"
- !
- do j = 1, NY
- do i = 1, NX
- dset_data(i,j) = (i-1)*6 + j;
- end do
- end do
-
- !
- !Initialize FORTRAN predifined datatypes
- !
-! CALL h5init_types_f(error)
-! CALL check("h5init_types_f",error,total_error)
-
-
- !
- !Create file "reopen.h5" using default properties.
- !
- CALL h5_fixname_f(filename, fix_filename, H5P_DEFAULT_F, error)
- if (error .ne. 0) then
- write(*,*) "Cannot modify filename"
- stop
- endif
- CALL h5fcreate_f(fix_filename, H5F_ACC_TRUNC_F, file_id, error)
- CALL check("h5fcreate_f",error,total_error)
-
- !
- !Create data space for the dataset.
- !
- CALL h5screate_simple_f(RANK, dims, dataspace, error)
- CALL check("h5screate_simple_f",error,total_error)
-
- !
- !Create dataset "/dset" inside the file .
- !
- CALL h5dcreate_f(file_id, dsetname, H5T_NATIVE_INTEGER, dataspace, &
- dset_id, error)
- CALL check("h5dcreate_f",error,total_error)
-
- !
- !Write the dataset.
- !
- data_dims(1) = NX
- data_dims(2) = NY
- CALL h5dwrite_f(dset_id, H5T_NATIVE_INTEGER, dset_data, data_dims, error)
- CALL check("h5dwrite_f",error,total_error)
-
- !
- !close the dataset.
- !
- CALL h5dclose_f(dset_id, error)
- CALL check("h5dclose_f",error,total_error)
-
- !
- !close the dataspace.
- !
- CALL h5sclose_f(dataspace, error)
- CALL check("h5sclose_f",error,total_error)
-
- !
- !Reopen file dsetf.h5.
- !
- CALL h5freopen_f(file_id, reopen_id, error)
- CALL check("h5freopen_f",error,total_error)
- !
- !Check file size
- !
- CALL h5fget_filesize_f(file_id, file_size, error)
- CALL check("h5fget_filesize_f",error,total_error)
-
- !
- !Open the dataset based on the reopen_id.
- !
- CALL h5dopen_f(reopen_id, dsetname, dset_id, error)
- CALL check("h5dopen_f",error,total_error)
- !
- !Get file name from the dataset identifier
- !
- CALL h5fget_name_f(dset_id, file_name, name_size, error)
- CALL check("h5fget_name_f",error,total_error)
- IF(file_name(1:name_size) .NE. fix_filename(1:name_size)) THEN
- write(*,*) "file name obtained from the dataset id is incorrect"
- END IF
-
- !
- !Read the dataset.
- !
- CALL h5dread_f(dset_id, H5T_NATIVE_INTEGER, data_out, data_dims, error)
- CALL check("h5dread_f",error,total_error)
-
- !
- !Compare the data.
- !
- do i = 1, NX
- do j = 1, NY
- IF (data_out(i,j) .NE. dset_data(i, j)) THEN
- write(*, *) "reopen test error occured"
- END IF
- end do
- end do
-
-
- !
- !Close the dataset.
- !
- CALL h5dclose_f(dset_id, error)
- CALL check("h5dclose_f",error,total_error)
-
- !
- !Close the file identifiers.
- !
- CALL h5fclose_f(file_id, error)
- CALL check("h5fclose_f",error,total_error)
- CALL h5fclose_f(reopen_id, error)
- CALL check("h5fclose_f",error,total_error)
-
-
- if(cleanup) CALL h5_cleanup_f(filename, H5P_DEFAULT_F, error)
- CALL check("h5_cleanup_f", error, total_error)
- RETURN
-
- END SUBROUTINE reopentest
-
-!
-! The following example demonstrates how to get creation property list,
-! and access property list.
-! We first create a file using the default creation and access property
-! list. Then, the file was closed and reopened. We then get the
-! creation and access property lists of the first file. The second file is
-! created using the got property lists
-
- SUBROUTINE plisttest(cleanup, total_error)
- USE HDF5 ! This module contains all necessary modules
- USE TH5_MISC
- IMPLICIT NONE
- LOGICAL, INTENT(IN) :: cleanup
- INTEGER, INTENT(INOUT) :: total_error
-
- !
- !file names are "plist1.h5" and "plist2.h5"
- !
- CHARACTER(LEN=6), PARAMETER :: filename1 = "plist1"
- CHARACTER(LEN=80) :: fix_filename1
- CHARACTER(LEN=6), PARAMETER :: filename2 = "plist2"
- CHARACTER(LEN=80) :: fix_filename2
-
- INTEGER(HID_T) :: file1_id, file2_id ! File identifiers
- INTEGER(HID_T) :: prop_id ! File creation property list identifier
- INTEGER(HID_T) :: access_id ! File Access property list identifier
-
- !flag to check operation success
- INTEGER :: error
-
- !
- !Create a file1 using default properties.
- !
- CALL h5_fixname_f(filename1, fix_filename1, H5P_DEFAULT_F, error)
- if (error .ne. 0) then
- write(*,*) "Cannot modify file name"
- stop
- endif
- CALL h5fcreate_f(fix_filename1, H5F_ACC_TRUNC_F, file1_id, error)
- CALL check("h5fcreate_f",error,total_error)
-
- !
- !Terminate access to the file.
- !
- CALL h5fclose_f(file1_id, error)
- CALL check("h5fclose_f",error,total_error)
-
- !
- !Open an existing file.
- !
- CALL h5fopen_f (fix_filename1, H5F_ACC_RDWR_F, file1_id, error)
- CALL check("h5fopen_f",error,total_error)
-
- !
- !get the creation property list.
- !
- CALL h5fget_create_plist_f(file1_id, prop_id, error)
- CALL check("h5fget_create_plist_f",error,total_error)
-
- !
- !get the access property list.
- !
- CALL h5fget_access_plist_f(file1_id, access_id, error)
- CALL check("h5fget_access_plist_f",error,total_error)
-
- !
- !based on the creation property list id and access property list id
- !create a new file
- !
- CALL h5_fixname_f(filename2, fix_filename2, H5P_DEFAULT_F, error)
- if (error .ne. 0) then
- write(*,*) "Cannot modify file name"
- stop
- endif
- CALL h5fcreate_f(fix_filename2, H5F_ACC_TRUNC_F, file2_id, error, &
- prop_id, access_id)
- CALL check("h5create_f",error,total_error)
-
- !
- !Close all the property lists.
- !
- CALL h5pclose_f(prop_id, error)
- CALL check("h5pclose_f",error,total_error)
- CALL h5pclose_f(access_id, error)
- CALL check("h5pclose_f",error,total_error)
-
- !
- !Terminate access to the files.
- !
- CALL h5fclose_f(file1_id, error)
- CALL check("h5fclose_f",error,total_error)
-
- CALL h5fclose_f(file2_id, error)
- CALL check("h5fclose_f",error,total_error)
-
- if(cleanup) CALL h5_cleanup_f(filename1, H5P_DEFAULT_F, error)
- CALL check("h5_cleanup_f", error, total_error)
- if(cleanup) CALL h5_cleanup_f(filename2, H5P_DEFAULT_F, error)
- CALL check("h5_cleanup_f", error, total_error)
- RETURN
-
- END SUBROUTINE plisttest
-
-
-!
-! The following subroutine tests h5pget(set)_fclose_degree_f
-!
-
- SUBROUTINE file_close(cleanup, total_error)
- USE HDF5 ! This module contains all necessary modules
- USE TH5_MISC
- IMPLICIT NONE
- LOGICAL, INTENT(IN) :: cleanup
- INTEGER, INTENT(INOUT) :: total_error
- INTEGER :: error
-
- !
- CHARACTER(LEN=10), PARAMETER :: filename = "file_close"
- CHARACTER(LEN=80) :: fix_filename
-
- INTEGER(HID_T) :: fid, fid_d, fid1, fid2, fid3 ! File identifiers
- INTEGER(HID_T) :: fapl, fapl1, fapl2, fapl3 ! File access identifiers
- INTEGER(HID_T) :: fid_d_fapl, fid1_fapl ! File access identifiers
- LOGICAL :: flag
- INTEGER(SIZE_T) :: obj_count, obj_countf
- INTEGER(HID_T), ALLOCATABLE, DIMENSION(:) :: obj_ids
- INTEGER :: i
-
- CALL h5eset_auto_f(0, error)
-
- CALL h5_fixname_f(filename, fix_filename, H5P_DEFAULT_F, error)
- if (error .ne. 0) then
- write(*,*) "Cannot modify filename"
- stop
- endif
- CALL h5fcreate_f(fix_filename, H5F_ACC_TRUNC_F, fid, error)
- CALL check("h5fcreate_f",error,total_error)
-
- CALL h5pcreate_f(H5P_FILE_ACCESS_F, fapl, error)
- CALL check("h5pcreate_f",error,total_error)
- CALL h5pset_fclose_degree_f(fapl, H5F_CLOSE_DEFAULT_F, error)
- CALL check("h5pset_fclose_degree_f",error,total_error)
-
-
- CALL h5pcreate_f(H5P_FILE_ACCESS_F, fapl1, error)
- CALL check("h5pcreate_f",error,total_error)
- CALL h5pset_fclose_degree_f(fapl1, H5F_CLOSE_WEAK_F, error)
- CALL check("h5pset_fclose_degree_f",error,total_error)
-
-
- CALL h5pcreate_f(H5P_FILE_ACCESS_F, fapl2, error)
- CALL check("h5pcreate_f",error,total_error)
- CALL h5pset_fclose_degree_f(fapl2, H5F_CLOSE_SEMI_F, error)
- CALL check("h5pset_fclose_degree_f",error,total_error)
-
- CALL h5pcreate_f(H5P_FILE_ACCESS_F, fapl3, error)
- CALL check("h5pcreate_f",error,total_error)
- CALL h5pset_fclose_degree_f(fapl3, H5F_CLOSE_STRONG_F, error)
- CALL check("h5pset_fclose_degree_f",error,total_error)
-
- CALL h5fopen_f(fix_filename, H5F_ACC_RDWR_F, fid1, error, access_prp=fapl1)
- CALL check("h5fopen_f",error,total_error)
- CALL h5fopen_f(fix_filename, H5F_ACC_RDWR_F, fid_d, error, access_prp=fapl)
- CALL check("h5fopen_f",error,total_error)
- CALL h5fget_access_plist_f(fid1, fid1_fapl, error)
- CALL check("h5fget_access_plist_f",error,total_error)
- CALL h5fget_access_plist_f(fid_d, fid_d_fapl, error)
- CALL check("h5fget_access_plist_f",error,total_error)
-
- CALL h5pequal_f(fid_d_fapl, fid1_fapl, flag, error)
- CALL check("h5pequal_f",error,total_error)
- if (.NOT. flag) then
- write(*,*) " File access lists should be equal, error "
- total_error=total_error + 1
- endif
- CALL h5fopen_f(fix_filename, H5F_ACC_RDWR_F, fid2, error, access_prp=fapl2)
- if( error .ne. -1) then
- total_error = total_error + 1
- write(*,*) " Open with H5F_CLOSE_SEMI should fail "
- endif
- CALL h5fopen_f(fix_filename, H5F_ACC_RDWR_F, fid3, error, access_prp=fapl3)
- if( error .ne. -1) then
- total_error = total_error + 1
- write(*,*) " Open with H5F_CLOSE_STRONG should fail "
- endif
-
- CALL h5fget_obj_count_f(fid1, H5F_OBJ_ALL_F, obj_count, error)
- CALL check("h5fget_obj_count_f",error,total_error)
- if(error .eq.0 .and. obj_count .ne. 3) then
- total_error = total_error + 1
- write(*,*) "Wrong number of open objects reported, error"
- endif
- CALL h5fget_obj_count_f(fid1, H5F_OBJ_FILE_F, obj_countf, error)
- CALL check("h5fget_obj_count_f",error,total_error)
- if(error .eq.0 .and. obj_countf .ne. 3) then
- total_error = total_error + 1
- write(*,*) "Wrong number of open objects reported, error"
- endif
- allocate(obj_ids(obj_countf), stat = error)
- CALL h5fget_obj_ids_f(fid, H5F_OBJ_FILE_F, obj_countf, obj_ids, error)
- CALL check("h5fget_obj_ids_f",error,total_error)
- if(error .eq. 0) then
- do i = 1, obj_countf
- CALL h5fclose_f(obj_ids(i), error)
- CALL check("h5fclose_f",error,total_error)
- enddo
- endif
-
- CALL h5fclose_f(fid, error)
- if(error .eq. 0) then
- total_error = total_error + 1
- write(*,*) "File should be closed at this point, error"
- endif
- CALL h5fclose_f(fid1, error)
- if(error .eq. 0) then
- total_error = total_error + 1
- write(*,*) "File should be closed at this point, error"
- endif
- CALL h5fclose_f(fid_d, error)
- if(error .eq. 0) then
- total_error = total_error + 1
- write(*,*) "File should be closed at this point, error"
- endif
-
- if(cleanup) then
- CALL h5_cleanup_f(filename, H5P_DEFAULT_F, error)
- CALL check("h5_cleanup_f", error, total_error)
- endif
- deallocate(obj_ids)
- RETURN
-
- END SUBROUTINE file_close
-
-!
-! The following subroutine tests h5fget_freespace_f
-!
-
- SUBROUTINE file_space(filename, cleanup, total_error)
- USE HDF5 ! This module contains all necessary modules
- USE TH5_MISC
- IMPLICIT NONE
- CHARACTER(*), INTENT(IN) :: filename
- LOGICAL, INTENT(IN) :: cleanup
- INTEGER, INTENT(INOUT) :: total_error
- INTEGER :: error
- !
- CHARACTER(LEN=3), PARAMETER :: grpname = "grp"
- CHARACTER(LEN=80) :: fix_filename
-
- INTEGER(HID_T) :: fid ! File identifiers
- INTEGER(HSSIZE_T) :: free_space
- INTEGER(HID_T) :: group_id ! Group identifier
-
- CALL h5eset_auto_f(0, error)
-
- CALL h5_fixname_f(filename, fix_filename, H5P_DEFAULT_F, error)
- if (error .ne. 0) then
- write(*,*) "Cannot modify filename"
- stop
- endif
- CALL h5fcreate_f(fix_filename, H5F_ACC_TRUNC_F, fid, error)
- CALL check("h5fcreate_f",error,total_error)
-
- CALL h5fget_freespace_f(fid, free_space, error)
- CALL check("h5fget_freespace_f",error,total_error)
- if(error .eq.0 .and. free_space .ne. 0) then
- total_error = total_error + 1
- write(*,*) "1: Wrong amount of free space reported, ", free_space
- endif
-
- ! Create group in the file.
- CALL h5gcreate_f(fid, grpname, group_id, error)
- CALL check("h5gcreate_f",error,total_error)
-
- ! Close group
- CALL h5gclose_f(group_id, error)
- CALL check("h5gclose_f", error, total_error)
-
- ! Check the free space now
- CALL h5fget_freespace_f(fid, free_space, error)
- CALL check("h5fget_freespace_f",error,total_error)
- if(error .eq.0 .and. free_space .ne. 0) then
- total_error = total_error + 1
- write(*,*) "2: Wrong amount of free space reported, ", free_space
- endif
-
- !Unlink the group
- CALL h5gunlink_f(fid, grpname, error)
- CALL check("h5gunlink_f", error, total_error)
-
- ! Check the free space now
- CALL h5fget_freespace_f(fid, free_space, error)
- CALL check("h5fget_freespace_f",error,total_error)
- if(error .eq.0 .and. free_space .ne. 0) then
- total_error = total_error + 1
- write(*,*) "3: Wrong amount of free space reported, ", free_space
- endif
-
- CALL h5fclose_f(fid, error)
- CALL check("h5fclose_f",error,total_error)
-
- if(cleanup) CALL h5_cleanup_f(filename, H5P_DEFAULT_F, error)
- CALL check("h5_cleanup_f", error, total_error)
- RETURN
-
- END SUBROUTINE file_space
-
-
-END MODULE TH5F