hdf5/fortran/src/H5_ff.f90
Albert Cheng 641f9f2fea [svn-r7341] Purpose:
Updated, cleanup or added Copyright notice.

Platforms tested:
"h5committested"

Misc. update:
2003-08-11 14:37:59 -05:00

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