1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
!----------------------------------------------------------------------
! 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
!
! MS FORTRAN needs explicit interfaces for C functions called here.
!
INTERFACE
INTEGER FUNCTION h5open_c()
!MS$ATTRIBUTES C,reference,alias:'_H5OPEN_C'::h5open_c
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
!MS$ATTRIBUTES C,reference,alias:'_H5INIT_TYPES_C'::h5init_types_c
END FUNCTION h5init_types_c
END INTERFACE
INTERFACE
INTEGER FUNCTION h5init_flags_c(i_H5D_flags, &
i_H5E_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 )
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_H5E_flags(H5E_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)
!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, &
H5E_flags, &
H5F_flags, &
H5FD_flags, &
H5G_flags, &
H5I_flags, &
H5P_flags, &
H5R_flags, &
H5S_flags, &
H5T_flags )
error = error_0 + error_1 + error_2
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
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(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
!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 )
error_2 = h5close_c()
error = error_1 + error_2
END SUBROUTINE h5close_f
|