character (len = 80), external :: nf_inq_libvers, nf_strerror
  ! Control routines 
  integer,              external :: nf_open, nf__open, nf_create, nf__create,     &
                                    nf_enddef, nf__enddef, nf_set_fill, nf_redef, &
                                    nf_sync, nf_abort, nf_close,                  &
                                    ! These are used only in undocumented functions
                                    nf_set_base_pe, nf_inq_base_pe,               &
                                    nf__create_mp, nf__open_mp, nf_delete,        &
                                    nf_inq_format
  ! File level inquiry 
  integer,              external :: nf_inq
  
  ! Dimension routines   nf_inq_dim
  integer,              external :: nf_def_dim, nf_inq_dimid, nf_rename_dim, nf_inq_dim

  ! Attribute routines
  integer,              external :: nf_copy_att, nf_rename_att, nf_del_att, & 
                                    nf_inq_att, nf_inq_attid, nf_inq_attname
  integer,              external :: nf_put_att_text, nf_get_att_text,                 &
                                    nf_put_att_int1, nf_put_att_int2, nf_put_att_int, &
                                    nf_get_att_int1, nf_get_att_int2, nf_get_att_int, &
                                    nf_put_att_real,   nf_get_att_real,               &
                                    nf_put_att_double, nf_get_att_double
                                    
  ! Variable routines
  integer,              external :: nf_def_var, nf_inq_varid, nf_inq_var, nf_rename_var
  integer,              external :: nf_put_var1_text, nf_get_var1_text,                   &
                                    nf_put_var1_int1, nf_put_var1_int2, nf_put_var1_int, &
                                    nf_get_var1_int1, nf_get_var1_int2, nf_get_var1_int, &
                                    nf_put_var1_real,   nf_get_var1_real,                 &
                                    nf_put_var1_double, nf_get_var1_double
  integer,              external :: nf_put_vars_text, nf_get_vars_text,                   &
                                    nf_put_vars_int1, nf_put_vars_int2, nf_put_vars_int, &
                                    nf_get_vars_int1, nf_get_vars_int2, nf_get_vars_int, &
                                    nf_put_vars_real,   nf_get_vars_real,                 &
                                    nf_put_vars_double, nf_get_vars_double 
  integer,              external :: nf_put_vara_text, nf_get_vara_text,                   &
                                    nf_put_vara_int1, nf_put_vara_int2, nf_put_vara_int, &
                                    nf_get_vara_int1, nf_get_vara_int2, nf_get_vara_int, &
                                    nf_put_vara_real,   nf_get_vara_real,                 &
                                    nf_put_vara_double, nf_get_vara_double 
  integer,              external :: nf_put_varm_text, nf_get_varm_text,                   &
                                    nf_put_varm_int1, nf_put_varm_int2, nf_put_varm_int, &
                                    nf_get_varm_int1, nf_get_varm_int2, nf_get_varm_int, &
                                    nf_put_varm_real,   nf_get_varm_real,                 &
                                    nf_put_varm_double, nf_get_varm_double