1!****h* ROBODoc/H5GLOBAL
2!
3! NAME
4!  MODULE H5GLOBAL
5!
6! FILE
7!  src/fortran/H5f90global.F90
8!
9! PURPOSE
10!  This module is used to pass C stubs for H5 Fortran APIs. The C stubs are
11!  packed into arrays in H5_f.c and these arrays are then passed to Fortran.
12!  This module then uses EQUIVALENCE to assign elements of the arrays to
13!  Fortran equivalent C stubs.
14!
15! NOTES
16!  The size of the C arrays in H5_f.c has to match the values of the variables
17!  declared as PARAMETER, hence if the size of an array in H5_f.c is changed
18!  then the PARAMETER of that corresponding array in Fortran must also be changed.
19!
20! USES
21!  H5FORTRAN_TYPES 	 - This module is generated at run time. See
22!
23! COPYRIGHT
24! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
25!   Copyright by The HDF Group.                                               *
26!   Copyright by the Board of Trustees of the University of Illinois.         *
27!   All rights reserved.                                                      *
28!                                                                             *
29!   This file is part of HDF5.  The full HDF5 copyright notice, including     *
30!   terms governing use, modification, and redistribution, is contained in    *
31!   the COPYING file, which can be found at the root of the source code       *
32!   distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases.  *
33!   If you do not have access to either file, you may request a copy from     *
34!   help@hdfgroup.org.                                                        *
35! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
36!
37! AUTHOR
38!  Elena Pourmal
39!
40!*****
41
42MODULE H5GLOBAL
43  USE H5FORTRAN_TYPES
44
45  IMPLICIT NONE
46
47  ! Enumerate data type that is interoperable with C.
48  ENUM, BIND(C)
49    ENUMERATOR :: enum_dtype
50  END ENUM
51  INTEGER, PARAMETER :: ENUM_T = KIND(enum_dtype)
52
53  ! Definitions for reference datatypes.
54  ! If you change the value of these parameters, do not forget to change corresponding
55  ! values in the H5f90.h file.
56  INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3
57
58  ! Parameters used in the function 'h5kind_to_type' located in H5_ff.F90.
59  ! The flag is used to tell the function whether the kind input variable
60  ! is for a REAL or INTEGER data type.
61
62  INTEGER, PARAMETER :: H5_REAL_KIND = 1
63  INTEGER, PARAMETER :: H5_INTEGER_KIND = 0
64
65  TYPE :: hobj_ref_t_f
66     INTEGER(HADDR_T) ref
67  END TYPE hobj_ref_t_f
68
69  TYPE :: hdset_reg_ref_t_f
70     INTEGER, DIMENSION(1:REF_REG_BUF_LEN) :: ref
71  END TYPE hdset_reg_ref_t_f
72
73  ! Do not forget to change these values when new predefined
74  ! datatypes are added
75  INTEGER, PARAMETER :: PREDEF_TYPES_LEN = 19
76  INTEGER, PARAMETER :: FLOATING_TYPES_LEN = 4
77  INTEGER, PARAMETER :: INTEGER_TYPES_LEN = 27
78
79  ! These arrays need to be global because they are used in
80  ! both h5open_f and in h5close_f; initialize to fix linking issues
81  ! on OSX and Intel compilers.
82  INTEGER(HID_T), DIMENSION(1:PREDEF_TYPES_LEN)   :: predef_types = -1
83  INTEGER(HID_T), DIMENSION(1:FLOATING_TYPES_LEN) :: floating_types = -1
84  INTEGER(HID_T), DIMENSION(1:INTEGER_TYPES_LEN)  :: integer_types = -1
85
86  !DEC$if defined(BUILD_HDF5_DLL)
87  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NATIVE_REAL_C_FLOAT
88  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NATIVE_REAL_C_DOUBLE
89  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NATIVE_REAL_C_LONG_DOUBLE
90  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NATIVE_INTEGER
91  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NATIVE_REAL
92  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NATIVE_DOUBLE
93  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NATIVE_CHARACTER
94  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_REF_OBJ
95  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_REF_DSETREG
96  !DEC$ATTRIBUTES DLLEXPORT :: H5T_IEEE_F32BE
97  !DEC$ATTRIBUTES DLLEXPORT :: H5T_IEEE_F32LE
98  !DEC$ATTRIBUTES DLLEXPORT :: H5T_IEEE_F64BE
99  !DEC$ATTRIBUTES DLLEXPORT :: H5T_IEEE_F64LE
100  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_I8BE
101  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_I8LE
102  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_I16BE
103  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_I16LE
104  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_I32BE
105  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_I32LE
106  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_I64BE
107  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_I64LE
108  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_U8BE
109  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_U8LE
110  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_U16BE
111  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_U16LE
112  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_U32BE
113  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_U32LE
114  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_U64BE
115  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_U64LE
116  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STRING
117  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_B8BE
118  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_B8LE
119  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_B16BE
120  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_B16LE
121  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_B32BE
122  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_B32LE
123  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_B64BE
124  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STD_B64LE
125  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NATIVE_B8
126  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NATIVE_B16
127  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NATIVE_B32
128  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NATIVE_B64
129  !DEC$ATTRIBUTES DLLEXPORT :: H5T_FORTRAN_S1
130  !DEC$ATTRIBUTES DLLEXPORT :: H5T_C_S1
131  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NATIVE_INTEGER_KIND
132  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NATIVE_FLOAT_128
133  !DEC$endif
134
135  INTEGER(HID_T) :: H5T_NATIVE_REAL_C_FLOAT
136  INTEGER(HID_T) :: H5T_NATIVE_REAL_C_DOUBLE
137  INTEGER(HID_T) :: H5T_NATIVE_REAL_C_LONG_DOUBLE
138  INTEGER(HID_T) :: H5T_NATIVE_INTEGER
139  INTEGER(HID_T) :: H5T_NATIVE_REAL
140  INTEGER(HID_T) :: H5T_NATIVE_DOUBLE
141  INTEGER(HID_T) :: H5T_NATIVE_CHARACTER
142  INTEGER(HID_T) :: H5T_STD_REF_OBJ
143  INTEGER(HID_T) :: H5T_STD_REF_DSETREG
144  INTEGER(HID_T) :: H5T_IEEE_F32BE
145  INTEGER(HID_T) :: H5T_IEEE_F32LE
146  INTEGER(HID_T) :: H5T_IEEE_F64BE
147  INTEGER(HID_T) :: H5T_IEEE_F64LE
148  INTEGER(HID_T) :: H5T_STD_I8BE
149  INTEGER(HID_T) :: H5T_STD_I8LE
150  INTEGER(HID_T) :: H5T_STD_I16BE
151  INTEGER(HID_T) :: H5T_STD_I16LE
152  INTEGER(HID_T) :: H5T_STD_I32BE
153  INTEGER(HID_T) :: H5T_STD_I32LE
154  INTEGER(HID_T) :: H5T_STD_I64BE
155  INTEGER(HID_T) :: H5T_STD_I64LE
156  INTEGER(HID_T) :: H5T_STD_U8BE
157  INTEGER(HID_T) :: H5T_STD_U8LE
158  INTEGER(HID_T) :: H5T_STD_U16BE
159  INTEGER(HID_T) :: H5T_STD_U16LE
160  INTEGER(HID_T) :: H5T_STD_U32BE
161  INTEGER(HID_T) :: H5T_STD_U32LE
162  INTEGER(HID_T) :: H5T_STD_U64BE
163  INTEGER(HID_T) :: H5T_STD_U64LE
164  INTEGER(HID_T) :: H5T_STRING
165  INTEGER(HID_T) :: H5T_STD_B8BE
166  INTEGER(HID_T) :: H5T_STD_B8LE
167  INTEGER(HID_T) :: H5T_STD_B16BE
168  INTEGER(HID_T) :: H5T_STD_B16LE
169  INTEGER(HID_T) :: H5T_STD_B32BE
170  INTEGER(HID_T) :: H5T_STD_B32LE
171  INTEGER(HID_T) :: H5T_STD_B64BE
172  INTEGER(HID_T) :: H5T_STD_B64LE
173  INTEGER(HID_T) :: H5T_NATIVE_B8
174  INTEGER(HID_T) :: H5T_NATIVE_B16
175  INTEGER(HID_T) :: H5T_NATIVE_B32
176  INTEGER(HID_T) :: H5T_NATIVE_B64
177  INTEGER(HID_T) :: H5T_FORTRAN_S1
178  INTEGER(HID_T) :: H5T_C_S1
179
180  INTEGER, PARAMETER :: NUM_NATIVE_INTEGER_KIND = 5
181  ! INTEGER*1, INTEGER*2, INTEGER*4, INTEGER*8, INTEGER*16
182  INTEGER(HID_T), DIMENSION(1:NUM_NATIVE_INTEGER_KIND) :: H5T_NATIVE_INTEGER_KIND
183
184  INTEGER(HID_T) :: H5T_NATIVE_FLOAT_128 ! NEED IFDEF -MSB-
185  !
186  ! H5generic flags declaration
187  !
188  !DEC$if defined(BUILD_HDF5_DLL)
189  !DEC$ATTRIBUTES DLLEXPORT :: H5_INDEX_UNKNOWN_F
190  !DEC$ATTRIBUTES DLLEXPORT :: H5_INDEX_NAME_F
191  !DEC$ATTRIBUTES DLLEXPORT :: H5_INDEX_CRT_ORDER_F
192  !DEC$ATTRIBUTES DLLEXPORT :: H5_INDEX_N_F
193  !DEC$ATTRIBUTES DLLEXPORT :: H5_ITER_UNKNOWN_F
194  !DEC$ATTRIBUTES DLLEXPORT :: H5_ITER_INC_F
195  !DEC$ATTRIBUTES DLLEXPORT :: H5_ITER_DEC_F
196  !DEC$ATTRIBUTES DLLEXPORT :: H5_ITER_NATIVE_F
197  !DEC$ATTRIBUTES DLLEXPORT :: H5_ITER_N_F
198  !DEC$ATTRIBUTES DLLEXPORT :: HADDR_UNDEF_F
199  !DEC$endif
200
201  INTEGER :: H5_INDEX_UNKNOWN_F
202  INTEGER :: H5_INDEX_NAME_F
203  INTEGER :: H5_INDEX_CRT_ORDER_F
204  INTEGER :: H5_INDEX_N_F
205  INTEGER :: H5_ITER_UNKNOWN_F
206  INTEGER :: H5_ITER_INC_F
207  INTEGER :: H5_ITER_DEC_F
208  INTEGER :: H5_ITER_NATIVE_F
209  INTEGER :: H5_ITER_N_F
210
211  INTEGER(HADDR_T) :: HADDR_UNDEF_F
212  !
213  ! H5F flags declaration
214  !
215  !DEC$if defined(BUILD_HDF5_DLL)
216  !DEC$ATTRIBUTES DLLEXPORT :: H5F_ACC_RDWR_F
217  !DEC$ATTRIBUTES DLLEXPORT :: H5F_ACC_RDONLY_F
218  !DEC$ATTRIBUTES DLLEXPORT :: H5F_ACC_TRUNC_F
219  !DEC$ATTRIBUTES DLLEXPORT :: H5F_ACC_EXCL_F
220  !DEC$ATTRIBUTES DLLEXPORT :: H5F_ACC_DEBUG_F
221  !DEC$ATTRIBUTES DLLEXPORT :: H5F_SCOPE_LOCAL_F
222  !DEC$ATTRIBUTES DLLEXPORT :: H5F_SCOPE_GLOBAL_F
223  !DEC$ATTRIBUTES DLLEXPORT :: H5F_CLOSE_DEFAULT_F
224  !DEC$ATTRIBUTES DLLEXPORT :: H5F_CLOSE_WEAK_F
225  !DEC$ATTRIBUTES DLLEXPORT :: H5F_CLOSE_SEMI_F
226  !DEC$ATTRIBUTES DLLEXPORT :: H5F_CLOSE_STRONG_F
227  !DEC$ATTRIBUTES DLLEXPORT :: H5F_OBJ_FILE_F
228  !DEC$ATTRIBUTES DLLEXPORT :: H5F_OBJ_DATASET_F
229  !DEC$ATTRIBUTES DLLEXPORT :: H5F_OBJ_GROUP_F
230  !DEC$ATTRIBUTES DLLEXPORT :: H5F_OBJ_DATATYPE_F
231  !DEC$ATTRIBUTES DLLEXPORT :: H5F_OBJ_ALL_F
232  !DEC$ATTRIBUTES DLLEXPORT :: H5F_LIBVER_EARLIEST_F
233  !DEC$ATTRIBUTES DLLEXPORT :: H5F_LIBVER_LATEST_F
234  !DEC$ATTRIBUTES DLLEXPORT :: H5F_UNLIMITED_F
235  !DEC$endif
236
237  INTEGER :: H5F_ACC_RDWR_F
238  INTEGER :: H5F_ACC_RDONLY_F
239  INTEGER :: H5F_ACC_TRUNC_F
240  INTEGER :: H5F_ACC_EXCL_F
241  INTEGER :: H5F_ACC_DEBUG_F
242  INTEGER :: H5F_SCOPE_LOCAL_F
243  INTEGER :: H5F_SCOPE_GLOBAL_F
244  INTEGER :: H5F_CLOSE_DEFAULT_F
245  INTEGER :: H5F_CLOSE_WEAK_F
246  INTEGER :: H5F_CLOSE_SEMI_F
247  INTEGER :: H5F_CLOSE_STRONG_F
248  INTEGER :: H5F_OBJ_FILE_F
249  INTEGER :: H5F_OBJ_DATASET_F
250  INTEGER :: H5F_OBJ_GROUP_F
251  INTEGER :: H5F_OBJ_DATATYPE_F
252  INTEGER :: H5F_OBJ_ALL_F
253  INTEGER :: H5F_LIBVER_EARLIEST_F
254  INTEGER :: H5F_LIBVER_LATEST_F
255  INTEGER :: H5F_UNLIMITED_F
256  !
257  ! H5G flags declaration
258  !
259  !DEC$if defined(BUILD_HDF5_DLL)
260  !DEC$ATTRIBUTES DLLEXPORT :: H5G_UNKNOWN_F
261  !DEC$ATTRIBUTES DLLEXPORT :: H5G_GROUP_F
262  !DEC$ATTRIBUTES DLLEXPORT :: H5G_DATASET_F
263  !DEC$ATTRIBUTES DLLEXPORT :: H5G_TYPE_F
264  !DEC$ATTRIBUTES DLLEXPORT :: H5G_LINK_F
265  !DEC$ATTRIBUTES DLLEXPORT :: H5G_UDLINK_F
266  !DEC$ATTRIBUTES DLLEXPORT :: H5G_SAME_LOC_F
267  !DEC$ATTRIBUTES DLLEXPORT :: H5G_LINK_ERROR_F
268  !DEC$ATTRIBUTES DLLEXPORT :: H5G_LINK_HARD_F
269  !DEC$ATTRIBUTES DLLEXPORT :: H5G_LINK_SOFT_F
270  !DEC$ATTRIBUTES DLLEXPORT :: H5G_STORAGE_TYPE_UNKNOWN_F
271  !DEC$ATTRIBUTES DLLEXPORT :: H5G_STORAGE_TYPE_SYMBOL_TABLE_F
272  !DEC$ATTRIBUTES DLLEXPORT :: H5G_STORAGE_TYPE_COMPACT_F
273  !DEC$ATTRIBUTES DLLEXPORT :: H5G_STORAGE_TYPE_DENSE_F
274  !DEC$endif
275
276  INTEGER :: H5G_UNKNOWN_F
277  INTEGER :: H5G_GROUP_F
278  INTEGER :: H5G_DATASET_F
279  INTEGER :: H5G_TYPE_F
280  INTEGER :: H5G_LINK_F
281  INTEGER :: H5G_UDLINK_F
282  INTEGER :: H5G_SAME_LOC_F
283  INTEGER :: H5G_LINK_ERROR_F
284  INTEGER :: H5G_LINK_HARD_F
285  INTEGER :: H5G_LINK_SOFT_F
286  INTEGER :: H5G_STORAGE_TYPE_UNKNOWN_F
287  INTEGER :: H5G_STORAGE_TYPE_SYMBOL_TABLE_F
288  INTEGER :: H5G_STORAGE_TYPE_COMPACT_F
289  INTEGER :: H5G_STORAGE_TYPE_DENSE_F
290  !
291  ! H5D flags declaration
292  !
293  !DEC$if defined(BUILD_HDF5_DLL)
294  !DEC$ATTRIBUTES DLLEXPORT :: H5D_COMPACT_F
295  !DEC$ATTRIBUTES DLLEXPORT :: H5D_CONTIGUOUS_F
296  !DEC$ATTRIBUTES DLLEXPORT :: H5D_CHUNKED_F
297  !DEC$ATTRIBUTES DLLEXPORT :: H5D_ALLOC_TIME_ERROR_F
298  !DEC$ATTRIBUTES DLLEXPORT :: H5D_ALLOC_TIME_DEFAULT_F
299  !DEC$ATTRIBUTES DLLEXPORT :: H5D_ALLOC_TIME_EARLY_F
300  !DEC$ATTRIBUTES DLLEXPORT :: H5D_ALLOC_TIME_LATE_F
301  !DEC$ATTRIBUTES DLLEXPORT :: H5D_ALLOC_TIME_INCR_F
302  !DEC$ATTRIBUTES DLLEXPORT :: H5D_SPACE_STS_ERROR_F
303  !DEC$ATTRIBUTES DLLEXPORT :: H5D_SPACE_STS_NOT_ALLOCATED_F
304  !DEC$ATTRIBUTES DLLEXPORT :: H5D_SPACE_STS_PART_ALLOCATED_F
305  !DEC$ATTRIBUTES DLLEXPORT :: H5D_SPACE_STS_ALLOCATED_F
306  !DEC$ATTRIBUTES DLLEXPORT :: H5D_FILL_TIME_ERROR_F
307  !DEC$ATTRIBUTES DLLEXPORT :: H5D_FILL_TIME_ALLOC_F
308  !DEC$ATTRIBUTES DLLEXPORT :: H5D_FILL_TIME_NEVER_F
309  !DEC$ATTRIBUTES DLLEXPORT :: H5D_FILL_VALUE_ERROR_F
310  !DEC$ATTRIBUTES DLLEXPORT :: H5D_FILL_VALUE_UNDEFINED_F
311  !DEC$ATTRIBUTES DLLEXPORT :: H5D_FILL_VALUE_DEFAULT_F
312  !DEC$ATTRIBUTES DLLEXPORT :: H5D_FILL_VALUE_USER_DEFINED_F
313  !DEC$ATTRIBUTES DLLEXPORT :: H5D_CHUNK_CACHE_NSLOTS_DFLT_F
314  !DEC$ATTRIBUTES DLLEXPORT :: H5D_CHUNK_CACHE_NBYTES_DFLT_F
315  !DEC$ATTRIBUTES DLLEXPORT :: H5D_CHUNK_CACHE_W0_DFLT_F
316  !DEC$ATTRIBUTES DLLEXPORT :: H5D_MPIO_NO_COLLECTIVE_F
317  !DEC$ATTRIBUTES DLLEXPORT :: H5D_MPIO_CHUNK_INDEPENDENT_F
318  !DEC$ATTRIBUTES DLLEXPORT :: H5D_MPIO_CHUNK_COLLECTIVE_F
319  !DEC$ATTRIBUTES DLLEXPORT :: H5D_MPIO_CHUNK_MIXED_F
320  !DEC$ATTRIBUTES DLLEXPORT :: H5D_MPIO_CONTIG_COLLECTIVE_F
321  !DEC$ATTRIBUTES DLLEXPORT :: H5D_VDS_ERROR_F
322  !DEC$ATTRIBUTES DLLEXPORT :: H5D_VDS_FIRST_MISSING_F
323  !DEC$ATTRIBUTES DLLEXPORT :: H5D_VDS_LAST_AVAILABLE_F
324  !DEC$ATTRIBUTES DLLEXPORT :: H5D_VIRTUAL_F
325  !DEC$endif
326
327  INTEGER :: H5D_COMPACT_F
328  INTEGER :: H5D_CONTIGUOUS_F
329  INTEGER :: H5D_CHUNKED_F
330
331  INTEGER :: H5D_ALLOC_TIME_ERROR_F
332  INTEGER :: H5D_ALLOC_TIME_DEFAULT_F
333  INTEGER :: H5D_ALLOC_TIME_EARLY_F
334  INTEGER :: H5D_ALLOC_TIME_LATE_F
335  INTEGER :: H5D_ALLOC_TIME_INCR_F
336
337  INTEGER :: H5D_SPACE_STS_ERROR_F
338  INTEGER :: H5D_SPACE_STS_NOT_ALLOCATED_F
339  INTEGER :: H5D_SPACE_STS_PART_ALLOCATED_F
340  INTEGER :: H5D_SPACE_STS_ALLOCATED_F
341
342  INTEGER :: H5D_FILL_TIME_ERROR_F
343  INTEGER :: H5D_FILL_TIME_ALLOC_F
344  INTEGER :: H5D_FILL_TIME_NEVER_F
345
346  INTEGER :: H5D_FILL_VALUE_ERROR_F
347  INTEGER :: H5D_FILL_VALUE_UNDEFINED_F
348  INTEGER :: H5D_FILL_VALUE_DEFAULT_F
349  INTEGER :: H5D_FILL_VALUE_USER_DEFINED_F
350
351  ! shortened "_DEFAULT" to "_DFLT" to satisfy the limit of 31
352  ! characters for variable names in Fortran.
353  ! shortened "_CONTIGUOUS" to "_CONTIG" to satisfy the limit of 31
354  ! characters for variable names in Fortran.
355
356  INTEGER(SIZE_T) :: H5D_CHUNK_CACHE_NSLOTS_DFLT_F
357  INTEGER(SIZE_T) :: H5D_CHUNK_CACHE_NBYTES_DFLT_F
358
359  INTEGER :: H5D_CHUNK_CACHE_W0_DFLT_F
360  INTEGER :: H5D_MPIO_NO_COLLECTIVE_F
361  INTEGER :: H5D_MPIO_CHUNK_INDEPENDENT_F
362  INTEGER :: H5D_MPIO_CHUNK_COLLECTIVE_F
363  INTEGER :: H5D_MPIO_CHUNK_MIXED_F
364  INTEGER :: H5D_MPIO_CONTIG_COLLECTIVE_F
365  INTEGER :: H5D_VDS_ERROR_F
366  INTEGER :: H5D_VDS_FIRST_MISSING_F
367  INTEGER :: H5D_VDS_LAST_AVAILABLE_F
368  INTEGER :: H5D_VIRTUAL_F
369  !
370  ! H5E flags declaration
371  !
372  !DEC$if defined(BUILD_HDF5_DLL)
373  !DEC$ATTRIBUTES DLLEXPORT :: H5E_DEFAULT_F
374  !DEC$ATTRIBUTES DLLEXPORT :: H5E_MAJOR_F
375  !DEC$ATTRIBUTES DLLEXPORT :: H5E_MINOR_F
376  !DEC$ATTRIBUTES DLLEXPORT :: H5E_WALK_UPWARD_F
377  !DEC$ATTRIBUTES DLLEXPORT :: H5E_WALK_DOWNWARD_F
378  !DEC$endif
379
380  INTEGER(HID_T) :: H5E_DEFAULT_F
381  INTEGER :: H5E_MAJOR_F
382  INTEGER :: H5E_MINOR_F
383  INTEGER :: H5E_WALK_UPWARD_F
384  INTEGER :: H5E_WALK_DOWNWARD_F
385  !
386  ! H5FD file drivers flags declaration
387  !
388  !DEC$if defined(BUILD_HDF5_DLL)
389  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_MPIO_INDEPENDENT_F
390  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_MPIO_COLLECTIVE_F
391  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_MEM_NOLIST_F
392  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_MEM_DEFAULT_F
393  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_MEM_SUPER_F
394  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_MEM_BTREE_F
395  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_MEM_DRAW_F
396  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_MEM_GHEAP_F
397  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_MEM_LHEAP_F
398  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_MEM_OHDR_F
399  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_MEM_NTYPES_F
400  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_CORE_F
401  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_FAMILY_F
402  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_LOG_F
403  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_MPIO_F
404  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_MULTI_F
405  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_SEC2_F
406  !DEC$ATTRIBUTES DLLEXPORT :: H5FD_STDIO_F
407  !DEC$endif
408
409  INTEGER :: H5FD_MPIO_INDEPENDENT_F
410  INTEGER :: H5FD_MPIO_COLLECTIVE_F
411  INTEGER :: H5FD_MEM_NOLIST_F
412  INTEGER :: H5FD_MEM_DEFAULT_F
413  INTEGER :: H5FD_MEM_SUPER_F
414  INTEGER :: H5FD_MEM_BTREE_F
415  INTEGER :: H5FD_MEM_DRAW_F
416  INTEGER :: H5FD_MEM_GHEAP_F
417  INTEGER :: H5FD_MEM_LHEAP_F
418  INTEGER :: H5FD_MEM_OHDR_F
419  INTEGER :: H5FD_MEM_NTYPES_F
420  INTEGER(HID_T) :: H5FD_CORE_F
421  INTEGER(HID_T) :: H5FD_FAMILY_F
422  INTEGER(HID_T) :: H5FD_LOG_F
423  INTEGER(HID_T) :: H5FD_MPIO_F
424  INTEGER(HID_T) :: H5FD_MULTI_F
425  INTEGER(HID_T) :: H5FD_SEC2_F
426  INTEGER(HID_T) :: H5FD_STDIO_F
427  !
428  ! H5I flags declaration
429  !
430  !DEC$if defined(BUILD_HDF5_DLL)
431  !DEC$ATTRIBUTES DLLEXPORT :: H5I_FILE_F
432  !DEC$ATTRIBUTES DLLEXPORT :: H5I_GROUP_F
433  !DEC$ATTRIBUTES DLLEXPORT :: H5I_DATATYPE_F
434  !DEC$ATTRIBUTES DLLEXPORT :: H5I_DATASPACE_F
435  !DEC$ATTRIBUTES DLLEXPORT :: H5I_DATASET_F
436  !DEC$ATTRIBUTES DLLEXPORT :: H5I_ATTR_F
437  !DEC$ATTRIBUTES DLLEXPORT :: H5I_BADID_F
438  !DEC$endif
439
440  INTEGER ::  H5I_FILE_F
441  INTEGER ::  H5I_GROUP_F
442  INTEGER ::  H5I_DATATYPE_F
443  INTEGER ::  H5I_DATASPACE_F
444  INTEGER ::  H5I_DATASET_F
445  INTEGER ::  H5I_ATTR_F
446  INTEGER ::  H5I_BADID_F
447  !
448  ! H5L flags declaration
449  !
450  !DEC$if defined(BUILD_HDF5_DLL)
451  !DEC$ATTRIBUTES DLLEXPORT :: H5L_TYPE_ERROR_F
452  !DEC$ATTRIBUTES DLLEXPORT :: H5L_TYPE_HARD_F
453  !DEC$ATTRIBUTES DLLEXPORT :: H5L_TYPE_SOFT_F
454  !DEC$ATTRIBUTES DLLEXPORT :: H5L_TYPE_EXTERNAL_F
455  !DEC$ATTRIBUTES DLLEXPORT :: H5L_SAME_LOC_F
456  !DEC$ATTRIBUTES DLLEXPORT :: H5L_LINK_CLASS_T_VERS_F
457  !DEC$endif
458
459  INTEGER :: H5L_TYPE_ERROR_F
460  INTEGER :: H5L_TYPE_HARD_F
461  INTEGER :: H5L_TYPE_SOFT_F
462  INTEGER :: H5L_TYPE_EXTERNAL_F
463  INTEGER :: H5L_SAME_LOC_F
464  INTEGER :: H5L_LINK_CLASS_T_VERS_F
465  !
466  ! H5O flags declaration
467  !
468  !DEC$if defined(BUILD_HDF5_DLL)
469  !DEC$ATTRIBUTES DLLEXPORT :: H5O_COPY_SHALLOW_HIERARCHY_F
470  !DEC$ATTRIBUTES DLLEXPORT :: H5O_COPY_EXPAND_SOFT_LINK_F
471  !DEC$ATTRIBUTES DLLEXPORT :: H5O_COPY_EXPAND_EXT_LINK_F
472  !DEC$ATTRIBUTES DLLEXPORT :: H5O_COPY_EXPAND_REFERENCE_F
473  !DEC$ATTRIBUTES DLLEXPORT :: H5O_COPY_WITHOUT_ATTR_FLAG_F
474  !DEC$ATTRIBUTES DLLEXPORT :: H5O_COPY_PRESERVE_NULL_FLAG_F
475  !DEC$ATTRIBUTES DLLEXPORT :: H5O_COPY_ALL_F
476  !DEC$ATTRIBUTES DLLEXPORT :: H5O_SHMESG_NONE_FLAG_F
477  !DEC$ATTRIBUTES DLLEXPORT :: H5O_SHMESG_SDSPACE_FLAG_F
478  !DEC$ATTRIBUTES DLLEXPORT :: H5O_SHMESG_DTYPE_FLAG_F
479  !DEC$ATTRIBUTES DLLEXPORT :: H5O_SHMESG_FILL_FLAG_F
480  !DEC$ATTRIBUTES DLLEXPORT :: H5O_SHMESG_PLINE_FLAG_F
481  !DEC$ATTRIBUTES DLLEXPORT :: H5O_SHMESG_ATTR_FLAG_F
482  !DEC$ATTRIBUTES DLLEXPORT :: H5O_SHMESG_ALL_FLAG_F
483  !DEC$ATTRIBUTES DLLEXPORT :: H5O_HDR_CHUNK0_SIZE_F
484  !DEC$ATTRIBUTES DLLEXPORT :: H5O_HDR_ATTR_CRT_ORDER_TRACK_F
485  !DEC$ATTRIBUTES DLLEXPORT :: H5O_HDR_ATTR_CRT_ORDER_INDEX_F
486  !DEC$ATTRIBUTES DLLEXPORT :: H5O_HDR_ATTR_STORE_PHASE_CHA_F
487  !DEC$ATTRIBUTES DLLEXPORT :: H5O_HDR_STORE_TIMES_F
488  !DEC$ATTRIBUTES DLLEXPORT :: H5O_HDR_ALL_FLAGS_F
489  !DEC$ATTRIBUTES DLLEXPORT :: H5O_SHMESG_MAX_NINDEXES_F
490  !DEC$ATTRIBUTES DLLEXPORT :: H5O_SHMESG_MAX_LIST_SIZE_F
491  !DEC$ATTRIBUTES DLLEXPORT :: H5O_TYPE_UNKNOWN_F
492  !DEC$ATTRIBUTES DLLEXPORT :: H5O_TYPE_GROUP_F
493  !DEC$ATTRIBUTES DLLEXPORT :: H5O_TYPE_DATASET_F
494  !DEC$ATTRIBUTES DLLEXPORT :: H5O_TYPE_NAMED_DATATYPE_F
495  !DEC$ATTRIBUTES DLLEXPORT :: H5O_TYPE_NTYPES_F
496  !DEC$ATTRIBUTES DLLEXPORT :: H5O_INFO_ALL_F
497  !DEC$ATTRIBUTES DLLEXPORT :: H5O_INFO_BASIC_F
498  !DEC$ATTRIBUTES DLLEXPORT :: H5O_INFO_TIME_F
499  !DEC$ATTRIBUTES DLLEXPORT :: H5O_INFO_NUM_ATTRS_F
500  !DEC$ATTRIBUTES DLLEXPORT :: H5O_INFO_HDR_F
501  !DEC$ATTRIBUTES DLLEXPORT :: H5O_INFO_META_SIZE_F
502  !
503  !DEC$endif
504
505  INTEGER :: H5O_COPY_SHALLOW_HIERARCHY_F ! *** THESE VARIABLES DO
506  INTEGER :: H5O_COPY_EXPAND_SOFT_LINK_F  ! NOT MATCH THE C VARIABLE
507  INTEGER :: H5O_COPY_EXPAND_EXT_LINK_F   ! IN ORDER
508  INTEGER :: H5O_COPY_EXPAND_REFERENCE_F  ! TO STAY UNDER THE
509  INTEGER :: H5O_COPY_WITHOUT_ATTR_FLAG_F
510  INTEGER :: H5O_COPY_PRESERVE_NULL_FLAG_F
511  INTEGER :: H5O_COPY_ALL_F
512  INTEGER :: H5O_SHMESG_NONE_FLAG_F
513  INTEGER :: H5O_SHMESG_SDSPACE_FLAG_F
514  INTEGER :: H5O_SHMESG_DTYPE_FLAG_F
515  INTEGER :: H5O_SHMESG_FILL_FLAG_F
516  INTEGER :: H5O_SHMESG_PLINE_FLAG_F
517  INTEGER :: H5O_SHMESG_ATTR_FLAG_F
518  INTEGER :: H5O_SHMESG_ALL_FLAG_F
519  INTEGER :: H5O_HDR_CHUNK0_SIZE_F
520  INTEGER :: H5O_HDR_ATTR_CRT_ORDER_TRACK_F ! 32 CHARACTER
521  INTEGER :: H5O_HDR_ATTR_CRT_ORDER_INDEX_F ! VARIABLE
522  INTEGER :: H5O_HDR_ATTR_STORE_PHASE_CHA_F ! LENGTH ***
523  INTEGER :: H5O_HDR_STORE_TIMES_F
524  INTEGER :: H5O_HDR_ALL_FLAGS_F
525  INTEGER :: H5O_SHMESG_MAX_NINDEXES_F
526  INTEGER :: H5O_SHMESG_MAX_LIST_SIZE_F
527  INTEGER :: H5O_TYPE_UNKNOWN_F
528  INTEGER :: H5O_TYPE_GROUP_F
529  INTEGER :: H5O_TYPE_DATASET_F
530  INTEGER :: H5O_TYPE_NAMED_DATATYPE_F
531  INTEGER :: H5O_TYPE_NTYPES_F
532  INTEGER :: H5O_INFO_ALL_F
533  INTEGER :: H5O_INFO_BASIC_F
534  INTEGER :: H5O_INFO_TIME_F
535  INTEGER :: H5O_INFO_NUM_ATTRS_F
536  INTEGER :: H5O_INFO_HDR_F
537  INTEGER :: H5O_INFO_META_SIZE_F
538  !
539  ! H5P flags declaration
540  !
541  !DEC$if defined(BUILD_HDF5_DLL)
542  !DEC$ATTRIBUTES DLLEXPORT :: H5P_FILE_CREATE_F
543  !DEC$ATTRIBUTES DLLEXPORT :: H5P_FILE_ACCESS_F
544  !DEC$ATTRIBUTES DLLEXPORT :: H5P_DATASET_CREATE_F
545  !DEC$ATTRIBUTES DLLEXPORT :: H5P_DATASET_XFER_F
546  !DEC$ATTRIBUTES DLLEXPORT :: H5P_FILE_MOUNT_F
547  !DEC$ATTRIBUTES DLLEXPORT :: H5P_DEFAULT_F
548  !DEC$ATTRIBUTES DLLEXPORT :: H5P_ROOT_F
549  !DEC$ATTRIBUTES DLLEXPORT :: H5P_OBJECT_CREATE_F
550  !DEC$ATTRIBUTES DLLEXPORT :: H5P_DATASET_ACCESS_F
551  !DEC$ATTRIBUTES DLLEXPORT :: H5P_GROUP_CREATE_F
552  !DEC$ATTRIBUTES DLLEXPORT :: H5P_GROUP_ACCESS_F
553  !DEC$ATTRIBUTES DLLEXPORT :: H5P_DATATYPE_CREATE_F
554  !DEC$ATTRIBUTES DLLEXPORT :: H5P_DATATYPE_ACCESS_F
555  !DEC$ATTRIBUTES DLLEXPORT :: H5P_STRING_CREATE_F
556  !DEC$ATTRIBUTES DLLEXPORT :: H5P_ATTRIBUTE_CREATE_F
557  !DEC$ATTRIBUTES DLLEXPORT :: H5P_OBJECT_COPY_F
558  !DEC$ATTRIBUTES DLLEXPORT :: H5P_LINK_CREATE_F
559  !DEC$ATTRIBUTES DLLEXPORT :: H5P_LINK_ACCESS_F
560  !DEC$ATTRIBUTES DLLEXPORT :: H5P_CRT_ORDER_INDEXED_F
561  !DEC$ATTRIBUTES DLLEXPORT :: H5P_CRT_ORDER_TRACKED_F
562  !DEC$endif
563
564  INTEGER(HID_T) :: H5P_FILE_CREATE_F
565  INTEGER(HID_T) :: H5P_FILE_ACCESS_F
566  INTEGER(HID_T) :: H5P_DATASET_CREATE_F
567  INTEGER(HID_T) :: H5P_DATASET_XFER_F
568  INTEGER(HID_T) :: H5P_FILE_MOUNT_F
569  INTEGER(HID_T) :: H5P_DEFAULT_F
570  INTEGER(HID_T) :: H5P_ROOT_F
571  INTEGER(HID_T) :: H5P_OBJECT_CREATE_F
572  INTEGER(HID_T) :: H5P_DATASET_ACCESS_F
573  INTEGER(HID_T) :: H5P_GROUP_CREATE_F
574  INTEGER(HID_T) :: H5P_GROUP_ACCESS_F
575  INTEGER(HID_T) :: H5P_DATATYPE_CREATE_F
576  INTEGER(HID_T) :: H5P_DATATYPE_ACCESS_F
577  INTEGER(HID_T) :: H5P_STRING_CREATE_F
578  INTEGER(HID_T) :: H5P_ATTRIBUTE_CREATE_F
579  INTEGER(HID_T) :: H5P_OBJECT_COPY_F
580  INTEGER(HID_T) :: H5P_LINK_CREATE_F
581  INTEGER(HID_T) :: H5P_LINK_ACCESS_F
582
583  INTEGER :: H5P_CRT_ORDER_INDEXED_F
584  INTEGER :: H5P_CRT_ORDER_TRACKED_F
585  !
586  ! H5R flags declaration
587  !
588  !DEC$if defined(BUILD_HDF5_DLL)
589  !DEC$ATTRIBUTES DLLEXPORT :: H5R_OBJECT_F
590  !DEC$ATTRIBUTES DLLEXPORT :: H5R_DATASET_REGION_F
591  !DEC$endif
592
593  INTEGER :: H5R_OBJECT_F
594  INTEGER :: H5R_DATASET_REGION_F
595  !
596  ! H5S flags declaration
597  !
598  !DEC$if defined(BUILD_HDF5_DLL)
599  !DEC$ATTRIBUTES DLLEXPORT :: H5S_UNLIMITED_F
600  !DEC$ATTRIBUTES DLLEXPORT :: H5S_ALL_F
601  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SCALAR_F
602  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SIMPLE_F
603  !DEC$ATTRIBUTES DLLEXPORT :: H5S_NULL_F
604  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SELECT_NOOP_F
605  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SELECT_SET_F
606  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SELECT_OR_F
607  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SELECT_AND_F
608  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SELECT_XOR_F
609  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SELECT_NOTB_F
610  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SELECT_NOTA_F
611  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SELECT_APPEND_F
612  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SELECT_PREPEND_F
613  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SELECT_INVALID_F
614  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SEL_ERROR_F
615  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SEL_NONE_F
616  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SEL_POINTS_F
617  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SEL_HYPERSLABS_F
618  !DEC$ATTRIBUTES DLLEXPORT :: H5S_SEL_ALL_F
619  !DEC$endif
620
621  INTEGER(HSIZE_T) :: H5S_UNLIMITED_F
622
623  INTEGER(HID_T) :: H5S_ALL_F
624
625  INTEGER :: H5S_SCALAR_F
626  INTEGER :: H5S_SIMPLE_F
627  INTEGER :: H5S_NULL_F
628
629  INTEGER :: H5S_SELECT_NOOP_F
630  INTEGER :: H5S_SELECT_SET_F
631  INTEGER :: H5S_SELECT_OR_F
632  INTEGER :: H5S_SELECT_AND_F
633  INTEGER :: H5S_SELECT_XOR_F
634  INTEGER :: H5S_SELECT_NOTB_F
635  INTEGER :: H5S_SELECT_NOTA_F
636  INTEGER :: H5S_SELECT_APPEND_F
637  INTEGER :: H5S_SELECT_PREPEND_F
638  INTEGER :: H5S_SELECT_INVALID_F
639
640  INTEGER :: H5S_SEL_ERROR_F
641  INTEGER :: H5S_SEL_NONE_F
642  INTEGER :: H5S_SEL_POINTS_F
643  INTEGER :: H5S_SEL_HYPERSLABS_F
644  INTEGER :: H5S_SEL_ALL_F
645  !
646  ! H5T flags declaration
647  !
648  !DEC$if defined(BUILD_HDF5_DLL)
649  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NO_CLASS_F
650  !DEC$ATTRIBUTES DLLEXPORT :: H5T_INTEGER_F
651  !DEC$ATTRIBUTES DLLEXPORT :: H5T_FLOAT_F
652  !DEC$ATTRIBUTES DLLEXPORT :: H5T_TIME_F
653  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STRING_F
654  !DEC$ATTRIBUTES DLLEXPORT :: H5T_BITFIELD_F
655  !DEC$ATTRIBUTES DLLEXPORT :: H5T_OPAQUE_F
656  !DEC$ATTRIBUTES DLLEXPORT :: H5T_COMPOUND_F
657  !DEC$ATTRIBUTES DLLEXPORT :: H5T_REFERENCE_F
658  !DEC$ATTRIBUTES DLLEXPORT :: H5T_ENUM_F
659  !DEC$ATTRIBUTES DLLEXPORT :: H5T_VLEN_F
660  !DEC$ATTRIBUTES DLLEXPORT :: H5T_ARRAY_F
661  !DEC$ATTRIBUTES DLLEXPORT :: H5T_ORDER_LE_F
662  !DEC$ATTRIBUTES DLLEXPORT :: H5T_ORDER_BE_F
663  !DEC$ATTRIBUTES DLLEXPORT :: H5T_ORDER_VAX_F
664  !DEC$ATTRIBUTES DLLEXPORT :: H5T_ORDER_NONE_F
665  !DEC$ATTRIBUTES DLLEXPORT :: H5T_ORDER_MIXED_F
666  !DEC$ATTRIBUTES DLLEXPORT :: H5T_PAD_ZERO_F
667  !DEC$ATTRIBUTES DLLEXPORT :: H5T_PAD_ONE_F
668  !DEC$ATTRIBUTES DLLEXPORT :: H5T_PAD_BACKGROUND_F
669  !DEC$ATTRIBUTES DLLEXPORT :: H5T_PAD_ERROR_F
670  !DEC$ATTRIBUTES DLLEXPORT :: H5T_SGN_NONE_F
671  !DEC$ATTRIBUTES DLLEXPORT :: H5T_SGN_2_F
672  !DEC$ATTRIBUTES DLLEXPORT :: H5T_SGN_ERROR_F
673  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NORM_IMPLIED_F
674  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NORM_MSBSET_F
675  !DEC$ATTRIBUTES DLLEXPORT :: H5T_NORM_NONE_F
676  !DEC$ATTRIBUTES DLLEXPORT :: H5T_CSET_ASCII_F
677  !DEC$ATTRIBUTES DLLEXPORT :: H5T_CSET_UTF8_F
678  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STR_NULLTERM_F
679  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STR_NULLPAD_F
680  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STR_SPACEPAD_F
681  !DEC$ATTRIBUTES DLLEXPORT :: H5T_STR_ERROR_F
682  !DEC$ATTRIBUTES DLLEXPORT :: H5T_DIR_ASCEND_F
683  !DEC$ATTRIBUTES DLLEXPORT :: H5T_DIR_DESCEND_F
684  !DEC$endif
685
686  INTEGER :: H5T_NO_CLASS_F
687  INTEGER :: H5T_INTEGER_F
688  INTEGER :: H5T_FLOAT_F
689  INTEGER :: H5T_TIME_F
690  INTEGER :: H5T_STRING_F
691  INTEGER :: H5T_BITFIELD_F
692  INTEGER :: H5T_OPAQUE_F
693  INTEGER :: H5T_COMPOUND_F
694  INTEGER :: H5T_REFERENCE_F
695  INTEGER :: H5T_ENUM_F
696  INTEGER :: H5T_VLEN_F
697  INTEGER :: H5T_ARRAY_F
698  INTEGER :: H5T_ORDER_LE_F
699  INTEGER :: H5T_ORDER_BE_F
700  INTEGER :: H5T_ORDER_VAX_F
701  INTEGER :: H5T_ORDER_NONE_F
702  INTEGER :: H5T_ORDER_MIXED_F
703  INTEGER :: H5T_PAD_ZERO_F
704  INTEGER :: H5T_PAD_ONE_F
705  INTEGER :: H5T_PAD_BACKGROUND_F
706  INTEGER :: H5T_PAD_ERROR_F
707  INTEGER :: H5T_SGN_NONE_F
708  INTEGER :: H5T_SGN_2_F
709  INTEGER :: H5T_SGN_ERROR_F
710  INTEGER :: H5T_NORM_IMPLIED_F
711  INTEGER :: H5T_NORM_MSBSET_F
712  INTEGER :: H5T_NORM_NONE_F
713  INTEGER :: H5T_CSET_ASCII_F
714  INTEGER :: H5T_CSET_UTF8_F
715  INTEGER :: H5T_STR_NULLTERM_F
716  INTEGER :: H5T_STR_NULLPAD_F
717  INTEGER :: H5T_STR_SPACEPAD_F
718  INTEGER :: H5T_STR_ERROR_F
719  INTEGER :: H5T_DIR_ASCEND_F
720  INTEGER :: H5T_DIR_DESCEND_F
721  !
722  ! H5Z flags declaration
723  !
724  !DEC$if defined(BUILD_HDF5_DLL)
725  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_FILTER_ERROR_F
726  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_FILTER_NONE_F
727  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_FILTER_ALL_F
728  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_FILTER_DEFLATE_F
729  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_FILTER_SHUFFLE_F
730  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_FILTER_FLETCHER32_F
731  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_FILTER_SZIP_F
732  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_ERROR_EDC_F
733  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_DISABLE_EDC_F
734  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_ENABLE_EDC_F
735  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_NO_EDC_F
736  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_FLAG_OPTIONAL_F
737  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_FILTER_ENCODE_ENABLED_F
738  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_FILTER_DECODE_ENABLED_F
739  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_FILTER_NBIT_F
740  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_FILTER_SCALEOFFSET_F
741  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_SO_FLOAT_DSCALE_F
742  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_SO_FLOAT_ESCALE_F
743  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_SO_INT_F
744  !DEC$ATTRIBUTES DLLEXPORT :: H5Z_SO_INT_MINBITS_DEFAULT_F
745  !DEC$endif
746
747  INTEGER :: H5Z_FILTER_ERROR_F
748  INTEGER :: H5Z_FILTER_NONE_F
749  INTEGER :: H5Z_FILTER_ALL_F
750  INTEGER :: H5Z_FILTER_DEFLATE_F
751  INTEGER :: H5Z_FILTER_SHUFFLE_F
752  INTEGER :: H5Z_FILTER_FLETCHER32_F
753  INTEGER :: H5Z_FILTER_SZIP_F
754  INTEGER :: H5Z_ERROR_EDC_F
755  INTEGER :: H5Z_DISABLE_EDC_F
756  INTEGER :: H5Z_ENABLE_EDC_F
757  INTEGER :: H5Z_NO_EDC_F
758  INTEGER :: H5Z_FLAG_OPTIONAL_F
759  INTEGER :: H5Z_FILTER_ENCODE_ENABLED_F
760  INTEGER :: H5Z_FILTER_DECODE_ENABLED_F
761  INTEGER :: H5Z_FILTER_NBIT_F
762  INTEGER :: H5Z_FILTER_SCALEOFFSET_F
763  INTEGER :: H5Z_SO_FLOAT_DSCALE_F
764  INTEGER :: H5Z_SO_FLOAT_ESCALE_F
765  INTEGER :: H5Z_SO_INT_F
766  INTEGER :: H5Z_SO_INT_MINBITS_DEFAULT_F
767  !
768  ! H5 Library flags declaration
769  !
770  !DEC$if defined(BUILD_HDF5_DLL)
771  !DEC$ATTRIBUTES DLLEXPORT :: H5_SZIP_EC_OM_F
772  !DEC$ATTRIBUTES DLLEXPORT :: H5_SZIP_NN_OM_F
773  !DEC$endif
774
775  INTEGER :: H5_SZIP_EC_OM_F
776  INTEGER :: H5_SZIP_NN_OM_F
777
778CONTAINS
779
780  ! Copy a c string to a Fortran string
781
782  SUBROUTINE H5_Fortran_string_c2f(c_string, f_string)
783
784    USE, INTRINSIC :: ISO_C_BINDING
785    IMPLICIT NONE
786    CHARACTER(KIND=C_CHAR, LEN=*), INTENT(IN) :: c_string
787    CHARACTER(LEN=*), INTENT(OUT) :: f_string
788    INTEGER(SIZE_T) :: c_len, f_len
789
790    ! Find the length of the C string by locating the null terminator
791    c_len = MAX(INDEX(c_string,C_NULL_CHAR, KIND=SIZE_T)-1_SIZE_T,1_SIZE_T)
792    ! Find the length of the Fortran string
793    f_len = LEN(f_string)
794
795    ! CASE (1): C string is equal to or larger than Fortran character buffer,
796    !           so fill the entire Fortran buffer.
797    IF(c_len.GE.f_len)THEN !
798       f_string(1:f_len) = c_string(1:f_len)
799
800    ! CASE (2): C string is smaller than Fortran character buffer,
801    !           so copy C string and blank pad remaining characters.
802    ELSE
803       f_string(1:c_len) = c_string(1:c_len)
804       f_string(c_len+1:f_len) =' '
805    ENDIF
806  END SUBROUTINE H5_Fortran_string_c2f
807
808  SUBROUTINE H5_Fortran_string_f2c(f_string, c_string)
809
810    USE, INTRINSIC :: ISO_C_BINDING
811    IMPLICIT NONE
812    CHARACTER(LEN=*), INTENT(IN) :: f_string
813    CHARACTER(KIND=C_CHAR, LEN=*), INTENT(OUT) :: c_string
814
815    c_string = TRIM(f_string)//C_NULL_CHAR
816
817  END SUBROUTINE H5_Fortran_string_f2c
818
819
820! Copy Fortran string to C charater array, assuming the C array is one-char
821! longer for the terminating null char.
822! fstring : the Fortran input string
823! cstring : the C output string (with memory already allocated)
824!!$subroutine MPIR_Fortran_string_f2c(fstring, cstring)
825!!$    implicit none
826!!$    character(len=*), intent(in) :: fstring
827!!$    character(kind=c_char), intent(out) :: cstring(:)
828!!$    integer :: i, j
829!!$    logical :: met_non_blank
830!!$
831!!$    ! Trim the leading and trailing blank characters
832!!$    j = 1
833!!$    met_non_blank = .false.
834!!$    do i = 1, len_trim(fstring)
835!!$        if (met_non_blank) then
836!!$            cstring(j) = fstring(i:i)
837!!$            j = j + 1
838!!$        else if (fstring(i:i) /= ' ') then
839!!$            met_non_blank = .true.
840!!$            cstring(j) = fstring(i:i)
841!!$            j = j + 1
842!!$        end if
843!!$    end do
844!!$
845!!$    cstring(j) = C_NULL_CHAR
846!!$end subroutine MPIR_Fortran_string_f2c
847!!$
848!!$! Copy C charater array to Fortran string
849!!$subroutine MPIR_Fortran_string_c2f(cstring, fstring)
850!!$    implicit none
851!!$    character(kind=c_char), intent(in) :: cstring(:)
852!!$    character(len=*), intent(out) :: fstring
853!!$    integer :: i, j, length
854!!$
855!!$    i = 1
856!!$    do while (cstring(i) /= C_NULL_CHAR)
857!!$        fstring(i:i) = cstring(i)
858!!$        i = i + 1
859!!$    end do
860!!$
861!!$    ! Zero out the trailing characters
862!!$    length = len(fstring)
863!!$    do j = i, length
864!!$        fstring(j:j) = ' '
865!!$    end do
866!!$end subroutine MPIR_Fortran_string_c2f
867
868END MODULE H5GLOBAL
869
870