source: XIOS3/trunk/src/interface/fortran/idata.F90 @ 2620

Last change on this file since 2620 was 2620, checked in by jderouillat, 4 months ago

Modify fortran-C interfaces to manage logical-bool conversion, the optimizations of OneAPI could produce bugs regarding the logical-bool encodings.

  • Property copyright set to
    Software name : XIOS (Xml I/O Server)
    http://forge.ipsl.jussieu.fr/ioserver
    Creation date : January 2009
    Licence : CeCCIL version2
    see license file in root directory : Licence_CeCILL_V2-en.txt
    or http://www.cecill.info/licences/Licence_CeCILL_V2-en.html
    Holder : CEA/LSCE (Laboratoire des Sciences du CLimat et de l'Environnement)
    CNRS/IPSL (Institut Pierre Simon Laplace)
    Project Manager : Yann Meurdesoif
    yann.meurdesoif@cea.fr
File size: 72.4 KB
Line 
1#include "xios_fortran_prefix.hpp"
2
3MODULE IDATA
4   USE, INTRINSIC :: ISO_C_BINDING
5   USE ICONTEXT
6   USE IFIELD
7   USE LOGICAL_BOOL_CONVERSION
8
9   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
10
11      SUBROUTINE  cxios_init_server() BIND(C)
12      END SUBROUTINE cxios_init_server
13
14     SUBROUTINE cxios_init_client(client_id, len_client_id, f_local_comm, f_return_comm) BIND(C)
15         USE ISO_C_BINDING
16         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: client_id
17         INTEGER  (kind = C_INT)     , VALUE        :: len_client_id
18         INTEGER  (kind = C_INT)                    :: f_local_comm
19         INTEGER  (kind = C_INT)                    :: f_return_comm
20      END SUBROUTINE cxios_init_client
21
22      SUBROUTINE  cxios_context_initialize(context_id,len_context_id,f_comm) BIND(C)
23         USE ISO_C_BINDING
24         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: context_id
25         INTEGER  (kind = C_INT)     , VALUE        :: len_context_id
26         INTEGER  (kind = C_INT)                    :: f_comm
27      END SUBROUTINE cxios_context_initialize
28
29      SUBROUTINE cxios_context_is_initialized(context_id,len_context_id,initialized) BIND(C)
30         USE ISO_C_BINDING
31         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: context_id
32         INTEGER  (kind = C_INT)     , VALUE        :: len_context_id
33         LOGICAL  (kind = C_BOOL)                   :: initialized
34      END SUBROUTINE cxios_context_is_initialized
35
36
37       SUBROUTINE  cxios_context_close_definition() BIND(C)
38         USE ISO_C_BINDING
39      END SUBROUTINE cxios_context_close_definition
40
41
42       SUBROUTINE  cxios_context_finalize() BIND(C)
43         USE ISO_C_BINDING
44      END SUBROUTINE cxios_context_finalize
45
46      SUBROUTINE  cxios_oasis_enddef() BIND(C)
47         USE ISO_C_BINDING
48      END SUBROUTINE cxios_oasis_enddef
49     
50      SUBROUTINE  cxios_finalize() BIND(C)
51      END SUBROUTINE cxios_finalize
52
53      SUBROUTINE  cxios_solve_inheritance() BIND(C)
54      END SUBROUTINE cxios_solve_inheritance
55
56      SUBROUTINE cxios_write_data_k80_hdl(field_hdl, data_k8, data_Xsize) BIND(C)
57         USE ISO_C_BINDING
58         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
59         REAL     (kind = C_DOUBLE)               :: data_k8
60         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
61      END SUBROUTINE cxios_write_data_k80_hdl
62
63      SUBROUTINE cxios_write_data_k80(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
64         USE ISO_C_BINDING
65         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
66         REAL     (kind = C_DOUBLE)               :: data_k8
67         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
68         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
69      END SUBROUTINE cxios_write_data_k80
70
71      SUBROUTINE cxios_write_data_k81_hdl(field_hdl, data_k8, data_Xsize) BIND(C)
72         USE ISO_C_BINDING
73         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
74         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
75         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
76      END SUBROUTINE cxios_write_data_k81_hdl
77
78      SUBROUTINE cxios_write_data_k81(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
79         USE ISO_C_BINDING
80         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
81         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
82         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
83         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
84      END SUBROUTINE cxios_write_data_k81
85
86      SUBROUTINE cxios_write_data_k82_hdl(field_hdl, data_k8, data_Xsize, data_Ysize) BIND(C)
87         USE ISO_C_BINDING
88         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
89         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
90         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
91      END SUBROUTINE cxios_write_data_k82_hdl
92
93      SUBROUTINE cxios_write_data_k82(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize) BIND(C)
94         USE ISO_C_BINDING
95         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
96         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
97         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
98         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
99      END SUBROUTINE cxios_write_data_k82
100
101      SUBROUTINE cxios_write_data_k83_hdl(field_hdl, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C)
102         USE ISO_C_BINDING
103         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
104         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
105         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
106      END SUBROUTINE cxios_write_data_k83_hdl
107
108      SUBROUTINE cxios_write_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C)
109         USE ISO_C_BINDING
110         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
111         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
112         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
113         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
114      END SUBROUTINE cxios_write_data_k83
115
116      SUBROUTINE cxios_write_data_k84_hdl(field_hdl, data_k8, &
117                                      data_0size, data_1size, data_2size, &
118                                      data_3size) BIND(C)
119         USE ISO_C_BINDING
120         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
121         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
122         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
123         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
124      END SUBROUTINE cxios_write_data_k84_hdl
125
126      SUBROUTINE cxios_write_data_k84(fieldid, fieldid_size, data_k8, &
127                                      data_0size, data_1size, data_2size, &
128                                      data_3size) BIND(C)
129         USE ISO_C_BINDING
130         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
131         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
132         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
133         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
134         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
135      END SUBROUTINE cxios_write_data_k84
136
137      SUBROUTINE cxios_write_data_k85_hdl(field_hdl, data_k8, &
138                                      data_0size, data_1size, data_2size, &
139                                      data_3size, data_4size) BIND(C)
140         USE ISO_C_BINDING
141         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
142         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
143         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
144         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
145      END SUBROUTINE cxios_write_data_k85_hdl
146
147      SUBROUTINE cxios_write_data_k85(fieldid, fieldid_size, data_k8, &
148                                      data_0size, data_1size, data_2size, &
149                                      data_3size, data_4size) BIND(C)
150         USE ISO_C_BINDING
151         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
152         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
153         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
154         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
155         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
156      END SUBROUTINE cxios_write_data_k85
157
158      SUBROUTINE cxios_write_data_k86_hdl(field_hdl, data_k8, &
159                                      data_0size, data_1size, data_2size, &
160                                      data_3size, data_4size, data_5size) BIND(C)
161         USE ISO_C_BINDING
162         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
163         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
164         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
165         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
166      END SUBROUTINE cxios_write_data_k86_hdl
167
168      SUBROUTINE cxios_write_data_k86(fieldid, fieldid_size, data_k8, &
169                                      data_0size, data_1size, data_2size, &
170                                      data_3size, data_4size, data_5size) BIND(C)
171         USE ISO_C_BINDING
172         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
173         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
174         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
175         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
176         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
177      END SUBROUTINE cxios_write_data_k86
178
179      SUBROUTINE cxios_write_data_k87_hdl(field_hdl, data_k8, &
180                                      data_0size, data_1size, data_2size, &
181                                      data_3size, data_4size, data_5size, &
182                                      data_6size) BIND(C)
183         USE ISO_C_BINDING
184         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
185         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
186         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
187         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
188         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
189      END SUBROUTINE cxios_write_data_k87_hdl
190
191      SUBROUTINE cxios_write_data_k87(fieldid, fieldid_size, data_k8, &
192                                      data_0size, data_1size, data_2size, &
193                                      data_3size, data_4size, data_5size, &
194                                      data_6size) BIND(C)
195         USE ISO_C_BINDING
196         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
197         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
198         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
199         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
200         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
201         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
202      END SUBROUTINE cxios_write_data_k87
203
204      SUBROUTINE cxios_write_data_k40_hdl(field_hdl, data_k4, data_Xsize) BIND(C)
205         USE ISO_C_BINDING
206         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
207         REAL     (kind = C_FLOAT)                :: data_k4
208         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
209      END SUBROUTINE cxios_write_data_k40_hdl
210
211      SUBROUTINE cxios_write_data_k40(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
212         USE ISO_C_BINDING
213         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
214         REAL     (kind = C_FLOAT)                :: data_k4
215         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
216         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
217      END SUBROUTINE cxios_write_data_k40
218
219      SUBROUTINE cxios_write_data_k41_hdl(field_hdl, data_k4, data_Xsize) BIND(C)
220         USE ISO_C_BINDING
221         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
222         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
223         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
224      END SUBROUTINE cxios_write_data_k41_hdl
225
226      SUBROUTINE cxios_write_data_k41(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
227         USE ISO_C_BINDING
228         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
229         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
230         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
231         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
232      END SUBROUTINE cxios_write_data_k41
233
234      SUBROUTINE cxios_write_data_k42_hdl(field_hdl, data_k4, data_Xsize, data_Ysize) BIND(C)
235         USE ISO_C_BINDING
236         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
237         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
238         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
239      END SUBROUTINE cxios_write_data_k42_hdl
240 
241      SUBROUTINE cxios_write_data_k42(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize) BIND(C)
242         USE ISO_C_BINDING
243         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
244         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
245         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
246         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
247      END SUBROUTINE cxios_write_data_k42
248
249      SUBROUTINE cxios_write_data_k43_hdl(field_hdl, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C)
250         USE ISO_C_BINDING
251         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
252         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
253         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
254      END SUBROUTINE cxios_write_data_k43_hdl
255
256      SUBROUTINE cxios_write_data_k43(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C)
257         USE ISO_C_BINDING
258         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
259         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
260         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
261         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
262      END SUBROUTINE cxios_write_data_k43
263
264      SUBROUTINE cxios_write_data_k44_hdl(field_hdl, data_k4, &
265                                      data_0size, data_1size, data_2size, &
266                                      data_3size) BIND(C)
267         USE ISO_C_BINDING
268         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
269         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
270         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
271         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
272      END SUBROUTINE cxios_write_data_k44_hdl
273
274      SUBROUTINE cxios_write_data_k44(fieldid, fieldid_size, data_k4, &
275                                      data_0size, data_1size, data_2size, &
276                                      data_3size) BIND(C)
277         USE ISO_C_BINDING
278         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
279         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
280         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
281         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
282         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
283      END SUBROUTINE cxios_write_data_k44
284
285      SUBROUTINE cxios_write_data_k45_hdl(field_hdl, data_k4, &
286                                      data_0size, data_1size, data_2size, &
287                                      data_3size, data_4size) BIND(C)
288         USE ISO_C_BINDING
289         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
290         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
291         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
292         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
293      END SUBROUTINE cxios_write_data_k45_hdl
294
295      SUBROUTINE cxios_write_data_k45(fieldid, fieldid_size, data_k4, &
296                                      data_0size, data_1size, data_2size, &
297                                      data_3size, data_4size) BIND(C)
298         USE ISO_C_BINDING
299         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
300         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
301         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
302         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
303         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
304      END SUBROUTINE cxios_write_data_k45
305
306      SUBROUTINE cxios_write_data_k46_hdl(field_hdl, data_k4, &
307                                      data_0size, data_1size, data_2size, &
308                                      data_3size, data_4size, data_5size) BIND(C)
309         USE ISO_C_BINDING
310         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
311         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
312         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
313         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
314      END SUBROUTINE cxios_write_data_k46_hdl
315 
316      SUBROUTINE cxios_write_data_k46(fieldid, fieldid_size, data_k4, &
317                                      data_0size, data_1size, data_2size, &
318                                      data_3size, data_4size, data_5size) BIND(C)
319         USE ISO_C_BINDING
320         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
321         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
322         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
323         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
324         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
325      END SUBROUTINE cxios_write_data_k46
326
327      SUBROUTINE cxios_write_data_k47_hdl(field_hdl, data_k4, &
328                                      data_0size, data_1size, data_2size, &
329                                      data_3size, data_4size, data_5size, &
330                                      data_6size) BIND(C)
331         USE ISO_C_BINDING
332         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
333         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
334         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
335         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
336         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
337      END SUBROUTINE cxios_write_data_k47_hdl
338
339      SUBROUTINE cxios_write_data_k47(fieldid, fieldid_size, data_k4, &
340                                      data_0size, data_1size, data_2size, &
341                                      data_3size, data_4size, data_5size, &
342                                      data_6size) BIND(C)
343         USE ISO_C_BINDING
344         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
345         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
346         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
347         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
348         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
349         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
350      END SUBROUTINE cxios_write_data_k47
351
352
353      ! Read data
354      SUBROUTINE cxios_read_data_k80_hdl(field_hdl, data_k8, data_Xsize) BIND(C)
355         USE ISO_C_BINDING
356         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
357         REAL     (kind = C_DOUBLE)               :: data_k8
358         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
359      END SUBROUTINE cxios_read_data_k80_hdl
360
361      SUBROUTINE cxios_read_data_k80(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
362         USE ISO_C_BINDING
363         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
364         REAL     (kind = C_DOUBLE)               :: data_k8
365         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
366         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
367      END SUBROUTINE cxios_read_data_k80
368
369      SUBROUTINE cxios_read_data_k81_hdl(field_hdl, data_k8, data_Xsize) BIND(C)
370         USE ISO_C_BINDING
371         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
372         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
373         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
374      END SUBROUTINE cxios_read_data_k81_hdl
375
376      SUBROUTINE cxios_read_data_k81(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
377         USE ISO_C_BINDING
378         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
379         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
380         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
381         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
382      END SUBROUTINE cxios_read_data_k81
383
384      SUBROUTINE cxios_read_data_k82_hdl(field_hdl, data_k8, data_Xsize, data_Ysize) BIND(C)
385         USE ISO_C_BINDING
386         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
387         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
388         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
389      END SUBROUTINE cxios_read_data_k82_hdl
390
391      SUBROUTINE cxios_read_data_k82(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize) BIND(C)
392         USE ISO_C_BINDING
393         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
394         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
395         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
396         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
397      END SUBROUTINE cxios_read_data_k82
398
399      SUBROUTINE cxios_read_data_k83_hdl(field_hdl, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C)
400         USE ISO_C_BINDING
401         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
402         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
403         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
404      END SUBROUTINE cxios_read_data_k83_hdl
405
406       SUBROUTINE cxios_read_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C)
407         USE ISO_C_BINDING
408         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
409         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
410         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
411         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
412      END SUBROUTINE cxios_read_data_k83
413
414     SUBROUTINE cxios_read_data_k84_hdl(field_hdl, data_k8, &
415                                      data_0size, data_1size, data_2size, &
416                                      data_3size) BIND(C)
417         USE ISO_C_BINDING
418         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
419         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
420         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
421         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
422      END SUBROUTINE cxios_read_data_k84_hdl
423
424     SUBROUTINE cxios_read_data_k84(fieldid, fieldid_size, data_k8, &
425                                      data_0size, data_1size, data_2size, &
426                                      data_3size) BIND(C)
427         USE ISO_C_BINDING
428         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
429         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
430         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
431         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
432         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
433      END SUBROUTINE cxios_read_data_k84
434
435      SUBROUTINE cxios_read_data_k85_hdl(field_hdl, data_k8, &
436                                      data_0size, data_1size, data_2size, &
437                                      data_3size, data_4size) BIND(C)
438         USE ISO_C_BINDING
439         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
440         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
441         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
442         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
443      END SUBROUTINE cxios_read_data_k85_hdl
444
445      SUBROUTINE cxios_read_data_k85(fieldid, fieldid_size, data_k8, &
446                                      data_0size, data_1size, data_2size, &
447                                      data_3size, data_4size) BIND(C)
448         USE ISO_C_BINDING
449         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
450         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
451         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
452         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
453         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
454      END SUBROUTINE cxios_read_data_k85
455
456      SUBROUTINE cxios_read_data_k86_hdl(field_hdl, data_k8, &
457                                      data_0size, data_1size, data_2size, &
458                                      data_3size, data_4size, data_5size) BIND(C)
459         USE ISO_C_BINDING
460         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
461         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
462         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
463         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
464      END SUBROUTINE cxios_read_data_k86_hdl
465 
466      SUBROUTINE cxios_read_data_k86(fieldid, fieldid_size, data_k8, &
467                                      data_0size, data_1size, data_2size, &
468                                      data_3size, data_4size, data_5size) BIND(C)
469         USE ISO_C_BINDING
470         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
471         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
472         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
473         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
474         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
475      END SUBROUTINE cxios_read_data_k86
476
477      SUBROUTINE cxios_read_data_k87_hdl(field_hdl, data_k8, &
478                                      data_0size, data_1size, data_2size, &
479                                      data_3size, data_4size, data_5size, &
480                                      data_6size) BIND(C)
481         USE ISO_C_BINDING
482         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
483         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
484         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
485         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
486         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
487      END SUBROUTINE cxios_read_data_k87_hdl
488
489      SUBROUTINE cxios_read_data_k87(fieldid, fieldid_size, data_k8, &
490                                      data_0size, data_1size, data_2size, &
491                                      data_3size, data_4size, data_5size, &
492                                      data_6size) BIND(C)
493         USE ISO_C_BINDING
494         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
495         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
496         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
497         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
498         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
499         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
500      END SUBROUTINE cxios_read_data_k87
501
502      SUBROUTINE cxios_read_data_k40_hdl(field_hdl, data_k4, data_Xsize) BIND(C)
503         USE ISO_C_BINDING
504         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
505         REAL     (kind = C_FLOAT)                :: data_k4
506         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
507      END SUBROUTINE cxios_read_data_k40_hdl
508
509      SUBROUTINE cxios_read_data_k40(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
510         USE ISO_C_BINDING
511         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
512         REAL     (kind = C_FLOAT)                :: data_k4
513         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
514         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
515      END SUBROUTINE cxios_read_data_k40
516
517      SUBROUTINE cxios_read_data_k41_hdl(field_hdl, data_k4, data_Xsize) BIND(C)
518         USE ISO_C_BINDING
519         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
520         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
521         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
522      END SUBROUTINE cxios_read_data_k41_hdl
523
524      SUBROUTINE cxios_read_data_k41(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
525         USE ISO_C_BINDING
526         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
527         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
528         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
529         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
530      END SUBROUTINE cxios_read_data_k41
531
532      SUBROUTINE cxios_read_data_k42_hdl(field_hdl, data_k4, data_Xsize, data_Ysize) BIND(C)
533         USE ISO_C_BINDING
534         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
535         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
536         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
537      END SUBROUTINE cxios_read_data_k42_hdl
538
539      SUBROUTINE cxios_read_data_k42(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize) BIND(C)
540         USE ISO_C_BINDING
541         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
542         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
543         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
544         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
545      END SUBROUTINE cxios_read_data_k42
546
547      SUBROUTINE cxios_read_data_k43_hdl(field_hdl, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C)
548         USE ISO_C_BINDING
549         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
550         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
551         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
552      END SUBROUTINE cxios_read_data_k43_hdl
553
554      SUBROUTINE cxios_read_data_k43(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C)
555         USE ISO_C_BINDING
556         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
557         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
558         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
559         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
560      END SUBROUTINE cxios_read_data_k43
561
562      SUBROUTINE cxios_read_data_k44_hdl(field_hdl, data_k4, &
563                                      data_0size, data_1size, data_2size, &
564                                      data_3size) BIND(C)
565         USE ISO_C_BINDING
566         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
567         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
568         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
569         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
570      END SUBROUTINE cxios_read_data_k44_hdl
571 
572      SUBROUTINE cxios_read_data_k44(fieldid, fieldid_size, data_k4, &
573                                      data_0size, data_1size, data_2size, &
574                                      data_3size) BIND(C)
575         USE ISO_C_BINDING
576         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
577         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
578         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
579         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
580         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
581      END SUBROUTINE cxios_read_data_k44
582
583      SUBROUTINE cxios_read_data_k45_hdl(field_hdl, data_k4, &
584                                      data_0size, data_1size, data_2size, &
585                                      data_3size, data_4size) BIND(C)
586         USE ISO_C_BINDING
587         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
588         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
589         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
590         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
591      END SUBROUTINE cxios_read_data_k45_hdl
592
593      SUBROUTINE cxios_read_data_k45(fieldid, fieldid_size, data_k4, &
594                                      data_0size, data_1size, data_2size, &
595                                      data_3size, data_4size) BIND(C)
596         USE ISO_C_BINDING
597         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
598         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
599         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
600         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
601         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
602      END SUBROUTINE cxios_read_data_k45
603
604      SUBROUTINE cxios_read_data_k46_hdl(field_hdl, data_k4, &
605                                      data_0size, data_1size, data_2size, &
606                                      data_3size, data_4size, data_5size) BIND(C)
607         USE ISO_C_BINDING
608         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
609         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
610         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
611         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
612      END SUBROUTINE cxios_read_data_k46_hdl
613 
614      SUBROUTINE cxios_read_data_k46(fieldid, fieldid_size, data_k4, &
615                                      data_0size, data_1size, data_2size, &
616                                      data_3size, data_4size, data_5size) BIND(C)
617         USE ISO_C_BINDING
618         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
619         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
620         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
621         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
622         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
623      END SUBROUTINE cxios_read_data_k46
624
625      SUBROUTINE cxios_read_data_k47_hdl(field_hdl, data_k4, &
626                                      data_0size, data_1size, data_2size, &
627                                      data_3size, data_4size, data_5size, &
628                                      data_6size) BIND(C)
629         USE ISO_C_BINDING
630         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
631         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
632         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
633         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
634         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
635      END SUBROUTINE cxios_read_data_k47_hdl
636
637      SUBROUTINE cxios_read_data_k47(fieldid, fieldid_size, data_k4, &
638                                      data_0size, data_1size, data_2size, &
639                                      data_3size, data_4size, data_5size, &
640                                      data_6size) BIND(C)
641         USE ISO_C_BINDING
642         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
643         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
644         INTEGER  (kind = C_INT)   , VALUE        :: fieldid_size
645         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
646         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
647         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
648      END SUBROUTINE cxios_read_data_k47
649
650      ! Binding C and Fortran interface of get_variable (icdata.cpp)
651      SUBROUTINE cxios_get_variable_data_k8(vardid, varid_size, data_k8, is_var_existed) BIND(C)
652         USE ISO_C_BINDING
653         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
654         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
655         REAL     (kind = C_DOUBLE)               :: data_k8
656         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
657      END SUBROUTINE cxios_get_variable_data_k8
658
659      SUBROUTINE cxios_get_variable_data_k4(vardid, varid_size, data_k4, is_var_existed) BIND(C)
660         USE ISO_C_BINDING
661         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
662         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
663         REAL     (kind = C_FLOAT)                :: data_k4
664         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
665      END SUBROUTINE cxios_get_variable_data_k4
666
667      SUBROUTINE cxios_get_variable_data_int(vardid, varid_size, data_int, is_var_existed) BIND(C)
668         USE ISO_C_BINDING
669         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
670         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
671         INTEGER  (kind = C_INT)                  :: data_int
672         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
673      END SUBROUTINE cxios_get_variable_data_int
674
675      SUBROUTINE cxios_get_variable_data_logic(vardid, varid_size, data_logic, is_var_existed) BIND(C)
676         USE ISO_C_BINDING
677         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
678         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
679         LOGICAL  (kind = C_BOOL)                 :: data_logic
680         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
681      END SUBROUTINE cxios_get_variable_data_logic
682
683      SUBROUTINE cxios_get_variable_data_char(vardid, varid_size, data_char, data_size_in, is_var_existed) BIND(C)
684         USE ISO_C_BINDING
685         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
686         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
687         INTEGER  (kind = C_INT)   , VALUE        :: data_size_in
688         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: data_char
689         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
690      END SUBROUTINE cxios_get_variable_data_char
691
692      ! Binding C and Fortran interface of set_variable (icdata.cpp)
693      SUBROUTINE cxios_set_variable_data_k8(vardid, varid_size, data_k8, is_var_existed) BIND(C)
694         USE ISO_C_BINDING
695         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
696         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
697         REAL     (kind = C_DOUBLE), VALUE        :: data_k8
698         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
699      END SUBROUTINE cxios_set_variable_data_k8
700
701      SUBROUTINE cxios_set_variable_data_k4(vardid, varid_size, data_k4, is_var_existed) BIND(C)
702         USE ISO_C_BINDING
703         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
704         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
705         REAL     (kind = C_FLOAT) , VALUE        :: data_k4
706         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
707      END SUBROUTINE cxios_set_variable_data_k4
708
709      SUBROUTINE cxios_set_variable_data_int(vardid, varid_size, data_int, is_var_existed) BIND(C)
710         USE ISO_C_BINDING
711         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
712         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
713         INTEGER  (kind = C_INT)   , VALUE        :: data_int
714         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
715      END SUBROUTINE cxios_set_variable_data_int
716
717      SUBROUTINE cxios_set_variable_data_logic(vardid, varid_size, data_logic, is_var_existed) BIND(C)
718         USE ISO_C_BINDING
719         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
720         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
721         LOGICAL  (kind = C_BOOL)       , VALUE   :: data_logic
722         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
723      END SUBROUTINE cxios_set_variable_data_logic
724
725      SUBROUTINE cxios_set_variable_data_char(vardid, varid_size, data_char, data_size_in, is_var_existed) BIND(C)
726         USE ISO_C_BINDING
727         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
728         INTEGER  (kind = C_INT)   , VALUE        :: varid_size
729         INTEGER  (kind = C_INT)   , VALUE        :: data_size_in
730         CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: data_char
731         LOGICAL  (kind = C_BOOL)                 :: is_var_existed
732      END SUBROUTINE cxios_set_variable_data_char
733
734   END INTERFACE
735
736
737   CONTAINS ! Fonctions disponibles pour les utilisateurs.
738
739   SUBROUTINE  xios(init_server)()
740   IMPLICIT NONE
741     CALL cxios_init_server()
742   END SUBROUTINE xios(init_server)
743
744   SUBROUTINE  xios(initialize)(client_id, local_comm, return_comm)
745   IMPLICIT NONE
746   INCLUDE 'mpif.h'
747   CHARACTER(LEN=*),INTENT(IN) :: client_id
748   INTEGER,INTENT(IN),OPTIONAL         :: local_comm
749   INTEGER,INTENT(OUT),OPTIONAL        :: return_comm
750   INTEGER :: f_local_comm
751   INTEGER :: f_return_comm
752
753      IF (PRESENT(local_comm)) THEN
754        f_local_comm=local_comm
755      ELSE
756        f_local_comm = MPI_COMM_NULL
757      ENDIF
758
759      CALL cxios_init_client(client_id,LEN(client_id),f_local_comm,f_return_comm)
760
761      IF (PRESENT(return_comm)) return_comm=f_return_comm
762
763   END SUBROUTINE  xios(initialize)
764
765
766   SUBROUTINE  xios(context_initialize)(context_id,comm)
767   IMPLICIT NONE
768   CHARACTER(LEN=*),INTENT(IN)  :: context_id
769   INTEGER, INTENT(IN)          :: comm
770
771      CALL cxios_context_initialize(context_id,LEN(context_id),comm)
772
773    END SUBROUTINE  xios(context_initialize)
774
775
776   LOGICAL FUNCTION  xios(context_is_initialized)(context_id)
777   USE ISO_C_BINDING
778   IMPLICIT NONE
779   CHARACTER(LEN=*),INTENT(IN)  :: context_id
780   LOGICAL(KIND=C_BOOL) :: is_init
781
782      CALL cxios_context_is_initialized(context_id, LEN(context_id), is_init)
783      CALL xios_bool_to_logical_0d(is_init)
784      xios(context_is_initialized) = is_init
785
786    END FUNCTION xios(context_is_initialized)
787
788
789   SUBROUTINE  xios(finalize)
790   IMPLICIT NONE
791
792      CALL cxios_finalize
793
794    END SUBROUTINE  xios(finalize)
795
796   SUBROUTINE  xios(oasis_enddef)
797   IMPLICIT NONE
798
799      CALL cxios_oasis_enddef
800
801    END SUBROUTINE  xios(oasis_enddef)
802
803   SUBROUTINE xios(close_context_definition)()
804   IMPLICIT NONE
805      CALL cxios_context_close_definition()
806   END SUBROUTINE xios(close_context_definition)
807
808
809   SUBROUTINE xios(context_finalize)()
810   IMPLICIT NONE
811      CALL cxios_context_finalize()
812   END SUBROUTINE xios(context_finalize)
813
814   SUBROUTINE xios(solve_inheritance)()
815   IMPLICIT NONE
816      CALL cxios_solve_inheritance()
817   END SUBROUTINE xios(solve_inheritance)
818
819   ! Send field functions
820   SUBROUTINE xios(send_field_r8_0d_hdl)(field_hdl, data_k8)
821   IMPLICIT NONE
822      TYPE(txios(field))              :: field_hdl
823      REAL     (kind = 8), INTENT(IN) :: data_k8
824      CALL cxios_write_data_k80_hdl(field_hdl%daddr, data_k8, 1)
825   END SUBROUTINE xios(send_field_r8_0d_hdl)
826
827   SUBROUTINE xios(send_field_r8_0d)(fieldid, data_k8)
828   IMPLICIT NONE
829      CHARACTER(len = *) , INTENT(IN) :: fieldid
830      REAL     (kind = 8), INTENT(IN) :: data_k8
831      CALL cxios_write_data_k80(fieldid, len(fieldid), data_k8, 1)
832   END SUBROUTINE xios(send_field_r8_0d)
833
834   SUBROUTINE xios(send_field_r8_1d_hdl)(field_hdl, data1d_k8)
835   IMPLICIT NONE
836      TYPE(txios(field))              :: field_hdl
837      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data1d_k8(:)
838      CALL cxios_write_data_k81_hdl(field_hdl%daddr, data1d_k8, size(data1d_k8, 1))
839   END SUBROUTINE xios(send_field_r8_1d_hdl)
840
841   SUBROUTINE xios(send_field_r8_1d)(fieldid, data1d_k8)
842   IMPLICIT NONE
843      CHARACTER(len = *)               , INTENT(IN) :: fieldid
844      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data1d_k8(:)
845      CALL cxios_write_data_k81(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1))
846   END SUBROUTINE xios(send_field_r8_1d)
847
848   SUBROUTINE  xios(send_field_r8_2d_hdl)(field_hdl, data2d_k8)
849   IMPLICIT NONE
850      TYPE(txios(field))              :: field_hdl
851      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data2d_k8(:,:)
852      CALL cxios_write_data_k82_hdl(field_hdl%daddr, data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2))
853   END SUBROUTINE  xios(send_field_r8_2d_hdl)
854
855   SUBROUTINE  xios(send_field_r8_2d)(fieldid, data2d_k8)
856   IMPLICIT NONE
857      CHARACTER(len = *)               , INTENT(IN) :: fieldid
858      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data2d_k8(:,:)
859      CALL cxios_write_data_k82(fieldid, len(fieldid), data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2))
860   END SUBROUTINE  xios(send_field_r8_2d)
861
862   SUBROUTINE  xios(send_field_r8_3d_hdl)(field_hdl, data3d_k8)
863   IMPLICIT NONE
864      TYPE(txios(field))              :: field_hdl
865      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data3d_k8(:,:,:)
866      CALL cxios_write_data_k83_hdl(field_hdl%daddr, data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3))
867   END SUBROUTINE  xios(send_field_r8_3d_hdl)
868
869   SUBROUTINE  xios(send_field_r8_3d)(fieldid, data3d_k8)
870   IMPLICIT NONE
871      CHARACTER(len = *)               , INTENT(IN) :: fieldid
872      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data3d_k8(:,:,:)
873      CALL cxios_write_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3))
874   END SUBROUTINE  xios(send_field_r8_3d)
875
876   SUBROUTINE  xios(send_field_r8_4d_hdl)(field_hdl, data4d_k8)
877   IMPLICIT NONE
878      TYPE(txios(field))              :: field_hdl
879      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data4d_k8(:,:,:,:)
880      CALL cxios_write_data_k84_hdl(field_hdl%daddr, data4d_k8, &
881                                size(data4d_k8, 1), size(data4d_k8, 2), size(data4d_k8, 3), &
882                                size(data4d_k8, 4))
883   END SUBROUTINE  xios(send_field_r8_4d_hdl)
884
885   SUBROUTINE  xios(send_field_r8_4d)(fieldid, data4d_k8)
886   IMPLICIT NONE
887      CHARACTER(len = *)               , INTENT(IN) :: fieldid
888      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data4d_k8(:,:,:,:)
889      CALL cxios_write_data_k84(fieldid, len(fieldid), data4d_k8, &
890                                size(data4d_k8, 1), size(data4d_k8, 2), size(data4d_k8, 3), &
891                                size(data4d_k8, 4))
892   END SUBROUTINE  xios(send_field_r8_4d)
893
894   SUBROUTINE  xios(send_field_r8_5d_hdl)(field_hdl, data5d_k8)
895   IMPLICIT NONE
896      TYPE(txios(field))              :: field_hdl
897      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data5d_k8(:,:,:,:,:)
898      CALL cxios_write_data_k85_hdl(field_hdl%daddr, data5d_k8, &
899                                size(data5d_k8, 1), size(data5d_k8, 2), size(data5d_k8, 3), &
900                                size(data5d_k8, 4), size(data5d_k8, 5))
901   END SUBROUTINE  xios(send_field_r8_5d_hdl)
902
903   SUBROUTINE  xios(send_field_r8_5d)(fieldid, data5d_k8)
904   IMPLICIT NONE
905      CHARACTER(len = *)               , INTENT(IN) :: fieldid
906      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data5d_k8(:,:,:,:,:)
907      CALL cxios_write_data_k85(fieldid, len(fieldid), data5d_k8, &
908                                size(data5d_k8, 1), size(data5d_k8, 2), size(data5d_k8, 3), &
909                                size(data5d_k8, 4), size(data5d_k8, 5))
910   END SUBROUTINE  xios(send_field_r8_5d)
911
912   SUBROUTINE  xios(send_field_r8_6d_hdl)(field_hdl, data6d_k8)
913   IMPLICIT NONE
914      TYPE(txios(field))              :: field_hdl
915      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data6d_k8(:,:,:,:,:,:)
916      CALL cxios_write_data_k86_hdl(field_hdl%daddr, data6d_k8, &
917                                size(data6d_k8, 1), size(data6d_k8, 2), size(data6d_k8, 3), &
918                                size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6))
919   END SUBROUTINE  xios(send_field_r8_6d_hdl)
920
921   SUBROUTINE  xios(send_field_r8_6d)(fieldid, data6d_k8)
922   IMPLICIT NONE
923      CHARACTER(len = *)               , INTENT(IN) :: fieldid
924      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data6d_k8(:,:,:,:,:,:)
925      CALL cxios_write_data_k86(fieldid, len(fieldid), data6d_k8, &
926                                size(data6d_k8, 1), size(data6d_k8, 2), size(data6d_k8, 3), &
927                                size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6))
928   END SUBROUTINE  xios(send_field_r8_6d)
929
930   SUBROUTINE  xios(send_field_r8_7d_hdl)(field_hdl, data7d_k8)
931   IMPLICIT NONE
932      TYPE(txios(field))              :: field_hdl
933      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data7d_k8(:,:,:,:,:,:,:)
934      CALL cxios_write_data_k87_hdl(field_hdl%daddr, data7d_k8, &
935                                size(data7d_k8, 1), size(data7d_k8, 2), size(data7d_k8, 3), &
936                                size(data7d_k8, 4), size(data7d_k8, 5), size(data7d_k8, 6), &
937                                size(data7d_k8, 7))
938   END SUBROUTINE  xios(send_field_r8_7d_hdl)
939
940   SUBROUTINE  xios(send_field_r8_7d)(fieldid, data7d_k8)
941   IMPLICIT NONE
942      CHARACTER(len = *)               , INTENT(IN) :: fieldid
943      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data7d_k8(:,:,:,:,:,:,:)
944      CALL cxios_write_data_k87(fieldid, len(fieldid), data7d_k8, &
945                                size(data7d_k8, 1), size(data7d_k8, 2), size(data7d_k8, 3), &
946                                size(data7d_k8, 4), size(data7d_k8, 5), size(data7d_k8, 6), &
947                                size(data7d_k8, 7))
948   END SUBROUTINE  xios(send_field_r8_7d)
949
950   SUBROUTINE xios(send_field_r4_0d_hdl)(field_hdl, data_k4)
951   IMPLICIT NONE
952      TYPE(txios(field))              :: field_hdl
953      REAL     (kind = 4), INTENT(IN) :: data_k4
954      CALL cxios_write_data_k40_hdl(field_hdl%daddr, data_k4, 1)
955   END SUBROUTINE xios(send_field_r4_0d_hdl)
956
957   SUBROUTINE xios(send_field_r4_0d)(fieldid, data_k4)
958   IMPLICIT NONE
959      CHARACTER(len = *) , INTENT(IN) :: fieldid
960      REAL     (kind = 4), INTENT(IN) :: data_k4
961      CALL cxios_write_data_k40(fieldid, len(fieldid), data_k4, 1)
962   END SUBROUTINE xios(send_field_r4_0d)
963
964   SUBROUTINE xios(send_field_r4_1d_hdl)(field_hdl, data1d_k4)
965   IMPLICIT NONE
966      TYPE(txios(field))              :: field_hdl
967      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data1d_k4(:)
968      CALL cxios_write_data_k41_hdl(field_hdl%daddr, data1d_k4, size(data1d_k4, 1))
969   END SUBROUTINE xios(send_field_r4_1d_hdl)
970
971   SUBROUTINE xios(send_field_r4_1d)(fieldid, data1d_k4)
972   IMPLICIT NONE
973      CHARACTER(len = *)               , INTENT(IN) :: fieldid
974      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data1d_k4(:)
975      CALL cxios_write_data_k41(fieldid, len(fieldid), data1d_k4, size(data1d_k4, 1))
976   END SUBROUTINE xios(send_field_r4_1d)
977
978   SUBROUTINE xios(send_field_r4_2d_hdl)(field_hdl, data2d_k4)
979   IMPLICIT NONE
980      TYPE(txios(field))              :: field_hdl
981      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data2d_k4(:,:)
982      CALL cxios_write_data_k42_hdl(field_hdl%daddr, data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2))
983   END SUBROUTINE xios(send_field_r4_2d_hdl)
984
985   SUBROUTINE xios(send_field_r4_2d)(fieldid, data2d_k4)
986   IMPLICIT NONE
987      CHARACTER(len = *)               , INTENT(IN) :: fieldid
988      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data2d_k4(:,:)
989      CALL cxios_write_data_k42(fieldid, len(fieldid), data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2))
990   END SUBROUTINE xios(send_field_r4_2d)
991
992   SUBROUTINE xios(send_field_r4_3d_hdl)(field_hdl, data3d_k4)
993   IMPLICIT NONE
994      TYPE(txios(field))              :: field_hdl
995      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data3d_k4(:,:,:)
996      CALL cxios_write_data_k43_hdl(field_hdl%daddr, data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3))
997   END SUBROUTINE xios(send_field_r4_3d_hdl)
998
999   SUBROUTINE xios(send_field_r4_3d)(fieldid, data3d_k4)
1000   IMPLICIT NONE
1001      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1002      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data3d_k4(:,:,:)
1003      CALL cxios_write_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3))
1004   END SUBROUTINE xios(send_field_r4_3d)
1005
1006   SUBROUTINE  xios(send_field_r4_4d_hdl)(field_hdl, data4d_k4)
1007   IMPLICIT NONE
1008      TYPE(txios(field))              :: field_hdl
1009      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data4d_k4(:,:,:,:)
1010      CALL cxios_write_data_k44_hdl(field_hdl%daddr, data4d_k4, &
1011                                size(data4d_k4, 1), size(data4d_k4, 2), size(data4d_k4, 3), &
1012                                size(data4d_k4, 4))
1013   END SUBROUTINE  xios(send_field_r4_4d_hdl)
1014   
1015   SUBROUTINE  xios(send_field_r4_4d)(fieldid, data4d_k4)
1016   IMPLICIT NONE
1017      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1018      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data4d_k4(:,:,:,:)
1019      CALL cxios_write_data_k44(fieldid, len(fieldid), data4d_k4, &
1020                                size(data4d_k4, 1), size(data4d_k4, 2), size(data4d_k4, 3), &
1021                                size(data4d_k4, 4))
1022   END SUBROUTINE  xios(send_field_r4_4d)
1023
1024   SUBROUTINE  xios(send_field_r4_5d_hdl)(field_hdl, data5d_k4)
1025   IMPLICIT NONE
1026      TYPE(txios(field))              :: field_hdl
1027      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data5d_k4(:,:,:,:,:)
1028      CALL cxios_write_data_k45_hdl(field_hdl%daddr, data5d_k4, &
1029                                size(data5d_k4, 1), size(data5d_k4, 2), size(data5d_k4, 3), &
1030                                size(data5d_k4, 4), size(data5d_k4, 5))
1031   END SUBROUTINE  xios(send_field_r4_5d_hdl)
1032
1033   SUBROUTINE  xios(send_field_r4_5d)(fieldid, data5d_k4)
1034   IMPLICIT NONE
1035      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1036      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data5d_k4(:,:,:,:,:)
1037      CALL cxios_write_data_k45(fieldid, len(fieldid), data5d_k4, &
1038                                size(data5d_k4, 1), size(data5d_k4, 2), size(data5d_k4, 3), &
1039                                size(data5d_k4, 4), size(data5d_k4, 5))
1040   END SUBROUTINE  xios(send_field_r4_5d)
1041
1042   SUBROUTINE  xios(send_field_r4_6d_hdl)(field_hdl, data6d_k4)
1043   IMPLICIT NONE
1044      TYPE(txios(field))              :: field_hdl
1045      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data6d_k4(:,:,:,:,:,:)
1046      CALL cxios_write_data_k46_hdl(field_hdl%daddr, data6d_k4, &
1047                                size(data6d_k4, 1), size(data6d_k4, 2), size(data6d_k4, 3), &
1048                                size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6))
1049   END SUBROUTINE  xios(send_field_r4_6d_hdl)
1050   
1051   SUBROUTINE  xios(send_field_r4_6d)(fieldid, data6d_k4)
1052   IMPLICIT NONE
1053      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1054      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data6d_k4(:,:,:,:,:,:)
1055      CALL cxios_write_data_k46(fieldid, len(fieldid), data6d_k4, &
1056                                size(data6d_k4, 1), size(data6d_k4, 2), size(data6d_k4, 3), &
1057                                size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6))
1058   END SUBROUTINE  xios(send_field_r4_6d)
1059
1060   SUBROUTINE  xios(send_field_r4_7d_hdl)(field_hdl, data7d_k4)
1061   IMPLICIT NONE
1062      TYPE(txios(field))              :: field_hdl
1063      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data7d_k4(:,:,:,:,:,:,:)
1064      CALL cxios_write_data_k47_hdl(field_hdl%daddr, data7d_k4, &
1065                                size(data7d_k4, 1), size(data7d_k4, 2), size(data7d_k4, 3), &
1066                                size(data7d_k4, 4), size(data7d_k4, 5), size(data7d_k4, 6), &
1067                                size(data7d_k4, 7))
1068   END SUBROUTINE  xios(send_field_r4_7d_hdl)
1069   
1070   SUBROUTINE  xios(send_field_r4_7d)(fieldid, data7d_k4)
1071   IMPLICIT NONE
1072      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1073      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data7d_k4(:,:,:,:,:,:,:)
1074      CALL cxios_write_data_k47(fieldid, len(fieldid), data7d_k4, &
1075                                size(data7d_k4, 1), size(data7d_k4, 2), size(data7d_k4, 3), &
1076                                size(data7d_k4, 4), size(data7d_k4, 5), size(data7d_k4, 6), &
1077                                size(data7d_k4, 7))
1078   END SUBROUTINE  xios(send_field_r4_7d)
1079
1080   ! Receive field functions
1081   SUBROUTINE xios(recv_field_r8_0d_hdl)(field_hdl, data0d_k8)
1082   IMPLICIT NONE
1083      TYPE(txios(field))              :: field_hdl
1084      REAL     (kind = 8)              , INTENT(OUT):: data0d_k8
1085      CALL cxios_read_data_k80_hdl(field_hdl%daddr, data0d_k8, 1)
1086   END SUBROUTINE xios(recv_field_r8_0d_hdl)
1087
1088   SUBROUTINE xios(recv_field_r8_0d)(fieldid, data0d_k8)
1089   IMPLICIT NONE
1090      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1091      REAL     (kind = 8)              , INTENT(OUT):: data0d_k8
1092      CALL cxios_read_data_k80(fieldid, len(fieldid), data0d_k8, 1)
1093   END SUBROUTINE xios(recv_field_r8_0d)
1094
1095   SUBROUTINE xios(recv_field_r8_1d_hdl)(field_hdl, data1d_k8)
1096   IMPLICIT NONE
1097      TYPE(txios(field))              :: field_hdl
1098      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data1d_k8(:)
1099      CALL cxios_read_data_k81_hdl(field_hdl%daddr, data1d_k8, size(data1d_k8, 1))
1100   END SUBROUTINE xios(recv_field_r8_1d_hdl)
1101
1102   SUBROUTINE xios(recv_field_r8_1d)(fieldid, data1d_k8)
1103   IMPLICIT NONE
1104      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1105      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data1d_k8(:)
1106      CALL cxios_read_data_k81(fieldid, len(fieldid), data1d_k8, size(data1d_k8, 1))
1107   END SUBROUTINE xios(recv_field_r8_1d)
1108
1109   SUBROUTINE  xios(recv_field_r8_2d_hdl)(field_hdl, data2d_k8)
1110   IMPLICIT NONE
1111      TYPE(txios(field))              :: field_hdl
1112      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data2d_k8(:,:)
1113      CALL cxios_read_data_k82_hdl(field_hdl%daddr, data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2))
1114   END SUBROUTINE  xios(recv_field_r8_2d_hdl)
1115
1116   SUBROUTINE  xios(recv_field_r8_2d)(fieldid, data2d_k8)
1117   IMPLICIT NONE
1118      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1119      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data2d_k8(:,:)
1120      CALL cxios_read_data_k82(fieldid, len(fieldid), data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2))
1121   END SUBROUTINE  xios(recv_field_r8_2d)
1122
1123   SUBROUTINE  xios(recv_field_r8_3d_hdl)(field_hdl, data3d_k8)
1124   IMPLICIT NONE
1125      TYPE(txios(field))              :: field_hdl
1126      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data3d_k8(:,:,:)
1127      CALL cxios_read_data_k83_hdl(field_hdl%daddr, data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3))
1128   END SUBROUTINE  xios(recv_field_r8_3d_hdl)
1129
1130   SUBROUTINE  xios(recv_field_r8_3d)(fieldid, data3d_k8)
1131   IMPLICIT NONE
1132      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1133      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data3d_k8(:,:,:)
1134      CALL cxios_read_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3))
1135   END SUBROUTINE  xios(recv_field_r8_3d)
1136
1137   SUBROUTINE  xios(recv_field_r8_4d_hdl)(field_hdl, data4d_k8)
1138   IMPLICIT NONE
1139      TYPE(txios(field))              :: field_hdl
1140      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data4d_k8(:,:,:,:)
1141      CALL cxios_read_data_k84_hdl(field_hdl%daddr, data4d_k8, &
1142                                size(data4d_k8, 1), size(data4d_k8, 2), size(data4d_k8, 3), &
1143                                size(data4d_k8, 4))
1144   END SUBROUTINE  xios(recv_field_r8_4d_hdl)
1145
1146   SUBROUTINE  xios(recv_field_r8_4d)(fieldid, data4d_k8)
1147   IMPLICIT NONE
1148      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1149      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data4d_k8(:,:,:,:)
1150      CALL cxios_read_data_k84(fieldid, len(fieldid), data4d_k8, &
1151                                size(data4d_k8, 1), size(data4d_k8, 2), size(data4d_k8, 3), &
1152                                size(data4d_k8, 4))
1153   END SUBROUTINE  xios(recv_field_r8_4d)
1154
1155   SUBROUTINE  xios(recv_field_r8_5d_hdl)(field_hdl, data5d_k8)
1156   IMPLICIT NONE
1157      TYPE(txios(field))              :: field_hdl
1158      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data5d_k8(:,:,:,:,:)
1159      CALL cxios_read_data_k85_hdl(field_hdl%daddr, data5d_k8, &
1160                                size(data5d_k8, 1), size(data5d_k8, 2), size(data5d_k8, 3), &
1161                                size(data5d_k8, 4), size(data5d_k8, 5))
1162   END SUBROUTINE  xios(recv_field_r8_5d_hdl)
1163
1164   SUBROUTINE  xios(recv_field_r8_5d)(fieldid, data5d_k8)
1165   IMPLICIT NONE
1166      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1167      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data5d_k8(:,:,:,:,:)
1168      CALL cxios_read_data_k85(fieldid, len(fieldid), data5d_k8, &
1169                                size(data5d_k8, 1), size(data5d_k8, 2), size(data5d_k8, 3), &
1170                                size(data5d_k8, 4), size(data5d_k8, 5))
1171   END SUBROUTINE  xios(recv_field_r8_5d)
1172
1173   SUBROUTINE  xios(recv_field_r8_6d_hdl)(field_hdl, data6d_k8)
1174   IMPLICIT NONE
1175      TYPE(txios(field))              :: field_hdl
1176      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data6d_k8(:,:,:,:,:,:)
1177      CALL cxios_read_data_k86_hdl(field_hdl%daddr, data6d_k8, &
1178                                size(data6d_k8, 1), size(data6d_k8, 2), size(data6d_k8, 3), &
1179                                size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6))
1180   END SUBROUTINE  xios(recv_field_r8_6d_hdl)
1181
1182   SUBROUTINE  xios(recv_field_r8_6d)(fieldid, data6d_k8)
1183   IMPLICIT NONE
1184      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1185      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data6d_k8(:,:,:,:,:,:)
1186      CALL cxios_read_data_k86(fieldid, len(fieldid), data6d_k8, &
1187                                size(data6d_k8, 1), size(data6d_k8, 2), size(data6d_k8, 3), &
1188                                size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6))
1189   END SUBROUTINE  xios(recv_field_r8_6d)
1190
1191  SUBROUTINE  xios(recv_field_r8_7d_hdl)(field_hdl, data7d_k8)
1192   IMPLICIT NONE
1193      TYPE(txios(field))              :: field_hdl
1194      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data7d_k8(:,:,:,:,:,:,:)
1195      CALL cxios_read_data_k87_hdl(field_hdl%daddr, data7d_k8, &
1196                                size(data7d_k8, 1), size(data7d_k8, 2), size(data7d_k8, 3), &
1197                                size(data7d_k8, 4), size(data7d_k8, 5), size(data7d_k8, 6), &
1198                                size(data7d_k8, 7))
1199   END SUBROUTINE  xios(recv_field_r8_7d_hdl)
1200
1201  SUBROUTINE  xios(recv_field_r8_7d)(fieldid, data7d_k8)
1202   IMPLICIT NONE
1203      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1204      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data7d_k8(:,:,:,:,:,:,:)
1205      CALL cxios_read_data_k87(fieldid, len(fieldid), data7d_k8, &
1206                                size(data7d_k8, 1), size(data7d_k8, 2), size(data7d_k8, 3), &
1207                                size(data7d_k8, 4), size(data7d_k8, 5), size(data7d_k8, 6), &
1208                                size(data7d_k8, 7))
1209   END SUBROUTINE  xios(recv_field_r8_7d)
1210
1211   SUBROUTINE xios(recv_field_r4_0d_hdl)(field_hdl, data0d_k4)
1212   IMPLICIT NONE
1213      TYPE(txios(field))              :: field_hdl
1214      REAL     (kind = 4)              , INTENT(OUT):: data0d_k4
1215      CALL cxios_read_data_k40_hdl(field_hdl%daddr, data0d_k4, 1)
1216   END SUBROUTINE xios(recv_field_r4_0d_hdl)
1217
1218   SUBROUTINE xios(recv_field_r4_0d)(fieldid, data0d_k4)
1219   IMPLICIT NONE
1220      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1221      REAL     (kind = 4)              , INTENT(OUT):: data0d_k4
1222      CALL cxios_read_data_k40(fieldid, len(fieldid), data0d_k4, 1)
1223   END SUBROUTINE xios(recv_field_r4_0d)
1224
1225   SUBROUTINE xios(recv_field_r4_1d_hdl)(field_hdl, data1d_k4)
1226   IMPLICIT NONE
1227      TYPE(txios(field))              :: field_hdl
1228      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data1d_k4(:)
1229      CALL cxios_read_data_k41_hdl(field_hdl%daddr, data1d_k4, size(data1d_k4, 1))
1230   END SUBROUTINE xios(recv_field_r4_1d_hdl)
1231
1232   SUBROUTINE xios(recv_field_r4_1d)(fieldid, data1d_k4)
1233   IMPLICIT NONE
1234      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1235      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data1d_k4(:)
1236      CALL cxios_read_data_k41(fieldid, len(fieldid), data1d_k4, size(data1d_k4, 1))
1237   END SUBROUTINE xios(recv_field_r4_1d)
1238
1239   SUBROUTINE xios(recv_field_r4_2d_hdl)(field_hdl, data2d_k4)
1240   IMPLICIT NONE
1241      TYPE(txios(field))              :: field_hdl
1242      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data2d_k4(:,:)
1243      CALL cxios_read_data_k42_hdl(field_hdl%daddr, data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2))
1244   END SUBROUTINE xios(recv_field_r4_2d_hdl)
1245
1246   SUBROUTINE xios(recv_field_r4_2d)(fieldid, data2d_k4)
1247   IMPLICIT NONE
1248      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1249      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data2d_k4(:,:)
1250      CALL cxios_read_data_k42(fieldid, len(fieldid), data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2))
1251   END SUBROUTINE xios(recv_field_r4_2d)
1252
1253   SUBROUTINE xios(recv_field_r4_3d_hdl)(field_hdl, data3d_k4)
1254   IMPLICIT NONE
1255      TYPE(txios(field))              :: field_hdl
1256      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data3d_k4(:,:,:)
1257      CALL cxios_read_data_k43_hdl(field_hdl%daddr, data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3))
1258   END SUBROUTINE xios(recv_field_r4_3d_hdl)
1259
1260   SUBROUTINE xios(recv_field_r4_3d)(fieldid, data3d_k4)
1261   IMPLICIT NONE
1262      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1263      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data3d_k4(:,:,:)
1264      CALL cxios_read_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3))
1265   END SUBROUTINE xios(recv_field_r4_3d)
1266
1267   SUBROUTINE  xios(recv_field_r4_4d_hdl)(field_hdl, data4d_k4)
1268   IMPLICIT NONE
1269      TYPE(txios(field))              :: field_hdl
1270      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data4d_k4(:,:,:,:)
1271      CALL cxios_read_data_k44_hdl(field_hdl%daddr, data4d_k4, &
1272                                size(data4d_k4, 1), size(data4d_k4, 2), size(data4d_k4, 3), &
1273                                size(data4d_k4, 4))
1274   END SUBROUTINE  xios(recv_field_r4_4d_hdl)
1275
1276   SUBROUTINE  xios(recv_field_r4_4d)(fieldid, data4d_k4)
1277   IMPLICIT NONE
1278      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1279      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data4d_k4(:,:,:,:)
1280      CALL cxios_read_data_k44(fieldid, len(fieldid), data4d_k4, &
1281                                size(data4d_k4, 1), size(data4d_k4, 2), size(data4d_k4, 3), &
1282                                size(data4d_k4, 4))
1283   END SUBROUTINE  xios(recv_field_r4_4d)
1284
1285   SUBROUTINE  xios(recv_field_r4_5d_hdl)(field_hdl, data5d_k4)
1286   IMPLICIT NONE
1287      TYPE(txios(field))              :: field_hdl
1288      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data5d_k4(:,:,:,:,:)
1289      CALL cxios_read_data_k45_hdl(field_hdl%daddr, data5d_k4, &
1290                                size(data5d_k4, 1), size(data5d_k4, 2), size(data5d_k4, 3), &
1291                                size(data5d_k4, 4), size(data5d_k4, 5))
1292   END SUBROUTINE  xios(recv_field_r4_5d_hdl)
1293
1294   SUBROUTINE  xios(recv_field_r4_5d)(fieldid, data5d_k4)
1295   IMPLICIT NONE
1296      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1297      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data5d_k4(:,:,:,:,:)
1298      CALL cxios_read_data_k45(fieldid, len(fieldid), data5d_k4, &
1299                                size(data5d_k4, 1), size(data5d_k4, 2), size(data5d_k4, 3), &
1300                                size(data5d_k4, 4), size(data5d_k4, 5))
1301   END SUBROUTINE  xios(recv_field_r4_5d)
1302
1303   SUBROUTINE  xios(recv_field_r4_6d_hdl)(field_hdl, data6d_k4)
1304   IMPLICIT NONE
1305      TYPE(txios(field))              :: field_hdl
1306      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data6d_k4(:,:,:,:,:,:)
1307      CALL cxios_read_data_k46_hdl(field_hdl%daddr, data6d_k4, &
1308                                size(data6d_k4, 1), size(data6d_k4, 2), size(data6d_k4, 3), &
1309                                size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6))
1310   END SUBROUTINE  xios(recv_field_r4_6d_hdl)
1311
1312   SUBROUTINE  xios(recv_field_r4_6d)(fieldid, data6d_k4)
1313   IMPLICIT NONE
1314      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1315      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data6d_k4(:,:,:,:,:,:)
1316      CALL cxios_read_data_k46(fieldid, len(fieldid), data6d_k4, &
1317                                size(data6d_k4, 1), size(data6d_k4, 2), size(data6d_k4, 3), &
1318                                size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6))
1319   END SUBROUTINE  xios(recv_field_r4_6d)
1320
1321   SUBROUTINE  xios(recv_field_r4_7d_hdl)(field_hdl, data7d_k4)
1322   IMPLICIT NONE
1323      TYPE(txios(field))              :: field_hdl
1324      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data7d_k4(:,:,:,:,:,:,:)
1325      CALL cxios_read_data_k47_hdl(field_hdl%daddr, data7d_k4, &
1326                                size(data7d_k4, 1), size(data7d_k4, 2), size(data7d_k4, 3), &
1327                                size(data7d_k4, 4), size(data7d_k4, 5), size(data7d_k4, 6), &
1328                                size(data7d_k4, 7))
1329   END SUBROUTINE  xios(recv_field_r4_7d_hdl)
1330
1331   SUBROUTINE  xios(recv_field_r4_7d)(fieldid, data7d_k4)
1332   IMPLICIT NONE
1333      CHARACTER(len = *)               , INTENT(IN) :: fieldid
1334      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data7d_k4(:,:,:,:,:,:,:)
1335      CALL cxios_read_data_k47(fieldid, len(fieldid), data7d_k4, &
1336                                size(data7d_k4, 1), size(data7d_k4, 2), size(data7d_k4, 3), &
1337                                size(data7d_k4, 4), size(data7d_k4, 5), size(data7d_k4, 6), &
1338                                size(data7d_k4, 7))
1339   END SUBROUTINE  xios(recv_field_r4_7d)
1340
1341   ! Get variable functions
1342   LOGICAL FUNCTION xios(getVar_k8)(varId, data_k8)
1343   USE ISO_C_BINDING
1344   IMPLICIT NONE
1345      LOGICAL  (kind = C_BOOL)                      :: val
1346      CHARACTER(len = *)               , INTENT(IN) :: varId
1347      REAL     (kind = 8)              , INTENT(OUT):: data_k8
1348
1349      CALL cxios_get_variable_data_k8(varId, len(varId), data_k8, val)
1350
1351      CALL xios_bool_to_logical_0d(val)
1352      xios(getVar_k8) = val
1353   END FUNCTION xios(getVar_k8)
1354
1355   LOGICAL FUNCTION xios(getVar_k4)(varId, data_k4)
1356   USE ISO_C_BINDING
1357   IMPLICIT NONE
1358      LOGICAL  (kind = C_BOOL)                      :: val
1359      CHARACTER(len = *)               , INTENT(IN) :: varId
1360      REAL     (kind = 4)              , INTENT(OUT):: data_k4
1361
1362      CALL cxios_get_variable_data_k4(varId, len(varId), data_k4, val)
1363
1364      CALL xios_bool_to_logical_0d(val)
1365      xios(getVar_k4) = val
1366   END FUNCTION xios(getVar_k4)
1367
1368   LOGICAL FUNCTION xios(getVar_int)(varId, data_int)
1369   USE ISO_C_BINDING
1370   IMPLICIT NONE
1371      LOGICAL  (kind = C_BOOL)                      :: val
1372      CHARACTER(len = *)               , INTENT(IN) :: varId
1373      INTEGER                          , INTENT(OUT):: data_int
1374
1375      CALL cxios_get_variable_data_int(varId, len(varId), data_int, val)
1376
1377      CALL xios_bool_to_logical_0d(val)
1378      xios(getVar_int) = val
1379   END FUNCTION xios(getVar_int)
1380
1381   LOGICAL FUNCTION xios(getVar_logic)(varId, data_logic)
1382   USE ISO_C_BINDING
1383   IMPLICIT NONE
1384      LOGICAL  (kind = C_BOOL)                      :: val
1385      CHARACTER(len  = *)              , INTENT(IN) :: varId
1386      LOGICAL  ,INTENT(OUT)                         :: data_logic
1387      LOGICAL (C_BOOL)                              :: data_tmp
1388
1389      CALL cxios_get_variable_data_logic(varId, len(varId), data_tmp, val)
1390      CALL xios_bool_to_logical_0d(val)
1391      xios(getVar_logic) = val
1392      IF (val) THEN
1393         CALL xios_bool_to_logical_0d(data_tmp)
1394         data_logic = data_tmp
1395      ENDIF
1396   END FUNCTION xios(getVar_logic)
1397
1398   LOGICAL FUNCTION xios(getVar_char)(varId, data_char)
1399   USE ISO_C_BINDING
1400   IMPLICIT NONE
1401      LOGICAL  (kind = C_BOOL)                      :: val
1402      CHARACTER(len  = *)              , INTENT(IN) :: varId
1403      CHARACTER(len  = *)              , INTENT(OUT):: data_char
1404
1405      CALL cxios_get_variable_data_char(varId, len(varId), data_char, len(data_char), val)
1406
1407      CALL xios_bool_to_logical_0d(val)
1408      xios(getVar_char) = val
1409   END FUNCTION xios(getVar_char)
1410
1411   ! Set variable functions
1412   LOGICAL FUNCTION xios(setVar_k8)(varId, data_k8)
1413   USE ISO_C_BINDING
1414   IMPLICIT NONE
1415      LOGICAL  (kind = C_BOOL)                      :: val
1416      CHARACTER(len = *)               , INTENT(IN) :: varId
1417      REAL     (kind = 8)              , INTENT(IN) :: data_k8
1418
1419      CALL cxios_set_variable_data_k8(varId, len(varId), data_k8, val)
1420
1421      CALL xios_bool_to_logical_0d(val)
1422      xios(setVar_k8) = val
1423   END FUNCTION xios(setVar_k8)
1424
1425   LOGICAL FUNCTION xios(setVar_k4)(varId, data_k4)
1426   USE ISO_C_BINDING
1427   IMPLICIT NONE
1428      LOGICAL  (kind = C_BOOL)                      :: val
1429      CHARACTER(len = *)               , INTENT(IN) :: varId
1430      REAL     (kind = 4)              , INTENT(IN) :: data_k4
1431
1432      CALL cxios_set_variable_data_k4(varId, len(varId), data_k4, val)
1433
1434      CALL xios_bool_to_logical_0d(val)
1435      xios(setVar_k4) = val
1436   END FUNCTION xios(setVar_k4)
1437
1438   LOGICAL FUNCTION xios(setVar_int)(varId, data_int)
1439   USE ISO_C_BINDING
1440   IMPLICIT NONE
1441      LOGICAL  (kind = C_BOOL)                           :: val
1442      CHARACTER(len = *)               , INTENT(IN) :: varId
1443      INTEGER                          , INTENT(IN) :: data_int
1444
1445      CALL cxios_set_variable_data_int(varId, len(varId), data_int, val)
1446
1447      CALL xios_bool_to_logical_0d(val)
1448      xios(setVar_int) = val
1449   END FUNCTION xios(setVar_int)
1450
1451   LOGICAL FUNCTION xios(setVar_logic)(varId, data_logic)
1452   USE ISO_C_BINDING
1453   IMPLICIT NONE
1454      LOGICAL(kind = C_BOOL)                        :: val
1455      CHARACTER(len  = *)              , INTENT(IN) :: varId
1456      LOGICAL                          , INTENT(IN) :: data_logic
1457      LOGICAL  (kind = C_BOOL)                      :: data_tmp
1458
1459      data_tmp = data_logic
1460      CALL xios_logical_to_bool_0d(data_tmp)
1461      CALL cxios_set_variable_data_logic(varId, len(varId), data_tmp, val)
1462
1463      CALL xios_bool_to_logical_0d(val)
1464      xios(setVar_logic) = val
1465   END FUNCTION xios(setVar_logic)
1466
1467   LOGICAL FUNCTION xios(setVar_char)(varId, data_char)
1468   USE ISO_C_BINDING
1469   IMPLICIT NONE
1470      LOGICAL  (kind = C_BOOL)                      :: val
1471      CHARACTER(len  = *)              , INTENT(IN) :: varId
1472      CHARACTER(len  = *)              , INTENT(IN) :: data_char
1473
1474      CALL cxios_set_variable_data_char(varId, len(varId), data_char, len(data_char), val)
1475
1476      CALL xios_bool_to_logical_0d(val)
1477      xios(setVar_char) = val
1478   END FUNCTION xios(setVar_char)
1479
1480END MODULE IDATA
Note: See TracBrowser for help on using the repository browser.