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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
|
!
! This file contains Fortran90 interfaces for H5F functions.
!
MODULE H5G
USE H5FORTRAN_TYPES
USE H5FORTRAN_FLAGS
CONTAINS
!!!============================================================
SUBROUTINE h5gcreate_f(loc_id, name, grp_id, hdferr, size_hint)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group
INTEGER(HID_T), INTENT(OUT) :: grp_id ! Group identifier
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER(SIZE_T), OPTIONAL, INTENT(IN) :: size_hint
! Parameter indicating
! the number of bytes
! to reserve for the
! names that will appear
! in the group
INTEGER :: namelen ! Length of the name character string
INTEGER(SIZE_T) :: size_hint_default
INTEGER, EXTERNAL :: h5gcreate_c
size_hint_default = OBJECT_NAMELEN_DEFAULT_F
if (present(size_hint)) size_hint_default = size_hint
namelen = LEN(name)
hdferr = h5gcreate_c(loc_id, name, namelen, size_hint_default, &
grp_id)
END SUBROUTINE h5gcreate_f
!!!============================================================
SUBROUTINE h5gopen_f(loc_id, name, grp_id, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group
INTEGER(HID_T), INTENT(OUT) :: grp_id ! File identifier
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER :: namelen ! Length of the name character string
INTEGER, EXTERNAL :: h5gopen_c
namelen = LEN(name)
hdferr = h5gopen_c(loc_id, name, namelen, grp_id)
END SUBROUTINE h5gopen_f
!!!============================================================
SUBROUTINE h5gclose_f(grp_id, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: grp_id ! Group identifier
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER, EXTERNAL :: h5gclose_c
hdferr = h5gclose_c(grp_id)
END SUBROUTINE h5gclose_f
!!!============================================================
SUBROUTINE h5gget_obj_info_idx_f(loc_id, name, idx, &
obj_name, obj_type, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group
INTEGER, INTENT(IN) :: idx ! Index of member object
CHARACTER(LEN=*), INTENT(OUT) :: obj_name ! Name of the object
INTEGER, INTENT(OUT) :: obj_type ! Object type
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER :: namelen ! Length of the name character string
INTEGER :: obj_namelen ! Length of the obj_name character string
INTEGER, EXTERNAL :: h5gget_obj_info_idx_c
namelen = LEN(name)
obj_namelen = LEN(obj_name)
hdferr = h5gget_obj_info_idx_c(loc_id, name, namelen, idx, &
obj_name, obj_namelen, obj_type)
END SUBROUTINE h5gget_obj_info_idx_f
!!!============================================================
SUBROUTINE h5gn_members_f(loc_id, name, nmembers, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group
INTEGER, INTENT(OUT) :: nmembers ! Number of members in the
! group
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER :: namelen ! Length of the name character string
INTEGER, EXTERNAL :: h5gn_members_c
namelen = LEN(name)
hdferr = h5gn_members_c(loc_id, name, namelen, nmembers)
END SUBROUTINE h5gn_members_f
!!!============================================================
SUBROUTINE h5glink_f(loc_id, link_type, current_name, &
new_name, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
INTEGER, INTENT(IN) :: link_type ! link type
! Possible values are:
! H5G_LINK_HARD_F (0) or
! H5G_LINK_SOFT_F (1)
CHARACTER(LEN=*), INTENT(IN) :: current_name
! Current name of an object
CHARACTER(LEN=*), INTENT(IN) :: new_name ! New name of an object
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER :: current_namelen ! Lenghth of the current_name string
INTEGER :: new_namelen ! Lenghth of the new_name string
INTEGER, EXTERNAL :: h5glink_c
current_namelen = LEN(current_name)
new_namelen = LEN(new_name)
hdferr = h5glink_c(loc_id, link_type, current_name, &
current_namelen, new_name, new_namelen)
END SUBROUTINE h5glink_f
!!!============================================================
SUBROUTINE h5gunlink_f(loc_id, name, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
CHARACTER(LEN=*), INTENT(IN) :: name ! Name of an object
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER :: namelen ! Lenghth of the name character string
INTEGER, EXTERNAL :: h5gunlink_c
namelen = LEN(name)
hdferr = h5gunlink_c(loc_id, name, namelen)
END SUBROUTINE h5gunlink_f
!!!============================================================
SUBROUTINE h5gmove_f(loc_id, name, new_name, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
CHARACTER(LEN=*), INTENT(IN) :: name ! Current name of an object
CHARACTER(LEN=*), INTENT(IN) :: new_name ! New name of an object
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER :: namelen ! Lenghth of the current_name string
INTEGER :: new_namelen ! Lenghth of the new_name string
INTEGER, EXTERNAL :: h5gmove_c
namelen = LEN(name)
new_namelen = LEN(new_name)
hdferr = h5gmove_c(loc_id, name, namelen, new_name, new_namelen)
END SUBROUTINE h5gmove_f
!!!============================================================
SUBROUTINE h5gget_linkval_f(loc_id, name, size, buffer, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
CHARACTER(LEN=*), INTENT(IN) :: name ! Current name of an object
INTEGER(SIZE_T), INTENT(IN) :: size ! Maximum number of buffer
CHARACTER(LEN=size), INTENT(OUT) :: buffer
! Buffer to hold a name of
! the object symbolic link
! points to
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER :: namelen ! Lenghth of the current_name string
INTEGER, EXTERNAL :: h5gget_linkval_c
namelen = LEN(name)
hdferr = h5gget_linkval_c(loc_id, name, namelen, size, buffer)
END SUBROUTINE h5gget_linkval_f
!!!============================================================
SUBROUTINE h5gset_comment_f(loc_id, name, comment, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
CHARACTER(LEN=*), INTENT(IN) :: name ! Current name of an object
CHARACTER(LEN=*), INTENT(IN) :: comment ! New name of an object
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER :: namelen ! Lenghth of the current_name string
INTEGER :: commentlen ! Lenghth of the comment string
INTEGER, EXTERNAL :: h5gset_comment_c
namelen = LEN(name)
commentlen = LEN(comment)
hdferr = h5gset_comment_c(loc_id, name, namelen, comment, commentlen)
END SUBROUTINE h5gset_comment_f
!!!============================================================
SUBROUTINE h5gget_comment_f(loc_id, name, size, buffer, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
CHARACTER(LEN=*), INTENT(IN) :: name ! Current name of an object
INTEGER(SIZE_T), INTENT(IN) :: size ! Maximum number of buffer
CHARACTER(LEN=size), INTENT(OUT) :: buffer
! Buffer to hold a comment
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER :: namelen ! Lenghth of the current_name string
INTEGER, EXTERNAL :: h5gget_comment_c
namelen = LEN(name)
hdferr = h5gget_comment_c(loc_id, name, namelen, size, buffer)
END SUBROUTINE h5gget_comment_f
!!!============================================================
END MODULE H5G
|