mo_cdi.f90 145 KB
Newer Older
Uwe Schulzweida's avatar
Uwe Schulzweida committed
1
2
3
4
5
6
7
8

module mo_cdi
      use, intrinsic :: iso_c_binding

      implicit none

      private
  
9
10
11
12
13
14
15
16
      integer, parameter :: CDI_MAX_NAME = 256
      integer, parameter :: CDI_UNDEFID = -1
      integer, parameter :: CDI_GLOBAL = -1
      integer, parameter :: CDI_BIGENDIAN = 0
      integer, parameter :: CDI_LITTLEENDIAN = 1
      integer, parameter :: CDI_REAL = 1
      integer, parameter :: CDI_COMP = 2
      integer, parameter :: CDI_BOTH = 3
17
      integer, parameter :: CDI_EEOF = -1
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
      integer, parameter :: CDI_ESYSTEM = -10
      integer, parameter :: CDI_EINVAL = -20
      integer, parameter :: CDI_EUFTYPE = -21
      integer, parameter :: CDI_ELIBNAVAIL = -22
      integer, parameter :: CDI_EUFSTRUCT = -23
      integer, parameter :: CDI_EUNC4 = -24
      integer, parameter :: CDI_ELIMIT = -99
      integer, parameter :: FILETYPE_UNDEF = -1
      integer, parameter :: FILETYPE_GRB = 1
      integer, parameter :: FILETYPE_GRB2 = 2
      integer, parameter :: FILETYPE_NC = 3
      integer, parameter :: FILETYPE_NC2 = 4
      integer, parameter :: FILETYPE_NC4 = 5
      integer, parameter :: FILETYPE_NC4C = 6
      integer, parameter :: FILETYPE_SRV = 7
      integer, parameter :: FILETYPE_EXT = 8
      integer, parameter :: FILETYPE_IEG = 9
      integer, parameter :: COMPRESS_NONE = 0
      integer, parameter :: COMPRESS_SZIP = 1
      integer, parameter :: COMPRESS_GZIP = 2
      integer, parameter :: COMPRESS_BZIP2 = 3
      integer, parameter :: COMPRESS_ZIP = 4
      integer, parameter :: COMPRESS_JPEG = 5
      integer, parameter :: DATATYPE_PACK = 0
      integer, parameter :: DATATYPE_PACK1 = 1
      integer, parameter :: DATATYPE_PACK2 = 2
      integer, parameter :: DATATYPE_PACK3 = 3
      integer, parameter :: DATATYPE_PACK4 = 4
      integer, parameter :: DATATYPE_PACK5 = 5
      integer, parameter :: DATATYPE_PACK6 = 6
      integer, parameter :: DATATYPE_PACK7 = 7
      integer, parameter :: DATATYPE_PACK8 = 8
      integer, parameter :: DATATYPE_PACK9 = 9
      integer, parameter :: DATATYPE_PACK10 = 10
      integer, parameter :: DATATYPE_PACK11 = 11
      integer, parameter :: DATATYPE_PACK12 = 12
      integer, parameter :: DATATYPE_PACK13 = 13
      integer, parameter :: DATATYPE_PACK14 = 14
      integer, parameter :: DATATYPE_PACK15 = 15
      integer, parameter :: DATATYPE_PACK16 = 16
      integer, parameter :: DATATYPE_PACK17 = 17
      integer, parameter :: DATATYPE_PACK18 = 18
      integer, parameter :: DATATYPE_PACK19 = 19
      integer, parameter :: DATATYPE_PACK20 = 20
      integer, parameter :: DATATYPE_PACK21 = 21
      integer, parameter :: DATATYPE_PACK22 = 22
      integer, parameter :: DATATYPE_PACK23 = 23
      integer, parameter :: DATATYPE_PACK24 = 24
      integer, parameter :: DATATYPE_PACK25 = 25
      integer, parameter :: DATATYPE_PACK26 = 26
      integer, parameter :: DATATYPE_PACK27 = 27
      integer, parameter :: DATATYPE_PACK28 = 28
      integer, parameter :: DATATYPE_PACK29 = 29
      integer, parameter :: DATATYPE_PACK30 = 30
      integer, parameter :: DATATYPE_PACK31 = 31
      integer, parameter :: DATATYPE_PACK32 = 32
      integer, parameter :: DATATYPE_CPX32 = 64
      integer, parameter :: DATATYPE_CPX64 = 128
      integer, parameter :: DATATYPE_FLT32 = 132
      integer, parameter :: DATATYPE_FLT64 = 164
      integer, parameter :: DATATYPE_INT8 = 208
      integer, parameter :: DATATYPE_INT16 = 216
      integer, parameter :: DATATYPE_INT32 = 232
      integer, parameter :: DATATYPE_UINT8 = 308
      integer, parameter :: DATATYPE_UINT16 = 316
      integer, parameter :: DATATYPE_UINT32 = 332
      integer, parameter :: DATATYPE_INT = 251
      integer, parameter :: DATATYPE_FLT = 252
      integer, parameter :: DATATYPE_TXT = 253
      integer, parameter :: DATATYPE_CPX = 254
      integer, parameter :: DATATYPE_UCHAR = 255
89
      integer, parameter :: DATATYPE_LONG = 256
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
      integer, parameter :: CHUNK_AUTO = 1
      integer, parameter :: CHUNK_GRID = 2
      integer, parameter :: CHUNK_LINES = 3
      integer, parameter :: GRID_GENERIC = 1
      integer, parameter :: GRID_GAUSSIAN = 2
      integer, parameter :: GRID_GAUSSIAN_REDUCED = 3
      integer, parameter :: GRID_LONLAT = 4
      integer, parameter :: GRID_SPECTRAL = 5
      integer, parameter :: GRID_FOURIER = 6
      integer, parameter :: GRID_GME = 7
      integer, parameter :: GRID_TRAJECTORY = 8
      integer, parameter :: GRID_UNSTRUCTURED = 9
      integer, parameter :: GRID_CURVILINEAR = 10
      integer, parameter :: GRID_LCC = 11
      integer, parameter :: GRID_LCC2 = 12
      integer, parameter :: GRID_LAEA = 13
      integer, parameter :: GRID_SINUSOIDAL = 14
      integer, parameter :: GRID_PROJECTION = 15
      integer, parameter :: ZAXIS_SURFACE = 0
      integer, parameter :: ZAXIS_GENERIC = 1
      integer, parameter :: ZAXIS_HYBRID = 2
      integer, parameter :: ZAXIS_HYBRID_HALF = 3
      integer, parameter :: ZAXIS_PRESSURE = 4
      integer, parameter :: ZAXIS_HEIGHT = 5
      integer, parameter :: ZAXIS_DEPTH_BELOW_SEA = 6
      integer, parameter :: ZAXIS_DEPTH_BELOW_LAND = 7
      integer, parameter :: ZAXIS_ISENTROPIC = 8
      integer, parameter :: ZAXIS_TRAJECTORY = 9
      integer, parameter :: ZAXIS_ALTITUDE = 10
      integer, parameter :: ZAXIS_SIGMA = 11
      integer, parameter :: ZAXIS_MEANSEA = 12
      integer, parameter :: ZAXIS_TOA = 13
      integer, parameter :: ZAXIS_SEA_BOTTOM = 14
      integer, parameter :: ZAXIS_ATMOSPHERE = 15
      integer, parameter :: ZAXIS_CLOUD_BASE = 16
      integer, parameter :: ZAXIS_CLOUD_TOP = 17
      integer, parameter :: ZAXIS_ISOTHERM_ZERO = 18
      integer, parameter :: ZAXIS_SNOW = 19
      integer, parameter :: ZAXIS_LAKE_BOTTOM = 20
      integer, parameter :: ZAXIS_SEDIMENT_BOTTOM = 21
      integer, parameter :: ZAXIS_SEDIMENT_BOTTOM_TA = 22
      integer, parameter :: ZAXIS_SEDIMENT_BOTTOM_TW = 23
      integer, parameter :: ZAXIS_MIX_LAYER = 24
      integer, parameter :: ZAXIS_REFERENCE = 25
      integer, parameter :: TIME_CONSTANT = 0
      integer, parameter :: TIME_VARIABLE = 1
      integer, parameter :: TSTEP_CONSTANT = 0
      integer, parameter :: TSTEP_INSTANT = 1
      integer, parameter :: TSTEP_AVG = 2
      integer, parameter :: TSTEP_ACCUM = 3
      integer, parameter :: TSTEP_MAX = 4
      integer, parameter :: TSTEP_MIN = 5
      integer, parameter :: TSTEP_DIFF = 6
      integer, parameter :: TSTEP_RMS = 7
      integer, parameter :: TSTEP_SD = 8
      integer, parameter :: TSTEP_COV = 9
      integer, parameter :: TSTEP_RATIO = 10
      integer, parameter :: TSTEP_RANGE = 11
      integer, parameter :: TSTEP_INSTANT2 = 12
      integer, parameter :: TSTEP_INSTANT3 = 13
      integer, parameter :: TAXIS_ABSOLUTE = 1
      integer, parameter :: TAXIS_RELATIVE = 2
      integer, parameter :: TAXIS_FORECAST = 3
      integer, parameter :: TUNIT_SECOND = 1
      integer, parameter :: TUNIT_MINUTE = 2
      integer, parameter :: TUNIT_QUARTER = 3
      integer, parameter :: TUNIT_30MINUTES = 4
      integer, parameter :: TUNIT_HOUR = 5
      integer, parameter :: TUNIT_3HOURS = 6
      integer, parameter :: TUNIT_6HOURS = 7
      integer, parameter :: TUNIT_12HOURS = 8
      integer, parameter :: TUNIT_DAY = 9
      integer, parameter :: TUNIT_MONTH = 10
      integer, parameter :: TUNIT_YEAR = 11
      integer, parameter :: CALENDAR_STANDARD = 0
      integer, parameter :: CALENDAR_PROLEPTIC = 1
      integer, parameter :: CALENDAR_360DAYS = 2
      integer, parameter :: CALENDAR_365DAYS = 3
      integer, parameter :: CALENDAR_366DAYS = 4
      integer, parameter :: CALENDAR_NONE = 5
Uwe Schulzweida's avatar
Uwe Schulzweida committed
170
      integer, parameter :: CDI_UUID_SIZE = 16
Thomas Jahns's avatar
Thomas Jahns committed
171
172
173
174
175
176
177
      interface
        function strlen(s) bind(c,name='strlen')
          import :: c_ptr,c_size_t
          type(c_ptr), value :: s
          integer(kind=c_size_t) :: strlen
        end function strlen
      end interface
178
179
180
181
182
183
184
185
186
187
188
189
      interface
        function getchar() bind(c,name='getchar')
          import :: c_int
          integer(kind=c_int) :: getchar
        end function getchar
      end interface
      interface
        function getchar_unlocked() bind(c,name='getchar_unlocked')
          import :: c_int
          integer(kind=c_int) :: getchar_unlocked
        end function getchar_unlocked
      end interface
Thomas Jahns's avatar
Thomas Jahns committed
190
191
192
      interface
        subroutine cdiReset() bind(c,name='cdiReset')
        end subroutine cdiReset
Uwe Schulzweida's avatar
Uwe Schulzweida committed
193
194
195
196
      end interface
      interface
        subroutine cdiDebug(debug) bind(c,name='cdiDebug')
          import :: c_int
197
198
          integer(kind=c_int), value :: debug
        end subroutine cdiDebug
Uwe Schulzweida's avatar
Uwe Schulzweida committed
199
200
201
      end interface
      interface
        subroutine cdiPrintVersion() bind(c,name='cdiPrintVersion')
202
        end subroutine cdiPrintVersion
Uwe Schulzweida's avatar
Uwe Schulzweida committed
203
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
204
      interface
205
        function cdiHaveFiletype(filetype) bind(c,name='cdiHaveFiletype')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
206
          import :: c_int
207
208
209
          integer(kind=c_int), value :: filetype
          integer(kind=c_int) :: cdiHaveFiletype
        end function cdiHaveFiletype
Uwe Schulzweida's avatar
Uwe Schulzweida committed
210
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
211
212
213
      interface
        subroutine cdiDefMissval(missval) bind(c,name='cdiDefMissval')
          import :: c_double
214
215
          real(kind=c_double), value :: missval
        end subroutine cdiDefMissval
Uwe Schulzweida's avatar
Uwe Schulzweida committed
216
217
      end interface
      interface
218
        function cdiInqMissval() bind(c,name='cdiInqMissval')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
219
          import :: c_double
220
221
          real(kind=c_double) :: cdiInqMissval
        end function cdiInqMissval
Uwe Schulzweida's avatar
Uwe Schulzweida committed
222
223
224
225
      end interface
      interface
        subroutine cdiDefGlobal(string,val) bind(c,name='cdiDefGlobal')
          import :: c_char,c_int
226
227
228
          character(kind=c_char), dimension(*) :: string
          integer(kind=c_int), value :: val
        end subroutine cdiDefGlobal
Uwe Schulzweida's avatar
Uwe Schulzweida committed
229
      end interface
230
      interface
231
        function namespaceNew() bind(c,name='namespaceNew')
232
          import :: c_int
233
234
          integer(kind=c_int) :: namespaceNew
        end function namespaceNew
235
236
237
238
      end interface
      interface
        subroutine namespaceSetActive(namespaceID) bind(c,name='namespaceSetActive')
          import :: c_int
239
240
          integer(kind=c_int), value :: namespaceID
        end subroutine namespaceSetActive
241
242
243
244
      end interface
      interface
        subroutine namespaceDelete(namespaceID) bind(c,name='namespaceDelete')
          import :: c_int
245
246
          integer(kind=c_int), value :: namespaceID
        end subroutine namespaceDelete
247
      end interface
248
249
250
      interface
        subroutine cdiParamToString(param,paramstr,maxlen) bind(c,name='cdiParamToString')
          import :: c_int,c_char
251
252
253
254
          integer(kind=c_int), value :: param
          character(kind=c_char), dimension(*) :: paramstr
          integer(kind=c_int), value :: maxlen
        end subroutine cdiParamToString
255
256
257
258
      end interface
      interface
        subroutine cdiDecodeParam(param,pnum,pcat,pdis) bind(c,name='cdiDecodeParam')
          import :: c_int
259
260
261
262
263
          integer(kind=c_int), value :: param
          integer(kind=c_int), intent(out) :: pnum
          integer(kind=c_int), intent(out) :: pcat
          integer(kind=c_int), intent(out) :: pdis
        end subroutine cdiDecodeParam
264
265
      end interface
      interface
266
        function cdiEncodeParam(pnum,pcat,pdis) bind(c,name='cdiEncodeParam')
267
          import :: c_int
268
269
270
271
272
          integer(kind=c_int), value :: pnum
          integer(kind=c_int), value :: pcat
          integer(kind=c_int), value :: pdis
          integer(kind=c_int) :: cdiEncodeParam
        end function cdiEncodeParam
273
274
275
276
      end interface
      interface
        subroutine cdiDecodeDate(date,year,month,day) bind(c,name='cdiDecodeDate')
          import :: c_int
277
278
279
280
281
          integer(kind=c_int), value :: date
          integer(kind=c_int), intent(out) :: year
          integer(kind=c_int), intent(out) :: month
          integer(kind=c_int), intent(out) :: day
        end subroutine cdiDecodeDate
282
283
      end interface
      interface
284
        function cdiEncodeDate(year,month,day) bind(c,name='cdiEncodeDate')
285
          import :: c_int
286
287
288
289
290
          integer(kind=c_int), value :: year
          integer(kind=c_int), value :: month
          integer(kind=c_int), value :: day
          integer(kind=c_int) :: cdiEncodeDate
        end function cdiEncodeDate
291
292
293
294
      end interface
      interface
        subroutine cdiDecodeTime(time,hour,minute,second) bind(c,name='cdiDecodeTime')
          import :: c_int
295
296
297
298
299
          integer(kind=c_int), value :: time
          integer(kind=c_int), intent(out) :: hour
          integer(kind=c_int), intent(out) :: minute
          integer(kind=c_int), intent(out) :: second
        end subroutine cdiDecodeTime
300
301
      end interface
      interface
302
        function cdiEncodeTime(hour,minute,second) bind(c,name='cdiEncodeTime')
303
          import :: c_int
304
305
306
307
308
          integer(kind=c_int), value :: hour
          integer(kind=c_int), value :: minute
          integer(kind=c_int), value :: second
          integer(kind=c_int) :: cdiEncodeTime
        end function cdiEncodeTime
309
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
310
311
312
313
314
315
316
317
      interface
        function cdiGetFiletype(path,byteorder) bind(c,name='cdiGetFiletype')
          import :: c_char,c_int
          character(kind=c_char), dimension(*) :: path
          integer(kind=c_int), intent(out) :: byteorder
          integer(kind=c_int) :: cdiGetFiletype
        end function cdiGetFiletype
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
318
      interface
319
        function streamOpenRead(path) bind(c,name='streamOpenRead')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
320
          import :: c_char,c_int
321
322
323
          character(kind=c_char), dimension(*) :: path
          integer(kind=c_int) :: streamOpenRead
        end function streamOpenRead
Uwe Schulzweida's avatar
Uwe Schulzweida committed
324
325
      end interface
      interface
326
        function streamOpenWrite(path,filetype) bind(c,name='streamOpenWrite')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
327
          import :: c_char,c_int
328
329
330
331
          character(kind=c_char), dimension(*) :: path
          integer(kind=c_int), value :: filetype
          integer(kind=c_int) :: streamOpenWrite
        end function streamOpenWrite
Uwe Schulzweida's avatar
Uwe Schulzweida committed
332
333
      end interface
      interface
334
        function streamOpenAppend(path) bind(c,name='streamOpenAppend')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
335
          import :: c_char,c_int
336
337
338
          character(kind=c_char), dimension(*) :: path
          integer(kind=c_int) :: streamOpenAppend
        end function streamOpenAppend
Uwe Schulzweida's avatar
Uwe Schulzweida committed
339
340
341
342
      end interface
      interface
        subroutine streamClose(streamID) bind(c,name='streamClose')
          import :: c_int
343
344
          integer(kind=c_int), value :: streamID
        end subroutine streamClose
Uwe Schulzweida's avatar
Uwe Schulzweida committed
345
346
347
348
      end interface
      interface
        subroutine streamSync(streamID) bind(c,name='streamSync')
          import :: c_int
349
350
          integer(kind=c_int), value :: streamID
        end subroutine streamSync
Uwe Schulzweida's avatar
Uwe Schulzweida committed
351
352
353
354
      end interface
      interface
        subroutine streamDefVlist(streamID,vlistID) bind(c,name='streamDefVlist')
          import :: c_int
355
356
357
          integer(kind=c_int), value :: streamID
          integer(kind=c_int), value :: vlistID
        end subroutine streamDefVlist
Uwe Schulzweida's avatar
Uwe Schulzweida committed
358
359
      end interface
      interface
360
        function streamInqVlist(streamID) bind(c,name='streamInqVlist')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
361
          import :: c_int
362
363
364
          integer(kind=c_int), value :: streamID
          integer(kind=c_int) :: streamInqVlist
        end function streamInqVlist
Uwe Schulzweida's avatar
Uwe Schulzweida committed
365
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
366
      interface
367
        function streamInqVlistIDorig(streamID) bind(c,name='streamInqVlistIDorig')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
368
          import :: c_int
369
370
371
          integer(kind=c_int), value :: streamID
          integer(kind=c_int) :: streamInqVlistIDorig
        end function streamInqVlistIDorig
Uwe Schulzweida's avatar
Uwe Schulzweida committed
372
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
373
      interface
374
        function streamInqFiletype(streamID) bind(c,name='streamInqFiletype')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
375
          import :: c_int
376
377
378
          integer(kind=c_int), value :: streamID
          integer(kind=c_int) :: streamInqFiletype
        end function streamInqFiletype
Uwe Schulzweida's avatar
Uwe Schulzweida committed
379
380
381
382
      end interface
      interface
        subroutine streamDefByteorder(streamID,byteorder) bind(c,name='streamDefByteorder')
          import :: c_int
383
384
385
          integer(kind=c_int), value :: streamID
          integer(kind=c_int), value :: byteorder
        end subroutine streamDefByteorder
Uwe Schulzweida's avatar
Uwe Schulzweida committed
386
387
      end interface
      interface
388
        function streamInqByteorder(streamID) bind(c,name='streamInqByteorder')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
389
          import :: c_int
390
391
392
          integer(kind=c_int), value :: streamID
          integer(kind=c_int) :: streamInqByteorder
        end function streamInqByteorder
Uwe Schulzweida's avatar
Uwe Schulzweida committed
393
394
      end interface
      interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
395
        subroutine streamDefCompType(streamID,comptype) bind(c,name='streamDefCompType')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
396
          import :: c_int
397
398
399
          integer(kind=c_int), value :: streamID
          integer(kind=c_int), value :: comptype
        end subroutine streamDefCompType
Uwe Schulzweida's avatar
Uwe Schulzweida committed
400
401
      end interface
      interface
402
        function streamInqCompType(streamID) bind(c,name='streamInqCompType')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
403
          import :: c_int
404
405
406
          integer(kind=c_int), value :: streamID
          integer(kind=c_int) :: streamInqCompType
        end function streamInqCompType
Uwe Schulzweida's avatar
Uwe Schulzweida committed
407
408
      end interface
      interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
409
        subroutine streamDefCompLevel(streamID,complevel) bind(c,name='streamDefCompLevel')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
410
          import :: c_int
411
412
413
          integer(kind=c_int), value :: streamID
          integer(kind=c_int), value :: complevel
        end subroutine streamDefCompLevel
Uwe Schulzweida's avatar
Uwe Schulzweida committed
414
415
      end interface
      interface
416
        function streamInqCompLevel(streamID) bind(c,name='streamInqCompLevel')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
417
          import :: c_int
418
419
420
          integer(kind=c_int), value :: streamID
          integer(kind=c_int) :: streamInqCompLevel
        end function streamInqCompLevel
Uwe Schulzweida's avatar
Uwe Schulzweida committed
421
422
      end interface
      interface
423
        function streamDefTimestep(streamID,tsID) bind(c,name='streamDefTimestep')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
424
          import :: c_int
425
426
427
428
          integer(kind=c_int), value :: streamID
          integer(kind=c_int), value :: tsID
          integer(kind=c_int) :: streamDefTimestep
        end function streamDefTimestep
Uwe Schulzweida's avatar
Uwe Schulzweida committed
429
      end interface
430
      interface
431
        function streamInqTimestep(streamID,tsID) bind(c,name='streamInqTimestep')
432
          import :: c_int
433
434
435
436
          integer(kind=c_int), value :: streamID
          integer(kind=c_int), value :: tsID
          integer(kind=c_int) :: streamInqTimestep
        end function streamInqTimestep
437
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
438
      interface
439
        function streamInqCurTimestepID(streamID) bind(c,name='streamInqCurTimestepID')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
440
          import :: c_int
441
442
443
          integer(kind=c_int), value :: streamID
          integer(kind=c_int) :: streamInqCurTimestepID
        end function streamInqCurTimestepID
Uwe Schulzweida's avatar
Uwe Schulzweida committed
444
445
      end interface
      interface
446
        function streamInqNvars(streamID) bind(c,name='streamInqNvars')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
447
          import :: c_int
448
449
450
          integer(kind=c_int), value :: streamID
          integer(kind=c_int) :: streamInqNvars
        end function streamInqNvars
Uwe Schulzweida's avatar
Uwe Schulzweida committed
451
452
      end interface
      interface
453
        subroutine streamWriteVar(streamID,varID,data_vec,nmiss) bind(c,name='streamWriteVar')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
454
          import :: c_int,c_double
455
456
          integer(kind=c_int), value :: streamID
          integer(kind=c_int), value :: varID
457
          real(kind=c_double), intent(in), dimension(*) :: data_vec
458
459
          integer(kind=c_int), value :: nmiss
        end subroutine streamWriteVar
Uwe Schulzweida's avatar
Uwe Schulzweida committed
460
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
461
462
463
      interface
        subroutine streamWriteVarF(streamID,varID,data_vec,nmiss) bind(c,name='streamWriteVarF')
          import :: c_int,c_float
464
465
          integer(kind=c_int), value :: streamID
          integer(kind=c_int), value :: varID
466
          real(kind=c_float), intent(in), dimension(*) :: data_vec
467
468
          integer(kind=c_int), value :: nmiss
        end subroutine streamWriteVarF
Uwe Schulzweida's avatar
Uwe Schulzweida committed
469
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
470
      interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
471
        subroutine streamReadVar(streamID,varID,data_vec,nmiss) bind(c,name='streamReadVar')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
472
          import :: c_int,c_double
473
474
          integer(kind=c_int), value :: streamID
          integer(kind=c_int), value :: varID
475
          real(kind=c_double), intent(out), dimension(*) :: data_vec
476
477
          integer(kind=c_int), intent(out) :: nmiss
        end subroutine streamReadVar
Uwe Schulzweida's avatar
Uwe Schulzweida committed
478
      end interface
479
480
481
      interface
        subroutine streamReadVarF(streamID,varID,data_vec,nmiss) bind(c,name='streamReadVarF')
          import :: c_int,c_float
482
483
          integer(kind=c_int), value :: streamID
          integer(kind=c_int), value :: varID
484
          real(kind=c_float), intent(out), dimension(*) :: data_vec
485
486
          integer(kind=c_int), intent(out) :: nmiss
        end subroutine streamReadVarF
487
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
488
      interface
489
        subroutine streamWriteVarSlice(streamID,varID,levelID,data_vec,nmiss) bind(c,name='streamWriteVarSlice')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
490
          import :: c_int,c_double
491
492
493
          integer(kind=c_int), value :: streamID
          integer(kind=c_int), value :: varID
          integer(kind=c_int), value :: levelID
494
          real(kind=c_double), intent(in), dimension(*) :: data_vec
495
496
          integer(kind=c_int), value :: nmiss
        end subroutine streamWriteVarSlice
Uwe Schulzweida's avatar
Uwe Schulzweida committed
497
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
498
499
500
      interface
        subroutine streamWriteVarSliceF(streamID,varID,levelID,data_vec,nmiss) bind(c,name='streamWriteVarSliceF')
          import :: c_int,c_float
501
502
503
          integer(kind=c_int), value :: streamID
          integer(kind=c_int), value :: varID
          integer(kind=c_int), value :: levelID
504
          real(kind=c_float), intent(in), dimension(*) :: data_vec
505
506
          integer(kind=c_int), value :: nmiss
        end subroutine streamWriteVarSliceF
Uwe Schulzweida's avatar
Uwe Schulzweida committed
507
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
508
      interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
509
510
        subroutine streamReadVarSlice(streamID,varID,levelID,data_vec,nmiss) bind(c,name='streamReadVarSlice')
          import :: c_int,c_double
511
512
513
          integer(kind=c_int), value :: streamID
          integer(kind=c_int), value :: varID
          integer(kind=c_int), value :: levelID
514
          real(kind=c_double), intent(out), dimension(*) :: data_vec
515
516
          integer(kind=c_int), intent(out) :: nmiss
        end subroutine streamReadVarSlice
Uwe Schulzweida's avatar
Uwe Schulzweida committed
517
      end interface
518
519
520
      interface
        subroutine streamReadVarSliceF(streamID,varID,levelID,data_vec,nmiss) bind(c,name='streamReadVarSliceF')
          import :: c_int,c_float
521
522
523
          integer(kind=c_int), value :: streamID
          integer(kind=c_int), value :: varID
          integer(kind=c_int), value :: levelID
524
          real(kind=c_float), intent(out), dimension(*) :: data_vec
525
526
          integer(kind=c_int), intent(out) :: nmiss
        end subroutine streamReadVarSliceF
527
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
528
529
530
      interface
        subroutine streamDefRecord(streamID,varID,levelID) bind(c,name='streamDefRecord')
          import :: c_int
531
532
533
534
          integer(kind=c_int), value :: streamID
          integer(kind=c_int), value :: varID
          integer(kind=c_int), value :: levelID
        end subroutine streamDefRecord
Uwe Schulzweida's avatar
Uwe Schulzweida committed
535
536
      end interface
      interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
537
538
        subroutine streamInqRecord(streamID,varID,levelID) bind(c,name='streamInqRecord')
          import :: c_int
539
540
541
542
          integer(kind=c_int), value :: streamID
          integer(kind=c_int), intent(out) :: varID
          integer(kind=c_int), intent(out) :: levelID
        end subroutine streamInqRecord
Uwe Schulzweida's avatar
Uwe Schulzweida committed
543
544
      end interface
      interface
545
        subroutine streamWriteRecord(streamID,data_vec,nmiss) bind(c,name='streamWriteRecord')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
546
          import :: c_int,c_double
547
          integer(kind=c_int), value :: streamID
548
          real(kind=c_double), intent(in), dimension(*) :: data_vec
549
550
          integer(kind=c_int), value :: nmiss
        end subroutine streamWriteRecord
Uwe Schulzweida's avatar
Uwe Schulzweida committed
551
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
552
553
554
      interface
        subroutine streamWriteRecordF(streamID,data_vec,nmiss) bind(c,name='streamWriteRecordF')
          import :: c_int,c_float
555
          integer(kind=c_int), value :: streamID
556
          real(kind=c_float), intent(in), dimension(*) :: data_vec
557
558
          integer(kind=c_int), value :: nmiss
        end subroutine streamWriteRecordF
Uwe Schulzweida's avatar
Uwe Schulzweida committed
559
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
560
561
562
      interface
        subroutine streamReadRecord(streamID,data_vec,nmiss) bind(c,name='streamReadRecord')
          import :: c_int,c_double
563
          integer(kind=c_int), value :: streamID
564
          real(kind=c_double), intent(out), dimension(*) :: data_vec
565
566
          integer(kind=c_int), intent(out) :: nmiss
        end subroutine streamReadRecord
Uwe Schulzweida's avatar
Uwe Schulzweida committed
567
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
568
569
570
      interface
        subroutine streamCopyRecord(streamIDdest,streamIDsrc) bind(c,name='streamCopyRecord')
          import :: c_int
571
572
573
          integer(kind=c_int), value :: streamIDdest
          integer(kind=c_int), value :: streamIDsrc
        end subroutine streamCopyRecord
Uwe Schulzweida's avatar
Uwe Schulzweida committed
574
575
      end interface
      interface
576
        function vlistCreate() bind(c,name='vlistCreate')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
577
          import :: c_int
578
579
          integer(kind=c_int) :: vlistCreate
        end function vlistCreate
Uwe Schulzweida's avatar
Uwe Schulzweida committed
580
581
582
583
      end interface
      interface
        subroutine vlistDestroy(vlistID) bind(c,name='vlistDestroy')
          import :: c_int
584
585
          integer(kind=c_int), value :: vlistID
        end subroutine vlistDestroy
Uwe Schulzweida's avatar
Uwe Schulzweida committed
586
587
      end interface
      interface
588
        function vlistDuplicate(vlistID) bind(c,name='vlistDuplicate')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
589
          import :: c_int
590
591
592
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int) :: vlistDuplicate
        end function vlistDuplicate
Uwe Schulzweida's avatar
Uwe Schulzweida committed
593
594
595
596
      end interface
      interface
        subroutine vlistCopy(vlistID2,vlistID1) bind(c,name='vlistCopy')
          import :: c_int
597
598
599
          integer(kind=c_int), value :: vlistID2
          integer(kind=c_int), value :: vlistID1
        end subroutine vlistCopy
Uwe Schulzweida's avatar
Uwe Schulzweida committed
600
601
602
603
      end interface
      interface
        subroutine vlistCopyFlag(vlistID2,vlistID1) bind(c,name='vlistCopyFlag')
          import :: c_int
604
605
606
          integer(kind=c_int), value :: vlistID2
          integer(kind=c_int), value :: vlistID1
        end subroutine vlistCopyFlag
Uwe Schulzweida's avatar
Uwe Schulzweida committed
607
608
609
610
      end interface
      interface
        subroutine vlistClearFlag(vlistID) bind(c,name='vlistClearFlag')
          import :: c_int
611
612
          integer(kind=c_int), value :: vlistID
        end subroutine vlistClearFlag
Uwe Schulzweida's avatar
Uwe Schulzweida committed
613
614
615
616
      end interface
      interface
        subroutine vlistCat(vlistID2,vlistID1) bind(c,name='vlistCat')
          import :: c_int
617
618
619
          integer(kind=c_int), value :: vlistID2
          integer(kind=c_int), value :: vlistID1
        end subroutine vlistCat
Uwe Schulzweida's avatar
Uwe Schulzweida committed
620
621
622
623
      end interface
      interface
        subroutine vlistMerge(vlistID2,vlistID1) bind(c,name='vlistMerge')
          import :: c_int
624
625
626
          integer(kind=c_int), value :: vlistID2
          integer(kind=c_int), value :: vlistID1
        end subroutine vlistMerge
Uwe Schulzweida's avatar
Uwe Schulzweida committed
627
628
629
630
      end interface
      interface
        subroutine vlistPrint(vlistID) bind(c,name='vlistPrint')
          import :: c_int
631
632
          integer(kind=c_int), value :: vlistID
        end subroutine vlistPrint
Uwe Schulzweida's avatar
Uwe Schulzweida committed
633
      end interface
634
      interface
635
        function vlistNumber(vlistID) bind(c,name='vlistNumber')
636
          import :: c_int
637
638
639
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int) :: vlistNumber
        end function vlistNumber
640
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
641
      interface
642
        function vlistNvars(vlistID) bind(c,name='vlistNvars')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
643
          import :: c_int
644
645
646
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int) :: vlistNvars
        end function vlistNvars
Uwe Schulzweida's avatar
Uwe Schulzweida committed
647
648
      end interface
      interface
649
        function vlistNgrids(vlistID) bind(c,name='vlistNgrids')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
650
          import :: c_int
651
652
653
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int) :: vlistNgrids
        end function vlistNgrids
Uwe Schulzweida's avatar
Uwe Schulzweida committed
654
655
      end interface
      interface
656
        function vlistNzaxis(vlistID) bind(c,name='vlistNzaxis')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
657
          import :: c_int
658
659
660
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int) :: vlistNzaxis
        end function vlistNzaxis
Uwe Schulzweida's avatar
Uwe Schulzweida committed
661
662
663
664
      end interface
      interface
        subroutine vlistDefNtsteps(vlistID,nts) bind(c,name='vlistDefNtsteps')
          import :: c_int
665
666
667
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: nts
        end subroutine vlistDefNtsteps
Uwe Schulzweida's avatar
Uwe Schulzweida committed
668
669
      end interface
      interface
670
        function vlistNtsteps(vlistID) bind(c,name='vlistNtsteps')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
671
          import :: c_int
672
673
674
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int) :: vlistNtsteps
        end function vlistNtsteps
Uwe Schulzweida's avatar
Uwe Schulzweida committed
675
676
      end interface
      interface
677
        function vlistGridsizeMax(vlistID) bind(c,name='vlistGridsizeMax')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
678
          import :: c_int
679
680
681
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int) :: vlistGridsizeMax
        end function vlistGridsizeMax
Uwe Schulzweida's avatar
Uwe Schulzweida committed
682
683
      end interface
      interface
684
        function vlistGrid(vlistID,index) bind(c,name='vlistGrid')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
685
          import :: c_int
686
687
688
689
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: index
          integer(kind=c_int) :: vlistGrid
        end function vlistGrid
Uwe Schulzweida's avatar
Uwe Schulzweida committed
690
691
      end interface
      interface
692
        function vlistGridIndex(vlistID,gridID) bind(c,name='vlistGridIndex')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
693
          import :: c_int
694
695
696
697
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: gridID
          integer(kind=c_int) :: vlistGridIndex
        end function vlistGridIndex
Uwe Schulzweida's avatar
Uwe Schulzweida committed
698
699
700
701
      end interface
      interface
        subroutine vlistChangeGridIndex(vlistID,index,gridID) bind(c,name='vlistChangeGridIndex')
          import :: c_int
702
703
704
705
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: index
          integer(kind=c_int), value :: gridID
        end subroutine vlistChangeGridIndex
Uwe Schulzweida's avatar
Uwe Schulzweida committed
706
707
708
709
      end interface
      interface
        subroutine vlistChangeGrid(vlistID,gridID1,gridID2) bind(c,name='vlistChangeGrid')
          import :: c_int
710
711
712
713
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: gridID1
          integer(kind=c_int), value :: gridID2
        end subroutine vlistChangeGrid
Uwe Schulzweida's avatar
Uwe Schulzweida committed
714
715
      end interface
      interface
716
        function vlistZaxis(vlistID,index) bind(c,name='vlistZaxis')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
717
          import :: c_int
718
719
720
721
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: index
          integer(kind=c_int) :: vlistZaxis
        end function vlistZaxis
Uwe Schulzweida's avatar
Uwe Schulzweida committed
722
723
      end interface
      interface
724
        function vlistZaxisIndex(vlistID,zaxisID) bind(c,name='vlistZaxisIndex')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
725
          import :: c_int
726
727
728
729
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: zaxisID
          integer(kind=c_int) :: vlistZaxisIndex
        end function vlistZaxisIndex
Uwe Schulzweida's avatar
Uwe Schulzweida committed
730
731
732
733
      end interface
      interface
        subroutine vlistChangeZaxisIndex(vlistID,index,zaxisID) bind(c,name='vlistChangeZaxisIndex')
          import :: c_int
734
735
736
737
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: index
          integer(kind=c_int), value :: zaxisID
        end subroutine vlistChangeZaxisIndex
Uwe Schulzweida's avatar
Uwe Schulzweida committed
738
739
740
741
      end interface
      interface
        subroutine vlistChangeZaxis(vlistID,zaxisID1,zaxisID2) bind(c,name='vlistChangeZaxis')
          import :: c_int
742
743
744
745
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: zaxisID1
          integer(kind=c_int), value :: zaxisID2
        end subroutine vlistChangeZaxis
Uwe Schulzweida's avatar
Uwe Schulzweida committed
746
747
      end interface
      interface
748
        function vlistNrecs(vlistID) bind(c,name='vlistNrecs')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
749
          import :: c_int
750
751
752
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int) :: vlistNrecs
        end function vlistNrecs
Uwe Schulzweida's avatar
Uwe Schulzweida committed
753
754
755
756
      end interface
      interface
        subroutine vlistDefTaxis(vlistID,taxisID) bind(c,name='vlistDefTaxis')
          import :: c_int
757
758
759
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: taxisID
        end subroutine vlistDefTaxis
Uwe Schulzweida's avatar
Uwe Schulzweida committed
760
761
      end interface
      interface
762
        function vlistInqTaxis(vlistID) bind(c,name='vlistInqTaxis')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
763
          import :: c_int
764
765
766
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int) :: vlistInqTaxis
        end function vlistInqTaxis
Uwe Schulzweida's avatar
Uwe Schulzweida committed
767
768
769
770
      end interface
      interface
        subroutine vlistDefTable(vlistID,tableID) bind(c,name='vlistDefTable')
          import :: c_int
771
772
773
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: tableID
        end subroutine vlistDefTable
Uwe Schulzweida's avatar
Uwe Schulzweida committed
774
775
      end interface
      interface
776
        function vlistInqTable(vlistID) bind(c,name='vlistInqTable')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
777
          import :: c_int
778
779
780
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int) :: vlistInqTable
        end function vlistInqTable
Uwe Schulzweida's avatar
Uwe Schulzweida committed
781
782
783
784
      end interface
      interface
        subroutine vlistDefInstitut(vlistID,instID) bind(c,name='vlistDefInstitut')
          import :: c_int
785
786
787
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: instID
        end subroutine vlistDefInstitut
Uwe Schulzweida's avatar
Uwe Schulzweida committed
788
789
      end interface
      interface
790
        function vlistInqInstitut(vlistID) bind(c,name='vlistInqInstitut')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
791
          import :: c_int
792
793
794
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int) :: vlistInqInstitut
        end function vlistInqInstitut
Uwe Schulzweida's avatar
Uwe Schulzweida committed
795
796
797
798
      end interface
      interface
        subroutine vlistDefModel(vlistID,modelID) bind(c,name='vlistDefModel')
          import :: c_int
799
800
801
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: modelID
        end subroutine vlistDefModel
Uwe Schulzweida's avatar
Uwe Schulzweida committed
802
803
      end interface
      interface
804
        function vlistInqModel(vlistID) bind(c,name='vlistInqModel')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
805
          import :: c_int
806
807
808
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int) :: vlistInqModel
        end function vlistInqModel
Uwe Schulzweida's avatar
Uwe Schulzweida committed
809
810
      end interface
      interface
811
        function vlistDefVar(vlistID,gridID,zaxisID,tsteptype) bind(c,name='vlistDefVar')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
812
          import :: c_int
813
814
815
816
817
818
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: gridID
          integer(kind=c_int), value :: zaxisID
          integer(kind=c_int), value :: tsteptype
          integer(kind=c_int) :: vlistDefVar
        end function vlistDefVar
Uwe Schulzweida's avatar
Uwe Schulzweida committed
819
820
821
822
      end interface
      interface
        subroutine vlistChangeVarGrid(vlistID,varID,gridID) bind(c,name='vlistChangeVarGrid')
          import :: c_int
823
824
825
826
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: varID
          integer(kind=c_int), value :: gridID
        end subroutine vlistChangeVarGrid
Uwe Schulzweida's avatar
Uwe Schulzweida committed
827
828
829
830
      end interface
      interface
        subroutine vlistChangeVarZaxis(vlistID,varID,zaxisID) bind(c,name='vlistChangeVarZaxis')
          import :: c_int
831
832
833
834
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: varID
          integer(kind=c_int), value :: zaxisID
        end subroutine vlistChangeVarZaxis
Uwe Schulzweida's avatar
Uwe Schulzweida committed
835
836
      end interface
      interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
837
        subroutine vlistInqVar(vlistID,varID,gridID,zaxisID,tsteptype) bind(c,name='vlistInqVar')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
838
          import :: c_int
839
840
841
842
843
844
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: varID
          integer(kind=c_int), intent(out) :: gridID
          integer(kind=c_int), intent(out) :: zaxisID
          integer(kind=c_int), intent(out) :: tsteptype
        end subroutine vlistInqVar
Uwe Schulzweida's avatar
Uwe Schulzweida committed
845
846
      end interface
      interface
847
        function vlistInqVarGrid(vlistID,varID) bind(c,name='vlistInqVarGrid')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
848
          import :: c_int
849
850
851
852
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: varID
          integer(kind=c_int) :: vlistInqVarGrid
        end function vlistInqVarGrid
Uwe Schulzweida's avatar
Uwe Schulzweida committed
853
854
      end interface
      interface
855
        function vlistInqVarZaxis(vlistID,varID) bind(c,name='vlistInqVarZaxis')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
856
          import :: c_int
857
858
859
860
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: varID
          integer(kind=c_int) :: vlistInqVarZaxis
        end function vlistInqVarZaxis
Uwe Schulzweida's avatar
Uwe Schulzweida committed
861
862
      end interface
      interface
863
        function vlistInqVarID(vlistID,code) bind(c,name='vlistInqVarID')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
864
          import :: c_int
865
866
867
868
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: code
          integer(kind=c_int) :: vlistInqVarID
        end function vlistInqVarID
Uwe Schulzweida's avatar
Uwe Schulzweida committed
869
870
      end interface
      interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
871
        subroutine vlistDefVarTsteptype(vlistID,varID,tsteptype) bind(c,name='vlistDefVarTsteptype')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
872
          import :: c_int
873
874
875
876
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: varID
          integer(kind=c_int), value :: tsteptype
        end subroutine vlistDefVarTsteptype
Uwe Schulzweida's avatar
Uwe Schulzweida committed
877
878
      end interface
      interface
879
        function vlistInqVarTsteptype(vlistID,varID) bind(c,name='vlistInqVarTsteptype')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
880
          import :: c_int
881
882
883
884
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: varID
          integer(kind=c_int) :: vlistInqVarTsteptype
        end function vlistInqVarTsteptype
Uwe Schulzweida's avatar
Uwe Schulzweida committed
885
886
      end interface
      interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
887
        subroutine vlistDefVarCompType(vlistID,varID,comptype) bind(c,name='vlistDefVarCompType')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
888
          import :: c_int
889
890
891
892
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: varID
          integer(kind=c_int), value :: comptype
        end subroutine vlistDefVarCompType
Uwe Schulzweida's avatar
Uwe Schulzweida committed
893
894
      end interface
      interface
895
        function vlistInqVarCompType(vlistID,varID) bind(c,name='vlistInqVarCompType')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
896
          import :: c_int
897
898
899
900
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: varID
          integer(kind=c_int) :: vlistInqVarCompType
        end function vlistInqVarCompType
Uwe Schulzweida's avatar
Uwe Schulzweida committed
901
902
      end interface
      interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
903
        subroutine vlistDefVarCompLevel(vlistID,varID,complevel) bind(c,name='vlistDefVarCompLevel')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
904
          import :: c_int
905
906
907
908
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: varID
          integer(kind=c_int), value :: complevel
        end subroutine vlistDefVarCompLevel
Uwe Schulzweida's avatar
Uwe Schulzweida committed
909
910
      end interface
      interface
911
        function vlistInqVarCompLevel(vlistID,varID) bind(c,name='vlistInqVarCompLevel')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
912
          import :: c_int
913
914
915
916
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: varID
          integer(kind=c_int) :: vlistInqVarCompLevel
        end function vlistInqVarCompLevel
Uwe Schulzweida's avatar
Uwe Schulzweida committed
917
      end interface
918
919
920
      interface
        subroutine vlistDefVarParam(vlistID,varID,param) bind(c,name='vlistDefVarParam')
          import :: c_int
921
922
923
924
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: varID
          integer(kind=c_int), value :: param
        end subroutine vlistDefVarParam
925
926
      end interface
      interface
927
        function vlistInqVarParam(vlistID,varID) bind(c,name='vlistInqVarParam')
928
          import :: c_int
929
930
931
932
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: varID
          integer(kind=c_int) :: vlistInqVarParam
        end function vlistInqVarParam
933
      end interface
Uwe Schulzweida's avatar
Uwe Schulzweida committed
934
935
936
      interface
        subroutine vlistDefVarCode(vlistID,varID,code) bind(c,name='vlistDefVarCode')
          import :: c_int
937
938
939
940
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: varID
          integer(kind=c_int), value :: code
        end subroutine vlistDefVarCode
Uwe Schulzweida's avatar
Uwe Schulzweida committed
941
942
      end interface
      interface
943
        function vlistInqVarCode(vlistID,varID) bind(c,name='vlistInqVarCode')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
944
          import :: c_int
945
946
947
948
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: varID
          integer(kind=c_int) :: vlistInqVarCode
        end function vlistInqVarCode
Uwe Schulzweida's avatar
Uwe Schulzweida committed
949
950
951
952
      end interface
      interface
        subroutine vlistDefVarDatatype(vlistID,varID,datatype) bind(c,name='vlistDefVarDatatype')
          import :: c_int
953
954
955
956
          integer(kind=c_int), value :: vlistID
          integer(kind=c_int), value :: varID
          integer(kind=c_int), value :: datatype
        end subroutine vlistDefVarDatatype
Uwe Schulzweida's avatar
Uwe Schulzweida committed
957
958
      end interface
      interface
959
        function vlistInqVarDatatype(vlistID,varID) bind(c,name='vlistInqVarDatatype')
Uwe Schulzweida's avatar
Uwe Schulzweida committed
960
          import :: c_int
961
962
963