NetCDF-Fortran  4.4.3
module_netcdf_nc_interfaces.f90
1 Module netcdf_nc_interfaces
2 
3 ! Fortran interfaces to netCDF C functions using FORTRAN 2003 C
4 ! Interoperability features. These interfaces are for the base
5 ! netCDF C routines in the libsrc directory
6 
7 ! Written by: Richard Weed, Ph.D.
8 ! Center for Advanced Vehicular Systems
9 ! Mississippi State University
10 ! rweed@cavs.msstate.edu
11 
12 
13 ! License (and other Lawyer Language)
14 
15 ! This software is released under the Apache 2.0 Open Source License. The
16 ! full text of the License can be viewed at :
17 !
18 ! http:www.apache.org/licenses/LICENSE-2.0.html
19 !
20 ! The author grants to the University Corporation for Atmospheric Research
21 ! (UCAR), Boulder, CO, USA the right to revise and extend the software
22 ! without restriction. However, the author retains all copyrights and
23 ! intellectual property rights explicitly stated in or implied by the
24 ! Apache license
25 
26 ! Version 1.: Sept. 2005 - Initial Cray X1 version
27 ! Version 2.: May 2006 - Updated to support g95
28 ! Version 3.: June 2006 - Updated to include netCDF 4 functions
29 ! Version 4.: April 2009 - Updated to match netCDF 4.0.1 release
30 ! Version 5.: April 2010 - Updated to match netCDF 4.1.1 release
31 ! Version 6.: April 2013 - Added nc_inq_path support for fortran 4.4 beta
32 
33  USE netcdf_nc_data
34 
35  Implicit NONE
36 
38 
39  Interface addcnullchar
40  module procedure addcnullchar
41  End Interface
42 
43  Interface stripcnullchar
44  module procedure stripcnullchar
45  End Interface
46 
54 
55 !! Also note that each interface has an explicit USE ISO_C_BINDING. A better
56 !! solution is to use the F2003 IMPORT statement (I originally had it this way)
57 !! However its best to leave the interfaces as is for now because there might
58 !! be a few compilers out there that support most of the C-interop facility but
59 !! for some reason haven't implemented IMPORT yet.
60 
61 !---------------------------------- nc_strerror -------------------------------
62 Interface
63  Function nc_strerror(ncerr) BIND(C)
64 
65  USE iso_c_binding, ONLY: c_int, c_ptr
66 
67  Integer(KIND=C_INT), VALUE :: ncerr
68 
69  Type(c_ptr) :: nc_strerror
70 
71  End Function nc_strerror
72 End Interface
73 !---------------------------------- nc_inq_libvers ----------------------------
74 Interface
75  Function nc_inq_libvers() BIND(C)
76 
77  USE iso_c_binding, ONLY: c_ptr
78 
79  Type(c_ptr) :: nc_inq_libvers
80 
81  End Function nc_inq_libvers
82 End Interface
83 !---------------------------------- nc_create ---------------------------------
84 Interface
85  Function nc_create(path, cmode, ncidp) BIND(C)
86 
87  USE iso_c_binding, ONLY: c_char, c_int
88 
89  Character(KIND=C_CHAR), Intent(IN) :: path(*)
90  Integer(KIND=C_INT), VALUE :: cmode
91  Integer(KIND=C_INT), Intent(OUT) :: ncidp
92 
93  Integer(KIND=C_INT) :: nc_create
94 
95  End Function nc_create
96 End Interface
97 !---------------------------------- nc__create --------------------------------
98 Interface
99  Function nc__create(path, cmode, initialsz, chunksizehintp, ncidp) BIND(C)
100 
101  USE iso_c_binding, ONLY: c_char, c_int, c_size_t
102 
103  Character(KIND=C_CHAR), Intent(IN) :: path(*)
104  Integer(KIND=C_INT), VALUE :: cmode
105  Integer(KIND=C_SIZE_T), VALUE :: initialsz
106  Integer(KIND=C_SIZE_T), Intent(IN) :: chunksizehintp
107  Integer(KIND=C_INT), Intent(OUT) :: ncidp
108 
109  Integer(KIND=C_INT) :: nc__create
110 
111  End Function nc__create
112 End Interface
113 !---------------------------------- nc__create_mp -----------------------------
114 Interface
115  Function nc__create_mp(path, cmode, initialsz, basepe, chunksizehintp, ncidp) &
116  bind(c)
117 
118  USE iso_c_binding, ONLY: c_char, c_int, c_size_t, c_ptr
119 
120  Character(KIND=C_CHAR), Intent(IN) :: path(*)
121  Integer(KIND=C_INT), VALUE :: cmode
122  Integer(KIND=C_SIZE_T), VALUE :: initialsz
123  Integer(KIND=C_SIZE_T), Intent(IN) :: chunksizehintp
124  Type(c_ptr), VALUE :: basepe
125  Integer(KIND=C_INT), Intent(OUT) :: ncidp
126 
127  Integer(KIND=C_INT) :: nc__create_mp
128 
129  End Function nc__create_mp
130 End Interface
131 !---------------------------------- nc_open -----------------------------------
132 Interface
133  Function nc_open(path, mode, ncidp) BIND(C)
134 
135  USE iso_c_binding, ONLY: c_char, c_int
136 
137  Character(KIND=C_CHAR), Intent(IN) :: path(*)
138  Integer(KIND=C_INT), VALUE :: mode
139  Integer(KIND=C_INT), Intent(OUT) :: ncidp
140 
141  Integer(KIND=C_INT) :: nc_open
142 
143  End Function nc_open
144 End Interface
145 !---------------------------------- nc__open ----------------------------------
146 Interface
147  Function nc__open(path, mode, chunksizehintp, ncidp) BIND(C)
148 
149  USE iso_c_binding, ONLY: c_char, c_int, c_size_t
150 
151  Character(KIND=C_CHAR), Intent(IN) :: path(*)
152  Integer(KIND=C_INT), VALUE :: mode
153  Integer(KIND=C_SIZE_T), Intent(IN) :: chunksizehintp
154  Integer(KIND=C_INT), Intent(OUT) :: ncidp
155 
156  Integer(KIND=C_INT) :: nc__open
157 
158  End Function nc__open
159 End Interface
160 !---------------------------------- nc__open_mp -------------------------------
161 Interface
162  Function nc__open_mp(path, mode, basepe, chunksizehintp, ncidp) BIND(C)
163 
164  USE iso_c_binding, ONLY: c_char, c_int, c_size_t, c_ptr
165 
166  Character(KIND=C_CHAR), Intent(IN) :: path(*)
167  Integer(KIND=C_INT), VALUE :: mode
168  Integer(KIND=C_SIZE_T), Intent(IN) :: chunksizehintp
169  Integer(KIND=C_INT), Intent(OUT) :: ncidp
170  Type(c_ptr), VALUE :: basepe
171 
172  Integer(KIND=C_INT) :: nc__open_mp
173 
174  End Function nc__open_mp
175 End Interface
176 !---------------------------------- nc_inq_path -----------------------------
177 Interface
178  Function nc_inq_path(ncid, pathlen, path) BIND(C)
179 
180  USE iso_c_binding, ONLY: c_int, c_size_t, c_char
181 
182  Integer(KIND=C_INT), VALUE :: ncid
183  Integer(KIND=C_SIZE_T), Intent(INOUT) :: pathlen
184  Character(KIND=C_CHAR), Intent(INOUT) :: path(*)
185 
186  Integer(KIND=C_INT) :: nc_inq_path
187 
188  End Function nc_inq_path
189 End Interface
190 !---------------------------------- nc_set_fill -------------------------------
191 Interface
192  Function nc_set_fill(ncid, fillmode, old_modep) BIND(C)
193 
194  USE iso_c_binding, ONLY: c_int
195 
196  Integer(KIND=C_INT), VALUE :: ncid
197  Integer(KIND=C_INT), VALUE :: fillmode
198  Integer(KIND=C_INT), Intent(OUT) :: old_modep
199 
200  Integer(KIND=C_INT) :: nc_set_fill
201 
202  End Function nc_set_fill
203 End Interface
204 !---------------------------------- nc_redef ----------------------------------
205 Interface
206  Function nc_redef(ncid) BIND(C)
207 
208  USE iso_c_binding, ONLY: c_int
209 
210  Integer(KIND=C_INT), VALUE :: ncid
211 
212  Integer(KIND=C_INT) :: nc_redef
213 
214  End Function nc_redef
215 End Interface
216 !---------------------------------- nc_enddef ---------------------------------
217 Interface
218  Function nc_enddef(ncid) BIND(C)
219 
220  USE iso_c_binding, ONLY: c_int
221 
222  Integer(KIND=C_INT), VALUE :: ncid
223 
224  Integer(KIND=C_INT) :: nc_enddef
225 
226  End Function nc_enddef
227 End Interface
228 !---------------------------------- nc__enddef --------------------------------
229 Interface
230  Function nc__enddef(ncid, h_minfree, v_align, v_minfree, r_align) BIND(C)
231 
232  USE iso_c_binding, ONLY: c_int, c_size_t
233 
234  Integer(KIND=C_INT), VALUE :: ncid
235  Integer(KIND=C_SIZE_T), VALUE :: h_minfree, v_align, v_minfree, r_align
236 
237  Integer(KIND=C_INT) :: nc__enddef
238 
239  End Function nc__enddef
240 End Interface
241 !---------------------------------- nc_sync -----------------------------------
242 Interface
243  Function nc_sync(ncid) BIND(C)
244 
245  USE iso_c_binding, ONLY: c_int
246 
247  Integer(KIND=C_INT), VALUE :: ncid
248 
249  Integer(KIND=C_INT) :: nc_sync
250 
251  End Function nc_sync
252 End Interface
253 !---------------------------------- nc_abort ----------------------------------
254 Interface
255  Function nc_abort(ncid) BIND(C)
256 
257  USE iso_c_binding, ONLY: c_int
258 
259  Integer(KIND=C_INT), VALUE :: ncid
260 
261  Integer(KIND=C_INT) :: nc_abort
262 
263  End Function nc_abort
264 End Interface
265 !---------------------------------- nc_close ----------------------------------
266 Interface
267  Function nc_close(ncid) BIND(C)
268 
269  USE iso_c_binding, ONLY: c_int
270 
271  Integer(KIND=C_INT), VALUE :: ncid
272 
273  Integer(KIND=C_INT) :: nc_close
274 
275  End Function nc_close
276 End Interface
277 !---------------------------------- nc_delete --------------------------------
278 Interface
279  Function nc_delete(path) BIND(C)
280 
281  USE iso_c_binding, ONLY: c_int, c_char
282 
283  Character(KIND=C_CHAR), Intent(IN) :: path(*)
284 
285  Integer(KIND=C_INT) :: nc_delete
286 
287  End Function nc_delete
288 End Interface
289 !---------------------------------- nc_delete_mp -----------------------------
290 Interface
291  Function nc_delete_mp(path, pe) BIND(C)
292 
293  USE iso_c_binding, ONLY: c_int, c_char
294 
295  Character(KIND=C_CHAR), Intent(IN) :: path(*)
296  Integer(KIND=C_INT), VALUE :: pe
297 
298  Integer(KIND=C_INT) :: nc_delete_mp
299 
300  End Function nc_delete_mp
301 End Interface
302 !---------------------------------- nc_set_base_pe ----------------------------
303 Interface
304  Function nc_set_base_pe(ncid, pe) BIND(C)
305 
306  USE iso_c_binding, ONLY: c_int
307 
308  Integer(KIND=C_INT), VALUE :: ncid, pe
309 
310  Integer(KIND=C_INT) :: nc_set_base_pe
311 
312  End Function nc_set_base_pe
313 End Interface
314 !---------------------------------- nc_inq_base_pe ----------------------------
315 Interface
316  Function nc_inq_base_pe(ncid, pe) BIND(C)
317 
318  USE iso_c_binding, ONLY: c_int
319 
320  Integer(KIND=C_INT), VALUE :: ncid
321  Integer(KIND=C_INT), Intent(OUT) :: pe
322 
323  Integer(KIND=C_INT) :: nc_inq_base_pe
324 
325  End Function nc_inq_base_pe
326 End Interface
327 !---------------------------------- nc_inq ------------------------------------
328 Interface
329  Function nc_inq(ncid, ndimsp, nvarsp, ngattsp, unlimdimidp) BIND(C)
330 
331  USE iso_c_binding, ONLY: c_int
332 
333  Integer(KIND=C_INT), VALUE :: ncid
334  Integer(KIND=C_INT), Intent(OUT) :: ndimsp, nvarsp, ngattsp, unlimdimidp
335 
336  Integer(KIND=C_INT) :: nc_inq
337 
338  End Function nc_inq
339 End Interface
340 !---------------------------------- nc_inq_ndims ------------------------------
341 Interface
342  Function nc_inq_ndims(ncid, ndimsp) BIND(C)
343 
344  USE iso_c_binding, ONLY: c_int
345 
346  Integer(KIND=C_INT), VALUE :: ncid
347  Integer(KIND=C_INT), Intent(OUT) :: ndimsp
348 
349  Integer(KIND=C_INT) :: nc_inq_ndims
350 
351  End Function nc_inq_ndims
352 End Interface
353 !---------------------------------- nc_inq_nvars ------------------------------
354 Interface
355  Function nc_inq_nvars(ncid, nvarsp) BIND(C)
356 
357  USE iso_c_binding, ONLY: c_int
358 
359  Integer(KIND=C_INT), VALUE :: ncid
360  Integer(KIND=C_INT), Intent(OUT) :: nvarsp
361 
362  Integer(KIND=C_INT) :: nc_inq_nvars
363 
364  End Function nc_inq_nvars
365 End Interface
366 !---------------------------------- nc_inq_natts ------------------------------
367 Interface
368  Function nc_inq_natts(ncid, ngattsp) BIND(C)
369 
370  USE iso_c_binding, ONLY: c_int
371 
372  Integer(KIND=C_INT), VALUE :: ncid
373  Integer(KIND=C_INT), Intent(OUT) :: ngattsp
374 
375  Integer(KIND=C_INT) :: nc_inq_natts
376 
377  End Function nc_inq_natts
378 End Interface
379 !---------------------------------- nc_inq_unlimdim ---------------------------
380 Interface
381  Function nc_inq_unlimdim(ncid, unlimdimidp) BIND(C)
382 
383  USE iso_c_binding, ONLY: c_int
384 
385  Integer(KIND=C_INT), VALUE :: ncid
386  Integer(KIND=C_INT), Intent(OUT) :: unlimdimidp
387 
388  Integer(KIND=C_INT) :: nc_inq_unlimdim
389 
390  End Function nc_inq_unlimdim
391 End Interface
392 !---------------------------------- nc_inq_format -----------------------------
393 Interface
394  Function nc_inq_format(ncid, formatp) BIND(C)
395 
396  USE iso_c_binding, ONLY: c_int
397 
398  Integer(KIND=C_INT), VALUE :: ncid
399  Integer(KIND=C_INT), Intent(OUT) :: formatp
400 
401  Integer(KIND=C_INT) :: nc_inq_format
402 
403  End Function nc_inq_format
404 End Interface
405 !---------------------------------- nc_def_dim --------------------------------
406 Interface
407  Function nc_def_dim(ncid, name, nlen, idp) BIND(C)
408 
409  USE iso_c_binding, ONLY: c_int, c_size_t, c_char
410 
411  Integer(KIND=C_INT), VALUE :: ncid
412  Character(KIND=C_CHAR), Intent(IN) :: name(*)
413  Integer(KIND=C_SIZE_T), VALUE :: nlen
414  Integer(KIND=C_INT), Intent(INOUT) :: idp
415 
416  Integer(KIND=C_INT) :: nc_def_dim
417 
418  End Function nc_def_dim
419 End Interface
420 !---------------------------------- nc_inq_dimid ------------------------------
421 Interface
422  Function nc_inq_dimid(ncid, name, idp) BIND(C)
423 
424  USE iso_c_binding, ONLY: c_int, c_char
425 
426  Integer(KIND=C_INT), VALUE :: ncid
427  Character(KIND=C_CHAR), Intent(IN) :: name(*)
428  Integer(KIND=C_INT), Intent(INOUT) :: idp
429 
430  Integer(KIND=C_INT) :: nc_inq_dimid
431 
432  End Function nc_inq_dimid
433 End Interface
434 !---------------------------------- nc_inq_dim --------------------------------
435 Interface
436  Function nc_inq_dim(ncid, dimid, name, lenp) BIND(C)
437 
438  USE iso_c_binding, ONLY: c_int, c_size_t, c_char
439 
440  Integer(KIND=C_INT), VALUE :: ncid
441  Integer(KIND=C_INT), VALUE :: dimid
442  Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
443  Integer(KIND=C_SIZE_T), Intent(OUT) :: lenp
444 
445  Integer(KIND=C_INT) :: nc_inq_dim
446 
447  End Function nc_inq_dim
448 End Interface
449 !---------------------------------- nc_inq_dimname ----------------------------
450 Interface
451  Function nc_inq_dimname(ncid, dimid, name) BIND(C)
452 
453  USE iso_c_binding, ONLY: c_int, c_char
454 
455  Integer(KIND=C_INT), VALUE :: ncid
456  Integer(KIND=C_INT), VALUE :: dimid
457  Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
458 
459  Integer(KIND=C_INT) :: nc_inq_dimname
460 
461  End Function nc_inq_dimname
462 End Interface
463 !---------------------------------- nc_inq_dimlen -----------------------------
464 Interface
465  Function nc_inq_dimlen(ncid, dimid, lenp) BIND(C)
466 
467  USE iso_c_binding, ONLY: c_int, c_size_t
468 
469  Integer(KIND=C_INT), VALUE :: ncid
470  Integer(KIND=C_INT), VALUE :: dimid
471  Integer(KIND=C_SIZE_T), Intent(OUT) :: lenp
472 
473  Integer(KIND=C_INT) :: nc_inq_dimlen
474 
475  End Function nc_inq_dimlen
476 End Interface
477 !---------------------------------- nc_rename_dim -----------------------------
478 Interface
479  Function nc_rename_dim(ncid, dimid, name) BIND(C)
480 
481  USE iso_c_binding, ONLY: c_int, c_char
482 
483  Integer(KIND=C_INT), VALUE :: ncid
484  Integer(KIND=C_INT), VALUE :: dimid
485  Character(KIND=C_CHAR), Intent(IN) :: name(*)
486 
487  Integer(KIND=C_INT) :: nc_rename_dim
488 
489  End Function nc_rename_dim
490 End Interface
491 !---------------------------------- nc_def_var --------------------------------
492 Interface
493  Function nc_def_var(ncid, name, xtype, ndims, dimidsp, varidp) BIND(C)
494 
495  USE iso_c_binding, ONLY: c_int, c_char
496 
497  Integer(KIND=C_INT), VALUE :: ncid
498  Character(KIND=C_CHAR), Intent(IN) :: name(*)
499  Integer(KIND=C_INT), VALUE :: xtype
500  Integer(KIND=C_INT), VALUE :: ndims
501  Integer(KIND=C_INT), Intent(IN) :: dimidsp(*)
502  Integer(KIND=C_INT), Intent(OUT) :: varidp
503 
504  Integer(KIND=C_INT) :: nc_def_var
505 
506  End Function nc_def_var
507 End Interface
508 !---------------------------------- nc_inq_var --------------------------------
509 Interface
510  Function nc_inq_var(ncid, varid, name, xtypep, ndimsp, dimidsp, nattsp) &
511  bind(c)
512 
513  USE iso_c_binding, ONLY: c_int, c_char
514 
515  Integer(KIND=C_INT), VALUE :: ncid, varid
516  Character(KIND=C_CHAR), Intent(OUT) :: name(*)
517  Integer(KIND=C_INT), Intent(OUT) :: xtypep
518  Integer(KIND=C_INT), Intent(OUT) :: ndimsp
519  Integer(KIND=C_INT), Intent(OUT) :: dimidsp(*)
520  Integer(KIND=C_INT), Intent(OUT) :: nattsp
521 
522  Integer(KIND=C_INT) :: nc_inq_var
523 
524  End Function nc_inq_var
525 End Interface
526 !---------------------------------- nc_inq_varid ------------------------------
527 Interface
528  Function nc_inq_varid(ncid, name, varidp) BIND(C)
529 
530  USE iso_c_binding, ONLY: c_int, c_char
531 
532  Integer(KIND=C_INT), VALUE :: ncid
533  Character(KIND=C_CHAR), Intent(IN) :: name(*)
534  Integer(KIND=C_INT), Intent(OUT) :: varidp
535 
536  Integer(KIND=C_INT) :: nc_inq_varid
537 
538  End Function nc_inq_varid
539 End Interface
540 !---------------------------------- nc_inq_varname ----------------------------
541 Interface
542  Function nc_inq_varname(ncid, varid, name) BIND(C)
543 
544  USE iso_c_binding, ONLY: c_int, c_char
545 
546  Integer(KIND=C_INT), VALUE :: ncid, varid
547  Character(KIND=C_CHAR), Intent(OUT) :: name(*)
548 
549  Integer(KIND=C_INT) :: nc_inq_varname
550 
551  End Function nc_inq_varname
552 End Interface
553 !---------------------------------- nc_inq_vartype ----------------------------
554 Interface
555  Function nc_inq_vartype(ncid, varid, xtypep) BIND(C)
556 
557  USE iso_c_binding, ONLY: c_int
558 
559  Integer(KIND=C_INT), VALUE :: ncid, varid
560  Integer(KIND=C_INT), Intent(OUT) :: xtypep
561 
562  Integer(KIND=C_INT) :: nc_inq_vartype
563 
564  End Function nc_inq_vartype
565 End Interface
566 !---------------------------------- nc_inq_varndims ---------------------------
567 Interface
568  Function nc_inq_varndims(ncid, varid, ndimsp) BIND(C)
569 
570  USE iso_c_binding, ONLY: c_int
571 
572  Integer(KIND=C_INT), VALUE :: ncid, varid
573  Integer(KIND=C_INT), Intent(OUT) :: ndimsp
574 
575  Integer(KIND=C_INT) :: nc_inq_varndims
576 
577  End Function nc_inq_varndims
578 End Interface
579 !---------------------------------- nc_inq_vardimid ---------------------------
580 Interface
581  Function nc_inq_vardimid(ncid, varid, dimidsp) BIND(C)
582 
583  USE iso_c_binding, ONLY: c_int
584 
585  Integer(KIND=C_INT), VALUE :: ncid, varid
586  Integer(KIND=C_INT), Intent(OUT) :: dimidsp(*)
587 
588  Integer(KIND=C_INT) :: nc_inq_vardimid
589 
590  End Function nc_inq_vardimid
591 End Interface
592 !---------------------------------- nc_inq_varnatts ---------------------------
593 Interface
594  Function nc_inq_varnatts(ncid, varid, nattsp) BIND(C)
595 
596  USE iso_c_binding, ONLY: c_int
597 
598  Integer(KIND=C_INT), VALUE :: ncid, varid
599  Integer(KIND=C_INT), Intent(OUT) :: nattsp
600 
601  Integer(KIND=C_INT) :: nc_inq_varnatts
602 
603  End Function nc_inq_varnatts
604 End Interface
605 !---------------------------------- nc_rename_var -----------------------------
606 Interface
607  Function nc_rename_var(ncid, varid, name) BIND(C)
608 
609  USE iso_c_binding, ONLY: c_int, c_char
610 
611  Integer(KIND=C_INT), VALUE :: ncid, varid
612  Character(KIND=C_CHAR), Intent(IN) :: name(*)
613 
614  Integer(KIND=C_INT) :: nc_rename_var
615 
616  End Function nc_rename_var
617 End Interface
618 !---------------------------------- nc_put_var_text ---------------------------
619 Interface
620  Function nc_put_var_text(ncid, varid, op) BIND(C)
621 
622  USE iso_c_binding, ONLY: c_int, c_char
623 
624  Integer(KIND=C_INT), VALUE :: ncid, varid
625  Character(KIND=C_CHAR), Intent(IN) :: op(*)
626 
627  Integer(KIND=C_INT) :: nc_put_var_text
628 
629  End Function nc_put_var_text
630 End Interface
631 !---------------------------------- nc_get_var_text ---------------------------
632 Interface
633  Function nc_get_var_text(ncid, varid, ip) BIND(C)
634 
635  USE iso_c_binding, ONLY: c_int, c_char
636 
637  Integer(KIND=C_INT), VALUE :: ncid, varid
638  Character(KIND=C_CHAR), Intent(INOUT) :: ip(*)
639 
640  Integer(KIND=C_INT) :: nc_get_var_text
641 
642  End Function nc_get_var_text
643 End Interface
644 !---------------------------------- nc_put_var_uchar --------------------------
645 Interface
646  Function nc_put_var_uchar(ncid, varid, op) BIND(C)
647 
648  USE iso_c_binding, ONLY: c_int
649  USE netcdf_nc_data, ONLY: cint1
650 
651  Integer(KIND=C_INT), VALUE :: ncid, varid
652  Integer(KIND=CINT1), Intent(IN) :: op(*)
653 
654  Integer(KIND=C_INT) :: nc_put_var_uchar
655 
656  End Function nc_put_var_uchar
657 End Interface
658 !---------------------------------- nc_get_var_uchar --------------------------
659 Interface
660  Function nc_get_var_uchar(ncid, varid, ip) BIND(C)
661 
662  USE iso_c_binding, ONLY: c_int
663  USE netcdf_nc_data, ONLY: cint1
664 
665  Integer(KIND=C_INT), VALUE :: ncid, varid
666  Integer(KIND=CINT1), Intent(OUT) :: ip(*)
667 
668  Integer(KIND=C_INT) :: nc_get_var_uchar
669 
670  End Function nc_get_var_uchar
671 End Interface
672 !---------------------------------- nc_put_var_schar --------------------------
673 Interface
674  Function nc_put_var_schar(ncid, varid, op) BIND(C)
675 
676  USE iso_c_binding, ONLY: c_int
677  USE netcdf_nc_data, ONLY: cint1
678 
679  Integer(KIND=C_INT), VALUE :: ncid, varid
680  Integer(KIND=CINT1), Intent(IN) :: op(*)
681 
682  Integer(KIND=C_INT) :: nc_put_var_schar
683 
684  End Function nc_put_var_schar
685 End Interface
686 !---------------------------------- nc_get_var_schar --------------------------
687 Interface
688  Function nc_get_var_schar(ncid, varid, ip) BIND(C)
689 
690  USE iso_c_binding, ONLY: c_int
691  USE netcdf_nc_data, ONLY: cint1
692 
693  Integer(KIND=C_INT), VALUE :: ncid, varid
694  Integer(KIND=CINT1), Intent(OUT) :: ip(*)
695 
696  Integer(KIND=C_INT) :: nc_get_var_schar
697 
698  End Function nc_get_var_schar
699 End Interface
700 !---------------------------------- nc_put_var_short --------------------------
701 Interface
702  Function nc_put_var_short(ncid, varid, op) BIND(C)
703 
704  USE iso_c_binding, ONLY: c_int
705  USE netcdf_nc_data, ONLY: cint2
706 
707  Integer(KIND=C_INT), VALUE :: ncid, varid
708  Integer(KIND=CINT2), Intent(IN) :: op(*)
709 
710  Integer(KIND=C_INT) :: nc_put_var_short
711 
712  End Function nc_put_var_short
713 End Interface
714 !---------------------------------- nc_get_var_short --------------------------
715 Interface
716  Function nc_get_var_short(ncid, varid, ip) BIND(C)
717 
718  USE iso_c_binding, ONLY: c_int
719  USE netcdf_nc_data, ONLY: cint2
720 
721  Integer(KIND=C_INT), VALUE :: ncid, varid
722  Integer(KIND=CINT2), Intent(OUT) :: ip(*)
723 
724  Integer(KIND=C_INT) :: nc_get_var_short
725 
726  End Function nc_get_var_short
727 End Interface
728 !---------------------------------- nc_put_var_int ----------------------------
729 Interface
730  Function nc_put_var_int(ncid, varid, op) BIND(C)
731 
732  USE iso_c_binding, ONLY: c_int
733  USE netcdf_nc_data, ONLY: cint
734 
735  Integer(KIND=C_INT), VALUE :: ncid, varid
736  Integer(KIND=CINT), Intent(IN) :: op(*)
737 
738  Integer(KIND=C_INT) :: nc_put_var_int
739 
740  End Function nc_put_var_int
741 End Interface
742 !---------------------------------- nc_get_var_int ----------------------------
743 Interface
744  Function nc_get_var_int(ncid, varid, ip) BIND(C)
745 
746  USE iso_c_binding, ONLY: c_int
747  USE netcdf_nc_data, ONLY: cint
748 
749  Integer(KIND=C_INT), VALUE :: ncid, varid
750  Integer(KIND=CINT), Intent(OUT) :: ip(*)
751 
752  Integer(KIND=C_INT) :: nc_get_var_int
753 
754  End Function nc_get_var_int
755 End Interface
756 !---------------------------------- nc_put_var_long ----------------------------
757 Interface
758  Function nc_put_var_long(ncid, varid, op) BIND(C)
759 
760  USE iso_c_binding, ONLY: c_int, c_long
761 
762  Integer(KIND=C_INT), VALUE :: ncid, varid
763  Integer(KIND=C_LONG), Intent(IN) :: op(*)
764 
765  Integer(KIND=C_INT) :: nc_put_var_long
766 
767  End Function nc_put_var_long
768 End Interface
769 !---------------------------------- nc_get_var_long ---------------------------
770 Interface
771  Function nc_get_var_long(ncid, varid, ip) BIND(C)
772 
773  USE iso_c_binding, ONLY: c_int, c_long
774 
775  Integer(KIND=C_INT), VALUE :: ncid, varid
776  Integer(KIND=C_LONG), Intent(OUT) :: ip(*)
777 
778  Integer(KIND=C_INT) :: nc_get_var_long
779 
780  End Function nc_get_var_long
781 End Interface
782 !---------------------------------- nc_put_var_float --------------------------
783 Interface
784  Function nc_put_var_float(ncid, varid, op) BIND(C)
785 
786  USE iso_c_binding, ONLY: c_int, c_float
787 
788  Integer(KIND=C_INT), VALUE :: ncid, varid
789  Real(KIND=C_FLOAT), Intent(IN) :: op(*)
790 
791  Integer(KIND=C_INT) :: nc_put_var_float
792 
793  End Function nc_put_var_float
794 End Interface
795 !---------------------------------- nc_get_var_float --------------------------
796 Interface
797  Function nc_get_var_float(ncid, varid, ip) BIND(C)
798 
799  USE iso_c_binding, ONLY: c_int, c_float
800 
801  Implicit NONE
802 
803  Integer(KIND=C_INT), VALUE :: ncid, varid
804  Real(KIND=C_FLOAT), Intent(OUT) :: ip(*)
805 
806  Integer(KIND=C_INT) :: nc_get_var_float
807 
808  End Function nc_get_var_float
809 End Interface
810 !---------------------------------- nc_put_var_double -------------------------
811 Interface
812  Function nc_put_var_double(ncid, varid, op) BIND(C)
813 
814  USE iso_c_binding, ONLY: c_int, c_double
815 
816  Integer(KIND=C_INT), VALUE :: ncid, varid
817  Real(KIND=C_DOUBLE), Intent(IN) :: op(*)
818 
819  Integer(KIND=C_INT) :: nc_put_var_double
820 
821  End Function nc_put_var_double
822 End Interface
823 !---------------------------------- nc_get_var_double -------------------------
824 Interface
825  Function nc_get_var_double(ncid, varid, ip) BIND(C)
826 
827  USE iso_c_binding, ONLY: c_int, c_double
828 
829  Integer(KIND=C_INT), VALUE :: ncid, varid
830  Real(KIND=C_DOUBLE), Intent(OUT) :: ip(*)
831 
832  Integer(KIND=C_INT) :: nc_get_var_double
833 
834  End Function nc_get_var_double
835 End Interface
836 !---------------------------------- nc_put_var1_text --------------------------
837 Interface
838  Function nc_put_var1_text(ncid, varid, indexp, op) BIND(C)
839 
840  USE iso_c_binding, ONLY: c_int, c_ptr, c_char
841 
842  Integer(KIND=C_INT), VALUE :: ncid, varid
843  Type(c_ptr), VALUE :: indexp
844  Character(LEN=C_CHAR), Intent(IN) :: op
845 
846  Integer(KIND=C_INT) :: nc_put_var1_text
847 
848  End Function nc_put_var1_text
849 End Interface
850 !---------------------------------- nc_get_var1_test --------------------------
851 Interface
852  Function nc_get_var1_text(ncid, varid, indexp, ip) BIND(C)
853 
854  USE iso_c_binding, ONLY: c_int, c_ptr, c_char
855 
856  Integer(KIND=C_INT), VALUE :: ncid, varid
857  Type(c_ptr), VALUE :: indexp
858  Character(KIND=C_CHAR), Intent(OUT) :: ip
859 
860  Integer(KIND=C_INT) :: nc_get_var1_text
861 
862  End Function nc_get_var1_text
863 End Interface
864 !---------------------------------- nc_put_var1_uchar -------------------------
865 Interface
866  Function nc_put_var1_uchar(ncid, varid, indexp, op) BIND(C)
867 
868  USE iso_c_binding, ONLY: c_int, c_ptr
869  USE netcdf_nc_data, ONLY: cint1
870 
871  Integer(KIND=C_INT), VALUE :: ncid, varid
872  Type(c_ptr), VALUE :: indexp
873  Integer(KIND=CINT1), Intent(IN) :: op
874 
875  Integer(KIND=C_INT) :: nc_put_var1_uchar
876 
877  End Function nc_put_var1_uchar
878 End Interface
879 !---------------------------------- nc_get_var1_uchar -------------------------
880 Interface
881  Function nc_get_var1_uchar(ncid, varid, indexp, ip) BIND(C)
882 
883  USE iso_c_binding, ONLY: c_int, c_ptr
884  USE netcdf_nc_data, ONLY: cint1
885 
886  Integer(KIND=C_INT), VALUE :: ncid, varid
887  Type(c_ptr), VALUE :: indexp
888  Integer(KIND=CINT1), Intent(OUT) :: ip
889 
890  Integer(KIND=C_INT) :: nc_get_var1_uchar
891 
892  End Function nc_get_var1_uchar
893 End Interface
894 !---------------------------------- nc_put_var1_schar -------------------------
895 Interface
896  Function nc_put_var1_schar(ncid, varid, indexp, op) BIND(C)
897 
898  USE iso_c_binding, ONLY: c_int, c_ptr
899  USE netcdf_nc_data, ONLY: cint1
900 
901  Integer(KIND=C_INT), VALUE :: ncid, varid
902  Type(c_ptr), VALUE :: indexp
903  Integer(KIND=CINT1), Intent(IN) :: op
904 
905  Integer(KIND=C_INT) :: nc_put_var1_schar
906 
907  End Function nc_put_var1_schar
908 End Interface
909 !---------------------------------- nc_get_var1_schar -------------------------
910 Interface
911  Function nc_get_var1_schar(ncid, varid, indexp, ip) BIND(C)
912 
913  USE iso_c_binding, ONLY: c_int, c_ptr
914  USE netcdf_nc_data, ONLY: cint1
915 
916  Integer(KIND=C_INT), VALUE :: ncid, varid
917  Type(c_ptr), VALUE :: indexp
918  Integer(KIND=CINT1), Intent(OUT) :: ip
919 
920  Integer(KIND=C_INT) :: nc_get_var1_schar
921 
922  End Function nc_get_var1_schar
923 End Interface
924 !---------------------------------- nc_put_var1_short -------------------------
925 Interface
926  Function nc_put_var1_short(ncid, varid, indexp, op) BIND(C)
927 
928  USE iso_c_binding, ONLY: c_int, c_ptr
929  USE netcdf_nc_data, ONLY: cint2
930 
931  Integer(KIND=C_INT), VALUE :: ncid, varid
932  Type(c_ptr), VALUE :: indexp
933  Integer(KIND=CINT2), Intent(IN) :: op
934 
935  Integer(KIND=C_INT) :: nc_put_var1_short
936 
937  End Function nc_put_var1_short
938 End Interface
939 !---------------------------------- nc_get_var1_short -------------------------
940 Interface
941  Function nc_get_var1_short(ncid, varid, indexp, ip) BIND(C)
942 
943  USE iso_c_binding, ONLY: c_int, c_ptr
944  USE netcdf_nc_data, ONLY: cint2
945 
946  Integer(KIND=C_INT), VALUE :: ncid, varid
947  Type(c_ptr), VALUE :: indexp
948  Integer(KIND=CINT2), Intent(OUT) :: ip
949 
950  Integer(KIND=C_INT) :: nc_get_var1_short
951 
952  End Function nc_get_var1_short
953 End Interface
954 !---------------------------------- nc_put_var1_int ---------------------------
955 Interface
956  Function nc_put_var1_int(ncid, varid, indexp, op) BIND(C)
957 
958  USE iso_c_binding, ONLY: c_int, c_ptr
959 
960  Integer(KIND=C_INT), VALUE :: ncid, varid
961  Type(c_ptr), VALUE :: indexp
962  Integer(KIND=C_INT), Intent(IN) :: op
963 
964  Integer(KIND=C_INT) :: nc_put_var1_int
965 
966  End Function nc_put_var1_int
967 End Interface
968 !---------------------------------- nc_get_var1_int ---------------------------
969 Interface
970  Function nc_get_var1_int(ncid, varid, indexp, ip) BIND(C)
971 
972  USE iso_c_binding, ONLY: c_int, c_ptr
973 
974  Integer(KIND=C_INT), VALUE :: ncid, varid
975  Type(c_ptr), VALUE :: indexp
976  Integer(KIND=C_INT), Intent(OUT) :: ip
977 
978  Integer(KIND=C_INT) :: nc_get_var1_int
979 
980  End Function nc_get_var1_int
981 End Interface
982 !---------------------------------- nc_put_var1_long --------------------------
983 Interface
984  Function nc_put_var1_long(ncid, varid, indexp, op) BIND(C)
985 
986  USE iso_c_binding, ONLY: c_int, c_long, c_ptr
987 
988  Integer(KIND=C_INT), VALUE :: ncid, varid
989  Type(c_ptr), VALUE :: indexp
990  Integer(KIND=C_LONG), Intent(IN) :: op
991 
992  Integer(KIND=C_INT) :: nc_put_var1_long
993 
994  End Function nc_put_var1_long
995 End Interface
996 !---------------------------------- nc_get_var1_long --------------------------
997 Interface
998  Function nc_get_var1_long(ncid, varid, indexp, ip) BIND(C)
999 
1000  USE iso_c_binding, ONLY: c_int, c_long, c_ptr
1001 
1002  Integer(KIND=C_INT), VALUE :: ncid, varid
1003  Type(c_ptr), VALUE :: indexp
1004  Integer(KIND=C_LONG), Intent(OUT) :: ip
1005 
1006  Integer(KIND=C_INT) :: nc_get_var1_long
1007 
1008  End Function nc_get_var1_long
1009 End Interface
1010 !---------------------------------- nc_put_var1_float -------------------------
1011 Interface
1012  Function nc_put_var1_float(ncid, varid, indexp, op) BIND(C)
1013 
1014  USE iso_c_binding, ONLY: c_int, c_float, c_ptr
1015 
1016  Integer(KIND=C_INT), VALUE :: ncid, varid
1017  Type(c_ptr), VALUE :: indexp
1018  Real(KIND=C_FLOAT), Intent(IN) :: op
1019 
1020  Integer(KIND=C_INT) :: nc_put_var1_float
1021 
1022  End Function nc_put_var1_float
1023 End Interface
1024 !---------------------------------- nc_get_var1_float -------------------------
1025 Interface
1026  Function nc_get_var1_float(ncid, varid, indexp, ip) BIND(C)
1027 
1028  USE iso_c_binding, ONLY: c_int, c_float, c_ptr
1029 
1030  Integer(KIND=C_INT), VALUE :: ncid, varid
1031  Type(c_ptr), VALUE :: indexp
1032  Real(KIND=C_FLOAT), Intent(OUT) :: ip
1033 
1034  Integer(KIND=C_INT) :: nc_get_var1_float
1035 
1036  End Function nc_get_var1_float
1037 End Interface
1038 !---------------------------------- nc_put_var1_double ------------------------
1039 Interface
1040  Function nc_put_var1_double(ncid, varid, indexp, op) BIND(C)
1041 
1042  USE iso_c_binding, ONLY: c_int, c_double, c_ptr
1043 
1044  Integer(KIND=C_INT), VALUE :: ncid, varid
1045  Type(c_ptr), VALUE :: indexp
1046  Real(KIND=C_DOUBLE), Intent(IN) :: op
1047 
1048  Integer(KIND=C_INT) :: nc_put_var1_double
1049 
1050  End Function nc_put_var1_double
1051 End Interface
1052 !---------------------------------- nc_get_var1_double ------------------------
1053 Interface
1054  Function nc_get_var1_double(ncid, varid, indexp, ip) BIND(C)
1055 
1056  USE iso_c_binding, ONLY: c_int, c_double, c_ptr
1057 
1058  Integer(KIND=C_INT), VALUE :: ncid, varid
1059  Type(c_ptr), VALUE :: indexp
1060  Real(KIND=C_DOUBLE), Intent(OUT) :: ip
1061 
1062  Integer(KIND=C_INT) :: nc_get_var1_double
1063 
1064  End Function nc_get_var1_double
1065 End Interface
1066 !---------------------------------- nc_put_var1 ------------------------------
1067 Interface
1068  Function nc_put_var1(ncid, varid, indexp, op) BIND(C)
1069 
1070  USE iso_c_binding, ONLY: c_int, c_ptr, c_char
1071 
1072  Integer(KIND=C_INT), VALUE :: ncid, varid
1073  Type(c_ptr), VALUE :: indexp
1074  Type(c_ptr), VALUE :: op
1075 
1076  Integer(KIND=C_INT) :: nc_put_var1
1077 
1078  End Function nc_put_var1
1079 End Interface
1080 !---------------------------------- nc_get_var1 ------------------------------
1081 Interface
1082  Function nc_get_var1(ncid, varid, indexp, op) BIND(C)
1083 
1084  USE iso_c_binding, ONLY: c_int, c_ptr, c_char
1085 
1086  Integer(KIND=C_INT), VALUE :: ncid, varid
1087  Type(c_ptr), VALUE :: indexp
1088  Character(KIND=C_CHAR), Intent(INOUT) :: op(*) ! op is actually void * in C
1089 
1090  Integer(KIND=C_INT) :: nc_get_var1
1091 
1092  End Function nc_get_var1
1093 End Interface
1094 !---------------------------------- nc_put_vara_text --------------------------
1095 Interface
1096  Function nc_put_vara_text(ncid, varid, startp, countp, op) BIND(C)
1097 
1098  USE iso_c_binding, ONLY: c_int, c_ptr, c_char
1099 
1100  Integer(KIND=C_INT), VALUE :: ncid, varid
1101  Type(c_ptr), VALUE :: startp, countp
1102  Character(KIND=C_CHAR), Intent(IN) :: op(*)
1103 
1104  Integer(KIND=C_INT) :: nc_put_vara_text
1105 
1106  End Function nc_put_vara_text
1107 End Interface
1108 !---------------------------------- nc_get_vara_text --------------------------
1109 Interface
1110  Function nc_get_vara_text(ncid, varid, startp, countp, ip) BIND(C)
1111 
1112  USE iso_c_binding, ONLY: c_int, c_ptr, c_char
1113 
1114  Integer(KIND=C_INT), VALUE :: ncid, varid
1115  Type(c_ptr), VALUE :: startp, countp
1116  Character(KIND=C_CHAR), Intent(OUT) :: ip(*)
1117 
1118  Integer(KIND=C_INT) :: nc_get_vara_text
1119 
1120  End Function nc_get_vara_text
1121 End Interface
1122 !---------------------------------- nc_put_vara_uchar -------------------------
1123 Interface
1124  Function nc_put_vara_uchar(ncid, varid, startp, countp, op) BIND(C)
1125 
1126  USE iso_c_binding, ONLY: c_int, c_ptr
1127  USE netcdf_nc_data, ONLY: cint1
1128 
1129  Integer(KIND=C_INT), VALUE :: ncid, varid
1130  Type(c_ptr), VALUE :: startp, countp
1131  Integer(KIND=CINT1), Intent(IN) :: op(*)
1132 
1133  Integer(KIND=C_INT) :: nc_put_vara_uchar
1134 
1135  End Function nc_put_vara_uchar
1136 End Interface
1137 !---------------------------------- nc_get_vara_uchar -------------------------
1138 Interface
1139  Function nc_get_vara_uchar(ncid, varid, startp, countp, ip) BIND(C)
1140 
1141  USE iso_c_binding, ONLY: c_int, c_ptr
1142  USE netcdf_nc_data, ONLY: cint1
1143 
1144  Integer(KIND=C_INT), VALUE :: ncid, varid
1145  Type(c_ptr), VALUE :: startp, countp
1146  Integer(KIND=CINT1), Intent(OUT) :: ip(*)
1147 
1148  Integer(KIND=C_INT) :: nc_get_vara_uchar
1149 
1150  End Function nc_get_vara_uchar
1151 End Interface
1152 !---------------------------------- nc_put_vara_schar -------------------------
1153 Interface
1154  Function nc_put_vara_schar(ncid, varid, startp, countp, op) BIND(C)
1155 
1156  USE iso_c_binding, ONLY: c_int, c_ptr
1157  USE netcdf_nc_data, ONLY: cint1
1158 
1159  Integer(KIND=C_INT), VALUE :: ncid, varid
1160  Type(c_ptr), VALUE :: startp, countp
1161  Integer(KIND=CINT1), Intent(IN) :: op(*)
1162 
1163  Integer(KIND=C_INT) :: nc_put_vara_schar
1164 
1165  End Function nc_put_vara_schar
1166 End Interface
1167 !---------------------------------- nc_get_vara_schar -------------------------
1168 Interface
1169  Function nc_get_vara_schar(ncid, varid, startp, countp, ip) BIND(C)
1170 
1171  USE iso_c_binding, ONLY: c_int, c_ptr
1172  USE netcdf_nc_data, ONLY: cint1
1173 
1174  Integer(KIND=C_INT), VALUE :: ncid, varid
1175  Type(c_ptr), VALUE :: startp, countp
1176  Integer(KIND=CINT1), Intent(OUT) :: ip(*)
1177 
1178  Integer(KIND=C_INT) :: nc_get_vara_schar
1179 
1180  End Function nc_get_vara_schar
1181 End Interface
1182 !---------------------------------- nc_put_vara_short -------------------------
1183 Interface
1184  Function nc_put_vara_short(ncid, varid, startp, countp, op) BIND(C)
1185 
1186  USE iso_c_binding, ONLY: c_int, c_ptr
1187  USE netcdf_nc_data, ONLY: cint2
1188 
1189  Integer(KIND=C_INT), VALUE :: ncid, varid
1190  Type(c_ptr), VALUE :: startp, countp
1191  Integer(KIND=CINT2), Intent(IN) :: op(*)
1192 
1193  Integer(KIND=C_INT) :: nc_put_vara_short
1194 
1195  End Function nc_put_vara_short
1196 End Interface
1197 !---------------------------------- nc_get_vara_short -------------------------
1198 Interface
1199  Function nc_get_vara_short(ncid, varid, startp, countp, ip) BIND(C)
1200 
1201  USE iso_c_binding, ONLY: c_int, c_ptr
1202  USE netcdf_nc_data, ONLY: cint2
1203 
1204  Integer(KIND=C_INT), VALUE :: ncid, varid
1205  Type(c_ptr), VALUE :: startp, countp
1206  Integer(KIND=CINT2), Intent(OUT) :: ip(*)
1207 
1208  Integer(KIND=C_INT) :: nc_get_vara_short
1209 
1210  End Function nc_get_vara_short
1211 End Interface
1212 !--------------------------------- nc_put_vara_int ----------------------------
1213 Interface
1214  Function nc_put_vara_int(ncid, varid, startp, countp, op) BIND(C)
1215 
1216  USE iso_c_binding, ONLY: c_int, c_ptr
1217  USE netcdf_nc_data, ONLY: cint
1218 
1219  Integer(KIND=C_INT), VALUE :: ncid, varid
1220  Type(c_ptr), VALUE :: startp, countp
1221  Integer(KIND=CINT), Intent(IN) :: op(*)
1222 
1223  Integer(KIND=C_INT) :: nc_put_vara_int
1224 
1225  End Function nc_put_vara_int
1226 End Interface
1227 !--------------------------------- nc_get_vara_int ----------------------------
1228 Interface
1229  Function nc_get_vara_int(ncid, varid, startp, countp, ip) BIND(C)
1230 
1231  USE iso_c_binding, ONLY: c_int, c_ptr
1232  USE netcdf_nc_data, ONLY: cint
1233 
1234  Integer(KIND=C_INT), VALUE :: ncid, varid
1235  Type(c_ptr), VALUE :: startp, countp
1236  Integer(KIND=CINT), Intent(OUT) :: ip(*)
1237 
1238  Integer(KIND=C_INT) :: nc_get_vara_int
1239 
1240  End Function nc_get_vara_int
1241 End Interface
1242 !--------------------------------- nc_put_vara_long ---------------------------
1243 Interface
1244  Function nc_put_vara_long(ncid, varid, startp, countp, op) BIND(C)
1245 
1246  USE iso_c_binding, ONLY: c_int, c_long, c_ptr
1247 
1248  Integer(KIND=C_INT), VALUE :: ncid, varid
1249  Type(c_ptr), VALUE :: startp, countp
1250  Integer(KIND=C_LONG), Intent(IN) :: op(*)
1251 
1252  Integer(KIND=C_INT) :: nc_put_vara_long
1253 
1254  End Function nc_put_vara_long
1255 End Interface
1256 !--------------------------------- nc_get_vara_long ---------------------------
1257 Interface
1258  Function nc_get_vara_long(ncid, varid, startp, countp, ip) BIND(C)
1259 
1260  USE iso_c_binding, ONLY: c_int, c_long, c_ptr
1261 
1262  Integer(KIND=C_INT), VALUE :: ncid, varid
1263  Type(c_ptr), VALUE :: startp, countp
1264  Integer(KIND=C_LONG), Intent(OUT) :: ip(*)
1265 
1266  Integer(KIND=C_INT) :: nc_get_vara_long
1267 
1268  End Function nc_get_vara_long
1269 End Interface
1270 !--------------------------------- nc_put_vara_float --------------------------
1271 Interface
1272  Function nc_put_vara_float(ncid, varid, startp, countp, op) BIND(C)
1273 
1274  USE iso_c_binding, ONLY: c_int, c_float, c_ptr
1275 
1276  Integer(KIND=C_INT), VALUE :: ncid, varid
1277  Type(c_ptr), VALUE :: startp, countp
1278  Real(KIND=C_FLOAT), Intent(IN) :: op(*)
1279 
1280  Integer(KIND=C_INT) :: nc_put_vara_float
1281 
1282  End Function nc_put_vara_float
1283 End Interface
1284 !--------------------------------- nc_get_vara_float --------------------------
1285 Interface
1286  Function nc_get_vara_float(ncid, varid, startp, countp, ip) BIND(C)
1287 
1288  USE iso_c_binding, ONLY: c_int, c_float, c_ptr
1289 
1290  Integer(KIND=C_INT), VALUE :: ncid, varid
1291  Type(c_ptr), VALUE :: startp, countp
1292  Real(KIND=C_FLOAT), Intent(OUT) :: ip(*)
1293 
1294  Integer(KIND=C_INT) :: nc_get_vara_float
1295 
1296  End Function nc_get_vara_float
1297 End Interface
1298 !--------------------------------- nc_put_vara_double -------------------------
1299 Interface
1300  Function nc_put_vara_double(ncid, varid, startp, countp, op) BIND(C)
1301 
1302  USE iso_c_binding, ONLY: c_int, c_double, c_ptr
1303 
1304  Integer(KIND=C_INT), VALUE :: ncid, varid
1305  Type(c_ptr), VALUE :: startp, countp
1306  Real(KIND=C_DOUBLE), Intent(IN) :: op(*)
1307 
1308  Integer(KIND=C_INT) :: nc_put_vara_double
1309 
1310  End Function nc_put_vara_double
1311 End Interface
1312 !--------------------------------- nc_get_vara_double -------------------------
1313 Interface
1314  Function nc_get_vara_double(ncid, varid, startp, countp, ip) BIND(C)
1315 
1316  USE iso_c_binding, ONLY: c_int, c_double, c_ptr
1317 
1318  Integer(KIND=C_INT), VALUE :: ncid, varid
1319  Type(c_ptr), VALUE :: startp, countp
1320  Real(KIND=C_DOUBLE), Intent(OUT) :: ip(*)
1321 
1322  Integer(KIND=C_INT) :: nc_get_vara_double
1323 
1324  End Function nc_get_vara_double
1325 End Interface
1326 !---------------------------------- nc_put_vara -------------------------------
1327 Interface
1328  Function nc_put_vara(ncid, varid, startp, countp, op) BIND(C)
1329 
1330  USE iso_c_binding, ONLY: c_int, c_ptr
1331 
1332  Integer(KIND=C_INT), VALUE :: ncid, varid
1333  Type(c_ptr), VALUE :: startp, countp
1334  Type(c_ptr), VALUE :: op
1335 
1336  Integer(KIND=C_INT) :: nc_put_vara
1337 
1338  End Function nc_put_vara
1339 End Interface
1340 !---------------------------------- nc_get_vara -------------------------------
1341 Interface
1342  Function nc_get_vara(ncid, varid, startp, countp, ip) BIND(C)
1343 
1344  USE iso_c_binding, ONLY: c_int, c_ptr, c_char
1345 
1346  Integer(KIND=C_INT), VALUE :: ncid, varid
1347  Type(c_ptr), VALUE :: startp, countp
1348  Character(KIND=C_CHAR), Intent(INOUT) :: ip(*)
1349 
1350  Integer(KIND=C_INT) :: nc_get_vara
1351 
1352  End Function nc_get_vara
1353 End Interface
1354 !--------------------------------- nc_put_vars_text ---------------------------
1355 Interface
1356  Function nc_put_vars_text(ncid, varid, startp, countp, stridep, op) BIND(C)
1357 
1358  USE iso_c_binding, ONLY: c_int, c_ptr, c_char
1359 
1360  Integer(KIND=C_INT), VALUE :: ncid, varid
1361  Type(c_ptr), VALUE :: startp, countp, stridep
1362  Character(KIND=C_CHAR), Intent(IN) :: op(*)
1363 
1364  Integer(KIND=C_INT) :: nc_put_vars_text
1365 
1366  End Function nc_put_vars_text
1367 End Interface
1368 !--------------------------------- nc_get_vars_text ---------------------------
1369 Interface
1370  Function nc_get_vars_text(ncid, varid, startp, countp, stridep, ip) BIND(C)
1371 
1372  USE iso_c_binding, ONLY: c_int, c_ptr, c_char
1373 
1374  Integer(KIND=C_INT), VALUE :: ncid, varid
1375  Type(c_ptr), VALUE :: startp, countp, stridep
1376  Character(KIND=C_CHAR), Intent(OUT) :: ip(*)
1377 
1378  Integer(KIND=C_INT) :: nc_get_vars_text
1379 
1380  End Function nc_get_vars_text
1381 End Interface
1382 !--------------------------------- nc_put_vars_uchar --------------------------
1383 Interface
1384  Function nc_put_vars_uchar(ncid, varid, startp, countp, stridep, op) BIND(C)
1385 
1386  USE iso_c_binding, ONLY: c_int, c_ptr
1387  USE netcdf_nc_data, ONLY: cint1
1388 
1389  Integer(KIND=C_INT), VALUE :: ncid, varid
1390  Type(c_ptr), VALUE :: startp, countp, stridep
1391  Integer(KIND=CINT1), Intent(IN) :: op(*)
1392 
1393  Integer(KIND=C_INT) :: nc_put_vars_uchar
1394 
1395  End Function nc_put_vars_uchar
1396 End Interface
1397 !--------------------------------- nc_get_vars_uchar --------------------------
1398 Interface
1399  Function nc_get_vars_uchar(ncid, varid, startp, countp, stridep, ip) BIND(C)
1400 
1401  USE iso_c_binding, ONLY: c_int, c_ptr
1402  USE netcdf_nc_data, ONLY: cint1
1403 
1404  Integer(KIND=C_INT), VALUE :: ncid, varid
1405  Type(c_ptr), VALUE :: startp, countp, stridep
1406  Integer(KIND=CINT1), Intent(OUT) :: ip(*)
1407 
1408  Integer(KIND=C_INT) :: nc_get_vars_uchar
1409 
1410  End Function nc_get_vars_uchar
1411 End Interface
1412 !--------------------------------- nc_put_vars_schar --------------------------
1413 Interface
1414  Function nc_put_vars_schar(ncid, varid, startp, countp, stridep, op) BIND(C)
1415 
1416  USE iso_c_binding, ONLY: c_int, c_ptr
1417  USE netcdf_nc_data, ONLY: cint1
1418 
1419  Integer(KIND=C_INT), VALUE :: ncid, varid
1420  Type(c_ptr), VALUE :: startp, countp, stridep
1421  Integer(KIND=CINT1), Intent(IN) :: op(*)
1422 
1423  Integer(KIND=C_INT) :: nc_put_vars_schar
1424 
1425  End Function nc_put_vars_schar
1426 End Interface
1427 !--------------------------------- nc_get_vars_schar --------------------------
1428 Interface
1429  Function nc_get_vars_schar(ncid, varid, startp, countp, stridep, ip) BIND(C)
1430 
1431  USE iso_c_binding, ONLY: c_int, c_ptr
1432  USE netcdf_nc_data, ONLY: cint1
1433 
1434  Integer(KIND=C_INT), VALUE :: ncid, varid
1435  Type(c_ptr), VALUE :: startp, countp, stridep
1436  Integer(KIND=CINT1), Intent(OUT) :: ip(*)
1437 
1438  Integer(KIND=C_INT) :: nc_get_vars_schar
1439 
1440  End Function nc_get_vars_schar
1441 End Interface
1442 !--------------------------------- nc_put_vars_short --------------------------
1443 Interface
1444  Function nc_put_vars_short(ncid, varid, startp, countp, stridep, op) BIND(C)
1445 
1446  USE iso_c_binding, ONLY: c_int, c_ptr
1447  USE netcdf_nc_data, ONLY: cint2
1448 
1449  Integer(KIND=C_INT), VALUE :: ncid, varid
1450  Type(c_ptr), VALUE :: startp, countp, stridep
1451  Integer(KIND=CINT2), Intent(IN) :: op(*)
1452 
1453  Integer(KIND=C_INT) :: nc_put_vars_short
1454 
1455  End Function nc_put_vars_short
1456 End Interface
1457 !--------------------------------- nc_get_vars_short --------------------------
1458 Interface
1459  Function nc_get_vars_short(ncid, varid, startp, countp, stridep, ip) BIND(C)
1460 
1461  USE iso_c_binding, ONLY: c_int, c_ptr
1462  USE netcdf_nc_data, ONLY: cint2
1463 
1464  Integer(KIND=C_INT), VALUE :: ncid, varid
1465  Type(c_ptr), VALUE :: startp, countp, stridep
1466  Integer(KIND=CINT2), Intent(OUT) :: ip(*)
1467 
1468  Integer(KIND=C_INT) :: nc_get_vars_short
1469 
1470  End Function nc_get_vars_short
1471 End Interface
1472 !--------------------------------- nc_put_vars_int ----------------------------
1473 Interface
1474  Function nc_put_vars_int(ncid, varid, startp, countp, stridep, op) BIND(C)
1475 
1476  USE iso_c_binding, ONLY: c_int, c_ptr
1477  USE netcdf_nc_data, ONLY: cint
1478 
1479  Integer(KIND=C_INT), VALUE :: ncid, varid
1480  Type(c_ptr), VALUE :: startp, countp, stridep
1481  Integer(KIND=CINT), Intent(IN) :: op(*)
1482 
1483  Integer(KIND=C_INT) :: nc_put_vars_int
1484 
1485  End Function nc_put_vars_int
1486 End Interface
1487 !--------------------------------- nc_get_vars_int ----------------------------
1488 Interface
1489  Function nc_get_vars_int(ncid, varid, startp, countp, stridep, ip) BIND(C)
1490 
1491  USE iso_c_binding, ONLY: c_int, c_ptr
1492  USE netcdf_nc_data, ONLY: cint
1493 
1494  Integer(KIND=C_INT), VALUE :: ncid, varid
1495  Type(c_ptr), VALUE :: startp, countp, stridep
1496  Integer(KIND=CINT), Intent(OUT) :: ip(*)
1497 
1498  Integer(KIND=C_INT) :: nc_get_vars_int
1499 
1500  End Function nc_get_vars_int
1501 End Interface
1502 !--------------------------------- nc_put_vars_long ---------------------------
1503 Interface
1504  Function nc_put_vars_long(ncid, varid, startp, countp, stridep, op) BIND(C)
1505 
1506  USE iso_c_binding, ONLY: c_int, c_long, c_ptr
1507 
1508  Integer(KIND=C_INT), VALUE :: ncid, varid
1509  Type(c_ptr), VALUE :: startp, countp, stridep
1510  Integer(KIND=C_LONG), Intent(IN) :: op(*)
1511 
1512  Integer(KIND=C_INT) :: nc_put_vars_long
1513 
1514  End Function nc_put_vars_long
1515 End Interface
1516 !--------------------------------- nc_get_vars_long ---------------------------
1517 Interface
1518  Function nc_get_vars_long(ncid, varid, startp, countp, stridep, ip) BIND(C)
1519 
1520  USE iso_c_binding, ONLY: c_int, c_long, c_ptr
1521 
1522  Integer(KIND=C_INT), VALUE :: ncid, varid
1523  Type(c_ptr), VALUE :: startp, countp, stridep
1524  Integer(KIND=C_LONG), Intent(OUT) :: ip(*)
1525 
1526  Integer(KIND=C_INT) :: nc_get_vars_long
1527 
1528  End Function nc_get_vars_long
1529 End Interface
1530 !--------------------------------- nc_put_vars_float --------------------------
1531 Interface
1532  Function nc_put_vars_float(ncid, varid, startp, countp, stridep, op) BIND(C)
1533 
1534  USE iso_c_binding, ONLY: c_int, c_float, c_ptr
1535 
1536  Integer(KIND=C_INT), VALUE :: ncid, varid
1537  Type(c_ptr), VALUE :: startp, countp, stridep
1538  Real(KIND=C_FLOAT), Intent(IN) :: op(*)
1539 
1540  Integer(KIND=C_INT) :: nc_put_vars_float
1541 
1542  End Function nc_put_vars_float
1543 End Interface
1544 !--------------------------------- nc_get_vars_float --------------------------
1545 Interface
1546  Function nc_get_vars_float(ncid, varid, startp, countp, stridep, ip) BIND(C)
1547 
1548  USE iso_c_binding, ONLY: c_int, c_float, c_ptr
1549 
1550  Integer(KIND=C_INT), VALUE :: ncid, varid
1551  Type(c_ptr), VALUE :: startp, countp, stridep
1552  Real(KIND=C_FLOAT), Intent(OUT) :: ip(*)
1553 
1554  Integer(KIND=C_INT) :: nc_get_vars_float
1555 
1556  End Function nc_get_vars_float
1557 End Interface
1558 !--------------------------------- nc_put_vars_double -------------------------
1559 Interface
1560  Function nc_put_vars_double(ncid, varid, startp, countp, stridep, op) BIND(C)
1561 
1562  USE iso_c_binding, ONLY: c_int, c_double, c_ptr
1563 
1564  Integer(KIND=C_INT), VALUE :: ncid, varid
1565  Type(c_ptr), VALUE :: startp, countp, stridep
1566  Real(KIND=C_DOUBLE), Intent(IN) :: op(*)
1567 
1568  Integer(KIND=C_INT) :: nc_put_vars_double
1569 
1570  End Function nc_put_vars_double
1571 End Interface
1572 !--------------------------------- nc_get_vars_double -------------------------
1573 Interface
1574  Function nc_get_vars_double(ncid, varid, startp, countp, stridep, ip) BIND(C)
1575 
1576  USE iso_c_binding, ONLY: c_int, c_double, c_ptr
1577 
1578  Integer(KIND=C_INT), VALUE :: ncid, varid
1579  Type(c_ptr), VALUE :: startp, countp, stridep
1580  Real(KIND=C_DOUBLE), Intent(OUT) :: ip(*)
1581 
1582  Integer(KIND=C_INT) :: nc_get_vars_double
1583 
1584  End Function nc_get_vars_double
1585 End Interface
1586 !--------------------------------- nc_put_vars --------------------------------
1587 Interface
1588  Function nc_put_vars(ncid, varid, startp, countp, stridep, op) BIND(C)
1589 
1590  USE iso_c_binding, ONLY: c_int, c_ptr
1591 
1592  Integer(KIND=C_INT), VALUE :: ncid, varid
1593  Type(c_ptr), VALUE :: startp, countp, stridep
1594  Type(c_ptr), VALUE :: op
1595 
1596  Integer(KIND=C_INT) :: nc_put_vars
1597 
1598  End Function nc_put_vars
1599 End Interface
1600 !--------------------------------- nc_get_vars ---------------------------
1601 Interface
1602  Function nc_get_vars(ncid, varid, startp, countp, stridep, ip) BIND(C)
1603 
1604  USE iso_c_binding, ONLY: c_int, c_ptr, c_char
1605 
1606  Integer(KIND=C_INT), VALUE :: ncid, varid
1607  Type(c_ptr), VALUE :: startp, countp, stridep
1608  Character(KIND=C_CHAR), Intent(INOUT) :: ip(*)
1609 
1610  Integer(KIND=C_INT) :: nc_get_vars
1611 
1612  End Function nc_get_vars
1613 End Interface
1614 !--------------------------------- nc_put_varm_text ---------------------------
1615 Interface
1616 ! array of characters
1617  Function nc_put_varm_text(ncid, varid, startp, countp, stridep, imapp,op) &
1618  bind(c)
1619 
1620  USE iso_c_binding, ONLY: c_int, c_ptr, c_char
1621 
1622  Integer(KIND=C_INT), VALUE :: ncid, varid
1623  Type(c_ptr), VALUE :: startp, countp, stridep, imapp
1624  Character(KIND=C_CHAR), Intent(IN) :: op(*)
1625 
1626  Integer(KIND=C_INT) :: nc_put_varm_text
1627 
1628  End Function nc_put_varm_text
1629 End Interface
1630 !--------------------------------- nc_get_varm_text ---------------------------
1631 Interface
1632  Function nc_get_varm_text(ncid, varid, startp, countp, stridep, imapp,ip) &
1633  bind(c)
1634 
1635  USE iso_c_binding, ONLY: c_int, c_ptr, c_char
1636 
1637  Integer(KIND=C_INT), VALUE :: ncid, varid
1638  Type(c_ptr), VALUE :: startp, countp, stridep, imapp
1639  Character(KIND=C_CHAR), Intent(OUT) :: ip(*)
1640 
1641  Integer(KIND=C_INT) :: nc_get_varm_text
1642 
1643  End Function nc_get_varm_text
1644 End Interface
1645 !--------------------------------- nc_put_varm_uchar --------------------------
1646 Interface
1647  Function nc_put_varm_uchar(ncid, varid, startp, countp, stridep, imapp, op) &
1648  bind(c)
1649 
1650  USE iso_c_binding, ONLY: c_int, c_ptr
1651  USE netcdf_nc_data, ONLY: cint1
1652 
1653  Integer(KIND=C_INT), VALUE :: ncid, varid
1654  Type(c_ptr), VALUE :: startp, countp, stridep, imapp
1655  Integer(KIND=CINT1), Intent(IN) :: op(*)
1656 
1657  Integer(KIND=C_INT) :: nc_put_varm_uchar
1658 
1659  End Function nc_put_varm_uchar
1660 End Interface
1661 !--------------------------------- nc_get_varm_uchar --------------------------
1662 Interface
1663  Function nc_get_varm_uchar(ncid, varid, startp, countp, stridep, imapp, ip) &
1664  bind(c)
1665 
1666  USE iso_c_binding, ONLY: c_int, c_ptr
1667  USE netcdf_nc_data, ONLY: cint1
1668 
1669  Integer(KIND=C_INT), VALUE :: ncid, varid
1670  Type(c_ptr), VALUE :: startp, countp, stridep, imapp
1671  Integer(KIND=CINT1), Intent(OUT) :: ip(*)
1672 
1673  Integer(KIND=C_INT) :: nc_get_varm_uchar
1674 
1675  End Function nc_get_varm_uchar
1676 End Interface
1677 !--------------------------------- nc_put_varm_schar --------------------------
1678 Interface
1679  Function nc_put_varm_schar(ncid, varid, startp, countp, stridep, imapp, op) &
1680  bind(c)
1681 
1682  USE iso_c_binding, ONLY: c_int, c_ptr
1683  USE netcdf_nc_data, ONLY: cint1
1684 
1685  Integer(KIND=C_INT), VALUE :: ncid, varid
1686  Type(c_ptr), VALUE :: startp, countp, stridep, imapp
1687  Integer(KIND=CINT1), Intent(IN) :: op(*)
1688 
1689  Integer(KIND=C_INT) :: nc_put_varm_schar
1690 
1691  End Function nc_put_varm_schar
1692 End Interface
1693 !--------------------------------- nc_get_varm_schar --------------------------
1694 Interface
1695  Function nc_get_varm_schar(ncid, varid, startp, countp, stridep, imapp, ip) &
1696  bind(c)
1697 
1698  USE iso_c_binding, ONLY: c_int, c_ptr
1699  USE netcdf_nc_data, ONLY: cint1
1700 
1701  Integer(KIND=C_INT), VALUE :: ncid, varid
1702  Type(c_ptr), VALUE :: startp, countp, stridep, imapp
1703  Integer(KIND=CINT1), Intent(OUT) :: ip(*)
1704 
1705  Integer(KIND=C_INT) :: nc_get_varm_schar
1706 
1707  End Function nc_get_varm_schar
1708 End Interface
1709 !--------------------------------- nc_put_varm_short --------------------------
1710 Interface
1711  Function nc_put_varm_short(ncid, varid, startp, countp, stridep, imapp, op) &
1712  bind(c)
1713 
1714  USE iso_c_binding, ONLY: c_int, c_ptr
1715  USE netcdf_nc_data, ONLY: cint2
1716 
1717  Integer(KIND=C_INT), VALUE :: ncid, varid
1718  Type(c_ptr), VALUE :: startp, countp, stridep, imapp
1719  Integer(KIND=CINT2), Intent(IN) :: op(*)
1720 
1721  Integer(KIND=C_INT) :: nc_put_varm_short
1722 
1723  End Function nc_put_varm_short
1724 End Interface
1725 !--------------------------------- nc_get_varm_short --------------------------
1726 Interface
1727  Function nc_get_varm_short(ncid, varid, startp, countp, stridep, imapp, ip) &
1728  bind(c)
1729 
1730  USE iso_c_binding, ONLY: c_int, c_ptr
1731  USE netcdf_nc_data, ONLY: cint2
1732 
1733  Integer(KIND=C_INT), VALUE :: ncid, varid
1734  Type(c_ptr), VALUE :: startp, countp, stridep, imapp
1735  Integer(KIND=CINT2), Intent(OUT) :: ip(*)
1736 
1737  Integer(KIND=C_INT) :: nc_get_varm_short
1738 
1739  End Function nc_get_varm_short
1740 End Interface
1741 !--------------------------------- nc_put_varm_int ----------------------------
1742 Interface
1743  Function nc_put_varm_int(ncid, varid, startp, countp, stridep, imapp, op) &
1744  bind(c)
1745 
1746  USE iso_c_binding, ONLY: c_int, c_ptr
1747  USE netcdf_nc_data, ONLY: cint
1748 
1749  Integer(KIND=C_INT), VALUE :: ncid, varid
1750  Type(c_ptr), VALUE :: startp, countp, stridep, imapp
1751  Integer(KIND=CINT), Intent(IN) :: op(*)
1752 
1753  Integer(KIND=C_INT) :: nc_put_varm_int
1754 
1755  End Function nc_put_varm_int
1756 End Interface
1757 !--------------------------------- nc_get_varm_int ----------------------------
1758 Interface
1759  Function nc_get_varm_int(ncid, varid, startp, countp, stridep, imapp, ip) &
1760  bind(c)
1761 
1762  USE iso_c_binding, ONLY: c_int, c_ptr
1763  USE netcdf_nc_data, ONLY: cint
1764 
1765  Integer(KIND=C_INT), VALUE :: ncid, varid
1766  Type(c_ptr), VALUE :: startp, countp, stridep, imapp
1767  Integer(KIND=CINT), Intent(OUT) :: ip(*)
1768 
1769  Integer(KIND=C_INT) :: nc_get_varm_int
1770 
1771  End Function nc_get_varm_int
1772 End Interface
1773 !--------------------------------- nc_put_varm_long ---------------------------
1774 Interface
1775  Function nc_put_varm_long(ncid, varid, startp, countp, stridep, imapp, op) &
1776  bind(c)
1777 
1778  USE iso_c_binding, ONLY: c_int, c_long, c_ptr
1779 
1780  Integer(KIND=C_INT), VALUE :: ncid, varid
1781  Type(c_ptr), VALUE :: startp, countp, stridep, imapp
1782  Integer(KIND=C_LONG), Intent(IN) :: op(*)
1783 
1784  Integer(KIND=C_INT) :: nc_put_varm_long
1785 
1786  End Function nc_put_varm_long
1787 End Interface
1788 !--------------------------------- nc_get_varm_long ---------------------------
1789 Interface
1790  Function nc_get_varm_long(ncid, varid, startp, countp, stridep, imapp, ip) &
1791  bind(c)
1792 
1793  USE iso_c_binding, ONLY: c_int, c_long, c_ptr
1794 
1795  Integer(KIND=C_INT), VALUE :: ncid, varid
1796  Type(c_ptr), VALUE :: startp, countp, stridep, imapp
1797  Integer(KIND=C_LONG), Intent(OUT) :: ip(*)
1798 
1799  Integer(KIND=C_INT) :: nc_get_varm_long
1800 
1801  End Function nc_get_varm_long
1802 End Interface
1803 !--------------------------------- nc_put_varm_float --------------------------
1804 Interface
1805  Function nc_put_varm_float(ncid, varid, startp, countp, stridep, imapp, op) &
1806  bind(c)
1807 
1808  USE iso_c_binding, ONLY: c_int, c_float, c_ptr
1809 
1810  Integer(KIND=C_INT), VALUE :: ncid, varid
1811  Type(c_ptr), VALUE :: startp, countp, stridep, imapp
1812  Real(KIND=C_FLOAT), Intent(IN) :: op(*)
1813 
1814  Integer(KIND=C_INT) :: nc_put_varm_float
1815 
1816  End Function nc_put_varm_float
1817 End Interface
1818 !--------------------------------- nc_get_varm_float --------------------------
1819 Interface
1820  Function nc_get_varm_float(ncid, varid, startp, countp, stridep, imapp, ip) &
1821  bind(c)
1822 
1823  USE iso_c_binding, ONLY: c_int, c_float, c_ptr
1824 
1825  Integer(KIND=C_INT), VALUE :: ncid, varid
1826  Type(c_ptr), VALUE :: startp, countp, stridep, imapp
1827  Real(KIND=C_FLOAT), Intent(OUT) :: ip(*)
1828 
1829  Integer(KIND=C_INT) :: nc_get_varm_float
1830 
1831  End Function nc_get_varm_float
1832 End Interface
1833 !--------------------------------- nc_put_varm_double -------------------------
1834 Interface
1835  Function nc_put_varm_double(ncid, varid, startp, countp, stridep,imapp, op) &
1836  bind(c)
1837 
1838  USE iso_c_binding, ONLY: c_int, c_double, c_ptr
1839 
1840  Integer(KIND=C_INT), VALUE :: ncid, varid
1841  Type(c_ptr), VALUE :: startp, countp, stridep, imapp
1842  Real(KIND=C_DOUBLE), Intent(IN) :: op(*)
1843 
1844  Integer(KIND=C_INT) :: nc_put_varm_double
1845 
1846  End Function nc_put_varm_double
1847 End Interface
1848 !--------------------------------- nc_get_varm_double -------------------------
1849 Interface
1850  Function nc_get_varm_double(ncid, varid, startp, countp, stridep,imapp, ip) &
1851  bind(c)
1852 
1853  USE iso_c_binding, ONLY: c_int, c_double, c_ptr
1854 
1855  Integer(KIND=C_INT), VALUE :: ncid, varid
1856  Type(c_ptr), VALUE :: startp, countp, stridep, imapp
1857  Real(KIND=C_DOUBLE), Intent(OUT) :: ip(*)
1858 
1859  Integer(KIND=C_INT) :: nc_get_varm_double
1860 
1861  End Function nc_get_varm_double
1862 End Interface
1863 !--------------------------------- nc_inq_att --------------------------------
1864 Interface
1865  Function nc_inq_att(ncid, varid, name, xtypep, lenp) BIND(C)
1866 
1867  USE iso_c_binding, ONLY: c_int, c_size_t, c_char
1868 
1869  Integer(KIND=C_INT), VALUE :: ncid, varid
1870  Character(KIND=C_CHAR), Intent(IN) :: name(*)
1871  Integer(KIND=C_INT), Intent(OUT) :: xtypep
1872  Integer(KIND=C_SIZE_T), Intent(OUT) :: lenp
1873 
1874  Integer(KIND=C_INT) :: nc_inq_att
1875 
1876  End Function nc_inq_att
1877 End Interface
1878 !--------------------------------- nc_inq_attid ------------------------------
1879 Interface
1880  Function nc_inq_attid(ncid, varid, name, attnump) BIND(C)
1881 
1882  USE iso_c_binding, ONLY: c_int, c_char
1883 
1884  Integer(KIND=C_INT), VALUE :: ncid, varid
1885  Character(KIND=C_CHAR), Intent(IN) :: name(*)
1886  Integer(KIND=C_INT), Intent(OUT) :: attnump
1887 
1888  Integer(KIND=C_INT) :: nc_inq_attid
1889 
1890  End Function nc_inq_attid
1891 End Interface
1892 !--------------------------------- nc_inq_atttype ----------------------------
1893 Interface
1894  Function nc_inq_atttype(ncid, varid, name, xtypep) BIND(C)
1895 
1896  USE iso_c_binding, ONLY: c_int, c_char
1897 
1898  Integer(KIND=C_INT), VALUE :: ncid, varid
1899  Character(KIND=C_CHAR), Intent(IN) :: name(*)
1900  Integer(KIND=C_INT), Intent(OUT) :: xtypep
1901 
1902  Integer(KIND=C_INT) :: nc_inq_atttype
1903 
1904  End Function nc_inq_atttype
1905 End Interface
1906 !--------------------------------- nc_inq_attlen -----------------------------
1907 Interface
1908  Function nc_inq_attlen(ncid, varid, name, lenp) BIND(C)
1909 
1910  USE iso_c_binding, ONLY: c_int, c_size_t, c_char
1911 
1912  Integer(KIND=C_INT), VALUE :: ncid, varid
1913  Character(KIND=C_CHAR), Intent(IN) :: name(*)
1914  Integer(KIND=C_SIZE_T), Intent(OUT) :: lenp
1915 
1916  Integer(KIND=C_INT) :: nc_inq_attlen
1917 
1918  End Function nc_inq_attlen
1919 End Interface
1920 !--------------------------------- nc_inq_attname ----------------------------
1921 Interface
1922  Function nc_inq_attname(ncid, varid, attnum, name) BIND(C)
1923 
1924  USE iso_c_binding, ONLY: c_int, c_char
1925 
1926  Integer(KIND=C_INT), VALUE :: ncid, varid, attnum
1927  Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
1928 
1929  Integer(KIND=C_INT) :: nc_inq_attname
1930 
1931  End Function nc_inq_attname
1932 End Interface
1933 !--------------------------------- nc_copy_att -------------------------------
1934 Interface
1935  Function nc_copy_att(ncid_in, varid_in, name, ncid_out, varid_out ) BIND(C)
1936 
1937  USE iso_c_binding, ONLY: c_int, c_char
1938 
1939  Integer(KIND=C_INT), VALUE :: ncid_in, varid_in, varid_out, &
1940  ncid_out
1941  Character(KIND=C_CHAR), Intent(IN) :: name(*)
1942 
1943  Integer(KIND=C_INT) :: nc_copy_att
1944 
1945  End Function nc_copy_att
1946 End Interface
1947 !--------------------------------- nc_rename_att -----------------------------
1948 Interface
1949  Function nc_rename_att(ncid, varid, name, newname) BIND(C)
1950 
1951  USE iso_c_binding, ONLY: c_int, c_char
1952 
1953  Integer(KIND=C_INT), VALUE :: ncid, varid
1954  Character(KIND=C_CHAR), Intent(IN) :: name(*), newname(*)
1955 
1956  Integer(KIND=C_INT) :: nc_rename_att
1957 
1958  End Function nc_rename_att
1959 End Interface
1960 !--------------------------------- nc_del_att --------------------------------
1961 Interface
1962  Function nc_del_att(ncid, varid, name) BIND(C)
1963 
1964  USE iso_c_binding, ONLY: c_int, c_char
1965 
1966  Integer(KIND=C_INT), VALUE :: ncid, varid
1967  Character(KIND=C_CHAR), Intent(IN) :: name(*)
1968 
1969  Integer(KIND=C_INT) :: nc_del_att
1970 
1971  End Function nc_del_att
1972 End Interface
1973 !--------------------------------- nc_put_att_text ---------------------------
1974 Interface
1975  Function nc_put_att_text(ncid, varid, name, nlen, op) BIND(C)
1976 
1977  USE iso_c_binding, ONLY: c_int, c_size_t, c_char
1978 
1979  Integer(KIND=C_INT), VALUE :: ncid, varid
1980  Integer(KIND=C_SIZE_T), VALUE :: nlen
1981  Character(KIND=C_CHAR), Intent(IN) :: name(*)
1982  Character(KIND=C_CHAR), Intent(IN) :: op(*)
1983 
1984  Integer(KIND=C_INT) :: nc_put_att_text
1985 
1986  End Function nc_put_att_text
1987 End Interface
1988 !--------------------------------- nc_get_att_text ---------------------------
1989 Interface
1990  Function nc_get_att_text(ncid, varid, name, ip) BIND(C)
1991 
1992  USE iso_c_binding, ONLY: c_int, c_char
1993 
1994  Integer(KIND=C_INT), VALUE :: ncid, varid
1995  Character(KIND=C_CHAR), Intent(IN) :: name(*)
1996  Character(KIND=C_CHAR), Intent(OUT) :: ip(*)
1997 
1998  Integer(KIND=C_INT) :: nc_get_att_text
1999 
2000  End Function nc_get_att_text
2001 End Interface
2002 !--------------------------------- nc_put_att_uchar --------------------------
2003 Interface
2004  Function nc_put_att_uchar(ncid, varid, name, xtype, nlen, op) BIND(C)
2005 
2006  USE iso_c_binding, ONLY: c_int, c_size_t, c_char
2007  USE netcdf_nc_data, ONLY: cint1
2008 
2009  Integer(KIND=C_INT), VALUE :: ncid, varid
2010  Integer(KIND=C_SIZE_T), VALUE :: nlen
2011  Integer(KIND=C_INT), VALUE :: xtype
2012  Character(KIND=C_CHAR), Intent(IN) :: name(*)
2013  Integer(KIND=CINT1), Intent(IN) :: op(*)
2014 
2015  Integer(KIND=C_INT) :: nc_put_att_uchar
2016 
2017  End Function nc_put_att_uchar
2018 End Interface
2019 !--------------------------------- nc_get_att_uchar --------------------------
2020 Interface
2021  Function nc_get_att_uchar(ncid, varid, name, ip) BIND(C)
2022 
2023  USE iso_c_binding, ONLY: c_int, c_char
2024  USE netcdf_nc_data, ONLY: cint1
2025 
2026  Integer(KIND=C_INT), VALUE :: ncid, varid
2027  Character(KIND=C_CHAR), Intent(IN) :: name(*)
2028  Integer(KIND=CINT1), Intent(OUT) :: ip(*)
2029 
2030  Integer(KIND=C_INT) :: nc_get_att_uchar
2031 
2032  End Function nc_get_att_uchar
2033 End Interface
2034 !--------------------------------- nc_put_att_schar --------------------------
2035 Interface
2036  Function nc_put_att_schar(ncid, varid, name, xtype, nlen, op) BIND(C)
2037 
2038  USE iso_c_binding, ONLY: c_int, c_size_t, c_char
2039  USE netcdf_nc_data, ONLY: cint1
2040 
2041  Integer(KIND=C_INT), VALUE :: ncid, varid
2042  Integer(KIND=C_SIZE_T), VALUE :: nlen
2043  Integer(KIND=C_INT), VALUE :: xtype
2044  Character(KIND=C_CHAR), Intent(IN) :: name(*)
2045  Integer(KIND=CINT1), Intent(IN) :: op(*)
2046 
2047  Integer(KIND=C_INT) :: nc_put_att_schar
2048 
2049  End Function nc_put_att_schar
2050 End Interface
2051 !--------------------------------- nc_get_att_schar --------------------------
2052 Interface
2053  Function nc_get_att_schar(ncid, varid, name, ip) BIND(C)
2054 
2055  USE iso_c_binding, ONLY: c_int, c_char
2056  USE netcdf_nc_data, ONLY: cint1
2057 
2058  Integer(KIND=C_INT), VALUE :: ncid, varid
2059  Character(KIND=C_CHAR), Intent(IN) :: name(*)
2060  Integer(KIND=CINT1), Intent(OUT) :: ip(*)
2061 
2062  Integer(KIND=C_INT) :: nc_get_att_schar
2063 
2064  End Function nc_get_att_schar
2065 End Interface
2066 !--------------------------------- nc_put_att_short --------------------------
2067 Interface
2068  Function nc_put_att_short(ncid, varid, name, xtype, nlen, op) BIND(C)
2069 
2070  USE iso_c_binding, ONLY: c_int, c_size_t, c_char
2071  USE netcdf_nc_data, ONLY: cint2
2072 
2073  Integer(KIND=C_INT), VALUE :: ncid, varid
2074  Integer(KIND=C_SIZE_T), VALUE :: nlen
2075  Integer(KIND=C_INT), VALUE :: xtype
2076  Character(KIND=C_CHAR), Intent(IN) :: name(*)
2077  Integer(KIND=CINT2), Intent(IN) :: op(*)
2078 
2079  Integer(KIND=C_INT) :: nc_put_att_short
2080 
2081  End Function nc_put_att_short
2082 End Interface
2083 !--------------------------------- nc_get_att_short --------------------------
2084 Interface
2085  Function nc_get_att_short(ncid, varid, name, ip) BIND(C)
2086 
2087  USE iso_c_binding, ONLY: c_int, c_char
2088  USE netcdf_nc_data, ONLY: cint2
2089 
2090  Integer(KIND=C_INT), VALUE :: ncid, varid
2091  Character(KIND=C_CHAR), Intent(IN) :: name(*)
2092  Integer(KIND=CINT2), Intent(OUT) :: ip(*)
2093 
2094  Integer(KIND=C_INT) :: nc_get_att_short
2095 
2096  End Function nc_get_att_short
2097 End Interface
2098 !--------------------------------- nc_put_att_int --------------------------
2099 Interface
2100  Function nc_put_att_int(ncid, varid, name, xtype, nlen, op) BIND(C)
2101 
2102  USE iso_c_binding, ONLY: c_int, c_size_t, c_char
2103 
2104  Integer(KIND=C_INT), VALUE :: ncid, varid
2105  Integer(KIND=C_SIZE_T), VALUE :: nlen
2106  Integer(KIND=C_INT), VALUE :: xtype
2107  Character(KIND=C_CHAR), Intent(IN) :: name(*)
2108  Integer(KIND=C_INT), Intent(IN) :: op(*)
2109 
2110  Integer(KIND=C_INT) :: nc_put_att_int
2111 
2112  End Function nc_put_att_int
2113 End Interface
2114 !--------------------------------- nc_get_att_int -----------------------------
2115 Interface
2116  Function nc_get_att_int(ncid, varid, name, ip) BIND(C)
2117 
2118  USE iso_c_binding, ONLY: c_int, c_char
2119 
2120  Integer(KIND=C_INT), VALUE :: ncid, varid
2121  Character(KIND=C_CHAR), Intent(IN) :: name(*)
2122  Integer(KIND=C_INT), Intent(OUT) :: ip(*)
2123 
2124  Integer(KIND=C_INT) :: nc_get_att_int
2125 
2126  End Function nc_get_att_int
2127 End Interface
2128 !--------------------------------- nc_put_att_long --------------------------
2129 Interface
2130  Function nc_put_att_long(ncid, varid, name, xtype, nlen, op) BIND(C)
2131 
2132  USE iso_c_binding, ONLY: c_int, c_size_t, c_long, c_char
2133 
2134  Integer(KIND=C_INT), VALUE :: ncid, varid
2135  Integer(KIND=C_SIZE_T), VALUE :: nlen
2136  Integer(KIND=C_INT), VALUE :: xtype
2137  Character(KIND=C_CHAR), Intent(IN) :: name(*)
2138  Integer(KIND=C_LONG), Intent(IN) :: op(*)
2139 
2140  Integer(KIND=C_INT) :: nc_put_att_long
2141 
2142  End Function nc_put_att_long
2143 End Interface
2144 !--------------------------------- nc_get_att_long --------------------------
2145 Interface
2146  Function nc_get_att_long(ncid, varid, name, ip) BIND(C)
2147 
2148  USE iso_c_binding, ONLY: c_int, c_long, c_char
2149 
2150  Integer(KIND=C_INT), VALUE :: ncid, varid
2151  Character(KIND=C_CHAR), Intent(IN) :: name(*)
2152  Integer(KIND=C_LONG), Intent(OUT) :: ip(*)
2153 
2154  Integer(KIND=C_INT) :: nc_get_att_long
2155 
2156  End Function nc_get_att_long
2157 End Interface
2158 !--------------------------------- nc_put_att_float --------------------------
2159 Interface
2160  Function nc_put_att_float(ncid, varid, name, xtype, nlen, op) BIND(C)
2161 
2162  USE iso_c_binding, ONLY: c_int, c_size_t, c_float, c_char
2163 
2164  Integer(KIND=C_INT), VALUE :: ncid, varid
2165  Integer(KIND=C_SIZE_T), VALUE :: nlen
2166  Integer(KIND=C_INT), VALUE :: xtype
2167  Character(KIND=C_CHAR), Intent(IN) :: name(*)
2168  Real(KIND=C_FLOAT), Intent(IN) :: op(*)
2169 
2170  Integer(KIND=C_INT) :: nc_put_att_float
2171 
2172  End Function nc_put_att_float
2173 End Interface
2174 !--------------------------------- nc_get_att_float --------------------------
2175 Interface
2176  Function nc_get_att_float(ncid, varid, name, ip) BIND(C)
2177 
2178  USE iso_c_binding, ONLY: c_int, c_float, c_char
2179 
2180  Integer(KIND=C_INT), VALUE :: ncid, varid
2181  Character(KIND=C_CHAR), Intent(IN) :: name(*)
2182  Real(KIND=C_FLOAT), Intent(OUT) :: ip(*)
2183 
2184  Integer(KIND=C_INT) :: nc_get_att_float
2185 
2186  End Function nc_get_att_float
2187 End Interface
2188 !--------------------------------- nc_put_att_double -------------------------
2189 Interface
2190  Function nc_put_att_double(ncid, varid, name, xtype, nlen, op) BIND(C)
2191 
2192  USE iso_c_binding, ONLY: c_int, c_size_t, c_double, c_char
2193 
2194  Integer(KIND=C_INT), VALUE :: ncid, varid
2195  Integer(KIND=C_SIZE_T), VALUE :: nlen
2196  Integer(KIND=C_INT), VALUE :: xtype
2197  Character(KIND=C_CHAR), Intent(IN) :: name(*)
2198  Real(KIND=C_DOUBLE), Intent(IN) :: op(*)
2199 
2200  Integer(KIND=C_INT) :: nc_put_att_double
2201 
2202  End Function nc_put_att_double
2203 End Interface
2204 !------------------------------- nc_get_att_double -------------------------
2205 Interface
2206  Function nc_get_att_double(ncid, varid, name, ip) BIND(C)
2207 
2208  USE iso_c_binding, ONLY: c_int, c_double, c_char
2209 
2210  Integer(KIND=C_INT), VALUE :: ncid, varid
2211  Character(KIND=C_CHAR), Intent(IN) :: name(*)
2212  Real(KIND=C_DOUBLE), Intent(OUT) :: ip(*)
2213 
2214  Integer(KIND=C_INT) :: nc_get_att_double
2215 
2216  End Function nc_get_att_double
2217 End Interface
2218 !------------------------------- nc_copy_var --------------------------------
2219 Interface
2220  Function nc_copy_var(ncid_in, varid, ncid_out) BIND(C)
2221 
2222  USE iso_c_binding, ONLY: c_int
2223 
2224  Integer(KIND=C_INT), VALUE :: ncid_in, varid, ncid_out
2225 
2226  Integer(KIND=C_INT) :: nc_copy_var
2227 
2228  End Function nc_copy_var
2229 End Interface
2230 !------------------------------- nc_set_default_format -----------------------
2231 Interface
2232  Function nc_set_default_format(newform, old_format) BIND(C)
2233 !
2234  USE iso_c_binding, ONLY: c_int
2235 
2236  Integer(KIND=C_INT), VALUE :: newform
2237  Integer(KIND=C_INT), Intent(OUT) :: old_format
2238 
2239  Integer(KIND=C_INT) :: nc_set_default_format
2240 
2241  End Function nc_set_default_format
2242 End Interface
2243 !---------------------------- Start of module procedures ---------------------
2244 CONTAINS
2245 
2246 ! Utilities to support C interface routines
2247 
2248 !----------------------------------- addCNullChar -----------------------------
2249  Function addcnullchar(string, nlen) Result(cstring)
2250 
2251 ! Add a C_NULL_CHAR to a string to create a C compatible
2252 ! string. Assumes target variable will be of length
2253 ! LEN(string)+1. Trailing blanks will be stripped
2254 ! from string and length of trimmed string will
2255 ! be returned in nlen
2256 
2257 ! USE ISO_C_BINDING
2258 
2259  Implicit NONE
2260 
2261  Character(LEN=*), Intent(IN) :: string
2262  Integer, Intent(INOUT) :: nlen
2263 
2264  Character(LEN=(LEN(string)+1)) :: cstring
2265 
2266  Integer :: inull
2267 
2268 
2269 ! first check to see if we already have a C NULL char attached
2270 ! to string and strip trailing blanks. We will overwrite it if
2271 ! we do
2272 
2273  nlen = len_trim(string)
2274  inull = scan(string, c_null_char)
2275 
2276  If (inull > 1) nlen = inull - 1
2277  nlen = max(1,nlen) ! Make sure nlen is at least 1
2278 
2279 ! append null char to trimmed string
2280 
2281  cstring = repeat(" ", len(cstring)) ! init to blanks
2282  cstring = string(1:nlen)//c_null_char
2283 
2284  End Function addcnullchar
2285 !----------------------------------- stripCNullChar ----------------------------
2286  Function stripcnullchar(cstring, nlen) Result(string)
2287 
2288 ! Check cstring for a C NULL char, strip it off and
2289 ! return regular string. Limit length of cstring loaded
2290 ! into string to nlen
2291 
2292 ! USE ISO_C_BINDING, ONLY: C_NULL_CHAR
2293 
2294  Implicit NONE
2295 
2296  Character(LEN=*), Intent(IN) :: cstring
2297  Integer, Intent(IN) :: nlen
2298 
2299  Character(LEN=nlen) :: string
2300 
2301  Integer :: ie, inull
2302 
2303  ie = len_trim(cstring)
2304  inull = scan(cstring, c_null_char)
2305 
2306  If (inull > 1) ie=inull-1
2307  ie = max(1, min(ie,nlen)) ! limit ie to 1 or nlen
2308 
2309  string = repeat(" ", nlen)
2310  string(1:ie) = cstring(1:ie)
2311 
2312  End Function stripcnullchar
2313 !
2314 !----------------------------End of Module netcdf_c_interfaces ----------------
2315 End Module netcdf_nc_interfaces
module procedure interfaces for utility routines
Begin explicit interfaces for base nc_ functions.

Return to the Main Unidata NetCDF page.
Generated on Fri Jan 22 2016 10:52:16 for NetCDF-Fortran. NetCDF is a Unidata library.