mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-01 16:28:09 +08:00
Updated, cleanup or added Copyright notice. Platforms tested: "h5committested" Misc. update:
375 lines
12 KiB
Fortran
375 lines
12 KiB
Fortran
! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
! 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
|
|
! access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
|
|
! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
!
|
|
MODULE H5LIB
|
|
CONTAINS
|
|
!----------------------------------------------------------------------
|
|
! 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)
|
|
!
|
|
!This definition is needed for Windows DLLs
|
|
!DEC$if defined(BUILD_HDF5_DLL)
|
|
!DEC$attributes dllexport :: h5open_f
|
|
!DEC$endif
|
|
!
|
|
USE H5GLOBAL
|
|
|
|
IMPLICIT NONE
|
|
INTEGER, INTENT(OUT) :: error
|
|
INTEGER :: error_0, error_1, error_2, error_3
|
|
! INTEGER, EXTERNAL :: h5init_types_c
|
|
! INTEGER, EXTERNAL :: h5init_flags_c
|
|
! INTEGER, EXTERNAL :: h5init1_flags_c
|
|
! INTEGER, EXTERNAL :: h5open_c
|
|
|
|
!
|
|
! MS FORTRAN needs explicit interfaces for C functions called here.
|
|
!
|
|
INTERFACE
|
|
INTEGER FUNCTION h5open_c()
|
|
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
|
|
!MS$ATTRIBUTES C,reference,alias:'_H5OPEN_C'::h5open_c
|
|
!DEC$ ENDIF
|
|
END FUNCTION h5open_c
|
|
END INTERFACE
|
|
INTERFACE
|
|
INTEGER FUNCTION h5init_types_c(p_types, f_types, i_types)
|
|
USE H5GLOBAL
|
|
INTEGER(HID_T), DIMENSION(PREDEF_TYPES_LEN) :: p_types
|
|
INTEGER(HID_T), DIMENSION(FLOATING_TYPES_LEN) :: f_types
|
|
INTEGER(HID_T), DIMENSION(INTEGER_TYPES_LEN) :: i_types
|
|
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
|
|
!MS$ATTRIBUTES C,reference,alias:'_H5INIT_TYPES_C'::h5init_types_c
|
|
!DEC$ ENDIF
|
|
END FUNCTION h5init_types_c
|
|
END INTERFACE
|
|
INTERFACE
|
|
INTEGER FUNCTION h5init_flags_c(i_H5D_flags, &
|
|
i_H5F_flags, &
|
|
i_H5FD_flags, &
|
|
i_H5G_flags, &
|
|
i_H5I_flags, &
|
|
i_H5P_flags, &
|
|
i_H5R_flags, &
|
|
i_H5S_flags, &
|
|
i_H5T_flags, &
|
|
i_H5Z_flags)
|
|
USE H5GLOBAL
|
|
INTEGER i_H5F_flags(H5F_FLAGS_LEN)
|
|
INTEGER i_H5G_flags(H5G_FLAGS_LEN)
|
|
INTEGER i_H5D_flags(H5D_FLAGS_LEN)
|
|
INTEGER i_H5FD_flags(H5FD_FLAGS_LEN)
|
|
INTEGER i_H5I_flags(H5I_FLAGS_LEN)
|
|
INTEGER i_H5P_flags(H5P_FLAGS_LEN)
|
|
INTEGER i_H5R_flags(H5R_FLAGS_LEN)
|
|
INTEGER i_H5S_flags(H5S_FLAGS_LEN)
|
|
INTEGER i_H5T_flags(H5T_FLAGS_LEN)
|
|
INTEGER i_H5Z_flags(H5Z_FLAGS_LEN)
|
|
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
|
|
!MS$ATTRIBUTES C,reference,alias:'_H5INIT_FLAGS_C'::h5init_flags_c
|
|
!DEC$ ENDIF
|
|
END FUNCTION h5init_flags_c
|
|
END INTERFACE
|
|
INTERFACE
|
|
INTEGER FUNCTION h5init1_flags_c( i_H5LIB_flags )
|
|
USE H5GLOBAL
|
|
INTEGER i_H5LIB_flags(H5LIB_FLAGS_LEN)
|
|
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
|
|
!MS$ATTRIBUTES C,reference,alias:'_H5INIT1_FLAGS_C'::h5init1_flags_c
|
|
!DEC$ ENDIF
|
|
END FUNCTION h5init1_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, &
|
|
H5F_flags, &
|
|
H5FD_flags, &
|
|
H5G_flags, &
|
|
H5I_flags, &
|
|
H5P_flags, &
|
|
H5R_flags, &
|
|
H5S_flags, &
|
|
H5T_flags, &
|
|
H5Z_flags)
|
|
error_3 = h5init1_flags_c(H5LIB_flags )
|
|
error = error_0 + error_1 + error_2 + error_3
|
|
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)
|
|
!
|
|
!This definition is needed for Windows DLLs
|
|
!DEC$if defined(BUILD_HDF5_DLL)
|
|
!DEC$attributes dllexport :: h5close_f
|
|
!DEC$endif
|
|
!
|
|
USE H5GLOBAL
|
|
|
|
IMPLICIT NONE
|
|
INTEGER :: error_1, error_2
|
|
INTEGER, INTENT(OUT) :: error
|
|
! INTEGER, EXTERNAL :: h5close_types_c, h5close_c
|
|
INTERFACE
|
|
INTEGER FUNCTION h5close_c()
|
|
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
|
|
!MS$ATTRIBUTES C,reference,alias:'_H5CLOSE_C'::h5close_c
|
|
!DEC$ ENDIF
|
|
END FUNCTION h5close_c
|
|
END INTERFACE
|
|
INTERFACE
|
|
INTEGER FUNCTION h5close_types_c(p_types, P_TYPES_LEN, &
|
|
f_types, F_TYPES_LEN, &
|
|
i_types, I_TYPES_LEN )
|
|
USE H5GLOBAL
|
|
INTEGER P_TYPES_LEN
|
|
INTEGER F_TYPES_LEN
|
|
INTEGER I_TYPES_LEN
|
|
INTEGER(HID_T), DIMENSION(P_TYPES_LEN) :: p_types
|
|
INTEGER(HID_T), DIMENSION(F_TYPES_LEN) :: f_types
|
|
INTEGER(HID_T), DIMENSION(I_TYPES_LEN) :: i_types
|
|
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
|
|
!MS$ATTRIBUTES C,reference,alias:'_H5CLOSE_TYPES_C'::h5close_types_c
|
|
!DEC$ ENDIF
|
|
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 )
|
|
error_2 = h5close_c()
|
|
error = error_1 + error_2
|
|
|
|
END SUBROUTINE h5close_f
|
|
|
|
!----------------------------------------------------------------------
|
|
! Name: h5get_libversion_f
|
|
!
|
|
! Purpose: Returns the HDF5 LIbrary release number
|
|
!
|
|
! Inputs:
|
|
! Outputs:
|
|
! majnum: - major version of the library
|
|
! minum: - minor version of the library
|
|
! relnum: - release version of the library
|
|
! error: - error code
|
|
! Success: 0
|
|
! Failure: -1
|
|
! Optional parameters:
|
|
! NONE
|
|
!
|
|
! Programmer: Elena Pourmal
|
|
! September 24, 2002
|
|
!
|
|
! Comment:
|
|
!----------------------------------------------------------------------
|
|
|
|
SUBROUTINE h5get_libversion_f(majnum, minnum, relnum, error)
|
|
!
|
|
!This definition is needed for Windows DLLs
|
|
!DEC$if defined(BUILD_HDF5_DLL)
|
|
!DEC$attributes dllexport :: h5get_libversion_f
|
|
!DEC$endif
|
|
!
|
|
USE H5GLOBAL
|
|
|
|
IMPLICIT NONE
|
|
INTEGER, INTENT(OUT) :: majnum, minnum, relnum, error
|
|
INTERFACE
|
|
INTEGER FUNCTION h5get_libversion_c(majnum, minnum, relnum)
|
|
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
|
|
!MS$ATTRIBUTES C,reference,alias:'_H5GET_LIBVERSION_C'::h5get_libversion_c
|
|
!DEC$ ENDIF
|
|
INTEGER, INTENT(OUT) :: majnum, minnum, relnum
|
|
END FUNCTION h5get_libversion_c
|
|
END INTERFACE
|
|
|
|
error = h5get_libversion_c(majnum, minnum, relnum)
|
|
|
|
END SUBROUTINE h5get_libversion_f
|
|
|
|
!----------------------------------------------------------------------
|
|
! Name: h5check_version_f
|
|
!
|
|
! Purpose: Verifies that library versions are consistent.
|
|
!
|
|
! Inputs:
|
|
! majnum: - major version of the library
|
|
! minum: - minor version of the library
|
|
! relnum: - release version of the library
|
|
! Outputs:
|
|
! error: - error code
|
|
! Success: 0
|
|
! Failure: application aborts
|
|
! Optional parameters:
|
|
! NONE
|
|
!
|
|
! Programmer: Elena Pourmal
|
|
! September 24, 2002
|
|
!
|
|
! Comment:
|
|
!----------------------------------------------------------------------
|
|
|
|
SUBROUTINE h5check_version_f(majnum, minnum, relnum, error)
|
|
!
|
|
!This definition is needed for Windows DLLs
|
|
!DEC$if defined(BUILD_HDF5_DLL)
|
|
!DEC$attributes dllexport :: h5check_version_f
|
|
!DEC$endif
|
|
!
|
|
USE H5GLOBAL
|
|
|
|
IMPLICIT NONE
|
|
INTEGER, INTENT(IN) :: majnum, minnum, relnum
|
|
INTEGER, INTENT(OUT) :: error
|
|
INTERFACE
|
|
INTEGER FUNCTION h5check_version_c(majnum, minnum, relnum)
|
|
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
|
|
!MS$ATTRIBUTES C,reference,alias:'_H5CHECK_VERSION_C'::h5check_version_c
|
|
!DEC$ ENDIF
|
|
INTEGER, INTENT(IN) :: majnum, minnum, relnum
|
|
END FUNCTION h5check_version_c
|
|
END INTERFACE
|
|
|
|
error = h5check_version_c(majnum, minnum, relnum)
|
|
|
|
END SUBROUTINE h5check_version_f
|
|
|
|
!----------------------------------------------------------------------
|
|
! Name: h5garbage_collect_f
|
|
!
|
|
! Purpose: Garbage collects on all free-lists of all types.
|
|
!
|
|
! Inputs:
|
|
! Outputs:
|
|
! error: - error code
|
|
! Success: 0
|
|
! Failure: -1
|
|
! Optional parameters:
|
|
! NONE
|
|
!
|
|
! Programmer: Elena Pourmal
|
|
! September 24, 2002
|
|
!
|
|
!
|
|
! Comment:
|
|
!----------------------------------------------------------------------
|
|
|
|
SUBROUTINE h5garbage_collect_f(error)
|
|
!
|
|
!This definition is needed for Windows DLLs
|
|
!DEC$if defined(BUILD_HDF5_DLL)
|
|
!DEC$attributes dllexport :: h5garbage_collect_f
|
|
!DEC$endif
|
|
!
|
|
USE H5GLOBAL
|
|
|
|
IMPLICIT NONE
|
|
INTEGER, INTENT(OUT) :: error
|
|
INTERFACE
|
|
INTEGER FUNCTION h5garbage_collect_c()
|
|
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
|
|
!MS$ATTRIBUTES C,reference,alias:'_H5GARBAGE_COLLECT_C'::h5garbage_collect_c
|
|
!DEC$ ENDIF
|
|
END FUNCTION h5garbage_collect_c
|
|
END INTERFACE
|
|
|
|
error = h5garbage_collect_c()
|
|
|
|
END SUBROUTINE h5garbage_collect_f
|
|
|
|
!----------------------------------------------------------------------
|
|
! Name: h5dont_atexit_f
|
|
!
|
|
! Purpose: Instructs library not to install atexit cleanup routine.
|
|
!
|
|
! Inputs:
|
|
! Outputs:
|
|
! error: - error code
|
|
! Success: 0
|
|
! Failure: -1
|
|
! Optional parameters:
|
|
! NONE
|
|
!
|
|
! Programmer: Elena Pourmal
|
|
! September 24, 2002
|
|
!
|
|
!
|
|
! Comment:
|
|
!----------------------------------------------------------------------
|
|
|
|
SUBROUTINE h5dont_atexit_f(error)
|
|
!
|
|
!This definition is needed for Windows DLLs
|
|
!DEC$if defined(BUILD_HDF5_DLL)
|
|
!DEC$attributes dllexport :: h5dont_atexit_f
|
|
!DEC$endif
|
|
!
|
|
USE H5GLOBAL
|
|
|
|
IMPLICIT NONE
|
|
INTEGER, INTENT(OUT) :: error
|
|
INTERFACE
|
|
INTEGER FUNCTION h5dont_atexit_c()
|
|
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
|
|
!MS$ATTRIBUTES C,reference,alias:'_H5DONT_ATEXIT_C'::h5dont_atexit_c
|
|
!DEC$ ENDIF
|
|
END FUNCTION h5dont_atexit_c
|
|
END INTERFACE
|
|
|
|
error = h5dont_atexit_c()
|
|
|
|
END SUBROUTINE h5dont_atexit_f
|
|
END MODULE H5LIB
|