!

! netcdf version 3 fortran interface:

!



!

! external netcdf data types:

!

      integer nf_byte

      integer nf_int1

      integer nf_char

      integer nf_short

      integer nf_int2

      integer nf_int

      integer nf_float

      integer nf_real

      integer nf_double



      parameter (nf_byte = 1)

      parameter (nf_int1 = nf_byte)

      parameter (nf_char = 2)

      parameter (nf_short = 3)

      parameter (nf_int2 = nf_short)

      parameter (nf_int = 4)

      parameter (nf_float = 5)

      parameter (nf_real = nf_float)

      parameter (nf_double = 6)



!

! default fill values:

!

      integer           nf_fill_byte

      integer           nf_fill_int1

      integer           nf_fill_char

      integer           nf_fill_short

      integer           nf_fill_int2

      integer           nf_fill_int

      real              nf_fill_float

      real              nf_fill_real

      doubleprecision   nf_fill_double



      parameter (nf_fill_byte = -127)

      parameter (nf_fill_int1 = nf_fill_byte)

      parameter (nf_fill_char = 0)

      parameter (nf_fill_short = -32767)

      parameter (nf_fill_int2 = nf_fill_short)

      parameter (nf_fill_int = -2147483647)

      parameter (nf_fill_float = 9.9692099683868690e+36)

      parameter (nf_fill_real = nf_fill_float)

      parameter (nf_fill_double = 9.9692099683868690e+36)



!

! mode flags for opening and creating a netcdf dataset:

!

      integer nf_nowrite

      integer nf_write

      integer nf_clobber

      integer nf_noclobber

      integer nf_fill

      integer nf_nofill

      integer nf_lock

      integer nf_share

      integer nf_64bit_offset

      integer nf_sizehint_default

      integer nf_align_chunk

      integer nf_format_classic

      integer nf_format_64bit



      parameter (nf_nowrite = 0)

      parameter (nf_write = 1)

      parameter (nf_clobber = 0)

      parameter (nf_noclobber = 4)

      parameter (nf_fill = 0)

      parameter (nf_nofill = 256)

      parameter (nf_lock = 1024)

      parameter (nf_share = 2048)

      parameter (nf_64bit_offset = 512)

      parameter (nf_sizehint_default = 0)

      parameter (nf_align_chunk = -1)

      parameter (nf_format_classic = 1)

      parameter (nf_format_64bit = 2)



!

! size argument for defining an unlimited dimension:

!

      integer nf_unlimited

      parameter (nf_unlimited = 0)



!

! global attribute id:

!

      integer nf_global

      parameter (nf_global = 0)



!

! implementation limits:

!

      integer nf_max_dims

      integer nf_max_attrs

      integer nf_max_vars

      integer nf_max_name

      integer nf_max_var_dims



      parameter (nf_max_dims = 512)

      parameter (nf_max_attrs = 4096)

      parameter (nf_max_vars = 4096)

      parameter (nf_max_name = 128)

      parameter (nf_max_var_dims = nf_max_dims)



!

! error codes:

!

      integer nf_noerr

      integer nf_ebadid

      integer nf_eexist

      integer nf_einval

      integer nf_eperm

      integer nf_enotindefine

      integer nf_eindefine

      integer nf_einvalcoords

      integer nf_emaxdims

      integer nf_enameinuse

      integer nf_enotatt

      integer nf_emaxatts

      integer nf_ebadtype

      integer nf_ebaddim

      integer nf_eunlimpos

      integer nf_emaxvars

      integer nf_enotvar

      integer nf_eglobal

      integer nf_enotnc

      integer nf_ests

      integer nf_emaxname

      integer nf_eunlimit

      integer nf_enorecvars

      integer nf_echar

      integer nf_eedge

      integer nf_estride

      integer nf_ebadname

      integer nf_erange

      integer nf_enomem

      integer nf_evarsize

      integer nf_edimsize



      parameter (nf_noerr = 0)

      parameter (nf_ebadid = -33)

      parameter (nf_eexist = -35)

      parameter (nf_einval = -36)

      parameter (nf_eperm = -37)

      parameter (nf_enotindefine = -38)

      parameter (nf_eindefine = -39)

      parameter (nf_einvalcoords = -40)

      parameter (nf_emaxdims = -41)

      parameter (nf_enameinuse = -42)

      parameter (nf_enotatt = -43)

      parameter (nf_emaxatts = -44)

      parameter (nf_ebadtype = -45)

      parameter (nf_ebaddim = -46)

      parameter (nf_eunlimpos = -47)

      parameter (nf_emaxvars = -48)

      parameter (nf_enotvar = -49)

      parameter (nf_eglobal = -50)

      parameter (nf_enotnc = -51)

      parameter (nf_ests = -52)

      parameter (nf_emaxname = -53)

      parameter (nf_eunlimit = -54)

      parameter (nf_enorecvars = -55)

      parameter (nf_echar = -56)

      parameter (nf_eedge = -57)

      parameter (nf_estride = -58)

      parameter (nf_ebadname = -59)

      parameter (nf_erange = -60)

      parameter (nf_enomem = -61)

      parameter (nf_evarsize = -62)

      parameter (nf_edimsize = -63)

!

! error handling modes:

!

      integer  nf_fatal

      integer nf_verbose



      parameter (nf_fatal = 1)

      parameter (nf_verbose = 2)



!

! miscellaneous routines:

!

      interface

         character*80 function nf_inq_libvers                           &

     &                   ()

         end function

      end interface



      interface

         character*80 function nf_strerror                              &

     &                   (ncerr)

                         integer             ncerr

         end function

      end interface



      interface

         logical function nf_issyserr                                   &

     &                   (ncerr)

                         integer             ncerr

         end function

      end interface



!

! control routines:

!

      interface

         integer function nf_inq_base_pe                                &

     &                   (ncid,                                         &

     &                    pe)

                         integer             ncid

                         integer             pe

         end function

      end interface



      interface

         integer function nf_set_base_pe                                &

     &                   (ncid,                                         &

     &                    pe)

                         integer             ncid

                         integer             pe

         end function

      end interface



      interface

         integer function nf_create                                     &

     &                   (path,                                         &

     &                    cmode,                                        &

     &                    ncid)

                         character*(*)       path

                         integer             cmode

                         integer             ncid

         end function

      end interface



      interface

         integer function nf__create                                    &

     &                   (path,                                         &

     &                    cmode,                                        &

     &                    initialsz,                                    &

     &                    chunksizehint,                                &

     &                    ncid)

                         character*(*)       path

                         integer             cmode

                         integer             initialsz

                         integer             chunksizehint

                         integer             ncid

         end function

      end interface



      interface

         integer function nf__create_mp                                 &

     &                   (path,                                         &

     &                    cmode,                                        &

     &                    initialsz,                                    &

     &                    basepe,                                       &

     &                    chunksizehint,                                &

     &                    ncid)

                         character*(*)       path

                         integer             cmode

                         integer             initialsz

                         integer             basepe

                         integer             chunksizehint

                         integer             ncid

         end function

      end interface



      interface

         integer function nf_open                                       &

     &                   (path,                                         &

     &                    mode,                                         &

     &                    ncid)

                         character*(*)       path

                         integer             mode

                         integer             ncid

         end function

      end interface



      interface

         integer function nf__open                                      &

     &                   (path,                                         &

     &                    mode,                                         &

     &                    chunksizehint,                                &

     &                    ncid)

                         character*(*)       path

                         integer             mode

                         integer             chunksizehint

                         integer             ncid

         end function

      end interface



      interface

         integer function nf__open_mp                                   &

     &                   (path,                                         &

     &                    mode,                                         &

     &                    basepe,                                       &

     &                    chunksizehint,                                &

     &                    ncid)

                         character*(*)       path

                         integer             mode

                         integer             basepe

                         integer             chunksizehint

                         integer             ncid

         end function

      end interface



      interface

         integer function nf_set_fill                                   &

     &                   (ncid,                                         &

     &                    fillmode,                                     &

     &                    old_mode)

                         integer             ncid

                         integer             fillmode

                         integer             old_mode

         end function

      end interface



      interface

         integer function nf_set_default_format                         &

     &                    (format,                                      &

     &                     old_format)

                          integer             format

                          integer             old_format

         end function

      end interface



      interface

         integer function nf_redef                                      &

     &                   (ncid)

                         integer             ncid

         end function

      end interface



      interface

         integer function nf_enddef                                     &

     &                   (ncid)

                         integer             ncid

         end function

      end interface



      interface

         integer function nf__enddef                                    &

     &                   (ncid,                                         &

     &                    h_minfree,                                    &

     &                    v_align,                                      &

     &                    v_minfree,                                    &

     &                    r_align)

                         integer             ncid

                         integer             h_minfree

                         integer             v_align

                         integer             v_minfree

                         integer             r_align

         end function

      end interface



      interface

         integer function nf_sync                                       &

     &                   (ncid)

                         integer             ncid

         end function

      end interface



      interface

         integer function nf_abort                                      &

     &                   (ncid)

                         integer             ncid

         end function

      end interface



      interface

         integer function nf_close                                      &

     &                   (ncid)

                         integer             ncid

         end function

      end interface



      interface

         integer function nf_delete                                     &

     &                   (ncid)

                         character*(*)       ncid

         end function

      end interface



!

! general inquiry routines:

!



      interface

         integer function nf_inq                                        &

     &                   (ncid,                                         &

     &                    ndims,                                        &

     &                    nvars,                                        &

     &                    ngatts,                                       &

     &                    unlimdimid)

                         integer             ncid

                         integer             ndims

                         integer             nvars

                         integer             ngatts

                         integer             unlimdimid

         end function

      end interface



      interface

         integer function nf_inq_ndims                                  &

     &                   (ncid,                                         &

     &                    ndims)

                         integer             ncid

                         integer             ndims

         end function

      end interface



      interface

         integer function nf_inq_nvars                                  &

     &                   (ncid,                                         &

     &                    nvars)

                         integer             ncid

                         integer             nvars

         end function

      end interface



      interface

         integer function nf_inq_natts                                  &

     &                   (ncid,                                         &

     &                    ngatts)

                         integer             ncid

                         integer             ngatts

         end function

      end interface



      interface

         integer function nf_inq_unlimdim                               &

     &                   (ncid,                                         &

     &                    unlimdimid)

                         integer             ncid

                         integer             unlimdimid

         end function

      end interface



!

! dimension routines:

!



      interface

         integer function nf_def_dim                                    &

     &                   (ncid,                                         &

     &                    name,                                         &

     &                    len,                                          &

     &                    dimid)

                          integer             ncid

                          character*(*)       name

                          integer             len

                          integer             dimid

         end function

      end interface



      interface

         integer function nf_inq_dimid                                  &

     &                   (ncid,                                         &

     &                    name,                                         &

     &                    dimid)

                          integer             ncid

                          character*(*)       name

                          integer             dimid

         end function

      end interface



      interface

         integer function nf_inq_dim                                    &

     &                   (ncid,                                         &

     &                    dimid,                                        &

     &                    name,                                         &

     &                    len)

                         integer             ncid

                         integer             dimid

                         character*(*)       name

                         integer             len

         end function

      end interface



      interface

         integer function nf_inq_dimname                                &

     &                   (ncid,                                         &

     &                    dimid,                                        &

     &                    name)

                         integer             ncid

                         integer             dimid

                         character*(*)       name

         end function

      end interface



      interface

         integer function nf_inq_dimlen                                 &

     &                   (ncid,                                         &

     &                    dimid,                                        &

     &                    len)

                         integer             ncid

                         integer             dimid

                         integer             len

         end function

      end interface



      interface

         integer function nf_rename_dim                                 &

     &                   (ncid,                                         &

     &                    dimid,                                        &

     &                    name)

                         integer             ncid

                         integer             dimid

                         character*(*)       name

         end function

      end interface



!

! general attribute routines:

!



      interface

         integer function nf_inq_att                                    &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name,                                         &

     &                    xtype,                                        &

     &                    len)

                         integer             ncid

                         integer             varid

                         character*(*)       name

                         integer             xtype

                         integer             len

         end function

      end interface



      interface

         integer function nf_inq_attid                                  &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name,                                         &

     &                    attnum)

                         integer             ncid

                         integer             varid

                         character*(*)       name

                         integer             attnum

         end function

      end interface



      interface

         integer function nf_inq_atttype                                &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name,                                         &

     &                    xtype)

                         integer             ncid

                         integer             varid

                         character*(*)       name

                         integer             xtype

         end function

      end interface



      interface

         integer function nf_inq_attlen                                 &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name,                                         &

     &                    len)

                         integer             ncid

                         integer             varid

                         character*(*)       name

                         integer             len

         end function

      end interface



      interface

         integer function nf_inq_attname                                &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    attnum,                                       &

     &                    name)

                         integer             ncid

                         integer             varid

                         integer             attnum

                         character*(*)       name

         end function

      end interface



      interface

         integer function nf_copy_att                                   &

     &                   (ncid_in,                                      &

     &                    varid_in,                                     &

     &                    name,                                         &

     &                    ncid_out,                                     &

     &                    varid_out)

                         integer             ncid_in

                         integer             varid_in

                         character*(*)       name

                         integer             ncid_out

                         integer             varid_out

         end function

      end interface



      interface

         integer function nf_rename_att                                 &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    curname,                                      &

     &                    newname)

                         integer             ncid

                         integer             varid

                         character*(*)       curname

                         character*(*)       newname

         end function

      end interface



      interface

         integer function nf_del_att                                    &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name)

                         integer             ncid

                         integer             varid

                         character*(*)       name

         end function

      end interface



!

! attribute put/get routines:

!



      interface

         integer function nf_put_att_text                               &

     &                    (ncid,                                        &

     &                    varid,                                        &

     &                    name,                                         &

     &                    len,                                          &

     &                    text)

                          integer             ncid

                          integer             varid

                          character*(*)       name

                          integer             len

                          character*(*)       text

         end function

      end interface



      interface

         integer function nf_get_att_text                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name,                                         &

     &                    text)

                         integer             ncid

                         integer             varid

                         character*(*)       name

                         character*(*)       text

         end function

      end interface



      interface

         integer function nf_put_att_int1                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name,                                         &

     &                    xtype,                                        &

     &                    len,                                          &

     &                    i1vals)

                         integer             ncid

                         integer             varid

                         character*(*)       name

                         integer             xtype

                         integer             len

                         NF_INT1_T           i1vals(*)

         end function

      end interface



      interface

         integer function nf_get_att_int1                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name,                                         &

     &                    i1vals)

                         integer             ncid

                         integer             varid

                         character*(*)       name

                         NF_INT1_T           i1vals(*)

         end function

      end interface



      interface

         integer function nf_put_att_int2                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name,                                         &

     &                    xtype,                                        &

     &                    len,                                          &

     &                    i2vals)

                         integer             ncid

                         integer             varid

                         character*(*)       name

                         integer             xtype

                         integer             len

                         NF_INT2_T           i2vals(*)

         end function

      end interface



      interface

         integer function nf_get_att_int2                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name,                                         &

     &                    i2vals)

                         integer             ncid

                         integer             varid

                         character*(*)       name

                         NF_INT2_T           i2vals(*)

         end function

      end interface



      interface

         integer function nf_put_att_int                                &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name,                                         &

     &                    xtype,                                        &

     &                    len,                                          &

     &                    ivals)

                         integer             ncid

                         integer             varid

                         character*(*)       name

                         integer             xtype

                         integer             len

                         integer             ivals(*)

         end function

      end interface



      interface

         integer function nf_get_att_int                                &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name,                                         &

     &                    ivals)

                         integer             ncid

                         integer             varid

                         character*(*)       name

                         integer             ivals(*)

         end function

      end interface



      interface

         integer function nf_put_att_real                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name,                                         &

     &                    xtype,                                        &

     &                    len,                                          &

     &                    rvals)

                         integer             ncid

                         integer             varid

                         character*(*)       name

                         integer             xtype

                         integer             len

                         real                rvals(*)

         end function

      end interface



      interface

         integer function nf_get_att_real                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name,                                         &

     &                    rvals)

                         integer             ncid

                         integer             varid

                         character*(*)       name

                         real                  rvals(*)

         end function

      end interface



      interface

         integer function nf_put_att_double                             &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name,                                         &

     &                    xtype,                                        &

     &                    len,                                          &

     &                    dvals)

                         integer             ncid

                         integer             varid

                         character*(*)       name

                         integer             xtype

                         integer             len

                         doubleprecision     dvals(*)

         end function

      end interface



      interface

         integer function nf_get_att_double                             &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name,                                         &

     &                    dvals)

                         integer             ncid

                         integer             varid

                         character*(*)       name

                         doubleprecision     dvals(*)

         end function

      end interface



!

! general variable routines:

!



      interface

         integer function nf_def_var                                    &

     &                   (ncid,                                         &

     &                    name,                                         &

     &                    datatype,                                     &

     &                    ndims,                                        &

     &                    dimids,                                       &

     &                    varid)

                         integer             ncid

                         character*(*)       name

                         integer             datatype

                         integer             ndims

                         integer             dimids(*)

                         integer             varid

         end function

      end interface



      interface

         integer function nf_inq_var                                    &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name,                                         &

     &                    datatype,                                     &

     &                    ndims,                                        &

     &                    dimids,                                       &

     &                    natts)

                         integer             ncid

                         integer             varid

                         character*(*)       name

                         integer             datatype

                         integer             ndims

                         integer             dimids(*)

                         integer             natts

         end function

      end interface



      interface

         integer function nf_inq_varid                                  &

     &                   (ncid,                                         &

     &                    name,                                         &

     &                    varid)

                         integer             ncid

                         character*(*)       name

                         integer             varid

         end function

      end interface



      interface

         integer function nf_inq_varname                                &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name)

                         integer             ncid

                         integer             varid

                         character*(*)       name

         end function

      end interface



      interface

         integer function nf_inq_vartype                                &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    xtype)

                         integer             ncid

                         integer             varid

                         integer             xtype

         end function

      end interface



      interface

         integer function nf_inq_varndims                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    ndims)

                         integer             ncid

                         integer             varid

                         integer             ndims

         end function

      end interface



      interface

         integer function nf_inq_vardimid                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    dimids)

                         integer             ncid

                         integer             varid

                         integer             dimids(*)

         end function

      end interface



      interface

         integer function nf_inq_varnatts                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    natts)

                         integer             ncid

                         integer             varid

                         integer             natts

         end function

      end interface



      interface

         integer function nf_rename_var                                 &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    name)

                         integer             ncid

                         integer             varid

                         character*(*)       name

         end function

      end interface



      interface

         integer function nf_copy_var                                   &

     &                   (ncid_in,                                      &

     &                    varid,                                        &

     &                    ncid_out)

                         integer             ncid_in

                         integer             varid

                         integer             ncid_out

         end function

      end interface



!

! entire variable put/get routines:

!



      interface

         integer function nf_put_var_text                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    text)

                         integer             ncid

                         integer             varid

                         character*(*)       text

         end function

      end interface



      interface

         integer function nf_get_var_text                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    text)

                         integer             ncid

                         integer             varid

                         character*(*)       text

         end function

      end interface



      interface

         integer function nf_put_var_int1                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    i1vals)

                         integer             ncid

                         integer             varid

                         NF_INT1_T           i1vals(*)

         end function

      end interface



      interface

         integer function nf_get_var_int1                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    i1vals)

                         integer             ncid

                         integer             varid

                         NF_INT1_T           i1vals(*)

         end function

      end interface



      interface

         integer function nf_put_var_int2                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    i2vals)

                         integer             ncid

                         integer             varid

                         NF_INT2_T           i2vals(*)

         end function

      end interface



      interface

         integer function nf_get_var_int2                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    i2vals)

                         integer             ncid

                         integer             varid

                         NF_INT2_T           i2vals(*)

         end function

      end interface



      interface

         integer function nf_put_var_int                                &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    ivals)

                         integer             ncid

                         integer             varid

                         integer             ivals(*)

         end function

      end interface



      interface

         integer function nf_get_var_int                                &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    ivals)

                         integer             ncid

                         integer             varid

                         integer             ivals(*)

         end function

      end interface



      interface

         integer function nf_put_var_real                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    rvals)

                         integer             ncid

                         integer             varid

                         real                rvals(*)

         end function

      end interface



      interface

         integer function nf_get_var_real                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    rvals)

                         integer             ncid

                         integer             varid

                         real                rvals(*)

         end function

      end interface



      interface

         integer function nf_put_var_double                             &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    dvals)

                         integer             ncid

                         integer             varid

                         doubleprecision     dvals(*)

         end function

      end interface



      interface

         integer function nf_get_var_double                             &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    dvals)

                         integer             ncid

                         integer             varid

                         doubleprecision     dvals(*)

         end function

      end interface



!

! single variable put/get routines:

!



      interface

         integer function nf_put_var1_text                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    index,                                        &

     &                    text)

                         integer             ncid

                         integer             varid

                         integer             index(*)

                         character*1         text

         end function

      end interface



      interface

         integer function nf_get_var1_text                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    index,                                        &

     &                    text)

                         integer             ncid

                         integer             varid

                         integer             index(*)

                         character*1         text

         end function

      end interface



      interface

         integer function nf_put_var1_int1                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    index,                                        &

     &                    i1val)

                         integer             ncid

                         integer             varid

                         integer             index(*)

                         NF_INT1_T           i1val

         end function

      end interface



      interface

         integer function nf_get_var1_int1                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    index,                                        &

     &                    i1val)

                         integer             ncid

                         integer             varid

                         integer             index(*)

                         NF_INT1_T           i1val

         end function

      end interface



      interface

         integer function nf_put_var1_int2                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    index,                                        &

     &                    i2val)

                         integer             ncid

                         integer             varid

                         integer             index(*)

                         NF_INT2_T           i2val

         end function

      end interface



      interface

         integer function nf_get_var1_int2                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    index,                                        &

     &                    i2val)

                         integer             ncid

                         integer             varid

                         integer             index(*)

                         NF_INT2_T           i2val

         end function

      end interface



      interface

         integer function nf_put_var1_int                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    index,                                        &

     &                    ival)

                         integer             ncid

                         integer             varid

                         integer             index(*)

                         integer             ival

         end function

      end interface



      interface

         integer function nf_get_var1_int                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    index,                                        &

     &                    ival)

                         integer             ncid

                         integer             varid

                         integer             index(*)

                         integer             ival

         end function

      end interface



      interface

         integer function nf_put_var1_real                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    index,                                        &

     &                    rval)

                         integer              ncid

                         integer              varid

                         integer              index(*)

                         real                 rval

         end function

      end interface



      interface

         integer function nf_get_var1_real                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    index,                                        &

     &                    rval)

                         integer             ncid

                         integer             varid

                         integer             index(*)

                         real                rval

         end function

      end interface



      interface

         integer function nf_put_var1_double                            &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    index,                                        &

     &                    dval)

                         integer             ncid

                         integer             varid

                         integer             index(*)

                         doubleprecision     dval

         end function

      end interface



      interface

         integer function nf_get_var1_double                            &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    index,                                        &

     &                    dval)

                         integer             ncid

                         integer             varid

                         integer             index(*)

                         doubleprecision     dval

         end function

      end interface



!

! variable array put/get routines:

!



      interface

         integer function nf_put_vara_text                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    text)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         character*(*)       text

         end function

      end interface



      interface

         integer function nf_get_vara_text                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    text)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         character*(*)       text

         end function

      end interface



      interface

         integer function nf_put_vara_int1                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    i1vals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         NF_INT1_T           i1vals(*)

         end function

      end interface



      interface

         integer function nf_get_vara_int1                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    i1vals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         NF_INT1_T           i1vals(*)

         end function

      end interface



      interface

         integer function nf_put_vara_int2                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    i2vals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         NF_INT2_T           i2vals(*)

         end function

      end interface



      interface

         integer function nf_get_vara_int2                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    i2vals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         NF_INT2_T           i2vals(*)

         end function

      end interface



      interface

         integer function nf_put_vara_int                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    ivals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             ivals(*)

         end function

      end interface



      interface

         integer function nf_get_vara_int                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    ivals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             ivals(*)

         end function

      end interface



      interface

         integer function nf_put_vara_real                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    rvals)

                         integer              ncid

                         integer              varid

                         integer              start(*)

                         integer              count(*)

                         real                 rvals(*)

         end function

      end interface



      interface

         integer function nf_get_vara_real                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    rvals)

                         integer              ncid

                         integer              varid

                         integer              start(*)

                         integer              count(*)

                         real                 rvals(*)

         end function

      end interface



      interface

         integer function nf_put_vara_double                            &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    dvals)

                         integer              ncid

                         integer              varid

                         integer              start(*)

                         integer              count(*)

                         doubleprecision      dvals(*)

         end function

      end interface



      interface

         integer function nf_get_vara_double                            &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    dvals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         doubleprecision     dvals(*)

         end function

      end interface



!

! strided variable put/get routines:

!



      interface

         integer function nf_put_vars_text                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    text)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         character*(*)       text

         end function

      end interface



      interface

         integer function nf_get_vars_text                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    text)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         character*(*)       text

         end function

      end interface



      interface

         integer function nf_put_vars_int1                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    i1vals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         NF_INT1_T           i1vals(*)

         end function

      end interface



      interface

         integer function nf_get_vars_int1                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    i1vals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         NF_INT1_T           i1vals(*)

         end function

      end interface



      interface

         integer function nf_put_vars_int2                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    i2vals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         NF_INT2_T           i2vals(*)

         end function

      end interface



      interface

         integer function nf_get_vars_int2                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    i2vals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         NF_INT2_T           i2vals(*)

         end function

      end interface



      interface

         integer function nf_put_vars_int                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    ivals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         integer             ivals(*)

         end function

      end interface



      interface

         integer function nf_get_vars_int                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    ivals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         integer             ivals(*)

         end function

      end interface



      interface

         integer function nf_put_vars_real                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    rvals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         real                rvals(*)

         end function

      end interface





      interface

         integer function nf_get_vars_real                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    rvals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         real                rvals(*)

         end function

      end interface





      interface

         integer function nf_put_vars_double                            &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    dvals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         doubleprecision     dvals(*)

         end function

      end interface





      interface

         integer function nf_get_vars_double                            &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    dvals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         doubleprecision     dvals(*)

         end function

      end interface





!

! mapped variable put/get routines:

!



      interface

         integer function nf_put_varm_text                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    imap,                                         &

     &                    text)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         integer             imap(*)

                         character*(*)       text

         end function

      end interface





      interface

         integer function nf_get_varm_text                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    imap,                                         &

     &                    text)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         integer             imap(*)

                         character*(*)       text

         end function

      end interface





      interface

         integer function nf_put_varm_int1                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    imap,                                         &

     &                    i1vals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         integer             imap(*)

                         NF_INT1_T           i1vals(*)

         end function

      end interface





      interface

         integer function nf_get_varm_int1                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    imap,                                         &

     &                    i1vals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         integer             imap(*)

                         NF_INT1_T           i1vals(*)

         end function

      end interface





      interface

         integer function nf_put_varm_int2                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    imap,                                         &

     &                    i2vals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         integer             imap(*)

                         NF_INT2_T           i2vals(*)

         end function

      end interface





      interface

         integer function nf_get_varm_int2                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    imap,                                         &

     &                    i2vals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         integer             imap(*)

                         NF_INT2_T           i2vals(*)

         end function

      end interface





      interface

         integer function nf_put_varm_int                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    imap,                                         &

     &                    ivals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         integer             imap(*)

                         integer             ivals(*)

         end function

      end interface





      interface

         integer function nf_get_varm_int                               &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    imap,                                         &

     &                    ivals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         integer             imap(*)

                         integer             ivals(*)

         end function

      end interface





      interface

         integer function nf_put_varm_real                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    imap,                                         &

     &                    rvals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         integer             imap(*)

                         real                rvals(*)

         end function

      end interface





      interface

         integer function nf_get_varm_real                              &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    imap,                                         &

     &                    rvals)

                         integer              ncid

                         integer              varid

                         integer              start(*)

                         integer              count(*)

                         integer              stride(*)

                         integer              imap(*)

                         real                 rvals(*)

         end function

      end interface



      interface

         integer function nf_put_varm_double                            &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    imap,                                         &

     &                    dvals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         integer             imap(*)

                         doubleprecision     dvals(*)

         end function

      end interface



      interface

         integer function nf_get_varm_double                            &

     &                   (ncid,                                         &

     &                    varid,                                        &

     &                    start,                                        &

     &                    count,                                        &

     &                    stride,                                       &

     &                    imap,                                         &

     &                    dvals)

                         integer             ncid

                         integer             varid

                         integer             start(*)

                         integer             count(*)

                         integer             stride(*)

                         integer             imap(*)

                         doubleprecision     dvals(*)

         end function

      end interface



!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccccc

! begin netcdf 2.4 backward compatibility:

!



!

! functions in the fortran interface

!

      integer nccre

      integer ncopn

      integer ncddef

      integer ncdid

      integer ncvdef

      integer ncvid

      integer nctlen

      integer ncsfil



      external nccre

      external ncopn

      external ncddef

      external ncdid

      external ncvdef

      external ncvid

      external nctlen

      external ncsfil





      integer ncrdwr

      integer nccreat

      integer ncexcl

      integer ncindef

      integer ncnsync

      integer nchsync

      integer ncndirty

      integer nchdirty

      integer nclink

      integer ncnowrit

      integer ncwrite

      integer ncclob

      integer ncnoclob

      integer ncglobal

      integer ncfill

      integer ncnofill

      integer maxncop

      integer maxncdim

      integer maxncatt

      integer maxncvar

      integer maxncnam

      integer maxvdims

      integer ncnoerr

      integer ncebadid

      integer ncenfile

      integer nceexist

      integer nceinval

      integer nceperm

      integer ncenotin

      integer nceindef

      integer ncecoord

      integer ncemaxds

      integer ncename

      integer ncenoatt

      integer ncemaxat

      integer ncebadty

      integer ncebadd

      integer ncests

      integer nceunlim

      integer ncemaxvs

      integer ncenotvr

      integer nceglob

      integer ncenotnc

      integer ncfoobar

      integer ncsyserr

      integer ncfatal

      integer ncverbos

      integer ncentool





!

! netcdf data types:

!

      integer ncbyte

      integer ncchar

      integer ncshort

      integer nclong

      integer ncfloat

      integer ncdouble



      parameter(ncbyte = 1)

      parameter(ncchar = 2)

      parameter(ncshort = 3)

      parameter(nclong = 4)

      parameter(ncfloat = 5)

      parameter(ncdouble = 6)



!

!     masks for the struct nc flag field; passed in as 'mode' arg to

!     nccreate and ncopen.

!



!     read/write, 0 => readonly

      parameter(ncrdwr = 1)

!     in create phase, cleared by ncendef

      parameter(nccreat = 2)

!     on create destroy existing file

      parameter(ncexcl = 4)

!     in define mode, cleared by ncendef

      parameter(ncindef = 8)

!     synchronise numrecs on change (x'10')

      parameter(ncnsync = 16)

!     synchronise whole header on change (x'20')

      parameter(nchsync = 32)

!     numrecs has changed (x'40')

      parameter(ncndirty = 64)

!     header info has changed (x'80')

      parameter(nchdirty = 128)

!     prefill vars on endef and increase of record, the default behavior

      parameter(ncfill = 0)

!     do not fill vars on endef and increase of record (x'100')

      parameter(ncnofill = 256)

!     isa link (x'8000')

      parameter(nclink = 32768)



!

!     'mode' arguments for nccreate and ncopen

!

      parameter(ncnowrit = 0)

      parameter(ncwrite = ncrdwr)

      parameter(ncclob = nf_clobber)

      parameter(ncnoclob = nf_noclobber)



!

!     'size' argument to ncdimdef for an unlimited dimension

!

      integer ncunlim

      parameter(ncunlim = 0)



!

!     attribute id to put/get a global attribute

!

      parameter(ncglobal  = 0)



!

!     advisory maximums:

!

      parameter(maxncop = 32)

      parameter(maxncdim = 100)

      parameter(maxncatt = 2000)

      parameter(maxncvar = 2000)

!     not enforced

      parameter(maxncnam = 128)

      parameter(maxvdims = maxncdim)



!

!     global netcdf error status variable

!     initialized in error.c

!



!     no error

      parameter(ncnoerr = nf_noerr)

!     not a netcdf id

      parameter(ncebadid = nf_ebadid)

!     too many netcdfs open

      parameter(ncenfile = -31)    ! nc_syserr

!     netcdf file exists && ncnoclob

      parameter(nceexist = nf_eexist)

!     invalid argument

      parameter(nceinval = nf_einval)

!     write to read only

      parameter(nceperm = nf_eperm)

!     operation not allowed in data mode

      parameter(ncenotin = nf_enotindefine )

!     operation not allowed in define mode

      parameter(nceindef = nf_eindefine)

!     coordinates out of domain

      parameter(ncecoord = nf_einvalcoords)

!     maxncdims exceeded

      parameter(ncemaxds = nf_emaxdims)

!     string match to name in use

      parameter(ncename = nf_enameinuse)

!     attribute not found

      parameter(ncenoatt = nf_enotatt)

!     maxncattrs exceeded

      parameter(ncemaxat = nf_emaxatts)

!     not a netcdf data type

      parameter(ncebadty = nf_ebadtype)

!     invalid dimension id

      parameter(ncebadd = nf_ebaddim)

!     ncunlimited in the wrong index

      parameter(nceunlim = nf_eunlimpos)

!     maxncvars exceeded

      parameter(ncemaxvs = nf_emaxvars)

!     variable not found

      parameter(ncenotvr = nf_enotvar)

!     action prohibited on ncglobal varid

      parameter(nceglob = nf_eglobal)

!     not a netcdf file

      parameter(ncenotnc = nf_enotnc)

      parameter(ncests = nf_ests)

      parameter (ncentool = nf_emaxname)

      parameter(ncfoobar = 32)

      parameter(ncsyserr = -31)



!

!     global options variable. used to determine behavior of error
handler.

!     initialized in lerror.c

!

      parameter(ncfatal = 1)

      parameter(ncverbos = 2)



!

!     default fill values.  these must be the same as in the c interface.

!

      integer filbyte

      integer filchar

      integer filshort

      integer fillong

      real filfloat

      doubleprecision fildoub



      parameter (filbyte = -127)

      parameter (filchar = 0)

      parameter (filshort = -32767)

      parameter (fillong = -2147483647)

      parameter (filfloat = 9.9692099683868690e+36)

      parameter (fildoub = 9.9692099683868690e+36)

