[netcdf-fortran] 02/10: Imported Upstream version 4.4.4

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Sat May 14 12:33:53 UTC 2016


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository netcdf-fortran.

commit f9b9e953afd0c4edabdde53c89d215c3ab440d0a
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Sat May 14 13:56:34 2016 +0200

    Imported Upstream version 4.4.4
---
 .gitignore                                    |     2 +-
 .travis.yml                                   |    28 +-
 CMakeLists.txt                                |    27 +-
 CTestConfig.cmake.in                          |     6 +-
 Doxyfile.general                              |     2 +-
 Makefile.in                                   |     2 +-
 README.md                                     |    22 +-
 RELEASE_NOTES.md                              |    11 +
 configure => autom4te.cache/output.0          |  2050 ++---
 configure => autom4te.cache/output.1          |  2050 ++---
 configure => autom4te.cache/output.2          |  2050 ++---
 autom4te.cache/requests                       |   566 ++
 autom4te.cache/traces.0                       |  3511 +++++++++
 autom4te.cache/traces.1                       |  1175 +++
 autom4te.cache/traces.2                       |  3511 +++++++++
 configure                                     |    26 +-
 configure.ac                                  |     2 +-
 docs/Doxyfile.in                              |    17 +-
 docs/netcdf-f77.md                            |  1199 ++-
 docs/netcdf-f90-sec1-usage.md                 |   438 ++
 docs/netcdf-f90-sec2-datasets.md              |  1193 +++
 docs/netcdf-f90-sec3-groups.md                |   917 +++
 docs/netcdf-f90-sec4-dimensions.md            |   386 +
 docs/netcdf-f90-sec5-user_defined_types.md    |  1882 +++++
 docs/netcdf-f90-sec6-variables.md             |  1790 +++++
 docs/netcdf-f90-sec7-attributes.md            |   717 ++
 docs/netcdf-f90.md                            | 10033 +-----------------------
 docs/netcdf_fortran_4.4.2dev_notes_RW.pdf     |   Bin 0 -> 38544 bytes
 examples/F90/Makefile.am                      |    27 +-
 examples/F90/Makefile.in                      |    67 +-
 fortran/module_netcdf4_nc_interfaces.f90      |   595 +-
 fortran/module_netcdf4_nf_interfaces.F90      |    77 +-
 fortran/module_netcdf_f03.f90                 |     4 +-
 fortran/module_netcdf_fortv2_c_interfaces.f90 |   256 +-
 fortran/module_netcdf_nc_data.F90             |   345 +-
 fortran/module_netcdf_nc_interfaces.f90       |  1080 +--
 fortran/module_netcdf_nf_data.F90             |    32 +-
 fortran/module_netcdf_nf_interfaces.F90       |    23 +-
 fortran/netcdf4_externals.f90                 |     4 +-
 fortran/nf_attio.F90                          |   145 +-
 fortran/nf_control.F90                        |   138 +-
 fortran/nf_dim.f90                            |    31 +-
 fortran/nf_fortv2.f90                         |   594 +-
 fortran/nf_genatt.f90                         |    44 +-
 fortran/nf_geninq.f90                         |    16 +-
 fortran/nf_genvar.f90                         |   114 +-
 fortran/nf_lib.c                              |    36 +
 fortran/nf_logging.F90                        |    25 +-
 fortran/nf_misc.f90                           |     1 +
 fortran/nf_nc4.f90                            |   745 +-
 fortran/nf_var1io.F90                         |   338 +-
 fortran/nf_varaio.F90                         |   455 +-
 fortran/nf_vario.F90                          |    54 +-
 fortran/nf_varmio.F90                         |   611 +-
 fortran/nf_varsio.F90                         |   561 +-
 libsrc/Makefile.am                            |     6 +-
 libsrc/Makefile.in                            |     6 +-
 nf03_test/CMakeLists.txt                      |     8 +-
 nf03_test/Makefile.am                         |    14 +-
 nf03_test/Makefile.in                         |    68 +-
 nf03_test/f03tst_open_mem.F                   |   249 +
 61 files changed, 23952 insertions(+), 16430 deletions(-)

diff --git a/.gitignore b/.gitignore
index 5343c2c..e138aa3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,5 @@
 CTestConfig.cmake
-build
+build*
 \#.\#
 *.*~
 html
diff --git a/.travis.yml b/.travis.yml
index 7892bef..c2d4d43 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,19 +5,29 @@ services:
 
 env:
     matrix:
-        - DOCKIMG=unidata/nctests:serial   USECMAKE=TRUE USEAC=TRUE USE_CC=gcc   COPTS='-DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-gcc-x64-signed
-        - DOCKIMG=unidata/nctests:serial   USECMAKE=TRUE USEAC=TRUE USE_CC=clang COPTS='-DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-clang-x64-signed
-        - DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE USE_CC=gcc   COPTS='-DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-gcc-x86-signed
-        - DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE USE_CC=clang COPTS='-DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-clang-x86-signed
+        - DOCKIMG=unidata/nctests:serial   USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc   COPTS='-DENABLE_NETCDF_4=OFF -DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-nc3-gcc-x64-signed
+        - DOCKIMG=unidata/nctests:serial   USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=clang COPTS='-DENABLE_NETCDF_4=OFF -DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-nc3-clang-x64-signed
+        - DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc   COPTS='-DENABLE_NETCDF_4=OFF -DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-nc3-gcc-x86-signed
+        - DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=clang COPTS='-DENABLE_NETCDF_4=OFF -DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-nc3-clang-x86-signed
 
-        - DOCKIMG=unidata/nctests:serial   USECMAKE=TRUE USEAC=TRUE USE_CC=gcc   COPTS='-DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-gcc-x64-unsigned
-        - DOCKIMG=unidata/nctests:serial   USECMAKE=TRUE USEAC=TRUE USE_CC=clang COPTS='-DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-clang-x64-unsigned
-        - DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE USE_CC=gcc   COPTS='-DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-gcc-x86-unsigned
-        - DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE USE_CC=clang COPTS='-DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-clang-x86-unsigned
+        - DOCKIMG=unidata/nctests:serial   USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc   COPTS='-DENABLE_NETCDF_4=OFF -DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-nc3-gcc-x64-unsigned
+        - DOCKIMG=unidata/nctests:serial   USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=clang COPTS='-DENABLE_NETCDF_4=OFF -DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-nc3-clang-x64-unsigned
+        - DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc   COPTS='-DENABLE_NETCDF_4=OFF -DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-nc3-gcc-x86-unsigned
+        - DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=clang COPTS='-DENABLE_NETCDF_4=OFF -DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-nc3-clang-x86-unsigned
+
+        - DOCKIMG=unidata/nctests:serial   USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc   COPTS='-DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-nc4-gcc-x64-signed
+        - DOCKIMG=unidata/nctests:serial   USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=clang COPTS='-DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-nc4-clang-x64-signed
+        - DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc   COPTS='-DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-nc4-gcc-x86-signed
+        - DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=clang COPTS='-DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-nc4-clang-x86-signed
+
+        - DOCKIMG=unidata/nctests:serial   USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc   COPTS='-DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-nc4-gcc-x64-unsigned
+        - DOCKIMG=unidata/nctests:serial   USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=clang COPTS='-DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-nc4-clang-x64-unsigned
+        - DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=gcc   COPTS='-DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-nc4-gcc-x86-unsigned
+        - DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE DISTCHECK=TRUE USE_CC=clang COPTS='-DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-nc4-clang-x86-unsigned
 
 before_install:
     - docker pull $DOCKIMG > /dev/null
 
 script:
 
-    - docker run --rm -it -h "$CURHOST" -e USEDASH=FALSE -e RUNC=OFF -e RUNF=TRUE -e RUNCXX=OFF -e RUNP=OFF -e RUNNCO=OFF -e USECMAKE=$USECMAKE -e USEAC=$USEAC -e COPTS=$COPTS -v $(pwd):/netcdf-fortran $DOCKIMG
+    - docker run --rm -it -h "$CURHOST" -e USEDASH=FALSE -e RUNC=OFF -e RUNF=TRUE -e RUNCXX=OFF -e RUNP=OFF -e RUNNCO=OFF -e USECMAKE=$USECMAKE -e USEAC=$USEAC -e DISTCHECK=$DISTCHECK -e COPTS="$COPTS" -e CTEST_OUTPUT_ON_FAILURE=1 -v $(pwd):/netcdf-fortran $DOCKIMG
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 513d66b..6ed3b2b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,11 +10,14 @@ cmake_minimum_required(VERSION 2.8.9)
 
 #Project Name for netCDF-Fortran
 PROJECT (NC4F Fortran C)
-set(PACKAGE "netcdf-fortran" CACHE STRING "")
+SET(NC4F_CTEST_PROJECT_NAME "netcdf-fortran")
+
+set(PACKAGE "${NC4F_CTEST_PROJECT_NAME}" CACHE STRING "")
+
 #Project Version
 SET(NC4F_VERSION_MAJOR 4)
 SET(NC4F_VERSION_MINOR 4)
-SET(NC4F_VERSION_PATCH 3)
+SET(NC4F_VERSION_PATCH 4)
 SET(NC4F_VERSION_NOTE "")
 SET(NC4F_VERSION ${NC4F_VERSION_MAJOR}.${NC4F_VERSION_MINOR}.${NC4F_VERSION_PATCH}${NC4F_VERSION_NOTE})
 SET(VERSION ${NC4F_VERSION})
@@ -291,7 +294,7 @@ MACRO(print_conf_summary)
   MESSAGE(STATUS "\tBuilding Shared Libraries:\t" ${BUILD_SHARED_LIBS})
   MESSAGE(STATUS "\tBuilding netCDF-4:\t\t" ${ENABLE_NETCDF4})
   MESSAGE(STATUS "\tBuilding DAP Support:\t\t" ${ENABLE_DAP})
-
+  MESSAGE(STATUS "\tLogging Support:\t\t" ${STATUS_LOGGING})
   IF(STATUS_PNETCDF)
     MESSAGE(STATUS "\tUsing pnetcdf:\t\t\t" ${STATUS_PNETCDF})
   ENDIF(STATUS_PNETCDF)
@@ -361,8 +364,6 @@ ENDMACRO()
 SET (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/"
   CACHE INTERNAL "Location of our custom CMake modules.")
 
-SET(USE_LOGGING "ON")
-
 #####
 # Some utility macros/scripts.
 
@@ -453,6 +454,11 @@ CHECK_LIBRARY_EXISTS(${NETCDF_C_LIBRARY} nc_use_parallel_enabled "" BUILD_PARALL
 # Set some status messages for the summary.
 ##
 
+SET(STATUS_LOGGING OFF)
+IF(USE_LOGGING)
+  SET(STATUS_LOGGING ON)
+ENDIF()
+
 SET(STATUS_PARALLEL OFF)
 IF(BUILD_PARALLEL)
   SET(STATUS_PARALLEL ON)
@@ -521,12 +527,6 @@ OPTION(ENABLE_FORTRAN_TYPE_CHECKS
 # Toggle whether or not to run tests.
 OPTION(ENABLE_TESTS "Enable netcdf-fortran tests." ON)
 
-# Support old version-2 API for backward compatibility
-SET (ENABLE_LOGGING "ON")
-IF(ENABLE_LOGGING)
-  SET(USE_LOGGING ON CACHE BOOL "")
-ENDIF()
-
 # Set the default fortran builds; default is to build f03
 SET(BUILD_F90 "ON")
 SET(BUILD_V2 "ON")
@@ -606,9 +606,8 @@ ENDIF()
 ###
 
 # Set CDash-related options.
-SET(NC_CTEST_PROJECT_NAME "netcdf-fortran" CACHE STRING "Project Name for CTest-based testing purposes.")
-SET(NC_CTEST_DROP_SITE "my.cdash.org" CACHE STRING "Dashboard location for CTest-based testing purposes.")
-SET(NC_CTEST_DROP_LOC_PREFIX "" CACHE STRING "Prefix for Dashboard location on remote server when using CTest-based testing.")
+SET(NC4F_CTEST_DROP_SITE "my.cdash.org" CACHE STRING "Dashboard location for CTest-based testing purposes.")
+SET(NC4F_CTEST_DROP_LOC_PREFIX "" CACHE STRING "Prefix for Dashboard location on remote server when using CTest-based testing.")
 
 # Generate CTestConfig file from template.
 CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/CTestConfig.cmake.in"
diff --git a/CTestConfig.cmake.in b/CTestConfig.cmake.in
index c2f7e09..06c038b 100644
--- a/CTestConfig.cmake.in
+++ b/CTestConfig.cmake.in
@@ -8,10 +8,10 @@
 
 set(DART_TESTING_TIMEOUT "4800")
 
-set(CTEST_PROJECT_NAME "@NC_CTEST_PROJECT_NAME@")
+set(CTEST_PROJECT_NAME "@NC4F_CTEST_PROJECT_NAME@")
 set(CTEST_NIGHTLY_START_TIME "00:00:00 EST")
 
 set(CTEST_DROP_METHOD "http")
-set(CTEST_DROP_SITE "@NC_CTEST_DROP_SITE@") 
-set(CTEST_DROP_LOCATION "@NC_CTEST_DROP_LOC_PREFIX@/submit.php?project=@NC_CTEST_PROJECT_NAME@")
+set(CTEST_DROP_SITE "@NC4F_CTEST_DROP_SITE@")
+set(CTEST_DROP_LOCATION "@NC4F_CTEST_DROP_LOC_PREFIX@/submit.php?project=@NC4F_CTEST_PROJECT_NAME@")
 set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Doxyfile.general b/Doxyfile.general
index 2fdf2c7..a1c995f 100644
--- a/Doxyfile.general
+++ b/Doxyfile.general
@@ -38,7 +38,7 @@ PROJECT_NAME           = netcdf-fortran
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 4.4.3
+PROJECT_NUMBER         = 4.4.4
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/Makefile.in b/Makefile.in
index 28b671f..7815b07 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -91,7 +91,7 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/configure $(am__configure_deps) \
 	$(srcdir)/config.h.in $(srcdir)/nf-config.in \
 	$(srcdir)/netcdf-fortran.pc.in compile config.guess config.sub \
-	depcomp install-sh missing ltmain.sh
+	install-sh missing ltmain.sh
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
 	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
diff --git a/README.md b/README.md
index 1b160a4..8f553cf 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,7 @@
 Unidata NetCDF Fortran Library
 ========================================
 
-[![Build Status](https://travis-ci.org/Unidata/netcdf-fortran.svg?branch=master)](https://travis-ci.org/Unidata/netcdf-fortran)
-
-Overview 
+Overview
 --------
 
 
@@ -11,7 +9,7 @@ The Unidata network Common Data Form (netCDF) is an interface for scientific dat
 
 NetCDF files are self-describing, network-transparent, directly accessible, and extendible.  `Self-describing` means that a netCDF file includes information about the data it contains.  `Network-transparent` means that a netCDF file is represented in a form that can be accessed by computers with different ways of storing integers, characters, and floating-point numbers.  `Direct-access` means that a small subset of a large dataset may be accessed efficiently, without first reading throug [...]
 
-NetCDF is useful for supporting access to diverse kinds of scientific data in heterogeneous networking environments and for writing application software that does not depend on application-specific formats.  For information about a variety of analysis and display packages that have been developed to analyze and display data in netCDF form, see 
+NetCDF is useful for supporting access to diverse kinds of scientific data in heterogeneous networking environments and for writing application software that does not depend on application-specific formats.  For information about a variety of analysis and display packages that have been developed to analyze and display data in netCDF form, see
 
 * http://www.unidata.ucar.edu/netcdf/software.html
 
@@ -19,12 +17,21 @@ For more information about netCDF, see the netCDF Web page at
 
 * http://www.unidata.ucar.edu/netcdf/
 
+### Code Status
+
+NetCDF-Fortran uses [Travis-CI](http://travis-ci.org) for continuous integration testing. This helps to ensure that developer changes do not break the netCDF-Fortran code base.
+
+Continuous Integration Testing Suite | Status
+---------------- | -----------
+Travis-CI  |  <IMG SRC="https://travis-ci.org/Unidata/netcdf-fortran.svg?branch=master"/>
+
+
 Getting NetCDF
 --------------
 
 You can obtain a copy of the latest released versions of netCDF software from
 
-* http://github.com/Unidata/netcdf-c 
+* http://github.com/Unidata/netcdf-c
 * http://github.com/Unidata/netcdf-fortran
 * http://github.com/Unidata/netcdf-cxx4
 * http://github.com/Unidata/netcdf4-python
@@ -40,10 +47,9 @@ To install this package, please see the file INSTALL in the distribution, or the
 Additional Documentation
 ------------------------
 
-The netCDF-3 C and FORTRAN-77 interfaces are documented in man(1) pages at
+The netCDF-3 C and FORTRAN-77 interfaces are documented at
 
-* http://www.unidata.ucar.edu/netcdf/docs/netcdf-man-3.html
-* http://www.unidata.ucar.edu/netcdf/docs/netcdf-man-3f.html 
+* http://www.unidata.ucar.edu/netcdf/documentation/historic/
 
 User's Guides are also available in several forms from the same location.
 
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index 8d1187c..c7be227 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -6,6 +6,17 @@ Release Notes {#nf_release_notes}
 This file contains a high-level description of this package's evolution.
 Entries are in reverse chronological order (most recent first).
 
+## 4.4.4 Released May 13, 2016
+
+* Corrected an issue where cmake-based builds specifying `USE_LOGGING` were not seeing expected behavior.  The issue was reported, and subsequently fixed, by Neil Carlson at Los Alamos Nat'l Laboratory. See [Github Pull Request #44](https://github.com/Unidata/netcdf-fortran/pull/44) for more information.
+* Integrated improvements provided by Richard Weed.  For a *complete* list of modifications, see the file `docs/netcdf_fortran_4.4.2dev_notes_RW.pdf`.  **It is highly detailed and worth reading!**
+
+    The highlights of the improvements are as follows:
+
+  * Explicit dependencies on `NC_MAX_DIM` constant for arrays has been removed and replaced with dynamically-allocated arrays.
+  * Support for `nc_open_mem()` in the C library, allowing for the creation of "in memory" files.
+  * General clean up.
+
 ## 4.4.3 Released 2016-01-20
 
 * Corrected a bug which would return a false-positive in `nf_test` when using netCDF-C `4.4.0`.
diff --git a/configure b/autom4te.cache/output.0
old mode 100755
new mode 100644
similarity index 97%
copy from configure
copy to autom4te.cache/output.0
index 5dc5f7f..546c65a
--- a/configure
+++ b/autom4te.cache/output.0
@@ -1,15 +1,15 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for netCDF-Fortran 4.4.3.
-#
-# Report bugs to <support-netcdf at unidata.ucar.edu>.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+@%:@! /bin/sh
+@%:@ Guess values for system-dependent variables and create Makefiles.
+@%:@ Generated by GNU Autoconf 2.69 for netCDF-Fortran 4.4.4.
+@%:@
+@%:@ Report bugs to <support-netcdf at unidata.ucar.edu>.
+@%:@ 
+@%:@ 
+@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+@%:@ 
+@%:@ 
+@%:@ This configure script is free software; the Free Software Foundation
+@%:@ gives unlimited permission to copy, distribute and modify it.
 ## -------------------- ##
 ## M4sh Initialization. ##
 ## -------------------- ##
@@ -24,9 +24,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in #(
+  case `(set -o) 2>/dev/null` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -57,7 +57,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in #(
+      case $arg in @%:@(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -90,7 +90,7 @@ IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
-case $0 in #((
+case $0 in @%:@((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -145,7 +145,7 @@ export LANGUAGE
 BASH_ENV=/dev/null
 ENV=/dev/null
 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
+case $- in @%:@ ((((
   *v*x* | *x*v* ) as_opts=-vx ;;
   *v* ) as_opts=-v ;;
   *x* ) as_opts=-x ;;
@@ -168,9 +168,9 @@ if test "x$CONFIG_SHELL" = x; then
   alias -g '\${1+\"\$@\"}'='\"\$@\"'
   setopt NO_GLOB_SUBST
 else
-  case \`(set -o) 2>/dev/null\` in #(
+  case \`(set -o) 2>/dev/null\` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -188,7 +188,7 @@ as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
 as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
 as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
 if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
+  
 else
   exitcode=1; echo positional parameters were not saved.
 fi
@@ -213,7 +213,7 @@ else
   as_have_required=no
 fi
   if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
+  
 else
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 as_found=false
@@ -222,7 +222,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   as_found=:
-  case $as_dir in #(
+  case $as_dir in @%:@(
 	 /*)
 	   for as_base in sh bash ksh sh5; do
 	     # Try only shells that exist, to save several forks.
@@ -254,7 +254,7 @@ IFS=$as_save_IFS
 BASH_ENV=/dev/null
 ENV=/dev/null
 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
+case $- in @%:@ ((((
   *v*x* | *x*v* ) as_opts=-vx ;;
   *v* ) as_opts=-v ;;
   *x* ) as_opts=-x ;;
@@ -293,36 +293,36 @@ unset CLICOLOR_FORCE GREP_OPTIONS
 ## --------------------- ##
 ## M4sh Shell Functions. ##
 ## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
 as_fn_unset ()
 {
   { eval $1=; unset $1;}
 }
 as_unset=as_fn_unset
 
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
 as_fn_set_status ()
 {
   return $1
-} # as_fn_set_status
+} @%:@ as_fn_set_status
 
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
 as_fn_exit ()
 {
   set +e
   as_fn_set_status $1
   exit $1
-} # as_fn_exit
+} @%:@ as_fn_exit
 
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
 as_fn_mkdir_p ()
 {
 
@@ -366,21 +366,21 @@ $as_echo X"$as_dir" |
   } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
-} # as_fn_mkdir_p
+} @%:@ as_fn_mkdir_p
 
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
 as_fn_executable_p ()
 {
   test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
+} @%:@ as_fn_executable_p
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
 if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
   eval 'as_fn_append ()
   {
@@ -393,11 +393,11 @@ else
   }
 fi # as_fn_append
 
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
   eval 'as_fn_arith ()
   {
@@ -411,11 +411,11 @@ else
 fi # as_fn_arith
 
 
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
   as_status=$1; test $as_status -eq 0 && as_status=1
@@ -425,7 +425,7 @@ as_fn_error ()
   fi
   $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
-} # as_fn_error
+} @%:@ as_fn_error
 
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
@@ -509,7 +509,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
 }
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
+case `echo -n x` in @%:@(((((
 -n*)
   case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
@@ -581,7 +581,7 @@ ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 ac_default_prefix=/usr/local
 ac_clean_files=
 ac_config_libobj_dir=.
-LIBOBJS=
+LIB@&t at OBJS=
 cross_compiling=no
 subdirs=
 MFLAGS=
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='netCDF-Fortran'
 PACKAGE_TARNAME='netcdf-fortran'
-PACKAGE_VERSION='4.4.3'
-PACKAGE_STRING='netCDF-Fortran 4.4.3'
+PACKAGE_VERSION='4.4.4'
+PACKAGE_STRING='netCDF-Fortran 4.4.4'
 PACKAGE_BUGREPORT='support-netcdf at unidata.ucar.edu'
 PACKAGE_URL=''
 
@@ -635,7 +635,7 @@ ac_includes_default="\
 ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
-LIBOBJS
+LIB@&t at OBJS
 HAS_NC4
 HAS_NC2
 HAS_DAP
@@ -1388,7 +1388,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures netCDF-Fortran 4.4.3 to adapt to many kinds of systems.
+\`configure' configures netCDF-Fortran 4.4.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1410,9 +1410,9 @@ Configuration:
 
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
+                          @<:@@S|@ac_default_prefix@:>@
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
+                          @<:@PREFIX@:>@
 
 By default, \`make install' will install all the files in
 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
@@ -1436,7 +1436,7 @@ Fine tuning of the installation directories:
   --infodir=DIR           info documentation [DATAROOTDIR/info]
   --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
   --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/netcdf-fortran]
+  --docdir=DIR            documentation root @<:@DATAROOTDIR/doc/netcdf-fortran@:>@
   --htmldir=DIR           html documentation [DOCDIR]
   --dvidir=DIR            dvi documentation [DOCDIR]
   --pdfdir=DIR            pdf documentation [DOCDIR]
@@ -1459,7 +1459,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of netCDF-Fortran 4.4.3:";;
+     short | recursive ) echo "Configuration of netCDF-Fortran 4.4.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1469,7 +1469,7 @@ Optional Features:
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --enable-silent-rules   less verbose build output (undo: "make V=1")
   --disable-silent-rules  verbose build output (undo: "make V=0")
-  --enable-maintainer-mode
+  --enable-maintainer-mode 
                           enable make rules and dependencies not useful (and
                           sometimes confusing) to the casual installer
   --enable-valgrind-tests build with valgrind-tests (valgrind is required,
@@ -1485,29 +1485,29 @@ Optional Features:
   --enable-internal-docs  Include documentation of library internals. This is
                           of interest only to those developing the netCDF
                           library.
-  --enable-dependency-tracking
+  --enable-dependency-tracking 
                           do not reject slow dependency extractors
-  --disable-dependency-tracking
+  --disable-dependency-tracking 
                           speeds up one-time build
-  --disable-f03-compiler-check
+  --disable-f03-compiler-check 
                           disable check of ISO_C_BINDING support in Fortran
                           compiler
   --disable-f03           suppress netCDF Fortran 2003 native code
-  --disable-fortran-type-check
+  --disable-fortran-type-check 
                           cause the Fortran type sizes checks to be skipped
-  --enable-large-file-tests
+  --enable-large-file-tests 
                           Run tests which create very large data files (~13 GB
                           disk space required, but it will be recovered when
                           tests are complete). See option --with-temp-large to
                           specify temporary directory
   --enable-benchmarks     Run benchmarks. This is an experimental feature.
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --enable-static[=PKGS]  build static libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
+  --enable-shared@<:@=PKGS@:>@  build shared libraries @<:@default=yes@:>@
+  --enable-static@<:@=PKGS@:>@  build static libraries @<:@default=yes@:>@
+  --enable-fast-install@<:@=PKGS@:>@ 
+                          optimize for fast installation @<:@default=yes@:>@
   --disable-libtool-lock  avoid locking (might break parallel builds)
   --disable-largefile     omit support for large files
-  --enable-extra-example-tests
+  --enable-extra-example-tests 
                           Run extra example tests; requires GNU sed. Ignored
                           if netCDF-4 is not enabled.
   --enable-dll            build a win32 DLL (only works on mingw)
@@ -1515,13 +1515,13 @@ Optional Features:
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-temp-large=<directory>
+  --with-temp-large=<directory> 
                           specify directory where large files (i.e. >2 GB)
                           will be written, if large files tests are run with
                           --enable-large-file-tests
-  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-pic@<:@=PKGS@:>@       try to use only PIC/non-PIC objects @<:@default=use
+                          both@:>@
+  --with-gnu-ld           assume the C compiler uses GNU ld @<:@default=no@:>@
   --with-sysroot=DIR Search for dependent libraries within DIR
                         (or the compiler's sysroot if not specified).
 
@@ -1605,7 +1605,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-netCDF-Fortran configure 4.4.3
+netCDF-Fortran configure 4.4.4
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1619,9 +1619,9 @@ fi
 ## Autoconf initialization. ##
 ## ------------------------ ##
 
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_compile LINENO
+@%:@ --------------------------
+@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_c_try_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1655,11 +1655,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_compile
+} @%:@ ac_fn_c_try_compile
 
-# ac_fn_fc_try_compile LINENO
-# ---------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_fc_try_compile LINENO
+@%:@ ---------------------------
+@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_fc_try_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1693,11 +1693,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_fc_try_compile
+} @%:@ ac_fn_fc_try_compile
 
-# ac_fn_f77_try_compile LINENO
-# ----------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_f77_try_compile LINENO
+@%:@ ----------------------------
+@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_f77_try_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1731,11 +1731,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_f77_try_compile
+} @%:@ ac_fn_f77_try_compile
 
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_link LINENO
+@%:@ -----------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_c_try_link ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1777,12 +1777,12 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_link
+} @%:@ ac_fn_c_try_link
 
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
+@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists and can be compiled using the include files in
+@%:@ INCLUDES, setting the cache variable VAR accordingly.
 ac_fn_c_check_header_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1794,7 +1794,7 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   eval "$3=yes"
@@ -1808,11 +1808,11 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_header_compile
+} @%:@ ac_fn_c_check_header_compile
 
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_cpp LINENO
+@%:@ ----------------------
+@%:@ Try to preprocess conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_c_try_cpp ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1845,12 +1845,12 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_cpp
+} @%:@ ac_fn_c_try_cpp
 
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
+@%:@ ac_fn_c_try_run LINENO
+@%:@ ----------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded. Assumes
+@%:@ that executables *can* be run.
 ac_fn_c_try_run ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1887,11 +1887,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_run
+} @%:@ ac_fn_c_try_run
 
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
+@%:@ ac_fn_c_check_func LINENO FUNC VAR
+@%:@ ----------------------------------
+@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly
 ac_fn_c_check_func ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1954,11 +1954,11 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_func
+} @%:@ ac_fn_c_check_func
 
-# ac_fn_f77_try_link LINENO
-# -------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_f77_try_link LINENO
+@%:@ -------------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_f77_try_link ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2000,11 +2000,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_f77_try_link
+} @%:@ ac_fn_f77_try_link
 
-# ac_fn_fc_try_link LINENO
-# ------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_fc_try_link LINENO
+@%:@ ------------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_fc_try_link ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2046,13 +2046,13 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_fc_try_link
+} @%:@ ac_fn_fc_try_link
 
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
+@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using
+@%:@ the include files in INCLUDES and setting the cache variable VAR
+@%:@ accordingly.
 ac_fn_c_check_header_mongrel ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2072,7 +2072,7 @@ $as_echo_n "checking $2 usability... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   ac_header_compiler=yes
@@ -2088,7 +2088,7 @@ $as_echo "$ac_header_compiler" >&6; }
 $as_echo_n "checking $2 presence... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   ac_header_preproc=yes
@@ -2137,12 +2137,12 @@ $as_echo "$ac_res" >&6; }
 fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_header_mongrel
+} @%:@ ac_fn_c_check_header_mongrel
 
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
+@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+@%:@ -------------------------------------------
+@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache
+@%:@ variable VAR accordingly.
 ac_fn_c_check_type ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2178,7 +2178,7 @@ if (sizeof (($2)))
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-
+  
 else
   eval "$3=yes"
 fi
@@ -2191,13 +2191,13 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_type
+} @%:@ ac_fn_c_check_type
 
-# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
-# --------------------------------------------
-# Tries to find the compile-time value of EXPR in a program that includes
-# INCLUDES, setting VAR accordingly. Returns whether the value could be
-# computed
+@%:@ ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+@%:@ --------------------------------------------
+@%:@ Tries to find the compile-time value of EXPR in a program that includes
+@%:@ INCLUDES, setting VAR accordingly. Returns whether the value could be
+@%:@ computed
 ac_fn_c_compute_int ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2209,9 +2209,9 @@ $4
 int
 main ()
 {
-static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(($2) >= 0)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -2226,9 +2226,9 @@ $4
 int
 main ()
 {
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(($2) <= $ac_mid)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -2253,9 +2253,9 @@ $4
 int
 main ()
 {
-static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(($2) < 0)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -2270,9 +2270,9 @@ $4
 int
 main ()
 {
-static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(($2) >= $ac_mid)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -2305,9 +2305,9 @@ $4
 int
 main ()
 {
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(($2) <= $ac_mid)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -2320,7 +2320,7 @@ else
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 done
-case $ac_lo in #((
+case $ac_lo in @%:@((
 ?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
 '') ac_retval=1 ;;
 esac
@@ -2330,8 +2330,8 @@ esac
 $4
 static long int longval () { return $2; }
 static unsigned long int ulongval () { return $2; }
-#include <stdio.h>
-#include <stdlib.h>
+@%:@include <stdio.h>
+@%:@include <stdlib.h>
 int
 main ()
 {
@@ -2374,12 +2374,12 @@ rm -f conftest.val
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_compute_int
+} @%:@ ac_fn_c_compute_int
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by netCDF-Fortran $as_me 4.4.3, which was
+It was created by netCDF-Fortran $as_me 4.4.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2585,27 +2585,27 @@ $as_echo "/* confdefs.h */" > confdefs.h
 # Predefined preprocessor variables.
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
+@%:@define PACKAGE_NAME "$PACKAGE_NAME"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
+@%:@define PACKAGE_STRING "$PACKAGE_STRING"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
+@%:@define PACKAGE_URL "$PACKAGE_URL"
 _ACEOF
 
 
@@ -2615,7 +2615,7 @@ ac_site_file1=NONE
 ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
   # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
+  case $CONFIG_SITE in @%:@((
     -*)  ac_site_file1=./$CONFIG_SITE;;
     */*) ac_site_file1=$CONFIG_SITE;;
     *)   ac_site_file1=./$CONFIG_SITE;;
@@ -2730,11 +2730,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # Create the VERSION file, which contains the package version from
 # AC_INIT.
-echo -n 4.4.3>VERSION
+echo -n 4.4.4>VERSION
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF-Fortran 4.4.3" >&5
-$as_echo "$as_me: netCDF-Fortran 4.4.3" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF-Fortran 4.4.4" >&5
+$as_echo "$as_me: netCDF-Fortran 4.4.4" >&6;}
 
 # Keep libtool macros in an m4 directory.
 
@@ -2911,7 +2911,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
+case $as_dir/ in @%:@((
   ./ | .// | /[cC]/* | \
   /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
   ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
@@ -3308,12 +3308,12 @@ else
 fi
 rmdir .tst 2>/dev/null
 
-# Check whether --enable-silent-rules was given.
+@%:@ Check whether --enable-silent-rules was given.
 if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
+  enableval=$enable_silent_rules; 
 fi
 
-case $enable_silent_rules in # (((
+case $enable_silent_rules in @%:@ (((
   yes) AM_DEFAULT_VERBOSITY=0;;
    no) AM_DEFAULT_VERBOSITY=1;;
     *) AM_DEFAULT_VERBOSITY=1;;
@@ -3369,16 +3369,16 @@ fi
 
 # Define the identity of the package.
  PACKAGE='netcdf-fortran'
- VERSION='4.4.3'
+ VERSION='4.4.4'
 
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
+@%:@define PACKAGE "$PACKAGE"
 _ACEOF
 
-
+ 
 cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
+@%:@define VERSION "$VERSION"
 _ACEOF
 
 # Some tools Automake needs.
@@ -3464,7 +3464,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
-    # Check whether --enable-maintainer-mode was given.
+    @%:@ Check whether --enable-maintainer-mode was given.
 if test "${enable_maintainer_mode+set}" = set; then :
   enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
 else
@@ -3482,7 +3482,7 @@ else
 fi
 
   MAINT=$MAINTAINER_MODE_TRUE
-
+  
 
 
 # Check for the existence of this file before proceeding.
@@ -3494,9 +3494,9 @@ $as_echo "$as_me: checking user options" >&6;}
 # Does the user want to run extra tests with valgrind?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether extra valgrind tests should be run" >&5
 $as_echo_n "checking whether extra valgrind tests should be run... " >&6; }
-# Check whether --enable-valgrind-tests was given.
+@%:@ Check whether --enable-valgrind-tests was given.
 if test "${enable_valgrind_tests+set}" = set; then :
-  enableval=$enable_valgrind_tests;
+  enableval=$enable_valgrind_tests; 
 fi
 
 test "x$enable_valgrind_tests" = xyes || enable_valgrind_tests=no
@@ -3506,9 +3506,9 @@ $as_echo "$enable_valgrind_tests" >&6; }
 # Does the user want to run extra parallel tests when parallel netCDF-4 is built?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether parallel IO tests should be run" >&5
 $as_echo_n "checking whether parallel IO tests should be run... " >&6; }
-# Check whether --enable-parallel-tests was given.
+@%:@ Check whether --enable-parallel-tests was given.
 if test "${enable_parallel_tests+set}" = set; then :
-  enableval=$enable_parallel_tests;
+  enableval=$enable_parallel_tests; 
 fi
 
 test "x$enable_parallel_tests" = xyes || enable_parallel_tests=no
@@ -3518,17 +3518,17 @@ $as_echo "$enable_parallel_tests" >&6; }
 # Does the user want to do some extra tests?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether netCDF extra tests should be run (developers only)" >&5
 $as_echo_n "checking whether netCDF extra tests should be run (developers only)... " >&6; }
-# Check whether --enable-extra-tests was given.
+@%:@ Check whether --enable-extra-tests was given.
 if test "${enable_extra_tests+set}" = set; then :
-  enableval=$enable_extra_tests;
+  enableval=$enable_extra_tests; 
 fi
 
 test "x$enable_extra_tests" = xyes || enable_extra_tests=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_extra_tests" >&5
 $as_echo "$enable_extra_tests" >&6; }
 if test "x$enable_extra_tests" = xyes; then
-
-$as_echo "#define EXTRA_TESTS 1" >>confdefs.h
+   
+$as_echo "@%:@define EXTRA_TESTS 1" >>confdefs.h
 
 fi
  if test x$enable_extra_tests = xyes; then
@@ -3543,9 +3543,9 @@ fi
 #####
 # Determine if we want to enable doxygen-generated documentation.
 #####
-# Check whether --enable-doxygen was given.
+@%:@ Check whether --enable-doxygen was given.
 if test "${enable_doxygen+set}" = set; then :
-  enableval=$enable_doxygen;
+  enableval=$enable_doxygen; 
 fi
 
     test "x$enable_doxygen" = xyes || enable_doxygen=no
@@ -3559,17 +3559,17 @@ fi
 
 
 # Does the user want to generate dot-based documentation?
-# Check whether --enable-dot was given.
+@%:@ Check whether --enable-dot was given.
 if test "${enable_dot+set}" = set; then :
-  enableval=$enable_dot;
+  enableval=$enable_dot; 
 fi
 
 	test "x$enable_dot" = xyes || enable_dot=no
 
 # Does the user want to generate internal documentation?
-# Check whether --enable-internal-docs was given.
+@%:@ Check whether --enable-internal-docs was given.
 if test "${enable_internal_docs+set}" = set; then :
-  enableval=$enable_internal_docs;
+  enableval=$enable_internal_docs; 
 fi
 
 test "x$enable_internal_docs" = xyes || enable_internal_docs=no
@@ -3680,7 +3680,7 @@ fi
 # If we have doxygen, and it's enabled, then process the file.
 if test "x$enable_doxygen" != xno; then
    if test -n "$DOXYGEN"; then
-
+        
         ac_config_files="$ac_config_files docs/Doxyfile"
 
    fi
@@ -3872,7 +3872,7 @@ if test $ac_prog_rejected = yes; then
   # We found a bogon in the path, so make sure we never use it.
   set dummy $ac_cv_prog_CC
   shift
-  if test $# != 0; then
+  if test $@%:@ != 0; then
     # We chose a different compiler from the bogus one.
     # However, it has the same basename, so the bogon will be chosen
     # first if we set CC to just the basename; use the full file name.
@@ -4169,7 +4169,7 @@ EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <stdio.h>
+@%:@include <stdio.h>
 int
 main ()
 {
@@ -4350,7 +4350,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-
+  
 else
   ac_c_werror_flag=$ac_save_c_werror_flag
 	 CFLAGS="-g"
@@ -4479,7 +4479,7 @@ $as_echo "unsupported" >&6; } ;;
 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
 if test "x$ac_cv_prog_cc_c89" != xno; then :
-
+  
 fi
 
 ac_ext=c
@@ -4590,9 +4590,9 @@ fi
 $as_echo "$_am_result" >&6; }
 rm -f confinc confmf
 
-# Check whether --enable-dependency-tracking was given.
+@%:@ Check whether --enable-dependency-tracking was given.
 if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
+  enableval=$enable_dependency_tracking; 
 fi
 
 if test "x$enable_dependency_tracking" != xno; then
@@ -4727,7 +4727,7 @@ fi
 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
- if
+ if 
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
   am__fastdepCC_TRUE=
@@ -4816,8 +4816,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
 $as_echo "$ac_cv_c_const" >&6; }
 if test $ac_cv_c_const = no; then
-
-$as_echo "#define const /**/" >>confdefs.h
+  
+$as_echo "@%:@define const /**/" >>confdefs.h
 
 fi
 
@@ -5277,9 +5277,9 @@ nc_build_f03=yes
 # Added to get around NAG evaluation compiler error turning off F03
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Fortran compiler is checked for ISO_C_BINDING support" >&5
 $as_echo_n "checking whether Fortran compiler is checked for ISO_C_BINDING support... " >&6; }
-# Check whether --enable-f03-compiler-check was given.
+@%:@ Check whether --enable-f03-compiler-check was given.
 if test "${enable_f03_compiler_check+set}" = set; then :
-  enableval=$enable_f03_compiler_check;
+  enableval=$enable_f03_compiler_check; 
 fi
 
 test "x$enable_f03_compiler_check" = xno || enable_f03_compiler_check=yes
@@ -5345,8 +5345,8 @@ else
     ac_fcflags_srcext=$ac_cv_fc_srcext_f90
     FCFLAGS_f90=$ac_cv_fc_srcext_f90
   fi
-
-
+  
+  
 fi
 ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
@@ -5383,10 +5383,10 @@ module conftest_module
    write(*,'(a)') 'gotcha!'
    end subroutine conftest_routine
    end module conftest_module
-
+  
 _ACEOF
 if ac_fn_fc_try_compile "$LINENO"; then :
-
+  
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 cd ..
@@ -5400,7 +5400,7 @@ program conftest_program
        use conftest_module
        call conftest_routine
        end program conftest_program
-
+      
 _ACEOF
 if ac_fn_fc_try_compile "$LINENO"; then :
   ax_cv_f90_modflag="$ax_flag"
@@ -5460,8 +5460,8 @@ EOF
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
      nc_f2008_is0_env_additions=yes
-
-$as_echo "#define HAVE_F2008 1" >>confdefs.h
+     
+$as_echo "@%:@define HAVE_F2008 1" >>confdefs.h
 
   else
      nc_f2008_is0_env_additions=no
@@ -5483,8 +5483,8 @@ EOF
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
      nc_ts29113_support=yes
-
-$as_echo "#define HAVE_TS29113_SUPPORT 1" >>confdefs.h
+     
+$as_echo "@%:@define HAVE_TS29113_SUPPORT 1" >>confdefs.h
 
   else
      nc_ts29113_support=no
@@ -5510,9 +5510,9 @@ fi
 ## Do we want to use the fortran 90 wrappers instead of 2003 native code?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether F03 native code is desired" >&5
 $as_echo_n "checking whether F03 native code is desired... " >&6; }
-# Check whether --enable-f03 was given.
+@%:@ Check whether --enable-f03 was given.
 if test "${enable_f03+set}" = set; then :
-  enableval=$enable_f03;
+  enableval=$enable_f03; 
 fi
 
 test "x$enable_f03" = xno || enable_f03=yes
@@ -5539,9 +5539,9 @@ fi
 # Does the user want to check into fortran type information?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fortran type sizes should be checked" >&5
 $as_echo_n "checking whether fortran type sizes should be checked... " >&6; }
-# Check whether --enable-fortran-type-check was given.
+@%:@ Check whether --enable-fortran-type-check was given.
 if test "${enable_fortran_type_check+set}" = set; then :
-  enableval=$enable_fortran_type_check;
+  enableval=$enable_fortran_type_check; 
 fi
 
 test "x$enable_fortran_type_check" = xno || enable_fortran_type_check=yes
@@ -5551,9 +5551,9 @@ $as_echo "$enable_fortran_type_check" >&6; }
 # Does the user want to run tests for large files (> 2GiB)?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether large file (> 2GB) tests should be run" >&5
 $as_echo_n "checking whether large file (> 2GB) tests should be run... " >&6; }
-# Check whether --enable-large-file-tests was given.
+@%:@ Check whether --enable-large-file-tests was given.
 if test "${enable_large_file_tests+set}" = set; then :
-  enableval=$enable_large_file_tests;
+  enableval=$enable_large_file_tests; 
 fi
 
 test "x$enable_large_file_tests" = xyes || enable_large_file_tests=no
@@ -5568,17 +5568,17 @@ else
 fi
 
 if test "x$enable_large_file_tests" = xyes; then
-
-$as_echo "#define LARGE_FILE_TESTS 1" >>confdefs.h
+   
+$as_echo "@%:@define LARGE_FILE_TESTS 1" >>confdefs.h
 
 fi
 
 # Does the user want to run benchmarks?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether benchmarks should be run (experimental)" >&5
 $as_echo_n "checking whether benchmarks should be run (experimental)... " >&6; }
-# Check whether --enable-benchmarks was given.
+@%:@ Check whether --enable-benchmarks was given.
 if test "${enable_benchmarks+set}" = set; then :
-  enableval=$enable_benchmarks;
+  enableval=$enable_benchmarks; 
 fi
 
 test "x$enable_benchmarks" = xyes || enable_benchmarks=no
@@ -5599,7 +5599,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to put large temp files if large file tests are run" >&5
 $as_echo_n "checking where to put large temp files if large file tests are run... " >&6; }
 
-# Check whether --with-temp-large was given.
+@%:@ Check whether --with-temp-large was given.
 if test "${with_temp_large+set}" = set; then :
   withval=$with_temp_large; TEMP_LARGE=$with_temp_large
 fi
@@ -5610,7 +5610,7 @@ $as_echo "$TEMP_LARGE" >&6; }
 #AC_SUBST(TEMP_LARGE)
 
 cat >>confdefs.h <<_ACEOF
-#define TEMP_LARGE "$TEMP_LARGE"
+@%:@define TEMP_LARGE "$TEMP_LARGE"
 _ACEOF
 
 
@@ -5695,8 +5695,8 @@ else
     ac_fcflags_srcext=$ac_cv_fc_srcext_f90
     FCFLAGS_f90=$ac_cv_fc_srcext_f90
   fi
-
-
+  
+  
 fi
 ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
@@ -5709,7 +5709,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-
+     
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking fortran 90 modules inclusion flag" >&5
 $as_echo_n "checking fortran 90 modules inclusion flag... " >&6; }
 if ${ax_cv_f90_modflag+:} false; then :
@@ -5733,10 +5733,10 @@ module conftest_module
    write(*,'(a)') 'gotcha!'
    end subroutine conftest_routine
    end module conftest_module
-
+  
 _ACEOF
 if ac_fn_fc_try_compile "$LINENO"; then :
-
+  
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 cd ..
@@ -5750,7 +5750,7 @@ program conftest_program
        use conftest_module
        call conftest_routine
        end program conftest_program
-
+      
 _ACEOF
 if ac_fn_fc_try_compile "$LINENO"; then :
   ax_cv_f90_modflag="$ax_flag"
@@ -5806,14 +5806,14 @@ esac
 macro_version='2.4.2'
 macro_revision='1.3337'
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 
@@ -5864,7 +5864,7 @@ fi
 # Invoke $ECHO with all args, space-separated.
 func_echo_all ()
 {
-    $ECHO ""
+    $ECHO "" 
 }
 
 case "$ECHO" in
@@ -5879,14 +5879,14 @@ esac
 
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
@@ -5961,14 +5961,14 @@ $as_echo "$ac_cv_path_SED" >&6; }
 test -z "$SED" && SED=sed
 Xsed="$SED -e 1s/^X//"
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
@@ -6032,7 +6032,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
 $as_echo "$ac_cv_path_GREP" >&6; }
  GREP="$ac_cv_path_GREP"
-
+ 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
 $as_echo_n "checking for egrep... " >&6; }
@@ -6099,7 +6099,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
 $as_echo "$ac_cv_path_EGREP" >&6; }
  EGREP="$ac_cv_path_EGREP"
-
+ 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
 $as_echo_n "checking for fgrep... " >&6; }
@@ -6166,29 +6166,29 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
 $as_echo "$ac_cv_path_FGREP" >&6; }
  FGREP="$ac_cv_path_FGREP"
-
+ 
 
 test -z "$GREP" && GREP=grep
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
 
 
 
-
-
-
-
-
-
-
-
-
-# Check whether --with-gnu-ld was given.
+@%:@ Check whether --with-gnu-ld was given.
 if test "${with_gnu_ld+set}" = set; then :
   withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
 else
@@ -6294,9 +6294,9 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
 
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
@@ -6466,7 +6466,7 @@ fi
       ;;
     esac
   fi
-
+  
   if test "$DUMPBIN" != ":"; then
     NM="$DUMPBIN"
   fi
@@ -6474,9 +6474,9 @@ fi
 test -z "$NM" && NM=nm
 
 
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
 $as_echo_n "checking the name lister ($NM) interface... " >&6; }
@@ -6652,9 +6652,9 @@ $as_echo "none" >&6; }
 fi
 max_cmd_len=$lt_cv_sys_max_cmd_len
 
-
-
-
+    
+    
+    
 
 
 : ${CP="cp -f"}
@@ -6691,9 +6691,9 @@ else
   lt_unset=false
 fi
 
-
-
-
+    
+    
+    
 
 # test EBCDIC or ASCII
 case `echo X|tr X '\101'` in
@@ -6708,13 +6708,13 @@ case `echo X|tr X '\101'` in
   ;;
 esac
 
+    
+    
+    
 
-
-
-
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
 $as_echo_n "checking how to convert $build file names to $host format... " >&6; }
@@ -6759,9 +6759,9 @@ to_host_file_cmd=$lt_cv_to_host_file_cmd
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
 $as_echo "$lt_cv_to_host_file_cmd" >&6; }
 
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
@@ -6786,9 +6786,9 @@ to_tool_file_cmd=$lt_cv_to_tool_file_cmd
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
 $as_echo "$lt_cv_to_tool_file_cmd" >&6; }
 
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
 $as_echo_n "checking for $LD option to reload object files... " >&6; }
@@ -6820,13 +6820,13 @@ case $host_os in
     ;;
 esac
 
+    
+    
+    
 
-
-
-
-
-
-
+    
+    
+    
 
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
@@ -6922,9 +6922,9 @@ fi
 
 test -z "$OBJDUMP" && OBJDUMP=objdump
 
-
-
-
+    
+    
+    
 
 
 
@@ -7150,24 +7150,24 @@ deplibs_check_method=$lt_cv_deplibs_check_method
 test -z "$deplibs_check_method" && deplibs_check_method=unknown
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 if test -n "$ac_tool_prefix"; then
@@ -7264,9 +7264,9 @@ fi
 
 test -z "$DLLTOOL" && DLLTOOL=dlltool
 
-
-
-
+    
+    
+    
 
 
 
@@ -7306,9 +7306,9 @@ sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
 test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
 
 
-
-
-
+    
+    
+    
 
 
 if test -n "$ac_tool_prefix"; then
@@ -7414,14 +7414,14 @@ fi
 : ${AR=ar}
 : ${AR_FLAGS=cru}
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
@@ -7462,10 +7462,10 @@ if ac_fn_c_try_compile "$LINENO"; then :
         fi
       fi
       rm -f conftest.* libconftest.a
-
+     
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
+  
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
 $as_echo "$lt_cv_ar_at_file" >&6; }
@@ -7476,9 +7476,9 @@ else
   archiver_list_spec=$lt_cv_ar_at_file
 fi
 
-
-
-
+    
+    
+    
 
 
 
@@ -7576,9 +7576,9 @@ fi
 
 test -z "$STRIP" && STRIP=:
 
-
-
-
+    
+    
+    
 
 
 if test -n "$ac_tool_prefix"; then
@@ -7675,9 +7675,9 @@ fi
 
 test -z "$RANLIB" && RANLIB=:
 
-
-
-
+    
+    
+    
 
 
 # Determine commands to create old-style static archives.
@@ -7704,43 +7704,43 @@ case $host_os in
     lock_old_archive_extraction=no ;;
 esac
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
 
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 # If no C compiler was specified, use CC.
 LTCC=${LTCC-"$CC"}
@@ -7758,7 +7758,7 @@ $as_echo_n "checking command to parse $NM output from $compiler object... " >&6;
 if ${lt_cv_sys_global_symbol_pipe+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
+  
 # These are sane defaults that work on at least a few old systems.
 # [They come from Ultrix.  What could be older than Ultrix?!! ;)]
 
@@ -7900,12 +7900,12 @@ _LT_EOF
 #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
 /* DATA imports from DLLs on WIN32 con't be const, because runtime
    relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
+# define LT@&t at _DLSYM_CONST
 #elif defined(__osf__)
 /* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
+# define LT@&t at _DLSYM_CONST
 #else
-# define LT_DLSYM_CONST const
+# define LT@&t at _DLSYM_CONST const
 #endif
 
 #ifdef __cplusplus
@@ -7919,7 +7919,7 @@ _LT_EOF
 	  cat <<_LT_EOF >> conftest.$ac_ext
 
 /* The mapping between symbol names and symbols.  */
-LT_DLSYM_CONST struct {
+LT@&t at _DLSYM_CONST struct {
   const char *name;
   void       *address;
 }
@@ -8002,37 +8002,37 @@ elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
 fi
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
 $as_echo_n "checking for sysroot... " >&6; }
 
-# Check whether --with-sysroot was given.
+@%:@ Check whether --with-sysroot was given.
 if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot;
+  withval=$with_sysroot; 
 else
   with_sysroot=no
 fi
@@ -8060,13 +8060,13 @@ esac
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
 $as_echo "${lt_sysroot:-no}" >&6; }
 
+    
+    
+    
 
-
-
-
-# Check whether --enable-libtool-lock was given.
+@%:@ Check whether --enable-libtool-lock was given.
 if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock;
+  enableval=$enable_libtool_lock; 
 fi
 
 test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
@@ -8396,9 +8396,9 @@ if test "x$lt_cv_path_mainfest_tool" != xyes; then
   MANIFEST_TOOL=:
 fi
 
-
-
-
+    
+    
+    
 
 
   case $host_os in
@@ -8863,30 +8863,30 @@ else
   OTOOL64="$ac_cv_prog_OTOOL64"
 fi
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
+    
 
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
@@ -8953,7 +8953,7 @@ fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 	LDFLAGS="$save_LDFLAGS"
-
+    
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
@@ -8988,7 +8988,7 @@ _LT_EOF
       fi
         rm -f conftest.err libconftest.a conftest conftest.c
         rm -rf conftest.dSYM
-
+    
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
 $as_echo "$lt_cv_ld_force_load" >&6; }
@@ -9056,15 +9056,15 @@ do
   # not just through cpp. "Syntax error" is here to catch this case.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
 		     Syntax error
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
-
+  
 else
   # Broken: fails on valid input.
 continue
@@ -9075,7 +9075,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -9096,7 +9096,7 @@ fi
 
     done
     ac_cv_prog_CPP=$CPP
-
+  
 fi
   CPP=$ac_cv_prog_CPP
 else
@@ -9115,15 +9115,15 @@ do
   # not just through cpp. "Syntax error" is here to catch this case.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
 		     Syntax error
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
-
+  
 else
   # Broken: fails on valid input.
 continue
@@ -9134,7 +9134,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -9150,7 +9150,7 @@ done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
-
+  
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -9201,7 +9201,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "memchr" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -9218,7 +9218,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "free" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -9259,7 +9259,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -9272,8 +9272,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
 $as_echo "$ac_cv_header_stdc" >&6; }
 if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+  
+$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
@@ -9286,9 +9286,9 @@ ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_include
 "
 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -9300,9 +9300,9 @@ do :
 "
 if test "x$ac_cv_header_dlfcn_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
+@%:@define HAVE_DLFCN_H 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -9327,12 +9327,12 @@ func_stripname_cnf ()
 
 
         enable_dlopen=no
-
+  
 
   enable_win32_dll=no
+  
 
-
-            # Check whether --enable-shared was given.
+            @%:@ Check whether --enable-shared was given.
 if test "${enable_shared+set}" = set; then :
   enableval=$enable_shared; p=${PACKAGE-default}
     case $enableval in
@@ -9356,14 +9356,14 @@ else
 fi
 
 
+    
+    
+    
+    
 
 
 
-
-
-
-
-  # Check whether --enable-static was given.
+  @%:@ Check whether --enable-static was given.
 if test "${enable_static+set}" = set; then :
   enableval=$enable_static; p=${PACKAGE-default}
     case $enableval in
@@ -9387,15 +9387,15 @@ else
 fi
 
 
+    
+    
+    
+    
 
 
 
-
-
-
-
-
-# Check whether --with-pic was given.
+  
+@%:@ Check whether --with-pic was given.
 if test "${with_pic+set}" = set; then :
   withval=$with_pic; lt_p=${PACKAGE-default}
     case $withval in
@@ -9421,12 +9421,12 @@ fi
 test -z "$pic_mode" && pic_mode=default
 
 
+    
+    
+    
 
 
-
-
-
-  # Check whether --enable-fast-install was given.
+  @%:@ Check whether --enable-fast-install was given.
 if test "${enable_fast_install+set}" = set; then :
   enableval=$enable_fast_install; p=${PACKAGE-default}
     case $enableval in
@@ -9451,12 +9451,12 @@ fi
 
 
 
+    
+    
+    
 
 
-
-
-
-
+  
 
 
 # This can be used to rebuild libtool when needed
@@ -9467,46 +9467,46 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 test -z "$LN_S" && LN_S="ln -s"
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 if test -n "${ZSH_VERSION+set}" ; then
@@ -9532,12 +9532,12 @@ fi
 $as_echo "$lt_cv_objdir" >&6; }
 objdir=$lt_cv_objdir
 
-
-
-
+    
+    
+    
 
 cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
+@%:@define LT_OBJDIR "$lt_cv_objdir/"
 _ACEOF
 
 
@@ -9651,9 +9651,9 @@ else
 $as_echo "no" >&6; }
 fi
 
-
-
-
+    
+    
+    
 
 if test -z "$lt_cv_path_MAGIC_CMD"; then
   if test -n "$ac_tool_prefix"; then
@@ -9788,7 +9788,7 @@ $RM -r conftest*
 ## the running order or otherwise move them around unless you know exactly
 ## what you are doing...
 if test -n "$compiler"; then
-
+  
 lt_prog_compiler_no_builtin_flag=
 
 if test "$GCC" = yes; then
@@ -9845,9 +9845,9 @@ fi
 
 fi
 
-
-
-
+    
+    
+    
 
 
   lt_prog_compiler_wl=
@@ -10157,7 +10157,7 @@ case $host_os in
     lt_prog_compiler_pic=
     ;;
   *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC"
     ;;
 esac
 
@@ -10184,7 +10184,7 @@ else
   lt_cv_prog_compiler_pic_works=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -10226,15 +10226,15 @@ fi
 
 fi
 
+    
+    
+    
 
 
 
-
-
-
-
-
-
+    
+    
+    
 
 #
 # Check to make sure the static flag actually works.
@@ -10278,9 +10278,9 @@ else
 fi
 
 
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
@@ -10333,9 +10333,9 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
 $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
@@ -10413,9 +10413,9 @@ else
   need_locks=no
 fi
 
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
@@ -10922,7 +10922,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -10941,7 +10941,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath_"; then
     lt_cv_aix_libpath_="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath_
@@ -10975,7 +10975,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -10994,7 +10994,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath_"; then
     lt_cv_aix_libpath_="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath_
@@ -11104,15 +11104,15 @@ fi
       ;;
 
     darwin* | rhapsody*)
-
-
+      
+  
   archive_cmds_need_lc=no
   hardcode_direct=no
   hardcode_automatic=yes
   hardcode_shlibpath_var=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
+    
   else
     whole_archive_flag_spec=''
   fi
@@ -11128,7 +11128,7 @@ fi
     module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
     archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
     module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
+    
   else
   ld_shlibs=no
   fi
@@ -11224,7 +11224,7 @@ fi
 	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-
+	
 	  # Older versions of the 11.00 compiler do not understand -b yet
 	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
 	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
@@ -11582,17 +11582,17 @@ test "$ld_shlibs" = no && can_build_shared=no
 with_gnu_ld=$with_gnu_ld
 
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 #
@@ -11638,181 +11638,181 @@ else
 	  libname=conftest
 	  lt_save_allow_undefined_flag=$allow_undefined_flag
 	  allow_undefined_flag=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc=no
-	  else
-	    lt_cv_archive_cmds_need_lc=yes
-	  fi
-	  allow_undefined_flag=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc=no
+	  else
+	    lt_cv_archive_cmds_need_lc=yes
+	  fi
+	  allow_undefined_flag=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+	
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
@@ -12324,7 +12324,7 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
-
+    
 fi
 
   shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -12566,94 +12566,94 @@ if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
 fi
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
@@ -12694,9 +12694,9 @@ elif test "$shlibpath_overrides_runpath" = yes ||
   enable_fast_install=needless
 fi
 
-
-
-
+    
+    
+    
 
 
   if test "x$enable_dlopen" != xyes; then
@@ -12765,11 +12765,11 @@ $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
 if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
 else
-
+  
     lt_cv_dlopen="dyld"
     lt_cv_dlopen_libs=
     lt_cv_dlopen_self=yes
-
+    
 fi
 
     ;;
@@ -12940,19 +12940,19 @@ if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
   lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
 fi
 
-
+	      
 fi
 
-
+	    
 fi
 
-
+	  
 fi
 
-
+	
 fi
 
-
+      
 fi
 
     ;;
@@ -13074,7 +13074,7 @@ _LT_EOF
 fi
 rm -fr conftest*
 
-
+    
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
 $as_echo "$lt_cv_dlopen_self" >&6; }
@@ -13180,7 +13180,7 @@ _LT_EOF
 fi
 rm -fr conftest*
 
-
+      
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
 $as_echo "$lt_cv_dlopen_self_static" >&6; }
@@ -13203,22 +13203,22 @@ $as_echo "$lt_cv_dlopen_self_static" >&6; }
   esac
 fi
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
+  
 striplib=
 old_striplib=
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
@@ -13249,14 +13249,14 @@ $as_echo "no" >&6; }
   esac
 fi
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 
@@ -13297,7 +13297,7 @@ $as_echo_n "checking whether to build static libraries... " >&6; }
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
 $as_echo "$enable_static" >&6; }
 
-
+  
 
 
 fi
@@ -13368,7 +13368,7 @@ if test "$_lt_disable_F77" != yes; then
 "
 
   # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
+  
 
 
 
@@ -13767,7 +13767,7 @@ case $host_os in
     lt_prog_compiler_pic_F77=
     ;;
   *)
-    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77@&t@"
     ;;
 esac
 
@@ -13794,7 +13794,7 @@ else
   lt_cv_prog_compiler_pic_works_F77=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_F77"
+   lt_compiler_flag="$lt_prog_compiler_pic_F77@&t@"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -14511,7 +14511,7 @@ else
       end
 _ACEOF
 if ac_fn_f77_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -14530,7 +14530,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__F77"; then
     lt_cv_aix_libpath__F77="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__F77
@@ -14558,7 +14558,7 @@ else
       end
 _ACEOF
 if ac_fn_f77_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -14577,7 +14577,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__F77"; then
     lt_cv_aix_libpath__F77="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__F77
@@ -14687,8 +14687,8 @@ fi
       ;;
 
     darwin* | rhapsody*)
-
-
+      
+  
   archive_cmds_need_lc_F77=no
   hardcode_direct_F77=no
   hardcode_automatic_F77=yes
@@ -14711,7 +14711,7 @@ fi
     module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
     archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
     module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
+    
   else
   ld_shlibs_F77=no
   fi
@@ -15189,7 +15189,7 @@ else
 	  cat conftest.err 1>&5
 	fi
 	$RM conftest*
-
+	
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_F77" >&5
 $as_echo "$lt_cv_archive_cmds_need_lc_F77" >&6; }
@@ -15698,7 +15698,7 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
-
+    
 fi
 
   shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -16017,7 +16017,7 @@ fi
 
 
 
-
+    
 
 
   fi # test -n "$compiler"
@@ -16093,7 +16093,7 @@ if test "$_lt_disable_FC" != yes; then
 "
 
   # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
+  
 
 
 
@@ -16320,34 +16320,34 @@ if test -n "${compiler_lib_search_path_FC}"; then
  compiler_lib_search_dirs_FC=`echo " ${compiler_lib_search_path_FC}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
 fi
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
     lt_prog_compiler_wl_FC=
@@ -16657,7 +16657,7 @@ case $host_os in
     lt_prog_compiler_pic_FC=
     ;;
   *)
-    lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC"
+    lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC@&t@"
     ;;
 esac
 
@@ -16684,7 +16684,7 @@ else
   lt_cv_prog_compiler_pic_works_FC=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_FC"
+   lt_compiler_flag="$lt_prog_compiler_pic_FC@&t@"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -17401,7 +17401,7 @@ else
       end
 _ACEOF
 if ac_fn_fc_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -17420,7 +17420,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__FC"; then
     lt_cv_aix_libpath__FC="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__FC
@@ -17448,7 +17448,7 @@ else
       end
 _ACEOF
 if ac_fn_fc_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -17467,7 +17467,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__FC"; then
     lt_cv_aix_libpath__FC="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__FC
@@ -17577,8 +17577,8 @@ fi
       ;;
 
     darwin* | rhapsody*)
-
-
+      
+  
   archive_cmds_need_lc_FC=no
   hardcode_direct_FC=no
   hardcode_automatic_FC=yes
@@ -17601,7 +17601,7 @@ fi
     module_cmds_FC="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
     archive_expsym_cmds_FC="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
     module_expsym_cmds_FC="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
+    
   else
   ld_shlibs_FC=no
   fi
@@ -18079,7 +18079,7 @@ else
 	  cat conftest.err 1>&5
 	fi
 	$RM conftest*
-
+	
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_FC" >&5
 $as_echo "$lt_cv_archive_cmds_need_lc_FC" >&6; }
@@ -18588,7 +18588,7 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
-
+    
 fi
 
   shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -18907,7 +18907,7 @@ fi
 
 
 
-
+    
 
 
   fi # test -n "$compiler"
@@ -18926,8 +18926,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-
+       
+       
 
 
 
@@ -18971,31 +18971,31 @@ case "$CPPFLAGS" in
    *)
       case "$FC" in
          pgf95|pgf90|pgf77|ifort*|lf90|lf95)
-
-$as_echo "#define pgiFortran 1" >>confdefs.h
+            
+$as_echo "@%:@define pgiFortran 1" >>confdefs.h
 
             ;;
           *gfortran)
              if (gfortran --version | grep '(GCC 4.1.' || gfortran --version | grep '(GCC 4.0.'); then
-
-$as_echo "#define gFortran 1" >>confdefs.h
+                
+$as_echo "@%:@define gFortran 1" >>confdefs.h
 
              else
-
-$as_echo "#define pgiFortran 1" >>confdefs.h
+                
+$as_echo "@%:@define pgiFortran 1" >>confdefs.h
 
              fi
              ;;
           *g77)
-
-$as_echo "#define f2cFortran 1" >>confdefs.h
+             
+$as_echo "@%:@define f2cFortran 1" >>confdefs.h
 
              ;;
           *)
              # If it's a gnu compiler, guess f2c.
              if test "x$ac_cv_fc_compiler_gnu" = xyes; then
-
-$as_echo "#define f2cFortran 1" >>confdefs.h
+                
+$as_echo "@%:@define f2cFortran 1" >>confdefs.h
 
              fi
              ;;
@@ -19003,9 +19003,9 @@ $as_echo "#define f2cFortran 1" >>confdefs.h
 esac
 
 # Check to see if any macros must be set to enable large (>2GB) files.
-# Check whether --enable-largefile was given.
+@%:@ Check whether --enable-largefile was given.
 if test "${enable_largefile+set}" = set; then :
-  enableval=$enable_largefile;
+  enableval=$enable_largefile; 
 fi
 
 if test "$enable_largefile" != no; then
@@ -19023,12 +19023,12 @@ else
 	 # so use the C compiler's -n32 option if that helps.
 	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -19069,12 +19069,12 @@ else
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -19092,13 +19092,13 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#define _FILE_OFFSET_BITS 64
-#include <sys/types.h>
+@%:@define _FILE_OFFSET_BITS 64
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -19122,9 +19122,9 @@ fi
 $as_echo "$ac_cv_sys_file_offset_bits" >&6; }
 case $ac_cv_sys_file_offset_bits in #(
   no | unknown) ;;
-  *)
+  *) 
 cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
 _ACEOF
 ;;
 esac
@@ -19138,12 +19138,12 @@ else
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -19161,13 +19161,13 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#define _LARGE_FILES 1
-#include <sys/types.h>
+@%:@define _LARGE_FILES 1
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -19191,16 +19191,16 @@ fi
 $as_echo "$ac_cv_sys_large_files" >&6; }
 case $ac_cv_sys_large_files in #(
   no | unknown) ;;
-  *)
+  *) 
 cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
+@%:@define _LARGE_FILES $ac_cv_sys_large_files
 _ACEOF
 ;;
 esac
 rm -rf conftest*
   fi
 
-
+  
 fi
 
 
@@ -19217,7 +19217,7 @@ ac_cv_prog_f90_uppercase_mod=no
 
 # This will test the f77 compiler, as well as check some fortran types.
 if test "$enable_fortran_type_check" = yes; then
-
+   
     case "${NM-unset}" in
 	unset) for ac_prog in nm
 do
@@ -19313,16 +19313,16 @@ $as_echo_n "checking nm flags... " >&6; }
     esac
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMFLAGS" >&5
 $as_echo "$NMFLAGS" >&6; }
-
+    
 
 
 #    AC_REQUIRE([UD_PROG_FC])
     case "$FC" in
 	'') ;;
 	*)
-
-
-
+	    
+	    
+	    
 	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C-equivalent to Fortran routine \"SUB\"" >&5
 $as_echo_n "checking for C-equivalent to Fortran routine \"SUB\"... " >&6; }
 	    cat >conftest.f <<\EOF
@@ -19360,8 +19360,8 @@ $as_echo "$FCALLSCSUB" >&6; }
     '')
 	;;
     *)
-
-
+	
+	
     for ftype in byte integer*1 "integer(kind=1)" "integer(selected_int_kind(2))"; do
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran \"$ftype\"" >&5
 $as_echo_n "checking for Fortran \"$ftype\"... " >&6; }
@@ -19379,9 +19379,9 @@ EOF
 	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 	    NF_INT1_T=$ftype
-
+	    
 cat >>confdefs.h <<_ACEOF
-#define NF_INT1_T $ftype
+@%:@define NF_INT1_T $ftype
 _ACEOF
 
 	    break
@@ -19392,7 +19392,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+	
     for ftype in integer*2 "integer(kind=2)" "integer(selected_int_kind(4))"; do
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran \"$ftype\"" >&5
 $as_echo_n "checking for Fortran \"$ftype\"... " >&6; }
@@ -19410,9 +19410,9 @@ EOF
 	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 	    NF_INT2_T=$ftype
-
+	    
 cat >>confdefs.h <<_ACEOF
-#define NF_INT2_T $ftype
+@%:@define NF_INT2_T $ftype
 _ACEOF
 
 	    break
@@ -19426,7 +19426,7 @@ $as_echo "no" >&6; }
 
 	case "${NF_INT1_T}" in
 	    '') ;;
-	    *)
+	    *)  
     cat >conftestf.f <<EOF
            $NF_INT1_T values(4)
            data values /-1, -2, -3, -4/
@@ -19471,9 +19471,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT1_IS_C_$cname 1
+@%:@define NF_INT1_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19493,7 +19493,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+		
     cat >conftestf.f <<EOF
            $NF_INT1_T values(4)
            data values /-1, -2, -3, -4/
@@ -19538,9 +19538,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT1_IS_C_$cname 1
+@%:@define NF_INT1_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19560,7 +19560,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+		
     cat >conftestf.f <<EOF
            $NF_INT1_T values(4)
            data values /-1, -2, -3, -4/
@@ -19605,9 +19605,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT1_IS_C_$cname 1
+@%:@define NF_INT1_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19627,7 +19627,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+		
     cat >conftestf.f <<EOF
            $NF_INT1_T values(4)
            data values /-1, -2, -3, -4/
@@ -19672,9 +19672,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT1_IS_C_$cname 1
+@%:@define NF_INT1_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19698,7 +19698,7 @@ $as_echo "no" >&6; }
 	esac
 	case "${NF_INT2_T}" in
 	    '') ;;
-	    *)
+	    *)  
     cat >conftestf.f <<EOF
            $NF_INT2_T values(4)
            data values /-1, -2, -3, -4/
@@ -19743,9 +19743,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT2_IS_C_$cname 1
+@%:@define NF_INT2_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19765,7 +19765,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+		
     cat >conftestf.f <<EOF
            $NF_INT2_T values(4)
            data values /-1, -2, -3, -4/
@@ -19810,9 +19810,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT2_IS_C_$cname 1
+@%:@define NF_INT2_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19832,7 +19832,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+		
     cat >conftestf.f <<EOF
            $NF_INT2_T values(4)
            data values /-1, -2, -3, -4/
@@ -19877,9 +19877,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT2_IS_C_$cname 1
+@%:@define NF_INT2_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19901,7 +19901,7 @@ $as_echo "no" >&6; }
 
 		;;
 	esac
-
+	
     cat >conftestf.f <<EOF
            integer values(4)
            data values /-1, -2, -3, -4/
@@ -19946,9 +19946,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT_IS_C_$cname 1
+@%:@define NF_INT_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19968,7 +19968,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+	
     cat >conftestf.f <<EOF
            real values(4)
            data values /-1, -2, -3, -4/
@@ -20013,9 +20013,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_REAL_IS_C_$cname 1
+@%:@define NF_REAL_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -20035,7 +20035,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+	
     cat >conftestf.f <<EOF
            doubleprecision values(4)
            data values /-1, -2, -3, -4/
@@ -20080,9 +20080,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_DOUBLEPRECISION_IS_C_$cname 1
+@%:@define NF_DOUBLEPRECISION_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -20103,7 +20103,7 @@ $as_echo "no" >&6; }
     rm -f conftest*
 
 
-
+	
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran-equivalent to netCDF \"byte\"" >&5
 $as_echo_n "checking for Fortran-equivalent to netCDF \"byte\"... " >&6; }
     for type in byte integer*1 "integer(kind=1)" "integer(selected_int_kind(2))" integer; do
@@ -20121,9 +20121,9 @@ EOF
 	fi
     done
     rm -f conftest.f conftest.o
-
+    
 cat >>confdefs.h <<_ACEOF
-#define NCBYTE_T $type
+@%:@define NCBYTE_T $type
 _ACEOF
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $type" >&5
@@ -20131,7 +20131,7 @@ $as_echo "$type" >&6; }
     NCBYTE_T=$type
 
 
-
+	
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran-equivalent to netCDF \"short\"" >&5
 $as_echo_n "checking for Fortran-equivalent to netCDF \"short\"... " >&6; }
     for type in integer*2 "integer(kind=2)" "integer(selected_int_kind(4))" integer; do
@@ -20149,9 +20149,9 @@ EOF
 	fi
     done
     rm -f conftest.f conftest.o
-
+    
 cat >>confdefs.h <<_ACEOF
-#define NCSHORT_T $type
+@%:@define NCSHORT_T $type
 _ACEOF
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $type" >&5
@@ -20168,34 +20168,34 @@ $as_echo "$type" >&6; }
       as_fn_error $? "F77 compiler doesn't work, and compiler recovery disabled." "$LINENO" 5
    fi
 else
-   $as_echo "#define NCBYTE_T byte" >>confdefs.h
-
-   $as_echo "#define NCSHORT_T integer*2" >>confdefs.h
-
-   $as_echo "#define NF_INT1_T byte" >>confdefs.h
-
-   $as_echo "#define NF_INT2_T integer*2" >>confdefs.h
+   $as_echo "@%:@define NCBYTE_T byte" >>confdefs.h
 
+   $as_echo "@%:@define NCSHORT_T integer*2" >>confdefs.h
 
-$as_echo "#define NF_INT1_IS_C_SIGNED_CHAR 1" >>confdefs.h
+   $as_echo "@%:@define NF_INT1_T byte" >>confdefs.h
 
+   $as_echo "@%:@define NF_INT2_T integer*2" >>confdefs.h
 
-$as_echo "#define NF_INT2_IS_C_SHORT 1" >>confdefs.h
+   
+$as_echo "@%:@define NF_INT1_IS_C_SIGNED_CHAR 1" >>confdefs.h
 
+   
+$as_echo "@%:@define NF_INT2_IS_C_SHORT 1" >>confdefs.h
 
-$as_echo "#define NF_INT_IS_C_INT 1" >>confdefs.h
+   
+$as_echo "@%:@define NF_INT_IS_C_INT 1" >>confdefs.h
 
+   
+$as_echo "@%:@define NF_REAL_IS_C_FLOAT 1" >>confdefs.h
 
-$as_echo "#define NF_REAL_IS_C_FLOAT 1" >>confdefs.h
-
-
-$as_echo "#define NF_DOUBLEPRECISION_IS_C_DOUBLE 1" >>confdefs.h
+   
+$as_echo "@%:@define NF_DOUBLEPRECISION_IS_C_DOUBLE 1" >>confdefs.h
 
 fi
 
 # Test whether F90 module names get capitalized.
 if test "x$nc_build_f90" = xyes; then
-
+   
 ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
@@ -20249,9 +20249,9 @@ fi
 # Does the user want to run extra example tests
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether extra example tests should be run" >&5
 $as_echo_n "checking whether extra example tests should be run... " >&6; }
-# Check whether --enable-extra-example-tests was given.
+@%:@ Check whether --enable-extra-example-tests was given.
 if test "${enable_extra_example_tests+set}" = set; then :
-  enableval=$enable_extra_example_tests;
+  enableval=$enable_extra_example_tests; 
 fi
 
 test "x$enable_extra_example_tests" = xyes || enable_extra_example_tests=no
@@ -20270,9 +20270,9 @@ fi
 # on mingw.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a win32 DLL is desired" >&5
 $as_echo_n "checking whether a win32 DLL is desired... " >&6; }
-# Check whether --enable-dll was given.
+@%:@ Check whether --enable-dll was given.
 if test "${enable_dll+set}" = set; then :
-  enableval=$enable_dll;
+  enableval=$enable_dll; 
 fi
 
 test "x$enable_dll" = xyes || enable_dll=no
@@ -20287,8 +20287,8 @@ else
 fi
 
 if test "x$enable_dll" = xyes; then
-
-$as_echo "#define DLL_NETCDF 1" >>confdefs.h
+   
+$as_echo "@%:@define DLL_NETCDF 1" >>confdefs.h
 
 fi
 
@@ -20301,9 +20301,9 @@ do :
   ac_fn_c_check_header_mongrel "$LINENO" "netcdf.h" "ac_cv_header_netcdf_h" "$ac_includes_default"
 if test "x$ac_cv_header_netcdf_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_NETCDF_H 1
+@%:@define HAVE_NETCDF_H 1
 _ACEOF
-
+ 
 else
   as_fn_error $? "netcdf.h could not be found. Please set CPPFLAGS." "$LINENO" 5
 fi
@@ -20351,7 +20351,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 done
 if ${ac_cv_search_nc_open+:} false; then :
-
+  
 else
   ac_cv_search_nc_open=no
 fi
@@ -20363,7 +20363,7 @@ $as_echo "$ac_cv_search_nc_open" >&6; }
 ac_res=$ac_cv_search_nc_open
 if test "$ac_res" != no; then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
+  
 fi
 
 
@@ -20374,9 +20374,9 @@ do :
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
 if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 done
 
@@ -20405,8 +20405,8 @@ test "x$ac_cv_func_nc_use_parallel_enabled" = xyes && nc_has_parallel=yes
 #AC_CHECK_FUNC([nc_use_parallel_enabled],[nc_has_parallel=yes])
 
 if test "x$nc_build_v4" = xyes; then
-
-$as_echo "#define USE_NETCDF4 1" >>confdefs.h
+   
+$as_echo "@%:@define USE_NETCDF4 1" >>confdefs.h
 
 fi
 
@@ -20461,20 +20461,20 @@ fi
 
 ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
 if test "x$ac_cv_header_stdlib_h" = xyes; then :
-
+  
 else
-
-$as_echo "#define NO_STDLIB_H /**/" >>confdefs.h
+  
+$as_echo "@%:@define NO_STDLIB_H /**/" >>confdefs.h
 
 fi
 
 
 ac_fn_c_check_header_mongrel "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
 if test "x$ac_cv_header_sys_types_h" = xyes; then :
-
+  
 else
-
-$as_echo "#define NO_SYS_TYPES_H /**/" >>confdefs.h
+  
+$as_echo "@%:@define NO_SYS_TYPES_H /**/" >>confdefs.h
 
 fi
 
@@ -20484,9 +20484,9 @@ do :
   ac_fn_c_check_header_mongrel "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default"
 if test "x$ac_cv_header_sys_param_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_PARAM_H 1
+@%:@define HAVE_SYS_PARAM_H 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -20499,9 +20499,9 @@ do :
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -20540,7 +20540,7 @@ eval ac_res=\$$as_ac_Header
 $as_echo "$ac_res" >&6; }
 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
 _ACEOF
 
 ac_header_dirent=$ac_hdr; break
@@ -20590,7 +20590,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 done
 if ${ac_cv_search_opendir+:} false; then :
-
+  
 else
   ac_cv_search_opendir=no
 fi
@@ -20602,7 +20602,7 @@ $as_echo "$ac_cv_search_opendir" >&6; }
 ac_res=$ac_cv_search_opendir
 if test "$ac_res" != no; then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
+  
 fi
 
 else
@@ -20647,7 +20647,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 done
 if ${ac_cv_search_opendir+:} false; then :
-
+  
 else
   ac_cv_search_opendir=no
 fi
@@ -20659,7 +20659,7 @@ $as_echo "$ac_cv_search_opendir" >&6; }
 ac_res=$ac_cv_search_opendir
 if test "$ac_res" != no; then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
+  
 fi
 
 fi
@@ -20700,7 +20700,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "memchr" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -20717,7 +20717,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "free" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -20758,7 +20758,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -20771,8 +20771,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
 $as_echo "$ac_cv_header_stdc" >&6; }
 if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+  
+$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
@@ -20812,8 +20812,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5
 $as_echo "$ac_cv_header_sys_wait_h" >&6; }
 if test $ac_cv_header_sys_wait_h = yes; then
-
-$as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_SYS_WAIT_H 1" >>confdefs.h
 
 fi
 
@@ -20847,8 +20847,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
 $as_echo "$ac_cv_header_time" >&6; }
 if test $ac_cv_header_time = yes; then
-
-$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
+  
+$as_echo "@%:@define TIME_WITH_SYS_TIME 1" >>confdefs.h
 
 fi
 
@@ -20858,13 +20858,13 @@ do :
   ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
 if test "x$ac_cv_func_vprintf" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_VPRINTF 1
+@%:@define HAVE_VPRINTF 1
 _ACEOF
-
+ 
 ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
 if test "x$ac_cv_func__doprnt" = xyes; then :
-
-$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_DOPRNT 1" >>confdefs.h
 
 fi
 
@@ -20925,7 +20925,7 @@ else
               */
              _Bool q = true;
              _Bool *pq = &q;
-
+           
 int
 main ()
 {
@@ -20936,7 +20936,7 @@ main ()
              /* Refer to every declared value, to avoid compiler optimizations.  */
              return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
                      + !m + !n + !o + !p + !q + !pq);
-
+           
   ;
   return 0;
 }
@@ -20952,9 +20952,9 @@ fi
 $as_echo "$ac_cv_header_stdbool_h" >&6; }
    ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
 if test "x$ac_cv_type__Bool" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE__BOOL 1
+@%:@define HAVE__BOOL 1
 _ACEOF
 
 
@@ -20962,8 +20962,8 @@ fi
 
 
 if test $ac_cv_header_stdbool_h = yes; then
-
-$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_STDBOOL_H 1" >>confdefs.h
 
 fi
 
@@ -20973,11 +20973,11 @@ fi
 #			strcasecmp strtod strtoll strtoull getrlimit gettimeofday fsync MPI_Comm_f2c])
 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
 if test "x$ac_cv_type_size_t" = xyes; then :
-
+  
 else
-
+  
 cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
+@%:@define size_t unsigned int
 _ACEOF
 
 fi
@@ -20991,7 +20991,7 @@ if ${ac_cv_working_alloca_h+:} false; then :
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <alloca.h>
+@%:@include <alloca.h>
 int
 main ()
 {
@@ -21012,8 +21012,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
 $as_echo "$ac_cv_working_alloca_h" >&6; }
 if test $ac_cv_working_alloca_h = yes; then
-
-$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_ALLOCA_H 1" >>confdefs.h
 
 fi
 
@@ -21066,8 +21066,8 @@ fi
 $as_echo "$ac_cv_func_alloca_works" >&6; }
 
 if test $ac_cv_func_alloca_works = yes; then
-
-$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_ALLOCA 1" >>confdefs.h
 
 else
   # The SVR3 libPW and SVR4 libucb both contain incompatible functions
@@ -21077,7 +21077,7 @@ else
 
 ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
 
-$as_echo "#define C_ALLOCA 1" >>confdefs.h
+$as_echo "@%:@define C_ALLOCA 1" >>confdefs.h
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
@@ -21110,9 +21110,9 @@ if test $ac_cv_os_cray = yes; then
     as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
 if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define CRAY_STACKSEG_END $ac_func
+@%:@define CRAY_STACKSEG_END $ac_func
 _ACEOF
 
     break
@@ -21162,7 +21162,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
 $as_echo "$ac_cv_c_stack_direction" >&6; }
 cat >>confdefs.h <<_ACEOF
-#define STACK_DIRECTION $ac_cv_c_stack_direction
+@%:@define STACK_DIRECTION $ac_cv_c_stack_direction
 _ACEOF
 
 
@@ -21173,58 +21173,58 @@ fi
 #UD_CHECK_IEEE
 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
 if test "x$ac_cv_type_size_t" = xyes; then :
-
+  
 else
-
+  
 cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
+@%:@define size_t unsigned int
 _ACEOF
 
 fi
 
 ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
 if test "x$ac_cv_type_off_t" = xyes; then :
-
+  
 else
-
+  
 cat >>confdefs.h <<_ACEOF
-#define off_t long int
+@%:@define off_t long int
 _ACEOF
 
 fi
 
 ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
 if test "x$ac_cv_type_ssize_t" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE_SSIZE_T 1
+@%:@define HAVE_SSIZE_T 1
 _ACEOF
 
 
 fi
 ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
 if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE_PTRDIFF_T 1
+@%:@define HAVE_PTRDIFF_T 1
 _ACEOF
 
 
 fi
 ac_fn_c_check_type "$LINENO" "uchar" "ac_cv_type_uchar" "$ac_includes_default"
 if test "x$ac_cv_type_uchar" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UCHAR 1
+@%:@define HAVE_UCHAR 1
 _ACEOF
 
 
 fi
 ac_fn_c_check_type "$LINENO" "longlong" "ac_cv_type_longlong" "$ac_includes_default"
 if test "x$ac_cv_type_longlong" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE_LONGLONG 1
+@%:@define HAVE_LONGLONG 1
 _ACEOF
 
 
@@ -21241,9 +21241,9 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array [1 - 2 * !(((char) -1) < 0)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(((char) -1) < 0)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -21259,7 +21259,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5
 $as_echo "$ac_cv_c_char_unsigned" >&6; }
 if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then
-  $as_echo "#define __CHAR_UNSIGNED__ 1" >>confdefs.h
+  $as_echo "@%:@define __CHAR_UNSIGNED__ 1" >>confdefs.h
 
 fi
 
@@ -21274,7 +21274,7 @@ if ${ac_cv_sizeof_short+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_short" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21293,7 +21293,7 @@ $as_echo "$ac_cv_sizeof_short" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SHORT $ac_cv_sizeof_short
+@%:@define SIZEOF_SHORT $ac_cv_sizeof_short
 _ACEOF
 
 
@@ -21307,7 +21307,7 @@ if ${ac_cv_sizeof_int+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_int" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21326,7 +21326,7 @@ $as_echo "$ac_cv_sizeof_int" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INT $ac_cv_sizeof_int
+@%:@define SIZEOF_INT $ac_cv_sizeof_int
 _ACEOF
 
 
@@ -21340,7 +21340,7 @@ if ${ac_cv_sizeof_long+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_long" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21359,7 +21359,7 @@ $as_echo "$ac_cv_sizeof_long" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG $ac_cv_sizeof_long
+@%:@define SIZEOF_LONG $ac_cv_sizeof_long
 _ACEOF
 
 
@@ -21373,7 +21373,7 @@ if ${ac_cv_sizeof_float+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (float))" "ac_cv_sizeof_float"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_float" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21392,7 +21392,7 @@ $as_echo "$ac_cv_sizeof_float" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_FLOAT $ac_cv_sizeof_float
+@%:@define SIZEOF_FLOAT $ac_cv_sizeof_float
 _ACEOF
 
 
@@ -21406,7 +21406,7 @@ if ${ac_cv_sizeof_double+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_double" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21425,7 +21425,7 @@ $as_echo "$ac_cv_sizeof_double" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_DOUBLE $ac_cv_sizeof_double
+@%:@define SIZEOF_DOUBLE $ac_cv_sizeof_double
 _ACEOF
 
 
@@ -21439,7 +21439,7 @@ if ${ac_cv_sizeof_off_t+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_off_t" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21458,7 +21458,7 @@ $as_echo "$ac_cv_sizeof_off_t" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_OFF_T $ac_cv_sizeof_off_t
+@%:@define SIZEOF_OFF_T $ac_cv_sizeof_off_t
 _ACEOF
 
 
@@ -21472,7 +21472,7 @@ if ${ac_cv_sizeof_size_t+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_size_t" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21491,7 +21491,7 @@ $as_echo "$ac_cv_sizeof_size_t" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
+@%:@define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
 _ACEOF
 
 
@@ -21505,7 +21505,7 @@ if ${ac_cv_sizeof_ptrdiff_t+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (ptrdiff_t))" "ac_cv_sizeof_ptrdiff_t"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_ptrdiff_t" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21524,12 +21524,12 @@ $as_echo "$ac_cv_sizeof_ptrdiff_t" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_PTRDIFF_T $ac_cv_sizeof_ptrdiff_t
+@%:@define SIZEOF_PTRDIFF_T $ac_cv_sizeof_ptrdiff_t
 _ACEOF
 
 
 if ac_fn_c_compute_int "$LINENO" "sizeof(long long) == sizeof(long)" "longlong_is_long"        ""; then :
-
+  
 else
   longlong_is_long=0
 fi
@@ -21703,7 +21703,7 @@ DEFS=-DHAVE_CONFIG_H
 ac_libobjs=
 ac_ltlibobjs=
 U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+for ac_i in : $LIB@&t at OBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
   ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
@@ -21712,7 +21712,7 @@ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
   as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
 done
-LIBOBJS=$ac_libobjs
+LIB@&t at OBJS=$ac_libobjs
 
 LTLIBOBJS=$ac_ltlibobjs
 
@@ -21842,9 +21842,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in #(
+  case `(set -o) 2>/dev/null` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -21875,7 +21875,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in #(
+      case $arg in @%:@(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -21908,7 +21908,7 @@ IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
-case $0 in #((
+case $0 in @%:@((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -21953,11 +21953,11 @@ export LANGUAGE
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
   as_status=$1; test $as_status -eq 0 && as_status=1
@@ -21967,41 +21967,41 @@ as_fn_error ()
   fi
   $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
-} # as_fn_error
+} @%:@ as_fn_error
 
 
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
 as_fn_set_status ()
 {
   return $1
-} # as_fn_set_status
+} @%:@ as_fn_set_status
 
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
 as_fn_exit ()
 {
   set +e
   as_fn_set_status $1
   exit $1
-} # as_fn_exit
+} @%:@ as_fn_exit
 
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
 as_fn_unset ()
 {
   { eval $1=; unset $1;}
 }
 as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
 if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
   eval 'as_fn_append ()
   {
@@ -22014,11 +22014,11 @@ else
   }
 fi # as_fn_append
 
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
   eval 'as_fn_arith ()
   {
@@ -22078,7 +22078,7 @@ as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
+case `echo -n x` in @%:@(((((
 -n*)
   case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
@@ -22118,9 +22118,9 @@ rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
 
 
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
 as_fn_mkdir_p ()
 {
 
@@ -22164,7 +22164,7 @@ $as_echo X"$as_dir" |
   } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
-} # as_fn_mkdir_p
+} @%:@ as_fn_mkdir_p
 if mkdir -p . 2>/dev/null; then
   as_mkdir_p='mkdir -p "$as_dir"'
 else
@@ -22173,13 +22173,13 @@ else
 fi
 
 
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
 as_fn_executable_p ()
 {
   test -f "$1" && test -x "$1"
-} # as_fn_executable_p
+} @%:@ as_fn_executable_p
 as_test_x='test -x'
 as_executable_p=as_fn_executable_p
 
@@ -22202,7 +22202,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by netCDF-Fortran $as_me 4.4.3, which was
+This file was extended by netCDF-Fortran $as_me 4.4.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -22248,9 +22248,9 @@ Usage: $0 [OPTION]... [TAG]...
                    do not print progress messages
   -d, --debug      don't remove temporary files
       --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
+      --file=FILE[:TEMPLATE] 
                    instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
+      --header=FILE[:TEMPLATE] 
                    instantiate the configuration header FILE
 
 Configuration files:
@@ -22268,7 +22268,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-netCDF-Fortran config.status 4.4.3
+netCDF-Fortran config.status 4.4.4
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -22376,8 +22376,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 exec 5>>config.log
 {
   echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
+  sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
+@%:@@%:@ Running $as_me. @%:@@%:@
 _ASBOX
   $as_echo "$ac_log"
 } >&5
@@ -23462,7 +23462,7 @@ $as_echo X"$_am_arg" |
 	  }
 	  s/.*/./; q'`/stamp-h$_am_stamp_count
  ;;
-
+  
   :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
 $as_echo "$as_me: executing $ac_file commands" >&6;}
  ;;
@@ -23563,8 +23563,8 @@ $as_echo X"$file" |
   done
 }
  ;;
-    "libtool":C)
-
+    "libtool":C) 
+    
     # See if we are running on zsh, and set the options which allow our
     # commands through without removal of \ escapes.
     if test -n "${ZSH_VERSION+set}" ; then
@@ -24032,7 +24032,7 @@ _LT_EOF
     ;;
   esac
 
-
+  
 ltmain="$ac_aux_dir/ltmain.sh"
 
 
diff --git a/configure b/autom4te.cache/output.1
old mode 100755
new mode 100644
similarity index 97%
copy from configure
copy to autom4te.cache/output.1
index 5dc5f7f..546c65a
--- a/configure
+++ b/autom4te.cache/output.1
@@ -1,15 +1,15 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for netCDF-Fortran 4.4.3.
-#
-# Report bugs to <support-netcdf at unidata.ucar.edu>.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+@%:@! /bin/sh
+@%:@ Guess values for system-dependent variables and create Makefiles.
+@%:@ Generated by GNU Autoconf 2.69 for netCDF-Fortran 4.4.4.
+@%:@
+@%:@ Report bugs to <support-netcdf at unidata.ucar.edu>.
+@%:@ 
+@%:@ 
+@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+@%:@ 
+@%:@ 
+@%:@ This configure script is free software; the Free Software Foundation
+@%:@ gives unlimited permission to copy, distribute and modify it.
 ## -------------------- ##
 ## M4sh Initialization. ##
 ## -------------------- ##
@@ -24,9 +24,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in #(
+  case `(set -o) 2>/dev/null` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -57,7 +57,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in #(
+      case $arg in @%:@(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -90,7 +90,7 @@ IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
-case $0 in #((
+case $0 in @%:@((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -145,7 +145,7 @@ export LANGUAGE
 BASH_ENV=/dev/null
 ENV=/dev/null
 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
+case $- in @%:@ ((((
   *v*x* | *x*v* ) as_opts=-vx ;;
   *v* ) as_opts=-v ;;
   *x* ) as_opts=-x ;;
@@ -168,9 +168,9 @@ if test "x$CONFIG_SHELL" = x; then
   alias -g '\${1+\"\$@\"}'='\"\$@\"'
   setopt NO_GLOB_SUBST
 else
-  case \`(set -o) 2>/dev/null\` in #(
+  case \`(set -o) 2>/dev/null\` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -188,7 +188,7 @@ as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
 as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
 as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
 if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
+  
 else
   exitcode=1; echo positional parameters were not saved.
 fi
@@ -213,7 +213,7 @@ else
   as_have_required=no
 fi
   if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
+  
 else
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 as_found=false
@@ -222,7 +222,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   as_found=:
-  case $as_dir in #(
+  case $as_dir in @%:@(
 	 /*)
 	   for as_base in sh bash ksh sh5; do
 	     # Try only shells that exist, to save several forks.
@@ -254,7 +254,7 @@ IFS=$as_save_IFS
 BASH_ENV=/dev/null
 ENV=/dev/null
 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
+case $- in @%:@ ((((
   *v*x* | *x*v* ) as_opts=-vx ;;
   *v* ) as_opts=-v ;;
   *x* ) as_opts=-x ;;
@@ -293,36 +293,36 @@ unset CLICOLOR_FORCE GREP_OPTIONS
 ## --------------------- ##
 ## M4sh Shell Functions. ##
 ## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
 as_fn_unset ()
 {
   { eval $1=; unset $1;}
 }
 as_unset=as_fn_unset
 
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
 as_fn_set_status ()
 {
   return $1
-} # as_fn_set_status
+} @%:@ as_fn_set_status
 
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
 as_fn_exit ()
 {
   set +e
   as_fn_set_status $1
   exit $1
-} # as_fn_exit
+} @%:@ as_fn_exit
 
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
 as_fn_mkdir_p ()
 {
 
@@ -366,21 +366,21 @@ $as_echo X"$as_dir" |
   } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
-} # as_fn_mkdir_p
+} @%:@ as_fn_mkdir_p
 
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
 as_fn_executable_p ()
 {
   test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
+} @%:@ as_fn_executable_p
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
 if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
   eval 'as_fn_append ()
   {
@@ -393,11 +393,11 @@ else
   }
 fi # as_fn_append
 
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
   eval 'as_fn_arith ()
   {
@@ -411,11 +411,11 @@ else
 fi # as_fn_arith
 
 
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
   as_status=$1; test $as_status -eq 0 && as_status=1
@@ -425,7 +425,7 @@ as_fn_error ()
   fi
   $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
-} # as_fn_error
+} @%:@ as_fn_error
 
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
@@ -509,7 +509,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
 }
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
+case `echo -n x` in @%:@(((((
 -n*)
   case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
@@ -581,7 +581,7 @@ ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 ac_default_prefix=/usr/local
 ac_clean_files=
 ac_config_libobj_dir=.
-LIBOBJS=
+LIB@&t at OBJS=
 cross_compiling=no
 subdirs=
 MFLAGS=
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='netCDF-Fortran'
 PACKAGE_TARNAME='netcdf-fortran'
-PACKAGE_VERSION='4.4.3'
-PACKAGE_STRING='netCDF-Fortran 4.4.3'
+PACKAGE_VERSION='4.4.4'
+PACKAGE_STRING='netCDF-Fortran 4.4.4'
 PACKAGE_BUGREPORT='support-netcdf at unidata.ucar.edu'
 PACKAGE_URL=''
 
@@ -635,7 +635,7 @@ ac_includes_default="\
 ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
-LIBOBJS
+LIB@&t at OBJS
 HAS_NC4
 HAS_NC2
 HAS_DAP
@@ -1388,7 +1388,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures netCDF-Fortran 4.4.3 to adapt to many kinds of systems.
+\`configure' configures netCDF-Fortran 4.4.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1410,9 +1410,9 @@ Configuration:
 
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
+                          @<:@@S|@ac_default_prefix@:>@
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
+                          @<:@PREFIX@:>@
 
 By default, \`make install' will install all the files in
 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
@@ -1436,7 +1436,7 @@ Fine tuning of the installation directories:
   --infodir=DIR           info documentation [DATAROOTDIR/info]
   --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
   --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/netcdf-fortran]
+  --docdir=DIR            documentation root @<:@DATAROOTDIR/doc/netcdf-fortran@:>@
   --htmldir=DIR           html documentation [DOCDIR]
   --dvidir=DIR            dvi documentation [DOCDIR]
   --pdfdir=DIR            pdf documentation [DOCDIR]
@@ -1459,7 +1459,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of netCDF-Fortran 4.4.3:";;
+     short | recursive ) echo "Configuration of netCDF-Fortran 4.4.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1469,7 +1469,7 @@ Optional Features:
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --enable-silent-rules   less verbose build output (undo: "make V=1")
   --disable-silent-rules  verbose build output (undo: "make V=0")
-  --enable-maintainer-mode
+  --enable-maintainer-mode 
                           enable make rules and dependencies not useful (and
                           sometimes confusing) to the casual installer
   --enable-valgrind-tests build with valgrind-tests (valgrind is required,
@@ -1485,29 +1485,29 @@ Optional Features:
   --enable-internal-docs  Include documentation of library internals. This is
                           of interest only to those developing the netCDF
                           library.
-  --enable-dependency-tracking
+  --enable-dependency-tracking 
                           do not reject slow dependency extractors
-  --disable-dependency-tracking
+  --disable-dependency-tracking 
                           speeds up one-time build
-  --disable-f03-compiler-check
+  --disable-f03-compiler-check 
                           disable check of ISO_C_BINDING support in Fortran
                           compiler
   --disable-f03           suppress netCDF Fortran 2003 native code
-  --disable-fortran-type-check
+  --disable-fortran-type-check 
                           cause the Fortran type sizes checks to be skipped
-  --enable-large-file-tests
+  --enable-large-file-tests 
                           Run tests which create very large data files (~13 GB
                           disk space required, but it will be recovered when
                           tests are complete). See option --with-temp-large to
                           specify temporary directory
   --enable-benchmarks     Run benchmarks. This is an experimental feature.
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --enable-static[=PKGS]  build static libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
+  --enable-shared@<:@=PKGS@:>@  build shared libraries @<:@default=yes@:>@
+  --enable-static@<:@=PKGS@:>@  build static libraries @<:@default=yes@:>@
+  --enable-fast-install@<:@=PKGS@:>@ 
+                          optimize for fast installation @<:@default=yes@:>@
   --disable-libtool-lock  avoid locking (might break parallel builds)
   --disable-largefile     omit support for large files
-  --enable-extra-example-tests
+  --enable-extra-example-tests 
                           Run extra example tests; requires GNU sed. Ignored
                           if netCDF-4 is not enabled.
   --enable-dll            build a win32 DLL (only works on mingw)
@@ -1515,13 +1515,13 @@ Optional Features:
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-temp-large=<directory>
+  --with-temp-large=<directory> 
                           specify directory where large files (i.e. >2 GB)
                           will be written, if large files tests are run with
                           --enable-large-file-tests
-  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-pic@<:@=PKGS@:>@       try to use only PIC/non-PIC objects @<:@default=use
+                          both@:>@
+  --with-gnu-ld           assume the C compiler uses GNU ld @<:@default=no@:>@
   --with-sysroot=DIR Search for dependent libraries within DIR
                         (or the compiler's sysroot if not specified).
 
@@ -1605,7 +1605,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-netCDF-Fortran configure 4.4.3
+netCDF-Fortran configure 4.4.4
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1619,9 +1619,9 @@ fi
 ## Autoconf initialization. ##
 ## ------------------------ ##
 
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_compile LINENO
+@%:@ --------------------------
+@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_c_try_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1655,11 +1655,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_compile
+} @%:@ ac_fn_c_try_compile
 
-# ac_fn_fc_try_compile LINENO
-# ---------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_fc_try_compile LINENO
+@%:@ ---------------------------
+@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_fc_try_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1693,11 +1693,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_fc_try_compile
+} @%:@ ac_fn_fc_try_compile
 
-# ac_fn_f77_try_compile LINENO
-# ----------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_f77_try_compile LINENO
+@%:@ ----------------------------
+@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_f77_try_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1731,11 +1731,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_f77_try_compile
+} @%:@ ac_fn_f77_try_compile
 
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_link LINENO
+@%:@ -----------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_c_try_link ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1777,12 +1777,12 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_link
+} @%:@ ac_fn_c_try_link
 
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
+@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists and can be compiled using the include files in
+@%:@ INCLUDES, setting the cache variable VAR accordingly.
 ac_fn_c_check_header_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1794,7 +1794,7 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   eval "$3=yes"
@@ -1808,11 +1808,11 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_header_compile
+} @%:@ ac_fn_c_check_header_compile
 
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_cpp LINENO
+@%:@ ----------------------
+@%:@ Try to preprocess conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_c_try_cpp ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1845,12 +1845,12 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_cpp
+} @%:@ ac_fn_c_try_cpp
 
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
+@%:@ ac_fn_c_try_run LINENO
+@%:@ ----------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded. Assumes
+@%:@ that executables *can* be run.
 ac_fn_c_try_run ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1887,11 +1887,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_run
+} @%:@ ac_fn_c_try_run
 
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
+@%:@ ac_fn_c_check_func LINENO FUNC VAR
+@%:@ ----------------------------------
+@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly
 ac_fn_c_check_func ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1954,11 +1954,11 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_func
+} @%:@ ac_fn_c_check_func
 
-# ac_fn_f77_try_link LINENO
-# -------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_f77_try_link LINENO
+@%:@ -------------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_f77_try_link ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2000,11 +2000,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_f77_try_link
+} @%:@ ac_fn_f77_try_link
 
-# ac_fn_fc_try_link LINENO
-# ------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_fc_try_link LINENO
+@%:@ ------------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_fc_try_link ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2046,13 +2046,13 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_fc_try_link
+} @%:@ ac_fn_fc_try_link
 
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
+@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using
+@%:@ the include files in INCLUDES and setting the cache variable VAR
+@%:@ accordingly.
 ac_fn_c_check_header_mongrel ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2072,7 +2072,7 @@ $as_echo_n "checking $2 usability... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   ac_header_compiler=yes
@@ -2088,7 +2088,7 @@ $as_echo "$ac_header_compiler" >&6; }
 $as_echo_n "checking $2 presence... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   ac_header_preproc=yes
@@ -2137,12 +2137,12 @@ $as_echo "$ac_res" >&6; }
 fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_header_mongrel
+} @%:@ ac_fn_c_check_header_mongrel
 
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
+@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+@%:@ -------------------------------------------
+@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache
+@%:@ variable VAR accordingly.
 ac_fn_c_check_type ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2178,7 +2178,7 @@ if (sizeof (($2)))
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-
+  
 else
   eval "$3=yes"
 fi
@@ -2191,13 +2191,13 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_type
+} @%:@ ac_fn_c_check_type
 
-# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
-# --------------------------------------------
-# Tries to find the compile-time value of EXPR in a program that includes
-# INCLUDES, setting VAR accordingly. Returns whether the value could be
-# computed
+@%:@ ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+@%:@ --------------------------------------------
+@%:@ Tries to find the compile-time value of EXPR in a program that includes
+@%:@ INCLUDES, setting VAR accordingly. Returns whether the value could be
+@%:@ computed
 ac_fn_c_compute_int ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2209,9 +2209,9 @@ $4
 int
 main ()
 {
-static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(($2) >= 0)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -2226,9 +2226,9 @@ $4
 int
 main ()
 {
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(($2) <= $ac_mid)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -2253,9 +2253,9 @@ $4
 int
 main ()
 {
-static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(($2) < 0)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -2270,9 +2270,9 @@ $4
 int
 main ()
 {
-static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(($2) >= $ac_mid)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -2305,9 +2305,9 @@ $4
 int
 main ()
 {
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(($2) <= $ac_mid)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -2320,7 +2320,7 @@ else
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 done
-case $ac_lo in #((
+case $ac_lo in @%:@((
 ?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
 '') ac_retval=1 ;;
 esac
@@ -2330,8 +2330,8 @@ esac
 $4
 static long int longval () { return $2; }
 static unsigned long int ulongval () { return $2; }
-#include <stdio.h>
-#include <stdlib.h>
+@%:@include <stdio.h>
+@%:@include <stdlib.h>
 int
 main ()
 {
@@ -2374,12 +2374,12 @@ rm -f conftest.val
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_compute_int
+} @%:@ ac_fn_c_compute_int
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by netCDF-Fortran $as_me 4.4.3, which was
+It was created by netCDF-Fortran $as_me 4.4.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2585,27 +2585,27 @@ $as_echo "/* confdefs.h */" > confdefs.h
 # Predefined preprocessor variables.
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
+@%:@define PACKAGE_NAME "$PACKAGE_NAME"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
+@%:@define PACKAGE_STRING "$PACKAGE_STRING"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
+@%:@define PACKAGE_URL "$PACKAGE_URL"
 _ACEOF
 
 
@@ -2615,7 +2615,7 @@ ac_site_file1=NONE
 ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
   # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
+  case $CONFIG_SITE in @%:@((
     -*)  ac_site_file1=./$CONFIG_SITE;;
     */*) ac_site_file1=$CONFIG_SITE;;
     *)   ac_site_file1=./$CONFIG_SITE;;
@@ -2730,11 +2730,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # Create the VERSION file, which contains the package version from
 # AC_INIT.
-echo -n 4.4.3>VERSION
+echo -n 4.4.4>VERSION
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF-Fortran 4.4.3" >&5
-$as_echo "$as_me: netCDF-Fortran 4.4.3" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF-Fortran 4.4.4" >&5
+$as_echo "$as_me: netCDF-Fortran 4.4.4" >&6;}
 
 # Keep libtool macros in an m4 directory.
 
@@ -2911,7 +2911,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
+case $as_dir/ in @%:@((
   ./ | .// | /[cC]/* | \
   /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
   ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
@@ -3308,12 +3308,12 @@ else
 fi
 rmdir .tst 2>/dev/null
 
-# Check whether --enable-silent-rules was given.
+@%:@ Check whether --enable-silent-rules was given.
 if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
+  enableval=$enable_silent_rules; 
 fi
 
-case $enable_silent_rules in # (((
+case $enable_silent_rules in @%:@ (((
   yes) AM_DEFAULT_VERBOSITY=0;;
    no) AM_DEFAULT_VERBOSITY=1;;
     *) AM_DEFAULT_VERBOSITY=1;;
@@ -3369,16 +3369,16 @@ fi
 
 # Define the identity of the package.
  PACKAGE='netcdf-fortran'
- VERSION='4.4.3'
+ VERSION='4.4.4'
 
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
+@%:@define PACKAGE "$PACKAGE"
 _ACEOF
 
-
+ 
 cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
+@%:@define VERSION "$VERSION"
 _ACEOF
 
 # Some tools Automake needs.
@@ -3464,7 +3464,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
-    # Check whether --enable-maintainer-mode was given.
+    @%:@ Check whether --enable-maintainer-mode was given.
 if test "${enable_maintainer_mode+set}" = set; then :
   enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
 else
@@ -3482,7 +3482,7 @@ else
 fi
 
   MAINT=$MAINTAINER_MODE_TRUE
-
+  
 
 
 # Check for the existence of this file before proceeding.
@@ -3494,9 +3494,9 @@ $as_echo "$as_me: checking user options" >&6;}
 # Does the user want to run extra tests with valgrind?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether extra valgrind tests should be run" >&5
 $as_echo_n "checking whether extra valgrind tests should be run... " >&6; }
-# Check whether --enable-valgrind-tests was given.
+@%:@ Check whether --enable-valgrind-tests was given.
 if test "${enable_valgrind_tests+set}" = set; then :
-  enableval=$enable_valgrind_tests;
+  enableval=$enable_valgrind_tests; 
 fi
 
 test "x$enable_valgrind_tests" = xyes || enable_valgrind_tests=no
@@ -3506,9 +3506,9 @@ $as_echo "$enable_valgrind_tests" >&6; }
 # Does the user want to run extra parallel tests when parallel netCDF-4 is built?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether parallel IO tests should be run" >&5
 $as_echo_n "checking whether parallel IO tests should be run... " >&6; }
-# Check whether --enable-parallel-tests was given.
+@%:@ Check whether --enable-parallel-tests was given.
 if test "${enable_parallel_tests+set}" = set; then :
-  enableval=$enable_parallel_tests;
+  enableval=$enable_parallel_tests; 
 fi
 
 test "x$enable_parallel_tests" = xyes || enable_parallel_tests=no
@@ -3518,17 +3518,17 @@ $as_echo "$enable_parallel_tests" >&6; }
 # Does the user want to do some extra tests?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether netCDF extra tests should be run (developers only)" >&5
 $as_echo_n "checking whether netCDF extra tests should be run (developers only)... " >&6; }
-# Check whether --enable-extra-tests was given.
+@%:@ Check whether --enable-extra-tests was given.
 if test "${enable_extra_tests+set}" = set; then :
-  enableval=$enable_extra_tests;
+  enableval=$enable_extra_tests; 
 fi
 
 test "x$enable_extra_tests" = xyes || enable_extra_tests=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_extra_tests" >&5
 $as_echo "$enable_extra_tests" >&6; }
 if test "x$enable_extra_tests" = xyes; then
-
-$as_echo "#define EXTRA_TESTS 1" >>confdefs.h
+   
+$as_echo "@%:@define EXTRA_TESTS 1" >>confdefs.h
 
 fi
  if test x$enable_extra_tests = xyes; then
@@ -3543,9 +3543,9 @@ fi
 #####
 # Determine if we want to enable doxygen-generated documentation.
 #####
-# Check whether --enable-doxygen was given.
+@%:@ Check whether --enable-doxygen was given.
 if test "${enable_doxygen+set}" = set; then :
-  enableval=$enable_doxygen;
+  enableval=$enable_doxygen; 
 fi
 
     test "x$enable_doxygen" = xyes || enable_doxygen=no
@@ -3559,17 +3559,17 @@ fi
 
 
 # Does the user want to generate dot-based documentation?
-# Check whether --enable-dot was given.
+@%:@ Check whether --enable-dot was given.
 if test "${enable_dot+set}" = set; then :
-  enableval=$enable_dot;
+  enableval=$enable_dot; 
 fi
 
 	test "x$enable_dot" = xyes || enable_dot=no
 
 # Does the user want to generate internal documentation?
-# Check whether --enable-internal-docs was given.
+@%:@ Check whether --enable-internal-docs was given.
 if test "${enable_internal_docs+set}" = set; then :
-  enableval=$enable_internal_docs;
+  enableval=$enable_internal_docs; 
 fi
 
 test "x$enable_internal_docs" = xyes || enable_internal_docs=no
@@ -3680,7 +3680,7 @@ fi
 # If we have doxygen, and it's enabled, then process the file.
 if test "x$enable_doxygen" != xno; then
    if test -n "$DOXYGEN"; then
-
+        
         ac_config_files="$ac_config_files docs/Doxyfile"
 
    fi
@@ -3872,7 +3872,7 @@ if test $ac_prog_rejected = yes; then
   # We found a bogon in the path, so make sure we never use it.
   set dummy $ac_cv_prog_CC
   shift
-  if test $# != 0; then
+  if test $@%:@ != 0; then
     # We chose a different compiler from the bogus one.
     # However, it has the same basename, so the bogon will be chosen
     # first if we set CC to just the basename; use the full file name.
@@ -4169,7 +4169,7 @@ EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <stdio.h>
+@%:@include <stdio.h>
 int
 main ()
 {
@@ -4350,7 +4350,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-
+  
 else
   ac_c_werror_flag=$ac_save_c_werror_flag
 	 CFLAGS="-g"
@@ -4479,7 +4479,7 @@ $as_echo "unsupported" >&6; } ;;
 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
 if test "x$ac_cv_prog_cc_c89" != xno; then :
-
+  
 fi
 
 ac_ext=c
@@ -4590,9 +4590,9 @@ fi
 $as_echo "$_am_result" >&6; }
 rm -f confinc confmf
 
-# Check whether --enable-dependency-tracking was given.
+@%:@ Check whether --enable-dependency-tracking was given.
 if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
+  enableval=$enable_dependency_tracking; 
 fi
 
 if test "x$enable_dependency_tracking" != xno; then
@@ -4727,7 +4727,7 @@ fi
 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
- if
+ if 
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
   am__fastdepCC_TRUE=
@@ -4816,8 +4816,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
 $as_echo "$ac_cv_c_const" >&6; }
 if test $ac_cv_c_const = no; then
-
-$as_echo "#define const /**/" >>confdefs.h
+  
+$as_echo "@%:@define const /**/" >>confdefs.h
 
 fi
 
@@ -5277,9 +5277,9 @@ nc_build_f03=yes
 # Added to get around NAG evaluation compiler error turning off F03
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Fortran compiler is checked for ISO_C_BINDING support" >&5
 $as_echo_n "checking whether Fortran compiler is checked for ISO_C_BINDING support... " >&6; }
-# Check whether --enable-f03-compiler-check was given.
+@%:@ Check whether --enable-f03-compiler-check was given.
 if test "${enable_f03_compiler_check+set}" = set; then :
-  enableval=$enable_f03_compiler_check;
+  enableval=$enable_f03_compiler_check; 
 fi
 
 test "x$enable_f03_compiler_check" = xno || enable_f03_compiler_check=yes
@@ -5345,8 +5345,8 @@ else
     ac_fcflags_srcext=$ac_cv_fc_srcext_f90
     FCFLAGS_f90=$ac_cv_fc_srcext_f90
   fi
-
-
+  
+  
 fi
 ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
@@ -5383,10 +5383,10 @@ module conftest_module
    write(*,'(a)') 'gotcha!'
    end subroutine conftest_routine
    end module conftest_module
-
+  
 _ACEOF
 if ac_fn_fc_try_compile "$LINENO"; then :
-
+  
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 cd ..
@@ -5400,7 +5400,7 @@ program conftest_program
        use conftest_module
        call conftest_routine
        end program conftest_program
-
+      
 _ACEOF
 if ac_fn_fc_try_compile "$LINENO"; then :
   ax_cv_f90_modflag="$ax_flag"
@@ -5460,8 +5460,8 @@ EOF
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
      nc_f2008_is0_env_additions=yes
-
-$as_echo "#define HAVE_F2008 1" >>confdefs.h
+     
+$as_echo "@%:@define HAVE_F2008 1" >>confdefs.h
 
   else
      nc_f2008_is0_env_additions=no
@@ -5483,8 +5483,8 @@ EOF
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
      nc_ts29113_support=yes
-
-$as_echo "#define HAVE_TS29113_SUPPORT 1" >>confdefs.h
+     
+$as_echo "@%:@define HAVE_TS29113_SUPPORT 1" >>confdefs.h
 
   else
      nc_ts29113_support=no
@@ -5510,9 +5510,9 @@ fi
 ## Do we want to use the fortran 90 wrappers instead of 2003 native code?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether F03 native code is desired" >&5
 $as_echo_n "checking whether F03 native code is desired... " >&6; }
-# Check whether --enable-f03 was given.
+@%:@ Check whether --enable-f03 was given.
 if test "${enable_f03+set}" = set; then :
-  enableval=$enable_f03;
+  enableval=$enable_f03; 
 fi
 
 test "x$enable_f03" = xno || enable_f03=yes
@@ -5539,9 +5539,9 @@ fi
 # Does the user want to check into fortran type information?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fortran type sizes should be checked" >&5
 $as_echo_n "checking whether fortran type sizes should be checked... " >&6; }
-# Check whether --enable-fortran-type-check was given.
+@%:@ Check whether --enable-fortran-type-check was given.
 if test "${enable_fortran_type_check+set}" = set; then :
-  enableval=$enable_fortran_type_check;
+  enableval=$enable_fortran_type_check; 
 fi
 
 test "x$enable_fortran_type_check" = xno || enable_fortran_type_check=yes
@@ -5551,9 +5551,9 @@ $as_echo "$enable_fortran_type_check" >&6; }
 # Does the user want to run tests for large files (> 2GiB)?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether large file (> 2GB) tests should be run" >&5
 $as_echo_n "checking whether large file (> 2GB) tests should be run... " >&6; }
-# Check whether --enable-large-file-tests was given.
+@%:@ Check whether --enable-large-file-tests was given.
 if test "${enable_large_file_tests+set}" = set; then :
-  enableval=$enable_large_file_tests;
+  enableval=$enable_large_file_tests; 
 fi
 
 test "x$enable_large_file_tests" = xyes || enable_large_file_tests=no
@@ -5568,17 +5568,17 @@ else
 fi
 
 if test "x$enable_large_file_tests" = xyes; then
-
-$as_echo "#define LARGE_FILE_TESTS 1" >>confdefs.h
+   
+$as_echo "@%:@define LARGE_FILE_TESTS 1" >>confdefs.h
 
 fi
 
 # Does the user want to run benchmarks?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether benchmarks should be run (experimental)" >&5
 $as_echo_n "checking whether benchmarks should be run (experimental)... " >&6; }
-# Check whether --enable-benchmarks was given.
+@%:@ Check whether --enable-benchmarks was given.
 if test "${enable_benchmarks+set}" = set; then :
-  enableval=$enable_benchmarks;
+  enableval=$enable_benchmarks; 
 fi
 
 test "x$enable_benchmarks" = xyes || enable_benchmarks=no
@@ -5599,7 +5599,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to put large temp files if large file tests are run" >&5
 $as_echo_n "checking where to put large temp files if large file tests are run... " >&6; }
 
-# Check whether --with-temp-large was given.
+@%:@ Check whether --with-temp-large was given.
 if test "${with_temp_large+set}" = set; then :
   withval=$with_temp_large; TEMP_LARGE=$with_temp_large
 fi
@@ -5610,7 +5610,7 @@ $as_echo "$TEMP_LARGE" >&6; }
 #AC_SUBST(TEMP_LARGE)
 
 cat >>confdefs.h <<_ACEOF
-#define TEMP_LARGE "$TEMP_LARGE"
+@%:@define TEMP_LARGE "$TEMP_LARGE"
 _ACEOF
 
 
@@ -5695,8 +5695,8 @@ else
     ac_fcflags_srcext=$ac_cv_fc_srcext_f90
     FCFLAGS_f90=$ac_cv_fc_srcext_f90
   fi
-
-
+  
+  
 fi
 ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
@@ -5709,7 +5709,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-
+     
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking fortran 90 modules inclusion flag" >&5
 $as_echo_n "checking fortran 90 modules inclusion flag... " >&6; }
 if ${ax_cv_f90_modflag+:} false; then :
@@ -5733,10 +5733,10 @@ module conftest_module
    write(*,'(a)') 'gotcha!'
    end subroutine conftest_routine
    end module conftest_module
-
+  
 _ACEOF
 if ac_fn_fc_try_compile "$LINENO"; then :
-
+  
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 cd ..
@@ -5750,7 +5750,7 @@ program conftest_program
        use conftest_module
        call conftest_routine
        end program conftest_program
-
+      
 _ACEOF
 if ac_fn_fc_try_compile "$LINENO"; then :
   ax_cv_f90_modflag="$ax_flag"
@@ -5806,14 +5806,14 @@ esac
 macro_version='2.4.2'
 macro_revision='1.3337'
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 
@@ -5864,7 +5864,7 @@ fi
 # Invoke $ECHO with all args, space-separated.
 func_echo_all ()
 {
-    $ECHO ""
+    $ECHO "" 
 }
 
 case "$ECHO" in
@@ -5879,14 +5879,14 @@ esac
 
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
@@ -5961,14 +5961,14 @@ $as_echo "$ac_cv_path_SED" >&6; }
 test -z "$SED" && SED=sed
 Xsed="$SED -e 1s/^X//"
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
@@ -6032,7 +6032,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
 $as_echo "$ac_cv_path_GREP" >&6; }
  GREP="$ac_cv_path_GREP"
-
+ 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
 $as_echo_n "checking for egrep... " >&6; }
@@ -6099,7 +6099,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
 $as_echo "$ac_cv_path_EGREP" >&6; }
  EGREP="$ac_cv_path_EGREP"
-
+ 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
 $as_echo_n "checking for fgrep... " >&6; }
@@ -6166,29 +6166,29 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
 $as_echo "$ac_cv_path_FGREP" >&6; }
  FGREP="$ac_cv_path_FGREP"
-
+ 
 
 test -z "$GREP" && GREP=grep
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
 
 
 
-
-
-
-
-
-
-
-
-
-# Check whether --with-gnu-ld was given.
+@%:@ Check whether --with-gnu-ld was given.
 if test "${with_gnu_ld+set}" = set; then :
   withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
 else
@@ -6294,9 +6294,9 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
 
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
@@ -6466,7 +6466,7 @@ fi
       ;;
     esac
   fi
-
+  
   if test "$DUMPBIN" != ":"; then
     NM="$DUMPBIN"
   fi
@@ -6474,9 +6474,9 @@ fi
 test -z "$NM" && NM=nm
 
 
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
 $as_echo_n "checking the name lister ($NM) interface... " >&6; }
@@ -6652,9 +6652,9 @@ $as_echo "none" >&6; }
 fi
 max_cmd_len=$lt_cv_sys_max_cmd_len
 
-
-
-
+    
+    
+    
 
 
 : ${CP="cp -f"}
@@ -6691,9 +6691,9 @@ else
   lt_unset=false
 fi
 
-
-
-
+    
+    
+    
 
 # test EBCDIC or ASCII
 case `echo X|tr X '\101'` in
@@ -6708,13 +6708,13 @@ case `echo X|tr X '\101'` in
   ;;
 esac
 
+    
+    
+    
 
-
-
-
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
 $as_echo_n "checking how to convert $build file names to $host format... " >&6; }
@@ -6759,9 +6759,9 @@ to_host_file_cmd=$lt_cv_to_host_file_cmd
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
 $as_echo "$lt_cv_to_host_file_cmd" >&6; }
 
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
@@ -6786,9 +6786,9 @@ to_tool_file_cmd=$lt_cv_to_tool_file_cmd
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
 $as_echo "$lt_cv_to_tool_file_cmd" >&6; }
 
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
 $as_echo_n "checking for $LD option to reload object files... " >&6; }
@@ -6820,13 +6820,13 @@ case $host_os in
     ;;
 esac
 
+    
+    
+    
 
-
-
-
-
-
-
+    
+    
+    
 
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
@@ -6922,9 +6922,9 @@ fi
 
 test -z "$OBJDUMP" && OBJDUMP=objdump
 
-
-
-
+    
+    
+    
 
 
 
@@ -7150,24 +7150,24 @@ deplibs_check_method=$lt_cv_deplibs_check_method
 test -z "$deplibs_check_method" && deplibs_check_method=unknown
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 if test -n "$ac_tool_prefix"; then
@@ -7264,9 +7264,9 @@ fi
 
 test -z "$DLLTOOL" && DLLTOOL=dlltool
 
-
-
-
+    
+    
+    
 
 
 
@@ -7306,9 +7306,9 @@ sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
 test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
 
 
-
-
-
+    
+    
+    
 
 
 if test -n "$ac_tool_prefix"; then
@@ -7414,14 +7414,14 @@ fi
 : ${AR=ar}
 : ${AR_FLAGS=cru}
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
@@ -7462,10 +7462,10 @@ if ac_fn_c_try_compile "$LINENO"; then :
         fi
       fi
       rm -f conftest.* libconftest.a
-
+     
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
+  
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
 $as_echo "$lt_cv_ar_at_file" >&6; }
@@ -7476,9 +7476,9 @@ else
   archiver_list_spec=$lt_cv_ar_at_file
 fi
 
-
-
-
+    
+    
+    
 
 
 
@@ -7576,9 +7576,9 @@ fi
 
 test -z "$STRIP" && STRIP=:
 
-
-
-
+    
+    
+    
 
 
 if test -n "$ac_tool_prefix"; then
@@ -7675,9 +7675,9 @@ fi
 
 test -z "$RANLIB" && RANLIB=:
 
-
-
-
+    
+    
+    
 
 
 # Determine commands to create old-style static archives.
@@ -7704,43 +7704,43 @@ case $host_os in
     lock_old_archive_extraction=no ;;
 esac
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
 
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 # If no C compiler was specified, use CC.
 LTCC=${LTCC-"$CC"}
@@ -7758,7 +7758,7 @@ $as_echo_n "checking command to parse $NM output from $compiler object... " >&6;
 if ${lt_cv_sys_global_symbol_pipe+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
+  
 # These are sane defaults that work on at least a few old systems.
 # [They come from Ultrix.  What could be older than Ultrix?!! ;)]
 
@@ -7900,12 +7900,12 @@ _LT_EOF
 #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
 /* DATA imports from DLLs on WIN32 con't be const, because runtime
    relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
+# define LT@&t at _DLSYM_CONST
 #elif defined(__osf__)
 /* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
+# define LT@&t at _DLSYM_CONST
 #else
-# define LT_DLSYM_CONST const
+# define LT@&t at _DLSYM_CONST const
 #endif
 
 #ifdef __cplusplus
@@ -7919,7 +7919,7 @@ _LT_EOF
 	  cat <<_LT_EOF >> conftest.$ac_ext
 
 /* The mapping between symbol names and symbols.  */
-LT_DLSYM_CONST struct {
+LT@&t at _DLSYM_CONST struct {
   const char *name;
   void       *address;
 }
@@ -8002,37 +8002,37 @@ elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
 fi
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
 $as_echo_n "checking for sysroot... " >&6; }
 
-# Check whether --with-sysroot was given.
+@%:@ Check whether --with-sysroot was given.
 if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot;
+  withval=$with_sysroot; 
 else
   with_sysroot=no
 fi
@@ -8060,13 +8060,13 @@ esac
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
 $as_echo "${lt_sysroot:-no}" >&6; }
 
+    
+    
+    
 
-
-
-
-# Check whether --enable-libtool-lock was given.
+@%:@ Check whether --enable-libtool-lock was given.
 if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock;
+  enableval=$enable_libtool_lock; 
 fi
 
 test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
@@ -8396,9 +8396,9 @@ if test "x$lt_cv_path_mainfest_tool" != xyes; then
   MANIFEST_TOOL=:
 fi
 
-
-
-
+    
+    
+    
 
 
   case $host_os in
@@ -8863,30 +8863,30 @@ else
   OTOOL64="$ac_cv_prog_OTOOL64"
 fi
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
+    
 
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
@@ -8953,7 +8953,7 @@ fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 	LDFLAGS="$save_LDFLAGS"
-
+    
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
@@ -8988,7 +8988,7 @@ _LT_EOF
       fi
         rm -f conftest.err libconftest.a conftest conftest.c
         rm -rf conftest.dSYM
-
+    
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
 $as_echo "$lt_cv_ld_force_load" >&6; }
@@ -9056,15 +9056,15 @@ do
   # not just through cpp. "Syntax error" is here to catch this case.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
 		     Syntax error
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
-
+  
 else
   # Broken: fails on valid input.
 continue
@@ -9075,7 +9075,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -9096,7 +9096,7 @@ fi
 
     done
     ac_cv_prog_CPP=$CPP
-
+  
 fi
   CPP=$ac_cv_prog_CPP
 else
@@ -9115,15 +9115,15 @@ do
   # not just through cpp. "Syntax error" is here to catch this case.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
 		     Syntax error
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
-
+  
 else
   # Broken: fails on valid input.
 continue
@@ -9134,7 +9134,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -9150,7 +9150,7 @@ done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
-
+  
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -9201,7 +9201,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "memchr" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -9218,7 +9218,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "free" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -9259,7 +9259,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -9272,8 +9272,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
 $as_echo "$ac_cv_header_stdc" >&6; }
 if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+  
+$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
@@ -9286,9 +9286,9 @@ ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_include
 "
 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -9300,9 +9300,9 @@ do :
 "
 if test "x$ac_cv_header_dlfcn_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
+@%:@define HAVE_DLFCN_H 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -9327,12 +9327,12 @@ func_stripname_cnf ()
 
 
         enable_dlopen=no
-
+  
 
   enable_win32_dll=no
+  
 
-
-            # Check whether --enable-shared was given.
+            @%:@ Check whether --enable-shared was given.
 if test "${enable_shared+set}" = set; then :
   enableval=$enable_shared; p=${PACKAGE-default}
     case $enableval in
@@ -9356,14 +9356,14 @@ else
 fi
 
 
+    
+    
+    
+    
 
 
 
-
-
-
-
-  # Check whether --enable-static was given.
+  @%:@ Check whether --enable-static was given.
 if test "${enable_static+set}" = set; then :
   enableval=$enable_static; p=${PACKAGE-default}
     case $enableval in
@@ -9387,15 +9387,15 @@ else
 fi
 
 
+    
+    
+    
+    
 
 
 
-
-
-
-
-
-# Check whether --with-pic was given.
+  
+@%:@ Check whether --with-pic was given.
 if test "${with_pic+set}" = set; then :
   withval=$with_pic; lt_p=${PACKAGE-default}
     case $withval in
@@ -9421,12 +9421,12 @@ fi
 test -z "$pic_mode" && pic_mode=default
 
 
+    
+    
+    
 
 
-
-
-
-  # Check whether --enable-fast-install was given.
+  @%:@ Check whether --enable-fast-install was given.
 if test "${enable_fast_install+set}" = set; then :
   enableval=$enable_fast_install; p=${PACKAGE-default}
     case $enableval in
@@ -9451,12 +9451,12 @@ fi
 
 
 
+    
+    
+    
 
 
-
-
-
-
+  
 
 
 # This can be used to rebuild libtool when needed
@@ -9467,46 +9467,46 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 test -z "$LN_S" && LN_S="ln -s"
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 if test -n "${ZSH_VERSION+set}" ; then
@@ -9532,12 +9532,12 @@ fi
 $as_echo "$lt_cv_objdir" >&6; }
 objdir=$lt_cv_objdir
 
-
-
-
+    
+    
+    
 
 cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
+@%:@define LT_OBJDIR "$lt_cv_objdir/"
 _ACEOF
 
 
@@ -9651,9 +9651,9 @@ else
 $as_echo "no" >&6; }
 fi
 
-
-
-
+    
+    
+    
 
 if test -z "$lt_cv_path_MAGIC_CMD"; then
   if test -n "$ac_tool_prefix"; then
@@ -9788,7 +9788,7 @@ $RM -r conftest*
 ## the running order or otherwise move them around unless you know exactly
 ## what you are doing...
 if test -n "$compiler"; then
-
+  
 lt_prog_compiler_no_builtin_flag=
 
 if test "$GCC" = yes; then
@@ -9845,9 +9845,9 @@ fi
 
 fi
 
-
-
-
+    
+    
+    
 
 
   lt_prog_compiler_wl=
@@ -10157,7 +10157,7 @@ case $host_os in
     lt_prog_compiler_pic=
     ;;
   *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC"
     ;;
 esac
 
@@ -10184,7 +10184,7 @@ else
   lt_cv_prog_compiler_pic_works=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -10226,15 +10226,15 @@ fi
 
 fi
 
+    
+    
+    
 
 
 
-
-
-
-
-
-
+    
+    
+    
 
 #
 # Check to make sure the static flag actually works.
@@ -10278,9 +10278,9 @@ else
 fi
 
 
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
@@ -10333,9 +10333,9 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
 $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
@@ -10413,9 +10413,9 @@ else
   need_locks=no
 fi
 
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
@@ -10922,7 +10922,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -10941,7 +10941,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath_"; then
     lt_cv_aix_libpath_="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath_
@@ -10975,7 +10975,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -10994,7 +10994,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath_"; then
     lt_cv_aix_libpath_="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath_
@@ -11104,15 +11104,15 @@ fi
       ;;
 
     darwin* | rhapsody*)
-
-
+      
+  
   archive_cmds_need_lc=no
   hardcode_direct=no
   hardcode_automatic=yes
   hardcode_shlibpath_var=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
+    
   else
     whole_archive_flag_spec=''
   fi
@@ -11128,7 +11128,7 @@ fi
     module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
     archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
     module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
+    
   else
   ld_shlibs=no
   fi
@@ -11224,7 +11224,7 @@ fi
 	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-
+	
 	  # Older versions of the 11.00 compiler do not understand -b yet
 	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
 	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
@@ -11582,17 +11582,17 @@ test "$ld_shlibs" = no && can_build_shared=no
 with_gnu_ld=$with_gnu_ld
 
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 #
@@ -11638,181 +11638,181 @@ else
 	  libname=conftest
 	  lt_save_allow_undefined_flag=$allow_undefined_flag
 	  allow_undefined_flag=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc=no
-	  else
-	    lt_cv_archive_cmds_need_lc=yes
-	  fi
-	  allow_undefined_flag=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc=no
+	  else
+	    lt_cv_archive_cmds_need_lc=yes
+	  fi
+	  allow_undefined_flag=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+	
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
@@ -12324,7 +12324,7 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
-
+    
 fi
 
   shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -12566,94 +12566,94 @@ if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
 fi
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
@@ -12694,9 +12694,9 @@ elif test "$shlibpath_overrides_runpath" = yes ||
   enable_fast_install=needless
 fi
 
-
-
-
+    
+    
+    
 
 
   if test "x$enable_dlopen" != xyes; then
@@ -12765,11 +12765,11 @@ $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
 if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
 else
-
+  
     lt_cv_dlopen="dyld"
     lt_cv_dlopen_libs=
     lt_cv_dlopen_self=yes
-
+    
 fi
 
     ;;
@@ -12940,19 +12940,19 @@ if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
   lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
 fi
 
-
+	      
 fi
 
-
+	    
 fi
 
-
+	  
 fi
 
-
+	
 fi
 
-
+      
 fi
 
     ;;
@@ -13074,7 +13074,7 @@ _LT_EOF
 fi
 rm -fr conftest*
 
-
+    
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
 $as_echo "$lt_cv_dlopen_self" >&6; }
@@ -13180,7 +13180,7 @@ _LT_EOF
 fi
 rm -fr conftest*
 
-
+      
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
 $as_echo "$lt_cv_dlopen_self_static" >&6; }
@@ -13203,22 +13203,22 @@ $as_echo "$lt_cv_dlopen_self_static" >&6; }
   esac
 fi
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
+  
 striplib=
 old_striplib=
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
@@ -13249,14 +13249,14 @@ $as_echo "no" >&6; }
   esac
 fi
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 
@@ -13297,7 +13297,7 @@ $as_echo_n "checking whether to build static libraries... " >&6; }
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
 $as_echo "$enable_static" >&6; }
 
-
+  
 
 
 fi
@@ -13368,7 +13368,7 @@ if test "$_lt_disable_F77" != yes; then
 "
 
   # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
+  
 
 
 
@@ -13767,7 +13767,7 @@ case $host_os in
     lt_prog_compiler_pic_F77=
     ;;
   *)
-    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77@&t@"
     ;;
 esac
 
@@ -13794,7 +13794,7 @@ else
   lt_cv_prog_compiler_pic_works_F77=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_F77"
+   lt_compiler_flag="$lt_prog_compiler_pic_F77@&t@"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -14511,7 +14511,7 @@ else
       end
 _ACEOF
 if ac_fn_f77_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -14530,7 +14530,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__F77"; then
     lt_cv_aix_libpath__F77="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__F77
@@ -14558,7 +14558,7 @@ else
       end
 _ACEOF
 if ac_fn_f77_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -14577,7 +14577,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__F77"; then
     lt_cv_aix_libpath__F77="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__F77
@@ -14687,8 +14687,8 @@ fi
       ;;
 
     darwin* | rhapsody*)
-
-
+      
+  
   archive_cmds_need_lc_F77=no
   hardcode_direct_F77=no
   hardcode_automatic_F77=yes
@@ -14711,7 +14711,7 @@ fi
     module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
     archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
     module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
+    
   else
   ld_shlibs_F77=no
   fi
@@ -15189,7 +15189,7 @@ else
 	  cat conftest.err 1>&5
 	fi
 	$RM conftest*
-
+	
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_F77" >&5
 $as_echo "$lt_cv_archive_cmds_need_lc_F77" >&6; }
@@ -15698,7 +15698,7 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
-
+    
 fi
 
   shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -16017,7 +16017,7 @@ fi
 
 
 
-
+    
 
 
   fi # test -n "$compiler"
@@ -16093,7 +16093,7 @@ if test "$_lt_disable_FC" != yes; then
 "
 
   # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
+  
 
 
 
@@ -16320,34 +16320,34 @@ if test -n "${compiler_lib_search_path_FC}"; then
  compiler_lib_search_dirs_FC=`echo " ${compiler_lib_search_path_FC}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
 fi
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
     lt_prog_compiler_wl_FC=
@@ -16657,7 +16657,7 @@ case $host_os in
     lt_prog_compiler_pic_FC=
     ;;
   *)
-    lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC"
+    lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC@&t@"
     ;;
 esac
 
@@ -16684,7 +16684,7 @@ else
   lt_cv_prog_compiler_pic_works_FC=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_FC"
+   lt_compiler_flag="$lt_prog_compiler_pic_FC@&t@"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -17401,7 +17401,7 @@ else
       end
 _ACEOF
 if ac_fn_fc_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -17420,7 +17420,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__FC"; then
     lt_cv_aix_libpath__FC="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__FC
@@ -17448,7 +17448,7 @@ else
       end
 _ACEOF
 if ac_fn_fc_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -17467,7 +17467,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__FC"; then
     lt_cv_aix_libpath__FC="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__FC
@@ -17577,8 +17577,8 @@ fi
       ;;
 
     darwin* | rhapsody*)
-
-
+      
+  
   archive_cmds_need_lc_FC=no
   hardcode_direct_FC=no
   hardcode_automatic_FC=yes
@@ -17601,7 +17601,7 @@ fi
     module_cmds_FC="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
     archive_expsym_cmds_FC="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
     module_expsym_cmds_FC="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
+    
   else
   ld_shlibs_FC=no
   fi
@@ -18079,7 +18079,7 @@ else
 	  cat conftest.err 1>&5
 	fi
 	$RM conftest*
-
+	
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_FC" >&5
 $as_echo "$lt_cv_archive_cmds_need_lc_FC" >&6; }
@@ -18588,7 +18588,7 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
-
+    
 fi
 
   shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -18907,7 +18907,7 @@ fi
 
 
 
-
+    
 
 
   fi # test -n "$compiler"
@@ -18926,8 +18926,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-
+       
+       
 
 
 
@@ -18971,31 +18971,31 @@ case "$CPPFLAGS" in
    *)
       case "$FC" in
          pgf95|pgf90|pgf77|ifort*|lf90|lf95)
-
-$as_echo "#define pgiFortran 1" >>confdefs.h
+            
+$as_echo "@%:@define pgiFortran 1" >>confdefs.h
 
             ;;
           *gfortran)
              if (gfortran --version | grep '(GCC 4.1.' || gfortran --version | grep '(GCC 4.0.'); then
-
-$as_echo "#define gFortran 1" >>confdefs.h
+                
+$as_echo "@%:@define gFortran 1" >>confdefs.h
 
              else
-
-$as_echo "#define pgiFortran 1" >>confdefs.h
+                
+$as_echo "@%:@define pgiFortran 1" >>confdefs.h
 
              fi
              ;;
           *g77)
-
-$as_echo "#define f2cFortran 1" >>confdefs.h
+             
+$as_echo "@%:@define f2cFortran 1" >>confdefs.h
 
              ;;
           *)
              # If it's a gnu compiler, guess f2c.
              if test "x$ac_cv_fc_compiler_gnu" = xyes; then
-
-$as_echo "#define f2cFortran 1" >>confdefs.h
+                
+$as_echo "@%:@define f2cFortran 1" >>confdefs.h
 
              fi
              ;;
@@ -19003,9 +19003,9 @@ $as_echo "#define f2cFortran 1" >>confdefs.h
 esac
 
 # Check to see if any macros must be set to enable large (>2GB) files.
-# Check whether --enable-largefile was given.
+@%:@ Check whether --enable-largefile was given.
 if test "${enable_largefile+set}" = set; then :
-  enableval=$enable_largefile;
+  enableval=$enable_largefile; 
 fi
 
 if test "$enable_largefile" != no; then
@@ -19023,12 +19023,12 @@ else
 	 # so use the C compiler's -n32 option if that helps.
 	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -19069,12 +19069,12 @@ else
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -19092,13 +19092,13 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#define _FILE_OFFSET_BITS 64
-#include <sys/types.h>
+@%:@define _FILE_OFFSET_BITS 64
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -19122,9 +19122,9 @@ fi
 $as_echo "$ac_cv_sys_file_offset_bits" >&6; }
 case $ac_cv_sys_file_offset_bits in #(
   no | unknown) ;;
-  *)
+  *) 
 cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
 _ACEOF
 ;;
 esac
@@ -19138,12 +19138,12 @@ else
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -19161,13 +19161,13 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#define _LARGE_FILES 1
-#include <sys/types.h>
+@%:@define _LARGE_FILES 1
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -19191,16 +19191,16 @@ fi
 $as_echo "$ac_cv_sys_large_files" >&6; }
 case $ac_cv_sys_large_files in #(
   no | unknown) ;;
-  *)
+  *) 
 cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
+@%:@define _LARGE_FILES $ac_cv_sys_large_files
 _ACEOF
 ;;
 esac
 rm -rf conftest*
   fi
 
-
+  
 fi
 
 
@@ -19217,7 +19217,7 @@ ac_cv_prog_f90_uppercase_mod=no
 
 # This will test the f77 compiler, as well as check some fortran types.
 if test "$enable_fortran_type_check" = yes; then
-
+   
     case "${NM-unset}" in
 	unset) for ac_prog in nm
 do
@@ -19313,16 +19313,16 @@ $as_echo_n "checking nm flags... " >&6; }
     esac
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMFLAGS" >&5
 $as_echo "$NMFLAGS" >&6; }
-
+    
 
 
 #    AC_REQUIRE([UD_PROG_FC])
     case "$FC" in
 	'') ;;
 	*)
-
-
-
+	    
+	    
+	    
 	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C-equivalent to Fortran routine \"SUB\"" >&5
 $as_echo_n "checking for C-equivalent to Fortran routine \"SUB\"... " >&6; }
 	    cat >conftest.f <<\EOF
@@ -19360,8 +19360,8 @@ $as_echo "$FCALLSCSUB" >&6; }
     '')
 	;;
     *)
-
-
+	
+	
     for ftype in byte integer*1 "integer(kind=1)" "integer(selected_int_kind(2))"; do
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran \"$ftype\"" >&5
 $as_echo_n "checking for Fortran \"$ftype\"... " >&6; }
@@ -19379,9 +19379,9 @@ EOF
 	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 	    NF_INT1_T=$ftype
-
+	    
 cat >>confdefs.h <<_ACEOF
-#define NF_INT1_T $ftype
+@%:@define NF_INT1_T $ftype
 _ACEOF
 
 	    break
@@ -19392,7 +19392,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+	
     for ftype in integer*2 "integer(kind=2)" "integer(selected_int_kind(4))"; do
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran \"$ftype\"" >&5
 $as_echo_n "checking for Fortran \"$ftype\"... " >&6; }
@@ -19410,9 +19410,9 @@ EOF
 	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 	    NF_INT2_T=$ftype
-
+	    
 cat >>confdefs.h <<_ACEOF
-#define NF_INT2_T $ftype
+@%:@define NF_INT2_T $ftype
 _ACEOF
 
 	    break
@@ -19426,7 +19426,7 @@ $as_echo "no" >&6; }
 
 	case "${NF_INT1_T}" in
 	    '') ;;
-	    *)
+	    *)  
     cat >conftestf.f <<EOF
            $NF_INT1_T values(4)
            data values /-1, -2, -3, -4/
@@ -19471,9 +19471,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT1_IS_C_$cname 1
+@%:@define NF_INT1_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19493,7 +19493,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+		
     cat >conftestf.f <<EOF
            $NF_INT1_T values(4)
            data values /-1, -2, -3, -4/
@@ -19538,9 +19538,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT1_IS_C_$cname 1
+@%:@define NF_INT1_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19560,7 +19560,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+		
     cat >conftestf.f <<EOF
            $NF_INT1_T values(4)
            data values /-1, -2, -3, -4/
@@ -19605,9 +19605,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT1_IS_C_$cname 1
+@%:@define NF_INT1_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19627,7 +19627,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+		
     cat >conftestf.f <<EOF
            $NF_INT1_T values(4)
            data values /-1, -2, -3, -4/
@@ -19672,9 +19672,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT1_IS_C_$cname 1
+@%:@define NF_INT1_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19698,7 +19698,7 @@ $as_echo "no" >&6; }
 	esac
 	case "${NF_INT2_T}" in
 	    '') ;;
-	    *)
+	    *)  
     cat >conftestf.f <<EOF
            $NF_INT2_T values(4)
            data values /-1, -2, -3, -4/
@@ -19743,9 +19743,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT2_IS_C_$cname 1
+@%:@define NF_INT2_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19765,7 +19765,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+		
     cat >conftestf.f <<EOF
            $NF_INT2_T values(4)
            data values /-1, -2, -3, -4/
@@ -19810,9 +19810,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT2_IS_C_$cname 1
+@%:@define NF_INT2_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19832,7 +19832,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+		
     cat >conftestf.f <<EOF
            $NF_INT2_T values(4)
            data values /-1, -2, -3, -4/
@@ -19877,9 +19877,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT2_IS_C_$cname 1
+@%:@define NF_INT2_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19901,7 +19901,7 @@ $as_echo "no" >&6; }
 
 		;;
 	esac
-
+	
     cat >conftestf.f <<EOF
            integer values(4)
            data values /-1, -2, -3, -4/
@@ -19946,9 +19946,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT_IS_C_$cname 1
+@%:@define NF_INT_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19968,7 +19968,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+	
     cat >conftestf.f <<EOF
            real values(4)
            data values /-1, -2, -3, -4/
@@ -20013,9 +20013,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_REAL_IS_C_$cname 1
+@%:@define NF_REAL_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -20035,7 +20035,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+	
     cat >conftestf.f <<EOF
            doubleprecision values(4)
            data values /-1, -2, -3, -4/
@@ -20080,9 +20080,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_DOUBLEPRECISION_IS_C_$cname 1
+@%:@define NF_DOUBLEPRECISION_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -20103,7 +20103,7 @@ $as_echo "no" >&6; }
     rm -f conftest*
 
 
-
+	
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran-equivalent to netCDF \"byte\"" >&5
 $as_echo_n "checking for Fortran-equivalent to netCDF \"byte\"... " >&6; }
     for type in byte integer*1 "integer(kind=1)" "integer(selected_int_kind(2))" integer; do
@@ -20121,9 +20121,9 @@ EOF
 	fi
     done
     rm -f conftest.f conftest.o
-
+    
 cat >>confdefs.h <<_ACEOF
-#define NCBYTE_T $type
+@%:@define NCBYTE_T $type
 _ACEOF
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $type" >&5
@@ -20131,7 +20131,7 @@ $as_echo "$type" >&6; }
     NCBYTE_T=$type
 
 
-
+	
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran-equivalent to netCDF \"short\"" >&5
 $as_echo_n "checking for Fortran-equivalent to netCDF \"short\"... " >&6; }
     for type in integer*2 "integer(kind=2)" "integer(selected_int_kind(4))" integer; do
@@ -20149,9 +20149,9 @@ EOF
 	fi
     done
     rm -f conftest.f conftest.o
-
+    
 cat >>confdefs.h <<_ACEOF
-#define NCSHORT_T $type
+@%:@define NCSHORT_T $type
 _ACEOF
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $type" >&5
@@ -20168,34 +20168,34 @@ $as_echo "$type" >&6; }
       as_fn_error $? "F77 compiler doesn't work, and compiler recovery disabled." "$LINENO" 5
    fi
 else
-   $as_echo "#define NCBYTE_T byte" >>confdefs.h
-
-   $as_echo "#define NCSHORT_T integer*2" >>confdefs.h
-
-   $as_echo "#define NF_INT1_T byte" >>confdefs.h
-
-   $as_echo "#define NF_INT2_T integer*2" >>confdefs.h
+   $as_echo "@%:@define NCBYTE_T byte" >>confdefs.h
 
+   $as_echo "@%:@define NCSHORT_T integer*2" >>confdefs.h
 
-$as_echo "#define NF_INT1_IS_C_SIGNED_CHAR 1" >>confdefs.h
+   $as_echo "@%:@define NF_INT1_T byte" >>confdefs.h
 
+   $as_echo "@%:@define NF_INT2_T integer*2" >>confdefs.h
 
-$as_echo "#define NF_INT2_IS_C_SHORT 1" >>confdefs.h
+   
+$as_echo "@%:@define NF_INT1_IS_C_SIGNED_CHAR 1" >>confdefs.h
 
+   
+$as_echo "@%:@define NF_INT2_IS_C_SHORT 1" >>confdefs.h
 
-$as_echo "#define NF_INT_IS_C_INT 1" >>confdefs.h
+   
+$as_echo "@%:@define NF_INT_IS_C_INT 1" >>confdefs.h
 
+   
+$as_echo "@%:@define NF_REAL_IS_C_FLOAT 1" >>confdefs.h
 
-$as_echo "#define NF_REAL_IS_C_FLOAT 1" >>confdefs.h
-
-
-$as_echo "#define NF_DOUBLEPRECISION_IS_C_DOUBLE 1" >>confdefs.h
+   
+$as_echo "@%:@define NF_DOUBLEPRECISION_IS_C_DOUBLE 1" >>confdefs.h
 
 fi
 
 # Test whether F90 module names get capitalized.
 if test "x$nc_build_f90" = xyes; then
-
+   
 ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
@@ -20249,9 +20249,9 @@ fi
 # Does the user want to run extra example tests
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether extra example tests should be run" >&5
 $as_echo_n "checking whether extra example tests should be run... " >&6; }
-# Check whether --enable-extra-example-tests was given.
+@%:@ Check whether --enable-extra-example-tests was given.
 if test "${enable_extra_example_tests+set}" = set; then :
-  enableval=$enable_extra_example_tests;
+  enableval=$enable_extra_example_tests; 
 fi
 
 test "x$enable_extra_example_tests" = xyes || enable_extra_example_tests=no
@@ -20270,9 +20270,9 @@ fi
 # on mingw.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a win32 DLL is desired" >&5
 $as_echo_n "checking whether a win32 DLL is desired... " >&6; }
-# Check whether --enable-dll was given.
+@%:@ Check whether --enable-dll was given.
 if test "${enable_dll+set}" = set; then :
-  enableval=$enable_dll;
+  enableval=$enable_dll; 
 fi
 
 test "x$enable_dll" = xyes || enable_dll=no
@@ -20287,8 +20287,8 @@ else
 fi
 
 if test "x$enable_dll" = xyes; then
-
-$as_echo "#define DLL_NETCDF 1" >>confdefs.h
+   
+$as_echo "@%:@define DLL_NETCDF 1" >>confdefs.h
 
 fi
 
@@ -20301,9 +20301,9 @@ do :
   ac_fn_c_check_header_mongrel "$LINENO" "netcdf.h" "ac_cv_header_netcdf_h" "$ac_includes_default"
 if test "x$ac_cv_header_netcdf_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_NETCDF_H 1
+@%:@define HAVE_NETCDF_H 1
 _ACEOF
-
+ 
 else
   as_fn_error $? "netcdf.h could not be found. Please set CPPFLAGS." "$LINENO" 5
 fi
@@ -20351,7 +20351,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 done
 if ${ac_cv_search_nc_open+:} false; then :
-
+  
 else
   ac_cv_search_nc_open=no
 fi
@@ -20363,7 +20363,7 @@ $as_echo "$ac_cv_search_nc_open" >&6; }
 ac_res=$ac_cv_search_nc_open
 if test "$ac_res" != no; then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
+  
 fi
 
 
@@ -20374,9 +20374,9 @@ do :
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
 if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 done
 
@@ -20405,8 +20405,8 @@ test "x$ac_cv_func_nc_use_parallel_enabled" = xyes && nc_has_parallel=yes
 #AC_CHECK_FUNC([nc_use_parallel_enabled],[nc_has_parallel=yes])
 
 if test "x$nc_build_v4" = xyes; then
-
-$as_echo "#define USE_NETCDF4 1" >>confdefs.h
+   
+$as_echo "@%:@define USE_NETCDF4 1" >>confdefs.h
 
 fi
 
@@ -20461,20 +20461,20 @@ fi
 
 ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
 if test "x$ac_cv_header_stdlib_h" = xyes; then :
-
+  
 else
-
-$as_echo "#define NO_STDLIB_H /**/" >>confdefs.h
+  
+$as_echo "@%:@define NO_STDLIB_H /**/" >>confdefs.h
 
 fi
 
 
 ac_fn_c_check_header_mongrel "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
 if test "x$ac_cv_header_sys_types_h" = xyes; then :
-
+  
 else
-
-$as_echo "#define NO_SYS_TYPES_H /**/" >>confdefs.h
+  
+$as_echo "@%:@define NO_SYS_TYPES_H /**/" >>confdefs.h
 
 fi
 
@@ -20484,9 +20484,9 @@ do :
   ac_fn_c_check_header_mongrel "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default"
 if test "x$ac_cv_header_sys_param_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_PARAM_H 1
+@%:@define HAVE_SYS_PARAM_H 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -20499,9 +20499,9 @@ do :
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -20540,7 +20540,7 @@ eval ac_res=\$$as_ac_Header
 $as_echo "$ac_res" >&6; }
 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
 _ACEOF
 
 ac_header_dirent=$ac_hdr; break
@@ -20590,7 +20590,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 done
 if ${ac_cv_search_opendir+:} false; then :
-
+  
 else
   ac_cv_search_opendir=no
 fi
@@ -20602,7 +20602,7 @@ $as_echo "$ac_cv_search_opendir" >&6; }
 ac_res=$ac_cv_search_opendir
 if test "$ac_res" != no; then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
+  
 fi
 
 else
@@ -20647,7 +20647,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 done
 if ${ac_cv_search_opendir+:} false; then :
-
+  
 else
   ac_cv_search_opendir=no
 fi
@@ -20659,7 +20659,7 @@ $as_echo "$ac_cv_search_opendir" >&6; }
 ac_res=$ac_cv_search_opendir
 if test "$ac_res" != no; then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
+  
 fi
 
 fi
@@ -20700,7 +20700,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "memchr" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -20717,7 +20717,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "free" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -20758,7 +20758,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -20771,8 +20771,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
 $as_echo "$ac_cv_header_stdc" >&6; }
 if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+  
+$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
@@ -20812,8 +20812,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5
 $as_echo "$ac_cv_header_sys_wait_h" >&6; }
 if test $ac_cv_header_sys_wait_h = yes; then
-
-$as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_SYS_WAIT_H 1" >>confdefs.h
 
 fi
 
@@ -20847,8 +20847,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
 $as_echo "$ac_cv_header_time" >&6; }
 if test $ac_cv_header_time = yes; then
-
-$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
+  
+$as_echo "@%:@define TIME_WITH_SYS_TIME 1" >>confdefs.h
 
 fi
 
@@ -20858,13 +20858,13 @@ do :
   ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
 if test "x$ac_cv_func_vprintf" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_VPRINTF 1
+@%:@define HAVE_VPRINTF 1
 _ACEOF
-
+ 
 ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
 if test "x$ac_cv_func__doprnt" = xyes; then :
-
-$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_DOPRNT 1" >>confdefs.h
 
 fi
 
@@ -20925,7 +20925,7 @@ else
               */
              _Bool q = true;
              _Bool *pq = &q;
-
+           
 int
 main ()
 {
@@ -20936,7 +20936,7 @@ main ()
              /* Refer to every declared value, to avoid compiler optimizations.  */
              return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
                      + !m + !n + !o + !p + !q + !pq);
-
+           
   ;
   return 0;
 }
@@ -20952,9 +20952,9 @@ fi
 $as_echo "$ac_cv_header_stdbool_h" >&6; }
    ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
 if test "x$ac_cv_type__Bool" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE__BOOL 1
+@%:@define HAVE__BOOL 1
 _ACEOF
 
 
@@ -20962,8 +20962,8 @@ fi
 
 
 if test $ac_cv_header_stdbool_h = yes; then
-
-$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_STDBOOL_H 1" >>confdefs.h
 
 fi
 
@@ -20973,11 +20973,11 @@ fi
 #			strcasecmp strtod strtoll strtoull getrlimit gettimeofday fsync MPI_Comm_f2c])
 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
 if test "x$ac_cv_type_size_t" = xyes; then :
-
+  
 else
-
+  
 cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
+@%:@define size_t unsigned int
 _ACEOF
 
 fi
@@ -20991,7 +20991,7 @@ if ${ac_cv_working_alloca_h+:} false; then :
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <alloca.h>
+@%:@include <alloca.h>
 int
 main ()
 {
@@ -21012,8 +21012,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
 $as_echo "$ac_cv_working_alloca_h" >&6; }
 if test $ac_cv_working_alloca_h = yes; then
-
-$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_ALLOCA_H 1" >>confdefs.h
 
 fi
 
@@ -21066,8 +21066,8 @@ fi
 $as_echo "$ac_cv_func_alloca_works" >&6; }
 
 if test $ac_cv_func_alloca_works = yes; then
-
-$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_ALLOCA 1" >>confdefs.h
 
 else
   # The SVR3 libPW and SVR4 libucb both contain incompatible functions
@@ -21077,7 +21077,7 @@ else
 
 ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
 
-$as_echo "#define C_ALLOCA 1" >>confdefs.h
+$as_echo "@%:@define C_ALLOCA 1" >>confdefs.h
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
@@ -21110,9 +21110,9 @@ if test $ac_cv_os_cray = yes; then
     as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
 if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define CRAY_STACKSEG_END $ac_func
+@%:@define CRAY_STACKSEG_END $ac_func
 _ACEOF
 
     break
@@ -21162,7 +21162,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
 $as_echo "$ac_cv_c_stack_direction" >&6; }
 cat >>confdefs.h <<_ACEOF
-#define STACK_DIRECTION $ac_cv_c_stack_direction
+@%:@define STACK_DIRECTION $ac_cv_c_stack_direction
 _ACEOF
 
 
@@ -21173,58 +21173,58 @@ fi
 #UD_CHECK_IEEE
 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
 if test "x$ac_cv_type_size_t" = xyes; then :
-
+  
 else
-
+  
 cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
+@%:@define size_t unsigned int
 _ACEOF
 
 fi
 
 ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
 if test "x$ac_cv_type_off_t" = xyes; then :
-
+  
 else
-
+  
 cat >>confdefs.h <<_ACEOF
-#define off_t long int
+@%:@define off_t long int
 _ACEOF
 
 fi
 
 ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
 if test "x$ac_cv_type_ssize_t" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE_SSIZE_T 1
+@%:@define HAVE_SSIZE_T 1
 _ACEOF
 
 
 fi
 ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
 if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE_PTRDIFF_T 1
+@%:@define HAVE_PTRDIFF_T 1
 _ACEOF
 
 
 fi
 ac_fn_c_check_type "$LINENO" "uchar" "ac_cv_type_uchar" "$ac_includes_default"
 if test "x$ac_cv_type_uchar" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UCHAR 1
+@%:@define HAVE_UCHAR 1
 _ACEOF
 
 
 fi
 ac_fn_c_check_type "$LINENO" "longlong" "ac_cv_type_longlong" "$ac_includes_default"
 if test "x$ac_cv_type_longlong" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE_LONGLONG 1
+@%:@define HAVE_LONGLONG 1
 _ACEOF
 
 
@@ -21241,9 +21241,9 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array [1 - 2 * !(((char) -1) < 0)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(((char) -1) < 0)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -21259,7 +21259,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5
 $as_echo "$ac_cv_c_char_unsigned" >&6; }
 if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then
-  $as_echo "#define __CHAR_UNSIGNED__ 1" >>confdefs.h
+  $as_echo "@%:@define __CHAR_UNSIGNED__ 1" >>confdefs.h
 
 fi
 
@@ -21274,7 +21274,7 @@ if ${ac_cv_sizeof_short+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_short" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21293,7 +21293,7 @@ $as_echo "$ac_cv_sizeof_short" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SHORT $ac_cv_sizeof_short
+@%:@define SIZEOF_SHORT $ac_cv_sizeof_short
 _ACEOF
 
 
@@ -21307,7 +21307,7 @@ if ${ac_cv_sizeof_int+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_int" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21326,7 +21326,7 @@ $as_echo "$ac_cv_sizeof_int" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INT $ac_cv_sizeof_int
+@%:@define SIZEOF_INT $ac_cv_sizeof_int
 _ACEOF
 
 
@@ -21340,7 +21340,7 @@ if ${ac_cv_sizeof_long+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_long" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21359,7 +21359,7 @@ $as_echo "$ac_cv_sizeof_long" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG $ac_cv_sizeof_long
+@%:@define SIZEOF_LONG $ac_cv_sizeof_long
 _ACEOF
 
 
@@ -21373,7 +21373,7 @@ if ${ac_cv_sizeof_float+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (float))" "ac_cv_sizeof_float"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_float" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21392,7 +21392,7 @@ $as_echo "$ac_cv_sizeof_float" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_FLOAT $ac_cv_sizeof_float
+@%:@define SIZEOF_FLOAT $ac_cv_sizeof_float
 _ACEOF
 
 
@@ -21406,7 +21406,7 @@ if ${ac_cv_sizeof_double+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_double" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21425,7 +21425,7 @@ $as_echo "$ac_cv_sizeof_double" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_DOUBLE $ac_cv_sizeof_double
+@%:@define SIZEOF_DOUBLE $ac_cv_sizeof_double
 _ACEOF
 
 
@@ -21439,7 +21439,7 @@ if ${ac_cv_sizeof_off_t+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_off_t" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21458,7 +21458,7 @@ $as_echo "$ac_cv_sizeof_off_t" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_OFF_T $ac_cv_sizeof_off_t
+@%:@define SIZEOF_OFF_T $ac_cv_sizeof_off_t
 _ACEOF
 
 
@@ -21472,7 +21472,7 @@ if ${ac_cv_sizeof_size_t+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_size_t" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21491,7 +21491,7 @@ $as_echo "$ac_cv_sizeof_size_t" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
+@%:@define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
 _ACEOF
 
 
@@ -21505,7 +21505,7 @@ if ${ac_cv_sizeof_ptrdiff_t+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (ptrdiff_t))" "ac_cv_sizeof_ptrdiff_t"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_ptrdiff_t" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21524,12 +21524,12 @@ $as_echo "$ac_cv_sizeof_ptrdiff_t" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_PTRDIFF_T $ac_cv_sizeof_ptrdiff_t
+@%:@define SIZEOF_PTRDIFF_T $ac_cv_sizeof_ptrdiff_t
 _ACEOF
 
 
 if ac_fn_c_compute_int "$LINENO" "sizeof(long long) == sizeof(long)" "longlong_is_long"        ""; then :
-
+  
 else
   longlong_is_long=0
 fi
@@ -21703,7 +21703,7 @@ DEFS=-DHAVE_CONFIG_H
 ac_libobjs=
 ac_ltlibobjs=
 U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+for ac_i in : $LIB@&t at OBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
   ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
@@ -21712,7 +21712,7 @@ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
   as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
 done
-LIBOBJS=$ac_libobjs
+LIB@&t at OBJS=$ac_libobjs
 
 LTLIBOBJS=$ac_ltlibobjs
 
@@ -21842,9 +21842,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in #(
+  case `(set -o) 2>/dev/null` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -21875,7 +21875,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in #(
+      case $arg in @%:@(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -21908,7 +21908,7 @@ IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
-case $0 in #((
+case $0 in @%:@((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -21953,11 +21953,11 @@ export LANGUAGE
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
   as_status=$1; test $as_status -eq 0 && as_status=1
@@ -21967,41 +21967,41 @@ as_fn_error ()
   fi
   $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
-} # as_fn_error
+} @%:@ as_fn_error
 
 
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
 as_fn_set_status ()
 {
   return $1
-} # as_fn_set_status
+} @%:@ as_fn_set_status
 
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
 as_fn_exit ()
 {
   set +e
   as_fn_set_status $1
   exit $1
-} # as_fn_exit
+} @%:@ as_fn_exit
 
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
 as_fn_unset ()
 {
   { eval $1=; unset $1;}
 }
 as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
 if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
   eval 'as_fn_append ()
   {
@@ -22014,11 +22014,11 @@ else
   }
 fi # as_fn_append
 
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
   eval 'as_fn_arith ()
   {
@@ -22078,7 +22078,7 @@ as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
+case `echo -n x` in @%:@(((((
 -n*)
   case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
@@ -22118,9 +22118,9 @@ rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
 
 
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
 as_fn_mkdir_p ()
 {
 
@@ -22164,7 +22164,7 @@ $as_echo X"$as_dir" |
   } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
-} # as_fn_mkdir_p
+} @%:@ as_fn_mkdir_p
 if mkdir -p . 2>/dev/null; then
   as_mkdir_p='mkdir -p "$as_dir"'
 else
@@ -22173,13 +22173,13 @@ else
 fi
 
 
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
 as_fn_executable_p ()
 {
   test -f "$1" && test -x "$1"
-} # as_fn_executable_p
+} @%:@ as_fn_executable_p
 as_test_x='test -x'
 as_executable_p=as_fn_executable_p
 
@@ -22202,7 +22202,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by netCDF-Fortran $as_me 4.4.3, which was
+This file was extended by netCDF-Fortran $as_me 4.4.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -22248,9 +22248,9 @@ Usage: $0 [OPTION]... [TAG]...
                    do not print progress messages
   -d, --debug      don't remove temporary files
       --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
+      --file=FILE[:TEMPLATE] 
                    instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
+      --header=FILE[:TEMPLATE] 
                    instantiate the configuration header FILE
 
 Configuration files:
@@ -22268,7 +22268,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-netCDF-Fortran config.status 4.4.3
+netCDF-Fortran config.status 4.4.4
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -22376,8 +22376,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 exec 5>>config.log
 {
   echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
+  sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
+@%:@@%:@ Running $as_me. @%:@@%:@
 _ASBOX
   $as_echo "$ac_log"
 } >&5
@@ -23462,7 +23462,7 @@ $as_echo X"$_am_arg" |
 	  }
 	  s/.*/./; q'`/stamp-h$_am_stamp_count
  ;;
-
+  
   :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
 $as_echo "$as_me: executing $ac_file commands" >&6;}
  ;;
@@ -23563,8 +23563,8 @@ $as_echo X"$file" |
   done
 }
  ;;
-    "libtool":C)
-
+    "libtool":C) 
+    
     # See if we are running on zsh, and set the options which allow our
     # commands through without removal of \ escapes.
     if test -n "${ZSH_VERSION+set}" ; then
@@ -24032,7 +24032,7 @@ _LT_EOF
     ;;
   esac
 
-
+  
 ltmain="$ac_aux_dir/ltmain.sh"
 
 
diff --git a/configure b/autom4te.cache/output.2
old mode 100755
new mode 100644
similarity index 97%
copy from configure
copy to autom4te.cache/output.2
index 5dc5f7f..546c65a
--- a/configure
+++ b/autom4te.cache/output.2
@@ -1,15 +1,15 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for netCDF-Fortran 4.4.3.
-#
-# Report bugs to <support-netcdf at unidata.ucar.edu>.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+@%:@! /bin/sh
+@%:@ Guess values for system-dependent variables and create Makefiles.
+@%:@ Generated by GNU Autoconf 2.69 for netCDF-Fortran 4.4.4.
+@%:@
+@%:@ Report bugs to <support-netcdf at unidata.ucar.edu>.
+@%:@ 
+@%:@ 
+@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+@%:@ 
+@%:@ 
+@%:@ This configure script is free software; the Free Software Foundation
+@%:@ gives unlimited permission to copy, distribute and modify it.
 ## -------------------- ##
 ## M4sh Initialization. ##
 ## -------------------- ##
@@ -24,9 +24,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in #(
+  case `(set -o) 2>/dev/null` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -57,7 +57,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in #(
+      case $arg in @%:@(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -90,7 +90,7 @@ IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
-case $0 in #((
+case $0 in @%:@((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -145,7 +145,7 @@ export LANGUAGE
 BASH_ENV=/dev/null
 ENV=/dev/null
 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
+case $- in @%:@ ((((
   *v*x* | *x*v* ) as_opts=-vx ;;
   *v* ) as_opts=-v ;;
   *x* ) as_opts=-x ;;
@@ -168,9 +168,9 @@ if test "x$CONFIG_SHELL" = x; then
   alias -g '\${1+\"\$@\"}'='\"\$@\"'
   setopt NO_GLOB_SUBST
 else
-  case \`(set -o) 2>/dev/null\` in #(
+  case \`(set -o) 2>/dev/null\` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -188,7 +188,7 @@ as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
 as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
 as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
 if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
+  
 else
   exitcode=1; echo positional parameters were not saved.
 fi
@@ -213,7 +213,7 @@ else
   as_have_required=no
 fi
   if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
+  
 else
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 as_found=false
@@ -222,7 +222,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   as_found=:
-  case $as_dir in #(
+  case $as_dir in @%:@(
 	 /*)
 	   for as_base in sh bash ksh sh5; do
 	     # Try only shells that exist, to save several forks.
@@ -254,7 +254,7 @@ IFS=$as_save_IFS
 BASH_ENV=/dev/null
 ENV=/dev/null
 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
+case $- in @%:@ ((((
   *v*x* | *x*v* ) as_opts=-vx ;;
   *v* ) as_opts=-v ;;
   *x* ) as_opts=-x ;;
@@ -293,36 +293,36 @@ unset CLICOLOR_FORCE GREP_OPTIONS
 ## --------------------- ##
 ## M4sh Shell Functions. ##
 ## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
 as_fn_unset ()
 {
   { eval $1=; unset $1;}
 }
 as_unset=as_fn_unset
 
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
 as_fn_set_status ()
 {
   return $1
-} # as_fn_set_status
+} @%:@ as_fn_set_status
 
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
 as_fn_exit ()
 {
   set +e
   as_fn_set_status $1
   exit $1
-} # as_fn_exit
+} @%:@ as_fn_exit
 
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
 as_fn_mkdir_p ()
 {
 
@@ -366,21 +366,21 @@ $as_echo X"$as_dir" |
   } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
-} # as_fn_mkdir_p
+} @%:@ as_fn_mkdir_p
 
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
 as_fn_executable_p ()
 {
   test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
+} @%:@ as_fn_executable_p
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
 if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
   eval 'as_fn_append ()
   {
@@ -393,11 +393,11 @@ else
   }
 fi # as_fn_append
 
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
   eval 'as_fn_arith ()
   {
@@ -411,11 +411,11 @@ else
 fi # as_fn_arith
 
 
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
   as_status=$1; test $as_status -eq 0 && as_status=1
@@ -425,7 +425,7 @@ as_fn_error ()
   fi
   $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
-} # as_fn_error
+} @%:@ as_fn_error
 
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
@@ -509,7 +509,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
 }
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
+case `echo -n x` in @%:@(((((
 -n*)
   case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
@@ -581,7 +581,7 @@ ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 ac_default_prefix=/usr/local
 ac_clean_files=
 ac_config_libobj_dir=.
-LIBOBJS=
+LIB@&t at OBJS=
 cross_compiling=no
 subdirs=
 MFLAGS=
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='netCDF-Fortran'
 PACKAGE_TARNAME='netcdf-fortran'
-PACKAGE_VERSION='4.4.3'
-PACKAGE_STRING='netCDF-Fortran 4.4.3'
+PACKAGE_VERSION='4.4.4'
+PACKAGE_STRING='netCDF-Fortran 4.4.4'
 PACKAGE_BUGREPORT='support-netcdf at unidata.ucar.edu'
 PACKAGE_URL=''
 
@@ -635,7 +635,7 @@ ac_includes_default="\
 ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
-LIBOBJS
+LIB@&t at OBJS
 HAS_NC4
 HAS_NC2
 HAS_DAP
@@ -1388,7 +1388,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures netCDF-Fortran 4.4.3 to adapt to many kinds of systems.
+\`configure' configures netCDF-Fortran 4.4.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1410,9 +1410,9 @@ Configuration:
 
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
+                          @<:@@S|@ac_default_prefix@:>@
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
+                          @<:@PREFIX@:>@
 
 By default, \`make install' will install all the files in
 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
@@ -1436,7 +1436,7 @@ Fine tuning of the installation directories:
   --infodir=DIR           info documentation [DATAROOTDIR/info]
   --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
   --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/netcdf-fortran]
+  --docdir=DIR            documentation root @<:@DATAROOTDIR/doc/netcdf-fortran@:>@
   --htmldir=DIR           html documentation [DOCDIR]
   --dvidir=DIR            dvi documentation [DOCDIR]
   --pdfdir=DIR            pdf documentation [DOCDIR]
@@ -1459,7 +1459,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of netCDF-Fortran 4.4.3:";;
+     short | recursive ) echo "Configuration of netCDF-Fortran 4.4.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1469,7 +1469,7 @@ Optional Features:
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --enable-silent-rules   less verbose build output (undo: "make V=1")
   --disable-silent-rules  verbose build output (undo: "make V=0")
-  --enable-maintainer-mode
+  --enable-maintainer-mode 
                           enable make rules and dependencies not useful (and
                           sometimes confusing) to the casual installer
   --enable-valgrind-tests build with valgrind-tests (valgrind is required,
@@ -1485,29 +1485,29 @@ Optional Features:
   --enable-internal-docs  Include documentation of library internals. This is
                           of interest only to those developing the netCDF
                           library.
-  --enable-dependency-tracking
+  --enable-dependency-tracking 
                           do not reject slow dependency extractors
-  --disable-dependency-tracking
+  --disable-dependency-tracking 
                           speeds up one-time build
-  --disable-f03-compiler-check
+  --disable-f03-compiler-check 
                           disable check of ISO_C_BINDING support in Fortran
                           compiler
   --disable-f03           suppress netCDF Fortran 2003 native code
-  --disable-fortran-type-check
+  --disable-fortran-type-check 
                           cause the Fortran type sizes checks to be skipped
-  --enable-large-file-tests
+  --enable-large-file-tests 
                           Run tests which create very large data files (~13 GB
                           disk space required, but it will be recovered when
                           tests are complete). See option --with-temp-large to
                           specify temporary directory
   --enable-benchmarks     Run benchmarks. This is an experimental feature.
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --enable-static[=PKGS]  build static libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
+  --enable-shared@<:@=PKGS@:>@  build shared libraries @<:@default=yes@:>@
+  --enable-static@<:@=PKGS@:>@  build static libraries @<:@default=yes@:>@
+  --enable-fast-install@<:@=PKGS@:>@ 
+                          optimize for fast installation @<:@default=yes@:>@
   --disable-libtool-lock  avoid locking (might break parallel builds)
   --disable-largefile     omit support for large files
-  --enable-extra-example-tests
+  --enable-extra-example-tests 
                           Run extra example tests; requires GNU sed. Ignored
                           if netCDF-4 is not enabled.
   --enable-dll            build a win32 DLL (only works on mingw)
@@ -1515,13 +1515,13 @@ Optional Features:
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-temp-large=<directory>
+  --with-temp-large=<directory> 
                           specify directory where large files (i.e. >2 GB)
                           will be written, if large files tests are run with
                           --enable-large-file-tests
-  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-pic@<:@=PKGS@:>@       try to use only PIC/non-PIC objects @<:@default=use
+                          both@:>@
+  --with-gnu-ld           assume the C compiler uses GNU ld @<:@default=no@:>@
   --with-sysroot=DIR Search for dependent libraries within DIR
                         (or the compiler's sysroot if not specified).
 
@@ -1605,7 +1605,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-netCDF-Fortran configure 4.4.3
+netCDF-Fortran configure 4.4.4
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1619,9 +1619,9 @@ fi
 ## Autoconf initialization. ##
 ## ------------------------ ##
 
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_compile LINENO
+@%:@ --------------------------
+@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_c_try_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1655,11 +1655,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_compile
+} @%:@ ac_fn_c_try_compile
 
-# ac_fn_fc_try_compile LINENO
-# ---------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_fc_try_compile LINENO
+@%:@ ---------------------------
+@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_fc_try_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1693,11 +1693,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_fc_try_compile
+} @%:@ ac_fn_fc_try_compile
 
-# ac_fn_f77_try_compile LINENO
-# ----------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_f77_try_compile LINENO
+@%:@ ----------------------------
+@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_f77_try_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1731,11 +1731,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_f77_try_compile
+} @%:@ ac_fn_f77_try_compile
 
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_link LINENO
+@%:@ -----------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_c_try_link ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1777,12 +1777,12 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_link
+} @%:@ ac_fn_c_try_link
 
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
+@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists and can be compiled using the include files in
+@%:@ INCLUDES, setting the cache variable VAR accordingly.
 ac_fn_c_check_header_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1794,7 +1794,7 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   eval "$3=yes"
@@ -1808,11 +1808,11 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_header_compile
+} @%:@ ac_fn_c_check_header_compile
 
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_cpp LINENO
+@%:@ ----------------------
+@%:@ Try to preprocess conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_c_try_cpp ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1845,12 +1845,12 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_cpp
+} @%:@ ac_fn_c_try_cpp
 
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
+@%:@ ac_fn_c_try_run LINENO
+@%:@ ----------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded. Assumes
+@%:@ that executables *can* be run.
 ac_fn_c_try_run ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1887,11 +1887,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_run
+} @%:@ ac_fn_c_try_run
 
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
+@%:@ ac_fn_c_check_func LINENO FUNC VAR
+@%:@ ----------------------------------
+@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly
 ac_fn_c_check_func ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1954,11 +1954,11 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_func
+} @%:@ ac_fn_c_check_func
 
-# ac_fn_f77_try_link LINENO
-# -------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_f77_try_link LINENO
+@%:@ -------------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_f77_try_link ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2000,11 +2000,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_f77_try_link
+} @%:@ ac_fn_f77_try_link
 
-# ac_fn_fc_try_link LINENO
-# ------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_fc_try_link LINENO
+@%:@ ------------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
 ac_fn_fc_try_link ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2046,13 +2046,13 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_fc_try_link
+} @%:@ ac_fn_fc_try_link
 
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
+@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using
+@%:@ the include files in INCLUDES and setting the cache variable VAR
+@%:@ accordingly.
 ac_fn_c_check_header_mongrel ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2072,7 +2072,7 @@ $as_echo_n "checking $2 usability... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   ac_header_compiler=yes
@@ -2088,7 +2088,7 @@ $as_echo "$ac_header_compiler" >&6; }
 $as_echo_n "checking $2 presence... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   ac_header_preproc=yes
@@ -2137,12 +2137,12 @@ $as_echo "$ac_res" >&6; }
 fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_header_mongrel
+} @%:@ ac_fn_c_check_header_mongrel
 
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
+@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+@%:@ -------------------------------------------
+@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache
+@%:@ variable VAR accordingly.
 ac_fn_c_check_type ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2178,7 +2178,7 @@ if (sizeof (($2)))
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-
+  
 else
   eval "$3=yes"
 fi
@@ -2191,13 +2191,13 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_type
+} @%:@ ac_fn_c_check_type
 
-# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
-# --------------------------------------------
-# Tries to find the compile-time value of EXPR in a program that includes
-# INCLUDES, setting VAR accordingly. Returns whether the value could be
-# computed
+@%:@ ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+@%:@ --------------------------------------------
+@%:@ Tries to find the compile-time value of EXPR in a program that includes
+@%:@ INCLUDES, setting VAR accordingly. Returns whether the value could be
+@%:@ computed
 ac_fn_c_compute_int ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2209,9 +2209,9 @@ $4
 int
 main ()
 {
-static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(($2) >= 0)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -2226,9 +2226,9 @@ $4
 int
 main ()
 {
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(($2) <= $ac_mid)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -2253,9 +2253,9 @@ $4
 int
 main ()
 {
-static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(($2) < 0)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -2270,9 +2270,9 @@ $4
 int
 main ()
 {
-static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(($2) >= $ac_mid)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -2305,9 +2305,9 @@ $4
 int
 main ()
 {
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(($2) <= $ac_mid)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -2320,7 +2320,7 @@ else
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 done
-case $ac_lo in #((
+case $ac_lo in @%:@((
 ?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
 '') ac_retval=1 ;;
 esac
@@ -2330,8 +2330,8 @@ esac
 $4
 static long int longval () { return $2; }
 static unsigned long int ulongval () { return $2; }
-#include <stdio.h>
-#include <stdlib.h>
+@%:@include <stdio.h>
+@%:@include <stdlib.h>
 int
 main ()
 {
@@ -2374,12 +2374,12 @@ rm -f conftest.val
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_compute_int
+} @%:@ ac_fn_c_compute_int
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by netCDF-Fortran $as_me 4.4.3, which was
+It was created by netCDF-Fortran $as_me 4.4.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2585,27 +2585,27 @@ $as_echo "/* confdefs.h */" > confdefs.h
 # Predefined preprocessor variables.
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
+@%:@define PACKAGE_NAME "$PACKAGE_NAME"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
+@%:@define PACKAGE_STRING "$PACKAGE_STRING"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
+@%:@define PACKAGE_URL "$PACKAGE_URL"
 _ACEOF
 
 
@@ -2615,7 +2615,7 @@ ac_site_file1=NONE
 ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
   # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
+  case $CONFIG_SITE in @%:@((
     -*)  ac_site_file1=./$CONFIG_SITE;;
     */*) ac_site_file1=$CONFIG_SITE;;
     *)   ac_site_file1=./$CONFIG_SITE;;
@@ -2730,11 +2730,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # Create the VERSION file, which contains the package version from
 # AC_INIT.
-echo -n 4.4.3>VERSION
+echo -n 4.4.4>VERSION
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF-Fortran 4.4.3" >&5
-$as_echo "$as_me: netCDF-Fortran 4.4.3" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF-Fortran 4.4.4" >&5
+$as_echo "$as_me: netCDF-Fortran 4.4.4" >&6;}
 
 # Keep libtool macros in an m4 directory.
 
@@ -2911,7 +2911,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
+case $as_dir/ in @%:@((
   ./ | .// | /[cC]/* | \
   /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
   ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
@@ -3308,12 +3308,12 @@ else
 fi
 rmdir .tst 2>/dev/null
 
-# Check whether --enable-silent-rules was given.
+@%:@ Check whether --enable-silent-rules was given.
 if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
+  enableval=$enable_silent_rules; 
 fi
 
-case $enable_silent_rules in # (((
+case $enable_silent_rules in @%:@ (((
   yes) AM_DEFAULT_VERBOSITY=0;;
    no) AM_DEFAULT_VERBOSITY=1;;
     *) AM_DEFAULT_VERBOSITY=1;;
@@ -3369,16 +3369,16 @@ fi
 
 # Define the identity of the package.
  PACKAGE='netcdf-fortran'
- VERSION='4.4.3'
+ VERSION='4.4.4'
 
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
+@%:@define PACKAGE "$PACKAGE"
 _ACEOF
 
-
+ 
 cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
+@%:@define VERSION "$VERSION"
 _ACEOF
 
 # Some tools Automake needs.
@@ -3464,7 +3464,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
-    # Check whether --enable-maintainer-mode was given.
+    @%:@ Check whether --enable-maintainer-mode was given.
 if test "${enable_maintainer_mode+set}" = set; then :
   enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
 else
@@ -3482,7 +3482,7 @@ else
 fi
 
   MAINT=$MAINTAINER_MODE_TRUE
-
+  
 
 
 # Check for the existence of this file before proceeding.
@@ -3494,9 +3494,9 @@ $as_echo "$as_me: checking user options" >&6;}
 # Does the user want to run extra tests with valgrind?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether extra valgrind tests should be run" >&5
 $as_echo_n "checking whether extra valgrind tests should be run... " >&6; }
-# Check whether --enable-valgrind-tests was given.
+@%:@ Check whether --enable-valgrind-tests was given.
 if test "${enable_valgrind_tests+set}" = set; then :
-  enableval=$enable_valgrind_tests;
+  enableval=$enable_valgrind_tests; 
 fi
 
 test "x$enable_valgrind_tests" = xyes || enable_valgrind_tests=no
@@ -3506,9 +3506,9 @@ $as_echo "$enable_valgrind_tests" >&6; }
 # Does the user want to run extra parallel tests when parallel netCDF-4 is built?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether parallel IO tests should be run" >&5
 $as_echo_n "checking whether parallel IO tests should be run... " >&6; }
-# Check whether --enable-parallel-tests was given.
+@%:@ Check whether --enable-parallel-tests was given.
 if test "${enable_parallel_tests+set}" = set; then :
-  enableval=$enable_parallel_tests;
+  enableval=$enable_parallel_tests; 
 fi
 
 test "x$enable_parallel_tests" = xyes || enable_parallel_tests=no
@@ -3518,17 +3518,17 @@ $as_echo "$enable_parallel_tests" >&6; }
 # Does the user want to do some extra tests?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether netCDF extra tests should be run (developers only)" >&5
 $as_echo_n "checking whether netCDF extra tests should be run (developers only)... " >&6; }
-# Check whether --enable-extra-tests was given.
+@%:@ Check whether --enable-extra-tests was given.
 if test "${enable_extra_tests+set}" = set; then :
-  enableval=$enable_extra_tests;
+  enableval=$enable_extra_tests; 
 fi
 
 test "x$enable_extra_tests" = xyes || enable_extra_tests=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_extra_tests" >&5
 $as_echo "$enable_extra_tests" >&6; }
 if test "x$enable_extra_tests" = xyes; then
-
-$as_echo "#define EXTRA_TESTS 1" >>confdefs.h
+   
+$as_echo "@%:@define EXTRA_TESTS 1" >>confdefs.h
 
 fi
  if test x$enable_extra_tests = xyes; then
@@ -3543,9 +3543,9 @@ fi
 #####
 # Determine if we want to enable doxygen-generated documentation.
 #####
-# Check whether --enable-doxygen was given.
+@%:@ Check whether --enable-doxygen was given.
 if test "${enable_doxygen+set}" = set; then :
-  enableval=$enable_doxygen;
+  enableval=$enable_doxygen; 
 fi
 
     test "x$enable_doxygen" = xyes || enable_doxygen=no
@@ -3559,17 +3559,17 @@ fi
 
 
 # Does the user want to generate dot-based documentation?
-# Check whether --enable-dot was given.
+@%:@ Check whether --enable-dot was given.
 if test "${enable_dot+set}" = set; then :
-  enableval=$enable_dot;
+  enableval=$enable_dot; 
 fi
 
 	test "x$enable_dot" = xyes || enable_dot=no
 
 # Does the user want to generate internal documentation?
-# Check whether --enable-internal-docs was given.
+@%:@ Check whether --enable-internal-docs was given.
 if test "${enable_internal_docs+set}" = set; then :
-  enableval=$enable_internal_docs;
+  enableval=$enable_internal_docs; 
 fi
 
 test "x$enable_internal_docs" = xyes || enable_internal_docs=no
@@ -3680,7 +3680,7 @@ fi
 # If we have doxygen, and it's enabled, then process the file.
 if test "x$enable_doxygen" != xno; then
    if test -n "$DOXYGEN"; then
-
+        
         ac_config_files="$ac_config_files docs/Doxyfile"
 
    fi
@@ -3872,7 +3872,7 @@ if test $ac_prog_rejected = yes; then
   # We found a bogon in the path, so make sure we never use it.
   set dummy $ac_cv_prog_CC
   shift
-  if test $# != 0; then
+  if test $@%:@ != 0; then
     # We chose a different compiler from the bogus one.
     # However, it has the same basename, so the bogon will be chosen
     # first if we set CC to just the basename; use the full file name.
@@ -4169,7 +4169,7 @@ EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <stdio.h>
+@%:@include <stdio.h>
 int
 main ()
 {
@@ -4350,7 +4350,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-
+  
 else
   ac_c_werror_flag=$ac_save_c_werror_flag
 	 CFLAGS="-g"
@@ -4479,7 +4479,7 @@ $as_echo "unsupported" >&6; } ;;
 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
 if test "x$ac_cv_prog_cc_c89" != xno; then :
-
+  
 fi
 
 ac_ext=c
@@ -4590,9 +4590,9 @@ fi
 $as_echo "$_am_result" >&6; }
 rm -f confinc confmf
 
-# Check whether --enable-dependency-tracking was given.
+@%:@ Check whether --enable-dependency-tracking was given.
 if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
+  enableval=$enable_dependency_tracking; 
 fi
 
 if test "x$enable_dependency_tracking" != xno; then
@@ -4727,7 +4727,7 @@ fi
 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
- if
+ if 
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
   am__fastdepCC_TRUE=
@@ -4816,8 +4816,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
 $as_echo "$ac_cv_c_const" >&6; }
 if test $ac_cv_c_const = no; then
-
-$as_echo "#define const /**/" >>confdefs.h
+  
+$as_echo "@%:@define const /**/" >>confdefs.h
 
 fi
 
@@ -5277,9 +5277,9 @@ nc_build_f03=yes
 # Added to get around NAG evaluation compiler error turning off F03
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Fortran compiler is checked for ISO_C_BINDING support" >&5
 $as_echo_n "checking whether Fortran compiler is checked for ISO_C_BINDING support... " >&6; }
-# Check whether --enable-f03-compiler-check was given.
+@%:@ Check whether --enable-f03-compiler-check was given.
 if test "${enable_f03_compiler_check+set}" = set; then :
-  enableval=$enable_f03_compiler_check;
+  enableval=$enable_f03_compiler_check; 
 fi
 
 test "x$enable_f03_compiler_check" = xno || enable_f03_compiler_check=yes
@@ -5345,8 +5345,8 @@ else
     ac_fcflags_srcext=$ac_cv_fc_srcext_f90
     FCFLAGS_f90=$ac_cv_fc_srcext_f90
   fi
-
-
+  
+  
 fi
 ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
@@ -5383,10 +5383,10 @@ module conftest_module
    write(*,'(a)') 'gotcha!'
    end subroutine conftest_routine
    end module conftest_module
-
+  
 _ACEOF
 if ac_fn_fc_try_compile "$LINENO"; then :
-
+  
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 cd ..
@@ -5400,7 +5400,7 @@ program conftest_program
        use conftest_module
        call conftest_routine
        end program conftest_program
-
+      
 _ACEOF
 if ac_fn_fc_try_compile "$LINENO"; then :
   ax_cv_f90_modflag="$ax_flag"
@@ -5460,8 +5460,8 @@ EOF
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
      nc_f2008_is0_env_additions=yes
-
-$as_echo "#define HAVE_F2008 1" >>confdefs.h
+     
+$as_echo "@%:@define HAVE_F2008 1" >>confdefs.h
 
   else
      nc_f2008_is0_env_additions=no
@@ -5483,8 +5483,8 @@ EOF
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
      nc_ts29113_support=yes
-
-$as_echo "#define HAVE_TS29113_SUPPORT 1" >>confdefs.h
+     
+$as_echo "@%:@define HAVE_TS29113_SUPPORT 1" >>confdefs.h
 
   else
      nc_ts29113_support=no
@@ -5510,9 +5510,9 @@ fi
 ## Do we want to use the fortran 90 wrappers instead of 2003 native code?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether F03 native code is desired" >&5
 $as_echo_n "checking whether F03 native code is desired... " >&6; }
-# Check whether --enable-f03 was given.
+@%:@ Check whether --enable-f03 was given.
 if test "${enable_f03+set}" = set; then :
-  enableval=$enable_f03;
+  enableval=$enable_f03; 
 fi
 
 test "x$enable_f03" = xno || enable_f03=yes
@@ -5539,9 +5539,9 @@ fi
 # Does the user want to check into fortran type information?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fortran type sizes should be checked" >&5
 $as_echo_n "checking whether fortran type sizes should be checked... " >&6; }
-# Check whether --enable-fortran-type-check was given.
+@%:@ Check whether --enable-fortran-type-check was given.
 if test "${enable_fortran_type_check+set}" = set; then :
-  enableval=$enable_fortran_type_check;
+  enableval=$enable_fortran_type_check; 
 fi
 
 test "x$enable_fortran_type_check" = xno || enable_fortran_type_check=yes
@@ -5551,9 +5551,9 @@ $as_echo "$enable_fortran_type_check" >&6; }
 # Does the user want to run tests for large files (> 2GiB)?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether large file (> 2GB) tests should be run" >&5
 $as_echo_n "checking whether large file (> 2GB) tests should be run... " >&6; }
-# Check whether --enable-large-file-tests was given.
+@%:@ Check whether --enable-large-file-tests was given.
 if test "${enable_large_file_tests+set}" = set; then :
-  enableval=$enable_large_file_tests;
+  enableval=$enable_large_file_tests; 
 fi
 
 test "x$enable_large_file_tests" = xyes || enable_large_file_tests=no
@@ -5568,17 +5568,17 @@ else
 fi
 
 if test "x$enable_large_file_tests" = xyes; then
-
-$as_echo "#define LARGE_FILE_TESTS 1" >>confdefs.h
+   
+$as_echo "@%:@define LARGE_FILE_TESTS 1" >>confdefs.h
 
 fi
 
 # Does the user want to run benchmarks?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether benchmarks should be run (experimental)" >&5
 $as_echo_n "checking whether benchmarks should be run (experimental)... " >&6; }
-# Check whether --enable-benchmarks was given.
+@%:@ Check whether --enable-benchmarks was given.
 if test "${enable_benchmarks+set}" = set; then :
-  enableval=$enable_benchmarks;
+  enableval=$enable_benchmarks; 
 fi
 
 test "x$enable_benchmarks" = xyes || enable_benchmarks=no
@@ -5599,7 +5599,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to put large temp files if large file tests are run" >&5
 $as_echo_n "checking where to put large temp files if large file tests are run... " >&6; }
 
-# Check whether --with-temp-large was given.
+@%:@ Check whether --with-temp-large was given.
 if test "${with_temp_large+set}" = set; then :
   withval=$with_temp_large; TEMP_LARGE=$with_temp_large
 fi
@@ -5610,7 +5610,7 @@ $as_echo "$TEMP_LARGE" >&6; }
 #AC_SUBST(TEMP_LARGE)
 
 cat >>confdefs.h <<_ACEOF
-#define TEMP_LARGE "$TEMP_LARGE"
+@%:@define TEMP_LARGE "$TEMP_LARGE"
 _ACEOF
 
 
@@ -5695,8 +5695,8 @@ else
     ac_fcflags_srcext=$ac_cv_fc_srcext_f90
     FCFLAGS_f90=$ac_cv_fc_srcext_f90
   fi
-
-
+  
+  
 fi
 ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
@@ -5709,7 +5709,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-
+     
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking fortran 90 modules inclusion flag" >&5
 $as_echo_n "checking fortran 90 modules inclusion flag... " >&6; }
 if ${ax_cv_f90_modflag+:} false; then :
@@ -5733,10 +5733,10 @@ module conftest_module
    write(*,'(a)') 'gotcha!'
    end subroutine conftest_routine
    end module conftest_module
-
+  
 _ACEOF
 if ac_fn_fc_try_compile "$LINENO"; then :
-
+  
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 cd ..
@@ -5750,7 +5750,7 @@ program conftest_program
        use conftest_module
        call conftest_routine
        end program conftest_program
-
+      
 _ACEOF
 if ac_fn_fc_try_compile "$LINENO"; then :
   ax_cv_f90_modflag="$ax_flag"
@@ -5806,14 +5806,14 @@ esac
 macro_version='2.4.2'
 macro_revision='1.3337'
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 
@@ -5864,7 +5864,7 @@ fi
 # Invoke $ECHO with all args, space-separated.
 func_echo_all ()
 {
-    $ECHO ""
+    $ECHO "" 
 }
 
 case "$ECHO" in
@@ -5879,14 +5879,14 @@ esac
 
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
@@ -5961,14 +5961,14 @@ $as_echo "$ac_cv_path_SED" >&6; }
 test -z "$SED" && SED=sed
 Xsed="$SED -e 1s/^X//"
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
@@ -6032,7 +6032,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
 $as_echo "$ac_cv_path_GREP" >&6; }
  GREP="$ac_cv_path_GREP"
-
+ 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
 $as_echo_n "checking for egrep... " >&6; }
@@ -6099,7 +6099,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
 $as_echo "$ac_cv_path_EGREP" >&6; }
  EGREP="$ac_cv_path_EGREP"
-
+ 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
 $as_echo_n "checking for fgrep... " >&6; }
@@ -6166,29 +6166,29 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
 $as_echo "$ac_cv_path_FGREP" >&6; }
  FGREP="$ac_cv_path_FGREP"
-
+ 
 
 test -z "$GREP" && GREP=grep
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
 
 
 
-
-
-
-
-
-
-
-
-
-# Check whether --with-gnu-ld was given.
+@%:@ Check whether --with-gnu-ld was given.
 if test "${with_gnu_ld+set}" = set; then :
   withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
 else
@@ -6294,9 +6294,9 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
 
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
@@ -6466,7 +6466,7 @@ fi
       ;;
     esac
   fi
-
+  
   if test "$DUMPBIN" != ":"; then
     NM="$DUMPBIN"
   fi
@@ -6474,9 +6474,9 @@ fi
 test -z "$NM" && NM=nm
 
 
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
 $as_echo_n "checking the name lister ($NM) interface... " >&6; }
@@ -6652,9 +6652,9 @@ $as_echo "none" >&6; }
 fi
 max_cmd_len=$lt_cv_sys_max_cmd_len
 
-
-
-
+    
+    
+    
 
 
 : ${CP="cp -f"}
@@ -6691,9 +6691,9 @@ else
   lt_unset=false
 fi
 
-
-
-
+    
+    
+    
 
 # test EBCDIC or ASCII
 case `echo X|tr X '\101'` in
@@ -6708,13 +6708,13 @@ case `echo X|tr X '\101'` in
   ;;
 esac
 
+    
+    
+    
 
-
-
-
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
 $as_echo_n "checking how to convert $build file names to $host format... " >&6; }
@@ -6759,9 +6759,9 @@ to_host_file_cmd=$lt_cv_to_host_file_cmd
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
 $as_echo "$lt_cv_to_host_file_cmd" >&6; }
 
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
@@ -6786,9 +6786,9 @@ to_tool_file_cmd=$lt_cv_to_tool_file_cmd
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
 $as_echo "$lt_cv_to_tool_file_cmd" >&6; }
 
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
 $as_echo_n "checking for $LD option to reload object files... " >&6; }
@@ -6820,13 +6820,13 @@ case $host_os in
     ;;
 esac
 
+    
+    
+    
 
-
-
-
-
-
-
+    
+    
+    
 
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
@@ -6922,9 +6922,9 @@ fi
 
 test -z "$OBJDUMP" && OBJDUMP=objdump
 
-
-
-
+    
+    
+    
 
 
 
@@ -7150,24 +7150,24 @@ deplibs_check_method=$lt_cv_deplibs_check_method
 test -z "$deplibs_check_method" && deplibs_check_method=unknown
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 if test -n "$ac_tool_prefix"; then
@@ -7264,9 +7264,9 @@ fi
 
 test -z "$DLLTOOL" && DLLTOOL=dlltool
 
-
-
-
+    
+    
+    
 
 
 
@@ -7306,9 +7306,9 @@ sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
 test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
 
 
-
-
-
+    
+    
+    
 
 
 if test -n "$ac_tool_prefix"; then
@@ -7414,14 +7414,14 @@ fi
 : ${AR=ar}
 : ${AR_FLAGS=cru}
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
@@ -7462,10 +7462,10 @@ if ac_fn_c_try_compile "$LINENO"; then :
         fi
       fi
       rm -f conftest.* libconftest.a
-
+     
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
+  
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
 $as_echo "$lt_cv_ar_at_file" >&6; }
@@ -7476,9 +7476,9 @@ else
   archiver_list_spec=$lt_cv_ar_at_file
 fi
 
-
-
-
+    
+    
+    
 
 
 
@@ -7576,9 +7576,9 @@ fi
 
 test -z "$STRIP" && STRIP=:
 
-
-
-
+    
+    
+    
 
 
 if test -n "$ac_tool_prefix"; then
@@ -7675,9 +7675,9 @@ fi
 
 test -z "$RANLIB" && RANLIB=:
 
-
-
-
+    
+    
+    
 
 
 # Determine commands to create old-style static archives.
@@ -7704,43 +7704,43 @@ case $host_os in
     lock_old_archive_extraction=no ;;
 esac
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
 
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 # If no C compiler was specified, use CC.
 LTCC=${LTCC-"$CC"}
@@ -7758,7 +7758,7 @@ $as_echo_n "checking command to parse $NM output from $compiler object... " >&6;
 if ${lt_cv_sys_global_symbol_pipe+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
+  
 # These are sane defaults that work on at least a few old systems.
 # [They come from Ultrix.  What could be older than Ultrix?!! ;)]
 
@@ -7900,12 +7900,12 @@ _LT_EOF
 #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
 /* DATA imports from DLLs on WIN32 con't be const, because runtime
    relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
+# define LT@&t at _DLSYM_CONST
 #elif defined(__osf__)
 /* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
+# define LT@&t at _DLSYM_CONST
 #else
-# define LT_DLSYM_CONST const
+# define LT@&t at _DLSYM_CONST const
 #endif
 
 #ifdef __cplusplus
@@ -7919,7 +7919,7 @@ _LT_EOF
 	  cat <<_LT_EOF >> conftest.$ac_ext
 
 /* The mapping between symbol names and symbols.  */
-LT_DLSYM_CONST struct {
+LT@&t at _DLSYM_CONST struct {
   const char *name;
   void       *address;
 }
@@ -8002,37 +8002,37 @@ elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
 fi
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
 $as_echo_n "checking for sysroot... " >&6; }
 
-# Check whether --with-sysroot was given.
+@%:@ Check whether --with-sysroot was given.
 if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot;
+  withval=$with_sysroot; 
 else
   with_sysroot=no
 fi
@@ -8060,13 +8060,13 @@ esac
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
 $as_echo "${lt_sysroot:-no}" >&6; }
 
+    
+    
+    
 
-
-
-
-# Check whether --enable-libtool-lock was given.
+@%:@ Check whether --enable-libtool-lock was given.
 if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock;
+  enableval=$enable_libtool_lock; 
 fi
 
 test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
@@ -8396,9 +8396,9 @@ if test "x$lt_cv_path_mainfest_tool" != xyes; then
   MANIFEST_TOOL=:
 fi
 
-
-
-
+    
+    
+    
 
 
   case $host_os in
@@ -8863,30 +8863,30 @@ else
   OTOOL64="$ac_cv_prog_OTOOL64"
 fi
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
+    
 
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
@@ -8953,7 +8953,7 @@ fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 	LDFLAGS="$save_LDFLAGS"
-
+    
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
@@ -8988,7 +8988,7 @@ _LT_EOF
       fi
         rm -f conftest.err libconftest.a conftest conftest.c
         rm -rf conftest.dSYM
-
+    
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
 $as_echo "$lt_cv_ld_force_load" >&6; }
@@ -9056,15 +9056,15 @@ do
   # not just through cpp. "Syntax error" is here to catch this case.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
 		     Syntax error
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
-
+  
 else
   # Broken: fails on valid input.
 continue
@@ -9075,7 +9075,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -9096,7 +9096,7 @@ fi
 
     done
     ac_cv_prog_CPP=$CPP
-
+  
 fi
   CPP=$ac_cv_prog_CPP
 else
@@ -9115,15 +9115,15 @@ do
   # not just through cpp. "Syntax error" is here to catch this case.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
 		     Syntax error
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
-
+  
 else
   # Broken: fails on valid input.
 continue
@@ -9134,7 +9134,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -9150,7 +9150,7 @@ done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
-
+  
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -9201,7 +9201,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "memchr" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -9218,7 +9218,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "free" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -9259,7 +9259,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -9272,8 +9272,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
 $as_echo "$ac_cv_header_stdc" >&6; }
 if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+  
+$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
@@ -9286,9 +9286,9 @@ ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_include
 "
 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -9300,9 +9300,9 @@ do :
 "
 if test "x$ac_cv_header_dlfcn_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
+@%:@define HAVE_DLFCN_H 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -9327,12 +9327,12 @@ func_stripname_cnf ()
 
 
         enable_dlopen=no
-
+  
 
   enable_win32_dll=no
+  
 
-
-            # Check whether --enable-shared was given.
+            @%:@ Check whether --enable-shared was given.
 if test "${enable_shared+set}" = set; then :
   enableval=$enable_shared; p=${PACKAGE-default}
     case $enableval in
@@ -9356,14 +9356,14 @@ else
 fi
 
 
+    
+    
+    
+    
 
 
 
-
-
-
-
-  # Check whether --enable-static was given.
+  @%:@ Check whether --enable-static was given.
 if test "${enable_static+set}" = set; then :
   enableval=$enable_static; p=${PACKAGE-default}
     case $enableval in
@@ -9387,15 +9387,15 @@ else
 fi
 
 
+    
+    
+    
+    
 
 
 
-
-
-
-
-
-# Check whether --with-pic was given.
+  
+@%:@ Check whether --with-pic was given.
 if test "${with_pic+set}" = set; then :
   withval=$with_pic; lt_p=${PACKAGE-default}
     case $withval in
@@ -9421,12 +9421,12 @@ fi
 test -z "$pic_mode" && pic_mode=default
 
 
+    
+    
+    
 
 
-
-
-
-  # Check whether --enable-fast-install was given.
+  @%:@ Check whether --enable-fast-install was given.
 if test "${enable_fast_install+set}" = set; then :
   enableval=$enable_fast_install; p=${PACKAGE-default}
     case $enableval in
@@ -9451,12 +9451,12 @@ fi
 
 
 
+    
+    
+    
 
 
-
-
-
-
+  
 
 
 # This can be used to rebuild libtool when needed
@@ -9467,46 +9467,46 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 test -z "$LN_S" && LN_S="ln -s"
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 if test -n "${ZSH_VERSION+set}" ; then
@@ -9532,12 +9532,12 @@ fi
 $as_echo "$lt_cv_objdir" >&6; }
 objdir=$lt_cv_objdir
 
-
-
-
+    
+    
+    
 
 cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
+@%:@define LT_OBJDIR "$lt_cv_objdir/"
 _ACEOF
 
 
@@ -9651,9 +9651,9 @@ else
 $as_echo "no" >&6; }
 fi
 
-
-
-
+    
+    
+    
 
 if test -z "$lt_cv_path_MAGIC_CMD"; then
   if test -n "$ac_tool_prefix"; then
@@ -9788,7 +9788,7 @@ $RM -r conftest*
 ## the running order or otherwise move them around unless you know exactly
 ## what you are doing...
 if test -n "$compiler"; then
-
+  
 lt_prog_compiler_no_builtin_flag=
 
 if test "$GCC" = yes; then
@@ -9845,9 +9845,9 @@ fi
 
 fi
 
-
-
-
+    
+    
+    
 
 
   lt_prog_compiler_wl=
@@ -10157,7 +10157,7 @@ case $host_os in
     lt_prog_compiler_pic=
     ;;
   *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC"
     ;;
 esac
 
@@ -10184,7 +10184,7 @@ else
   lt_cv_prog_compiler_pic_works=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -10226,15 +10226,15 @@ fi
 
 fi
 
+    
+    
+    
 
 
 
-
-
-
-
-
-
+    
+    
+    
 
 #
 # Check to make sure the static flag actually works.
@@ -10278,9 +10278,9 @@ else
 fi
 
 
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
@@ -10333,9 +10333,9 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
 $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
@@ -10413,9 +10413,9 @@ else
   need_locks=no
 fi
 
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
@@ -10922,7 +10922,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -10941,7 +10941,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath_"; then
     lt_cv_aix_libpath_="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath_
@@ -10975,7 +10975,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -10994,7 +10994,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath_"; then
     lt_cv_aix_libpath_="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath_
@@ -11104,15 +11104,15 @@ fi
       ;;
 
     darwin* | rhapsody*)
-
-
+      
+  
   archive_cmds_need_lc=no
   hardcode_direct=no
   hardcode_automatic=yes
   hardcode_shlibpath_var=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
+    
   else
     whole_archive_flag_spec=''
   fi
@@ -11128,7 +11128,7 @@ fi
     module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
     archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
     module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
+    
   else
   ld_shlibs=no
   fi
@@ -11224,7 +11224,7 @@ fi
 	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-
+	
 	  # Older versions of the 11.00 compiler do not understand -b yet
 	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
 	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
@@ -11582,17 +11582,17 @@ test "$ld_shlibs" = no && can_build_shared=no
 with_gnu_ld=$with_gnu_ld
 
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 #
@@ -11638,181 +11638,181 @@ else
 	  libname=conftest
 	  lt_save_allow_undefined_flag=$allow_undefined_flag
 	  allow_undefined_flag=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc=no
-	  else
-	    lt_cv_archive_cmds_need_lc=yes
-	  fi
-	  allow_undefined_flag=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc=no
+	  else
+	    lt_cv_archive_cmds_need_lc=yes
+	  fi
+	  allow_undefined_flag=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+	
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
@@ -12324,7 +12324,7 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
-
+    
 fi
 
   shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -12566,94 +12566,94 @@ if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
 fi
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
@@ -12694,9 +12694,9 @@ elif test "$shlibpath_overrides_runpath" = yes ||
   enable_fast_install=needless
 fi
 
-
-
-
+    
+    
+    
 
 
   if test "x$enable_dlopen" != xyes; then
@@ -12765,11 +12765,11 @@ $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
 if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
 else
-
+  
     lt_cv_dlopen="dyld"
     lt_cv_dlopen_libs=
     lt_cv_dlopen_self=yes
-
+    
 fi
 
     ;;
@@ -12940,19 +12940,19 @@ if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
   lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
 fi
 
-
+	      
 fi
 
-
+	    
 fi
 
-
+	  
 fi
 
-
+	
 fi
 
-
+      
 fi
 
     ;;
@@ -13074,7 +13074,7 @@ _LT_EOF
 fi
 rm -fr conftest*
 
-
+    
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
 $as_echo "$lt_cv_dlopen_self" >&6; }
@@ -13180,7 +13180,7 @@ _LT_EOF
 fi
 rm -fr conftest*
 
-
+      
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
 $as_echo "$lt_cv_dlopen_self_static" >&6; }
@@ -13203,22 +13203,22 @@ $as_echo "$lt_cv_dlopen_self_static" >&6; }
   esac
 fi
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
+  
 striplib=
 old_striplib=
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
@@ -13249,14 +13249,14 @@ $as_echo "no" >&6; }
   esac
 fi
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 
@@ -13297,7 +13297,7 @@ $as_echo_n "checking whether to build static libraries... " >&6; }
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
 $as_echo "$enable_static" >&6; }
 
-
+  
 
 
 fi
@@ -13368,7 +13368,7 @@ if test "$_lt_disable_F77" != yes; then
 "
 
   # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
+  
 
 
 
@@ -13767,7 +13767,7 @@ case $host_os in
     lt_prog_compiler_pic_F77=
     ;;
   *)
-    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77@&t@"
     ;;
 esac
 
@@ -13794,7 +13794,7 @@ else
   lt_cv_prog_compiler_pic_works_F77=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_F77"
+   lt_compiler_flag="$lt_prog_compiler_pic_F77@&t@"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -14511,7 +14511,7 @@ else
       end
 _ACEOF
 if ac_fn_f77_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -14530,7 +14530,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__F77"; then
     lt_cv_aix_libpath__F77="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__F77
@@ -14558,7 +14558,7 @@ else
       end
 _ACEOF
 if ac_fn_f77_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -14577,7 +14577,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__F77"; then
     lt_cv_aix_libpath__F77="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__F77
@@ -14687,8 +14687,8 @@ fi
       ;;
 
     darwin* | rhapsody*)
-
-
+      
+  
   archive_cmds_need_lc_F77=no
   hardcode_direct_F77=no
   hardcode_automatic_F77=yes
@@ -14711,7 +14711,7 @@ fi
     module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
     archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
     module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
+    
   else
   ld_shlibs_F77=no
   fi
@@ -15189,7 +15189,7 @@ else
 	  cat conftest.err 1>&5
 	fi
 	$RM conftest*
-
+	
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_F77" >&5
 $as_echo "$lt_cv_archive_cmds_need_lc_F77" >&6; }
@@ -15698,7 +15698,7 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
-
+    
 fi
 
   shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -16017,7 +16017,7 @@ fi
 
 
 
-
+    
 
 
   fi # test -n "$compiler"
@@ -16093,7 +16093,7 @@ if test "$_lt_disable_FC" != yes; then
 "
 
   # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
+  
 
 
 
@@ -16320,34 +16320,34 @@ if test -n "${compiler_lib_search_path_FC}"; then
  compiler_lib_search_dirs_FC=`echo " ${compiler_lib_search_path_FC}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
 fi
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
     lt_prog_compiler_wl_FC=
@@ -16657,7 +16657,7 @@ case $host_os in
     lt_prog_compiler_pic_FC=
     ;;
   *)
-    lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC"
+    lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC@&t@"
     ;;
 esac
 
@@ -16684,7 +16684,7 @@ else
   lt_cv_prog_compiler_pic_works_FC=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_FC"
+   lt_compiler_flag="$lt_prog_compiler_pic_FC@&t@"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -17401,7 +17401,7 @@ else
       end
 _ACEOF
 if ac_fn_fc_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -17420,7 +17420,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__FC"; then
     lt_cv_aix_libpath__FC="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__FC
@@ -17448,7 +17448,7 @@ else
       end
 _ACEOF
 if ac_fn_fc_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -17467,7 +17467,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__FC"; then
     lt_cv_aix_libpath__FC="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__FC
@@ -17577,8 +17577,8 @@ fi
       ;;
 
     darwin* | rhapsody*)
-
-
+      
+  
   archive_cmds_need_lc_FC=no
   hardcode_direct_FC=no
   hardcode_automatic_FC=yes
@@ -17601,7 +17601,7 @@ fi
     module_cmds_FC="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
     archive_expsym_cmds_FC="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
     module_expsym_cmds_FC="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
+    
   else
   ld_shlibs_FC=no
   fi
@@ -18079,7 +18079,7 @@ else
 	  cat conftest.err 1>&5
 	fi
 	$RM conftest*
-
+	
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_FC" >&5
 $as_echo "$lt_cv_archive_cmds_need_lc_FC" >&6; }
@@ -18588,7 +18588,7 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
-
+    
 fi
 
   shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -18907,7 +18907,7 @@ fi
 
 
 
-
+    
 
 
   fi # test -n "$compiler"
@@ -18926,8 +18926,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-
+       
+       
 
 
 
@@ -18971,31 +18971,31 @@ case "$CPPFLAGS" in
    *)
       case "$FC" in
          pgf95|pgf90|pgf77|ifort*|lf90|lf95)
-
-$as_echo "#define pgiFortran 1" >>confdefs.h
+            
+$as_echo "@%:@define pgiFortran 1" >>confdefs.h
 
             ;;
           *gfortran)
              if (gfortran --version | grep '(GCC 4.1.' || gfortran --version | grep '(GCC 4.0.'); then
-
-$as_echo "#define gFortran 1" >>confdefs.h
+                
+$as_echo "@%:@define gFortran 1" >>confdefs.h
 
              else
-
-$as_echo "#define pgiFortran 1" >>confdefs.h
+                
+$as_echo "@%:@define pgiFortran 1" >>confdefs.h
 
              fi
              ;;
           *g77)
-
-$as_echo "#define f2cFortran 1" >>confdefs.h
+             
+$as_echo "@%:@define f2cFortran 1" >>confdefs.h
 
              ;;
           *)
              # If it's a gnu compiler, guess f2c.
              if test "x$ac_cv_fc_compiler_gnu" = xyes; then
-
-$as_echo "#define f2cFortran 1" >>confdefs.h
+                
+$as_echo "@%:@define f2cFortran 1" >>confdefs.h
 
              fi
              ;;
@@ -19003,9 +19003,9 @@ $as_echo "#define f2cFortran 1" >>confdefs.h
 esac
 
 # Check to see if any macros must be set to enable large (>2GB) files.
-# Check whether --enable-largefile was given.
+@%:@ Check whether --enable-largefile was given.
 if test "${enable_largefile+set}" = set; then :
-  enableval=$enable_largefile;
+  enableval=$enable_largefile; 
 fi
 
 if test "$enable_largefile" != no; then
@@ -19023,12 +19023,12 @@ else
 	 # so use the C compiler's -n32 option if that helps.
 	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -19069,12 +19069,12 @@ else
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -19092,13 +19092,13 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#define _FILE_OFFSET_BITS 64
-#include <sys/types.h>
+@%:@define _FILE_OFFSET_BITS 64
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -19122,9 +19122,9 @@ fi
 $as_echo "$ac_cv_sys_file_offset_bits" >&6; }
 case $ac_cv_sys_file_offset_bits in #(
   no | unknown) ;;
-  *)
+  *) 
 cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
 _ACEOF
 ;;
 esac
@@ -19138,12 +19138,12 @@ else
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -19161,13 +19161,13 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#define _LARGE_FILES 1
-#include <sys/types.h>
+@%:@define _LARGE_FILES 1
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -19191,16 +19191,16 @@ fi
 $as_echo "$ac_cv_sys_large_files" >&6; }
 case $ac_cv_sys_large_files in #(
   no | unknown) ;;
-  *)
+  *) 
 cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
+@%:@define _LARGE_FILES $ac_cv_sys_large_files
 _ACEOF
 ;;
 esac
 rm -rf conftest*
   fi
 
-
+  
 fi
 
 
@@ -19217,7 +19217,7 @@ ac_cv_prog_f90_uppercase_mod=no
 
 # This will test the f77 compiler, as well as check some fortran types.
 if test "$enable_fortran_type_check" = yes; then
-
+   
     case "${NM-unset}" in
 	unset) for ac_prog in nm
 do
@@ -19313,16 +19313,16 @@ $as_echo_n "checking nm flags... " >&6; }
     esac
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMFLAGS" >&5
 $as_echo "$NMFLAGS" >&6; }
-
+    
 
 
 #    AC_REQUIRE([UD_PROG_FC])
     case "$FC" in
 	'') ;;
 	*)
-
-
-
+	    
+	    
+	    
 	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C-equivalent to Fortran routine \"SUB\"" >&5
 $as_echo_n "checking for C-equivalent to Fortran routine \"SUB\"... " >&6; }
 	    cat >conftest.f <<\EOF
@@ -19360,8 +19360,8 @@ $as_echo "$FCALLSCSUB" >&6; }
     '')
 	;;
     *)
-
-
+	
+	
     for ftype in byte integer*1 "integer(kind=1)" "integer(selected_int_kind(2))"; do
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran \"$ftype\"" >&5
 $as_echo_n "checking for Fortran \"$ftype\"... " >&6; }
@@ -19379,9 +19379,9 @@ EOF
 	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 	    NF_INT1_T=$ftype
-
+	    
 cat >>confdefs.h <<_ACEOF
-#define NF_INT1_T $ftype
+@%:@define NF_INT1_T $ftype
 _ACEOF
 
 	    break
@@ -19392,7 +19392,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+	
     for ftype in integer*2 "integer(kind=2)" "integer(selected_int_kind(4))"; do
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran \"$ftype\"" >&5
 $as_echo_n "checking for Fortran \"$ftype\"... " >&6; }
@@ -19410,9 +19410,9 @@ EOF
 	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 	    NF_INT2_T=$ftype
-
+	    
 cat >>confdefs.h <<_ACEOF
-#define NF_INT2_T $ftype
+@%:@define NF_INT2_T $ftype
 _ACEOF
 
 	    break
@@ -19426,7 +19426,7 @@ $as_echo "no" >&6; }
 
 	case "${NF_INT1_T}" in
 	    '') ;;
-	    *)
+	    *)  
     cat >conftestf.f <<EOF
            $NF_INT1_T values(4)
            data values /-1, -2, -3, -4/
@@ -19471,9 +19471,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT1_IS_C_$cname 1
+@%:@define NF_INT1_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19493,7 +19493,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+		
     cat >conftestf.f <<EOF
            $NF_INT1_T values(4)
            data values /-1, -2, -3, -4/
@@ -19538,9 +19538,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT1_IS_C_$cname 1
+@%:@define NF_INT1_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19560,7 +19560,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+		
     cat >conftestf.f <<EOF
            $NF_INT1_T values(4)
            data values /-1, -2, -3, -4/
@@ -19605,9 +19605,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT1_IS_C_$cname 1
+@%:@define NF_INT1_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19627,7 +19627,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+		
     cat >conftestf.f <<EOF
            $NF_INT1_T values(4)
            data values /-1, -2, -3, -4/
@@ -19672,9 +19672,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT1_IS_C_$cname 1
+@%:@define NF_INT1_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19698,7 +19698,7 @@ $as_echo "no" >&6; }
 	esac
 	case "${NF_INT2_T}" in
 	    '') ;;
-	    *)
+	    *)  
     cat >conftestf.f <<EOF
            $NF_INT2_T values(4)
            data values /-1, -2, -3, -4/
@@ -19743,9 +19743,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT2_IS_C_$cname 1
+@%:@define NF_INT2_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19765,7 +19765,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+		
     cat >conftestf.f <<EOF
            $NF_INT2_T values(4)
            data values /-1, -2, -3, -4/
@@ -19810,9 +19810,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT2_IS_C_$cname 1
+@%:@define NF_INT2_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19832,7 +19832,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+		
     cat >conftestf.f <<EOF
            $NF_INT2_T values(4)
            data values /-1, -2, -3, -4/
@@ -19877,9 +19877,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT2_IS_C_$cname 1
+@%:@define NF_INT2_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19901,7 +19901,7 @@ $as_echo "no" >&6; }
 
 		;;
 	esac
-
+	
     cat >conftestf.f <<EOF
            integer values(4)
            data values /-1, -2, -3, -4/
@@ -19946,9 +19946,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_INT_IS_C_$cname 1
+@%:@define NF_INT_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -19968,7 +19968,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+	
     cat >conftestf.f <<EOF
            real values(4)
            data values /-1, -2, -3, -4/
@@ -20013,9 +20013,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_REAL_IS_C_$cname 1
+@%:@define NF_REAL_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -20035,7 +20035,7 @@ $as_echo "no" >&6; }
     done
     rm -f conftest*
 
-
+	
     cat >conftestf.f <<EOF
            doubleprecision values(4)
            data values /-1, -2, -3, -4/
@@ -20080,9 +20080,9 @@ EOF
 $as_echo "yes" >&6; }
 		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
 			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-
+		        
 cat >>confdefs.h <<_ACEOF
-#define NF_DOUBLEPRECISION_IS_C_$cname 1
+@%:@define NF_DOUBLEPRECISION_IS_C_$cname 1
 _ACEOF
 
 		        break
@@ -20103,7 +20103,7 @@ $as_echo "no" >&6; }
     rm -f conftest*
 
 
-
+	
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran-equivalent to netCDF \"byte\"" >&5
 $as_echo_n "checking for Fortran-equivalent to netCDF \"byte\"... " >&6; }
     for type in byte integer*1 "integer(kind=1)" "integer(selected_int_kind(2))" integer; do
@@ -20121,9 +20121,9 @@ EOF
 	fi
     done
     rm -f conftest.f conftest.o
-
+    
 cat >>confdefs.h <<_ACEOF
-#define NCBYTE_T $type
+@%:@define NCBYTE_T $type
 _ACEOF
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $type" >&5
@@ -20131,7 +20131,7 @@ $as_echo "$type" >&6; }
     NCBYTE_T=$type
 
 
-
+	
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran-equivalent to netCDF \"short\"" >&5
 $as_echo_n "checking for Fortran-equivalent to netCDF \"short\"... " >&6; }
     for type in integer*2 "integer(kind=2)" "integer(selected_int_kind(4))" integer; do
@@ -20149,9 +20149,9 @@ EOF
 	fi
     done
     rm -f conftest.f conftest.o
-
+    
 cat >>confdefs.h <<_ACEOF
-#define NCSHORT_T $type
+@%:@define NCSHORT_T $type
 _ACEOF
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $type" >&5
@@ -20168,34 +20168,34 @@ $as_echo "$type" >&6; }
       as_fn_error $? "F77 compiler doesn't work, and compiler recovery disabled." "$LINENO" 5
    fi
 else
-   $as_echo "#define NCBYTE_T byte" >>confdefs.h
-
-   $as_echo "#define NCSHORT_T integer*2" >>confdefs.h
-
-   $as_echo "#define NF_INT1_T byte" >>confdefs.h
-
-   $as_echo "#define NF_INT2_T integer*2" >>confdefs.h
+   $as_echo "@%:@define NCBYTE_T byte" >>confdefs.h
 
+   $as_echo "@%:@define NCSHORT_T integer*2" >>confdefs.h
 
-$as_echo "#define NF_INT1_IS_C_SIGNED_CHAR 1" >>confdefs.h
+   $as_echo "@%:@define NF_INT1_T byte" >>confdefs.h
 
+   $as_echo "@%:@define NF_INT2_T integer*2" >>confdefs.h
 
-$as_echo "#define NF_INT2_IS_C_SHORT 1" >>confdefs.h
+   
+$as_echo "@%:@define NF_INT1_IS_C_SIGNED_CHAR 1" >>confdefs.h
 
+   
+$as_echo "@%:@define NF_INT2_IS_C_SHORT 1" >>confdefs.h
 
-$as_echo "#define NF_INT_IS_C_INT 1" >>confdefs.h
+   
+$as_echo "@%:@define NF_INT_IS_C_INT 1" >>confdefs.h
 
+   
+$as_echo "@%:@define NF_REAL_IS_C_FLOAT 1" >>confdefs.h
 
-$as_echo "#define NF_REAL_IS_C_FLOAT 1" >>confdefs.h
-
-
-$as_echo "#define NF_DOUBLEPRECISION_IS_C_DOUBLE 1" >>confdefs.h
+   
+$as_echo "@%:@define NF_DOUBLEPRECISION_IS_C_DOUBLE 1" >>confdefs.h
 
 fi
 
 # Test whether F90 module names get capitalized.
 if test "x$nc_build_f90" = xyes; then
-
+   
 ac_ext=${ac_fc_srcext-f}
 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
@@ -20249,9 +20249,9 @@ fi
 # Does the user want to run extra example tests
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether extra example tests should be run" >&5
 $as_echo_n "checking whether extra example tests should be run... " >&6; }
-# Check whether --enable-extra-example-tests was given.
+@%:@ Check whether --enable-extra-example-tests was given.
 if test "${enable_extra_example_tests+set}" = set; then :
-  enableval=$enable_extra_example_tests;
+  enableval=$enable_extra_example_tests; 
 fi
 
 test "x$enable_extra_example_tests" = xyes || enable_extra_example_tests=no
@@ -20270,9 +20270,9 @@ fi
 # on mingw.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a win32 DLL is desired" >&5
 $as_echo_n "checking whether a win32 DLL is desired... " >&6; }
-# Check whether --enable-dll was given.
+@%:@ Check whether --enable-dll was given.
 if test "${enable_dll+set}" = set; then :
-  enableval=$enable_dll;
+  enableval=$enable_dll; 
 fi
 
 test "x$enable_dll" = xyes || enable_dll=no
@@ -20287,8 +20287,8 @@ else
 fi
 
 if test "x$enable_dll" = xyes; then
-
-$as_echo "#define DLL_NETCDF 1" >>confdefs.h
+   
+$as_echo "@%:@define DLL_NETCDF 1" >>confdefs.h
 
 fi
 
@@ -20301,9 +20301,9 @@ do :
   ac_fn_c_check_header_mongrel "$LINENO" "netcdf.h" "ac_cv_header_netcdf_h" "$ac_includes_default"
 if test "x$ac_cv_header_netcdf_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_NETCDF_H 1
+@%:@define HAVE_NETCDF_H 1
 _ACEOF
-
+ 
 else
   as_fn_error $? "netcdf.h could not be found. Please set CPPFLAGS." "$LINENO" 5
 fi
@@ -20351,7 +20351,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 done
 if ${ac_cv_search_nc_open+:} false; then :
-
+  
 else
   ac_cv_search_nc_open=no
 fi
@@ -20363,7 +20363,7 @@ $as_echo "$ac_cv_search_nc_open" >&6; }
 ac_res=$ac_cv_search_nc_open
 if test "$ac_res" != no; then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
+  
 fi
 
 
@@ -20374,9 +20374,9 @@ do :
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
 if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 done
 
@@ -20405,8 +20405,8 @@ test "x$ac_cv_func_nc_use_parallel_enabled" = xyes && nc_has_parallel=yes
 #AC_CHECK_FUNC([nc_use_parallel_enabled],[nc_has_parallel=yes])
 
 if test "x$nc_build_v4" = xyes; then
-
-$as_echo "#define USE_NETCDF4 1" >>confdefs.h
+   
+$as_echo "@%:@define USE_NETCDF4 1" >>confdefs.h
 
 fi
 
@@ -20461,20 +20461,20 @@ fi
 
 ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
 if test "x$ac_cv_header_stdlib_h" = xyes; then :
-
+  
 else
-
-$as_echo "#define NO_STDLIB_H /**/" >>confdefs.h
+  
+$as_echo "@%:@define NO_STDLIB_H /**/" >>confdefs.h
 
 fi
 
 
 ac_fn_c_check_header_mongrel "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
 if test "x$ac_cv_header_sys_types_h" = xyes; then :
-
+  
 else
-
-$as_echo "#define NO_SYS_TYPES_H /**/" >>confdefs.h
+  
+$as_echo "@%:@define NO_SYS_TYPES_H /**/" >>confdefs.h
 
 fi
 
@@ -20484,9 +20484,9 @@ do :
   ac_fn_c_check_header_mongrel "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default"
 if test "x$ac_cv_header_sys_param_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_PARAM_H 1
+@%:@define HAVE_SYS_PARAM_H 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -20499,9 +20499,9 @@ do :
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -20540,7 +20540,7 @@ eval ac_res=\$$as_ac_Header
 $as_echo "$ac_res" >&6; }
 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
 _ACEOF
 
 ac_header_dirent=$ac_hdr; break
@@ -20590,7 +20590,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 done
 if ${ac_cv_search_opendir+:} false; then :
-
+  
 else
   ac_cv_search_opendir=no
 fi
@@ -20602,7 +20602,7 @@ $as_echo "$ac_cv_search_opendir" >&6; }
 ac_res=$ac_cv_search_opendir
 if test "$ac_res" != no; then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
+  
 fi
 
 else
@@ -20647,7 +20647,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 done
 if ${ac_cv_search_opendir+:} false; then :
-
+  
 else
   ac_cv_search_opendir=no
 fi
@@ -20659,7 +20659,7 @@ $as_echo "$ac_cv_search_opendir" >&6; }
 ac_res=$ac_cv_search_opendir
 if test "$ac_res" != no; then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
+  
 fi
 
 fi
@@ -20700,7 +20700,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "memchr" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -20717,7 +20717,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "free" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -20758,7 +20758,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -20771,8 +20771,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
 $as_echo "$ac_cv_header_stdc" >&6; }
 if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+  
+$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
@@ -20812,8 +20812,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5
 $as_echo "$ac_cv_header_sys_wait_h" >&6; }
 if test $ac_cv_header_sys_wait_h = yes; then
-
-$as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_SYS_WAIT_H 1" >>confdefs.h
 
 fi
 
@@ -20847,8 +20847,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
 $as_echo "$ac_cv_header_time" >&6; }
 if test $ac_cv_header_time = yes; then
-
-$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
+  
+$as_echo "@%:@define TIME_WITH_SYS_TIME 1" >>confdefs.h
 
 fi
 
@@ -20858,13 +20858,13 @@ do :
   ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
 if test "x$ac_cv_func_vprintf" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_VPRINTF 1
+@%:@define HAVE_VPRINTF 1
 _ACEOF
-
+ 
 ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
 if test "x$ac_cv_func__doprnt" = xyes; then :
-
-$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_DOPRNT 1" >>confdefs.h
 
 fi
 
@@ -20925,7 +20925,7 @@ else
               */
              _Bool q = true;
              _Bool *pq = &q;
-
+           
 int
 main ()
 {
@@ -20936,7 +20936,7 @@ main ()
              /* Refer to every declared value, to avoid compiler optimizations.  */
              return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
                      + !m + !n + !o + !p + !q + !pq);
-
+           
   ;
   return 0;
 }
@@ -20952,9 +20952,9 @@ fi
 $as_echo "$ac_cv_header_stdbool_h" >&6; }
    ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
 if test "x$ac_cv_type__Bool" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE__BOOL 1
+@%:@define HAVE__BOOL 1
 _ACEOF
 
 
@@ -20962,8 +20962,8 @@ fi
 
 
 if test $ac_cv_header_stdbool_h = yes; then
-
-$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_STDBOOL_H 1" >>confdefs.h
 
 fi
 
@@ -20973,11 +20973,11 @@ fi
 #			strcasecmp strtod strtoll strtoull getrlimit gettimeofday fsync MPI_Comm_f2c])
 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
 if test "x$ac_cv_type_size_t" = xyes; then :
-
+  
 else
-
+  
 cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
+@%:@define size_t unsigned int
 _ACEOF
 
 fi
@@ -20991,7 +20991,7 @@ if ${ac_cv_working_alloca_h+:} false; then :
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <alloca.h>
+@%:@include <alloca.h>
 int
 main ()
 {
@@ -21012,8 +21012,8 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
 $as_echo "$ac_cv_working_alloca_h" >&6; }
 if test $ac_cv_working_alloca_h = yes; then
-
-$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_ALLOCA_H 1" >>confdefs.h
 
 fi
 
@@ -21066,8 +21066,8 @@ fi
 $as_echo "$ac_cv_func_alloca_works" >&6; }
 
 if test $ac_cv_func_alloca_works = yes; then
-
-$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_ALLOCA 1" >>confdefs.h
 
 else
   # The SVR3 libPW and SVR4 libucb both contain incompatible functions
@@ -21077,7 +21077,7 @@ else
 
 ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
 
-$as_echo "#define C_ALLOCA 1" >>confdefs.h
+$as_echo "@%:@define C_ALLOCA 1" >>confdefs.h
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
@@ -21110,9 +21110,9 @@ if test $ac_cv_os_cray = yes; then
     as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
 if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define CRAY_STACKSEG_END $ac_func
+@%:@define CRAY_STACKSEG_END $ac_func
 _ACEOF
 
     break
@@ -21162,7 +21162,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
 $as_echo "$ac_cv_c_stack_direction" >&6; }
 cat >>confdefs.h <<_ACEOF
-#define STACK_DIRECTION $ac_cv_c_stack_direction
+@%:@define STACK_DIRECTION $ac_cv_c_stack_direction
 _ACEOF
 
 
@@ -21173,58 +21173,58 @@ fi
 #UD_CHECK_IEEE
 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
 if test "x$ac_cv_type_size_t" = xyes; then :
-
+  
 else
-
+  
 cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
+@%:@define size_t unsigned int
 _ACEOF
 
 fi
 
 ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
 if test "x$ac_cv_type_off_t" = xyes; then :
-
+  
 else
-
+  
 cat >>confdefs.h <<_ACEOF
-#define off_t long int
+@%:@define off_t long int
 _ACEOF
 
 fi
 
 ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
 if test "x$ac_cv_type_ssize_t" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE_SSIZE_T 1
+@%:@define HAVE_SSIZE_T 1
 _ACEOF
 
 
 fi
 ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
 if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE_PTRDIFF_T 1
+@%:@define HAVE_PTRDIFF_T 1
 _ACEOF
 
 
 fi
 ac_fn_c_check_type "$LINENO" "uchar" "ac_cv_type_uchar" "$ac_includes_default"
 if test "x$ac_cv_type_uchar" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UCHAR 1
+@%:@define HAVE_UCHAR 1
 _ACEOF
 
 
 fi
 ac_fn_c_check_type "$LINENO" "longlong" "ac_cv_type_longlong" "$ac_includes_default"
 if test "x$ac_cv_type_longlong" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE_LONGLONG 1
+@%:@define HAVE_LONGLONG 1
 _ACEOF
 
 
@@ -21241,9 +21241,9 @@ $ac_includes_default
 int
 main ()
 {
-static int test_array [1 - 2 * !(((char) -1) < 0)];
-test_array [0] = 0;
-return test_array [0];
+static int test_array @<:@1 - 2 * !(((char) -1) < 0)@:>@;
+test_array @<:@0@:>@ = 0;
+return test_array @<:@0@:>@;
 
   ;
   return 0;
@@ -21259,7 +21259,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5
 $as_echo "$ac_cv_c_char_unsigned" >&6; }
 if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then
-  $as_echo "#define __CHAR_UNSIGNED__ 1" >>confdefs.h
+  $as_echo "@%:@define __CHAR_UNSIGNED__ 1" >>confdefs.h
 
 fi
 
@@ -21274,7 +21274,7 @@ if ${ac_cv_sizeof_short+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_short" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21293,7 +21293,7 @@ $as_echo "$ac_cv_sizeof_short" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SHORT $ac_cv_sizeof_short
+@%:@define SIZEOF_SHORT $ac_cv_sizeof_short
 _ACEOF
 
 
@@ -21307,7 +21307,7 @@ if ${ac_cv_sizeof_int+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_int" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21326,7 +21326,7 @@ $as_echo "$ac_cv_sizeof_int" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INT $ac_cv_sizeof_int
+@%:@define SIZEOF_INT $ac_cv_sizeof_int
 _ACEOF
 
 
@@ -21340,7 +21340,7 @@ if ${ac_cv_sizeof_long+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_long" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21359,7 +21359,7 @@ $as_echo "$ac_cv_sizeof_long" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG $ac_cv_sizeof_long
+@%:@define SIZEOF_LONG $ac_cv_sizeof_long
 _ACEOF
 
 
@@ -21373,7 +21373,7 @@ if ${ac_cv_sizeof_float+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (float))" "ac_cv_sizeof_float"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_float" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21392,7 +21392,7 @@ $as_echo "$ac_cv_sizeof_float" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_FLOAT $ac_cv_sizeof_float
+@%:@define SIZEOF_FLOAT $ac_cv_sizeof_float
 _ACEOF
 
 
@@ -21406,7 +21406,7 @@ if ${ac_cv_sizeof_double+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_double" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21425,7 +21425,7 @@ $as_echo "$ac_cv_sizeof_double" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_DOUBLE $ac_cv_sizeof_double
+@%:@define SIZEOF_DOUBLE $ac_cv_sizeof_double
 _ACEOF
 
 
@@ -21439,7 +21439,7 @@ if ${ac_cv_sizeof_off_t+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_off_t" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21458,7 +21458,7 @@ $as_echo "$ac_cv_sizeof_off_t" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_OFF_T $ac_cv_sizeof_off_t
+@%:@define SIZEOF_OFF_T $ac_cv_sizeof_off_t
 _ACEOF
 
 
@@ -21472,7 +21472,7 @@ if ${ac_cv_sizeof_size_t+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_size_t" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21491,7 +21491,7 @@ $as_echo "$ac_cv_sizeof_size_t" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
+@%:@define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
 _ACEOF
 
 
@@ -21505,7 +21505,7 @@ if ${ac_cv_sizeof_ptrdiff_t+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (ptrdiff_t))" "ac_cv_sizeof_ptrdiff_t"        "$ac_includes_default"; then :
-
+  
 else
   if test "$ac_cv_type_ptrdiff_t" = yes; then
      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@@ -21524,12 +21524,12 @@ $as_echo "$ac_cv_sizeof_ptrdiff_t" >&6; }
 
 
 cat >>confdefs.h <<_ACEOF
-#define SIZEOF_PTRDIFF_T $ac_cv_sizeof_ptrdiff_t
+@%:@define SIZEOF_PTRDIFF_T $ac_cv_sizeof_ptrdiff_t
 _ACEOF
 
 
 if ac_fn_c_compute_int "$LINENO" "sizeof(long long) == sizeof(long)" "longlong_is_long"        ""; then :
-
+  
 else
   longlong_is_long=0
 fi
@@ -21703,7 +21703,7 @@ DEFS=-DHAVE_CONFIG_H
 ac_libobjs=
 ac_ltlibobjs=
 U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+for ac_i in : $LIB@&t at OBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
   ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
@@ -21712,7 +21712,7 @@ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
   as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
 done
-LIBOBJS=$ac_libobjs
+LIB@&t at OBJS=$ac_libobjs
 
 LTLIBOBJS=$ac_ltlibobjs
 
@@ -21842,9 +21842,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in #(
+  case `(set -o) 2>/dev/null` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -21875,7 +21875,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in #(
+      case $arg in @%:@(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -21908,7 +21908,7 @@ IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
-case $0 in #((
+case $0 in @%:@((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -21953,11 +21953,11 @@ export LANGUAGE
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
   as_status=$1; test $as_status -eq 0 && as_status=1
@@ -21967,41 +21967,41 @@ as_fn_error ()
   fi
   $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
-} # as_fn_error
+} @%:@ as_fn_error
 
 
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
 as_fn_set_status ()
 {
   return $1
-} # as_fn_set_status
+} @%:@ as_fn_set_status
 
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
 as_fn_exit ()
 {
   set +e
   as_fn_set_status $1
   exit $1
-} # as_fn_exit
+} @%:@ as_fn_exit
 
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
 as_fn_unset ()
 {
   { eval $1=; unset $1;}
 }
 as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
 if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
   eval 'as_fn_append ()
   {
@@ -22014,11 +22014,11 @@ else
   }
 fi # as_fn_append
 
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
   eval 'as_fn_arith ()
   {
@@ -22078,7 +22078,7 @@ as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
+case `echo -n x` in @%:@(((((
 -n*)
   case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
@@ -22118,9 +22118,9 @@ rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
 
 
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
 as_fn_mkdir_p ()
 {
 
@@ -22164,7 +22164,7 @@ $as_echo X"$as_dir" |
   } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
-} # as_fn_mkdir_p
+} @%:@ as_fn_mkdir_p
 if mkdir -p . 2>/dev/null; then
   as_mkdir_p='mkdir -p "$as_dir"'
 else
@@ -22173,13 +22173,13 @@ else
 fi
 
 
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
 as_fn_executable_p ()
 {
   test -f "$1" && test -x "$1"
-} # as_fn_executable_p
+} @%:@ as_fn_executable_p
 as_test_x='test -x'
 as_executable_p=as_fn_executable_p
 
@@ -22202,7 +22202,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by netCDF-Fortran $as_me 4.4.3, which was
+This file was extended by netCDF-Fortran $as_me 4.4.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -22248,9 +22248,9 @@ Usage: $0 [OPTION]... [TAG]...
                    do not print progress messages
   -d, --debug      don't remove temporary files
       --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
+      --file=FILE[:TEMPLATE] 
                    instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
+      --header=FILE[:TEMPLATE] 
                    instantiate the configuration header FILE
 
 Configuration files:
@@ -22268,7 +22268,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-netCDF-Fortran config.status 4.4.3
+netCDF-Fortran config.status 4.4.4
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -22376,8 +22376,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 exec 5>>config.log
 {
   echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
+  sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
+@%:@@%:@ Running $as_me. @%:@@%:@
 _ASBOX
   $as_echo "$ac_log"
 } >&5
@@ -23462,7 +23462,7 @@ $as_echo X"$_am_arg" |
 	  }
 	  s/.*/./; q'`/stamp-h$_am_stamp_count
  ;;
-
+  
   :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
 $as_echo "$as_me: executing $ac_file commands" >&6;}
  ;;
@@ -23563,8 +23563,8 @@ $as_echo X"$file" |
   done
 }
  ;;
-    "libtool":C)
-
+    "libtool":C) 
+    
     # See if we are running on zsh, and set the options which allow our
     # commands through without removal of \ escapes.
     if test -n "${ZSH_VERSION+set}" ; then
@@ -24032,7 +24032,7 @@ _LT_EOF
     ;;
   esac
 
-
+  
 ltmain="$ac_aux_dir/ltmain.sh"
 
 
diff --git a/autom4te.cache/requests b/autom4te.cache/requests
new file mode 100644
index 0000000..df98ef2
--- /dev/null
+++ b/autom4te.cache/requests
@@ -0,0 +1,566 @@
+# This file was generated by Autom4te Thu Apr 10 10:06:43 UTC 2014.
+# It contains the lists of macros which have been traced.
+# It can be safely removed.
+
+ at request = (
+             bless( [
+                      '0',
+                      1,
+                      [
+                        '/usr/share/autoconf'
+                      ],
+                      [
+                        '/usr/share/autoconf/autoconf/autoconf.m4f',
+                        '-',
+                        '/usr/share/aclocal-1.14/internal/ac-config-macro-dirs.m4',
+                        '/usr/share/aclocal/argz.m4',
+                        '/usr/share/aclocal/libtool.m4',
+                        '/usr/share/aclocal/ltdl.m4',
+                        '/usr/share/aclocal/ltoptions.m4',
+                        '/usr/share/aclocal/ltsugar.m4',
+                        '/usr/share/aclocal/ltversion.m4',
+                        '/usr/share/aclocal/lt~obsolete.m4',
+                        '/usr/share/aclocal-1.14/amversion.m4',
+                        '/usr/share/aclocal-1.14/auxdir.m4',
+                        '/usr/share/aclocal-1.14/cond.m4',
+                        '/usr/share/aclocal-1.14/depend.m4',
+                        '/usr/share/aclocal-1.14/depout.m4',
+                        '/usr/share/aclocal-1.14/init.m4',
+                        '/usr/share/aclocal-1.14/install-sh.m4',
+                        '/usr/share/aclocal-1.14/lead-dot.m4',
+                        '/usr/share/aclocal-1.14/maintainer.m4',
+                        '/usr/share/aclocal-1.14/make.m4',
+                        '/usr/share/aclocal-1.14/missing.m4',
+                        '/usr/share/aclocal-1.14/options.m4',
+                        '/usr/share/aclocal-1.14/prog-cc-c-o.m4',
+                        '/usr/share/aclocal-1.14/runlog.m4',
+                        '/usr/share/aclocal-1.14/sanity.m4',
+                        '/usr/share/aclocal-1.14/silent.m4',
+                        '/usr/share/aclocal-1.14/strip.m4',
+                        '/usr/share/aclocal-1.14/substnot.m4',
+                        '/usr/share/aclocal-1.14/tar.m4',
+                        'acinclude.m4',
+                        'configure.ac'
+                      ],
+                      {
+                        'AC_DISABLE_FAST_INSTALL' => 1,
+                        'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
+                        '_LT_AC_LANG_CXX' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
+                        '_LT_PROG_CXX' => 1,
+                        'AC_LIBTOOL_RC' => 1,
+                        '_AC_PROG_LIBTOOL' => 1,
+                        'UD_FTPBINDIR' => 1,
+                        'UD_MAKEWHATIS' => 1,
+                        'LT_WITH_LTDL' => 1,
+                        'AC_LTDL_DLLIB' => 1,
+                        'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
+                        'AC_LTDL_ENABLE_INSTALL' => 1,
+                        'LT_CMD_MAX_LEN' => 1,
+                        'AC_DEFUN' => 1,
+                        'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
+                        'AC_LIBTOOL_CXX' => 1,
+                        'AM_PROG_INSTALL_STRIP' => 1,
+                        'AC_LIBTOOL_FC' => 1,
+                        'UD_C_LONG_LONG' => 1,
+                        '_LT_PROG_ECHO_BACKSLASH' => 1,
+                        '_LT_WITH_SYSROOT' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
+                        'AM_SUBST_NOTMAKE' => 1,
+                        '_AM_SET_OPTIONS' => 1,
+                        'include' => 1,
+                        'LT_LIB_M' => 1,
+                        '_LT_AC_SYS_COMPILER' => 1,
+                        'UD_CHECK_FORTRAN_TYPE' => 1,
+                        'AC_PROG_NM' => 1,
+                        'AC_PROG_LD_RELOAD_FLAG' => 1,
+                        'm4_pattern_allow' => 1,
+                        'AC_DISABLE_STATIC' => 1,
+                        'AM_MISSING_HAS_RUN' => 1,
+                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        'LT_AC_PROG_RC' => 1,
+                        'UD_CHECK_IEEE' => 1,
+                        'AC_DEPLIBS_CHECK_METHOD' => 1,
+                        '_LT_AC_PROG_CXXCPP' => 1,
+                        '_LT_AC_SHELL_INIT' => 1,
+                        'UD_PROG_M4' => 1,
+                        'AC_LIBTOOL_OBJDIR' => 1,
+                        '_LT_PATH_TOOL_PREFIX' => 1,
+                        'LT_AC_PROG_EGREP' => 1,
+                        'LT_PATH_NM' => 1,
+                        'AC_LIBTOOL_COMPILER_OPTION' => 1,
+                        '_LT_REQUIRED_DARWIN_CHECKS' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'LTDL_CONVENIENCE' => 1,
+                        'AM_PROG_NM' => 1,
+                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
+                        '_LT_AC_TAGVAR' => 1,
+                        '_AM_IF_OPTION' => 1,
+                        'LT_PATH_LD' => 1,
+                        'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
+                        'AM_RUN_LOG' => 1,
+                        'AC_LIBTOOL_DLOPEN' => 1,
+                        'AC_LIBLTDL_CONVENIENCE' => 1,
+                        'AX_C_FLOAT_WORDS_BIGENDIAN' => 1,
+                        '_AM_DEPENDENCIES' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
+                        'LT_LANG' => 1,
+                        'AM_ENABLE_SHARED' => 1,
+                        'AC_LTDL_OBJDIR' => 1,
+                        'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
+                        'LT_CONFIG_LTDL_DIR' => 1,
+                        'UD_PROG_CC_MAKEDEPEND' => 1,
+                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
+                        'AC_PROG_LD' => 1,
+                        'AC_LIBTOOL_CONFIG' => 1,
+                        'AC_PATH_MAGIC' => 1,
+                        'UD_CHECK_FCALLSCSUB' => 1,
+                        'LT_FUNC_DLSYM_USCORE' => 1,
+                        'AC_LTDL_SYSSEARCHPATH' => 1,
+                        'AM_SET_LEADING_DOT' => 1,
+                        'UD_CONFIG_HEADER' => 1,
+                        'AC_LIBTOOL_WIN32_DLL' => 1,
+                        'LT_OUTPUT' => 1,
+                        '_LT_LINKER_BOILERPLATE' => 1,
+                        'LT_SYS_SYMBOL_USCORE' => 1,
+                        'AC_DISABLE_SHARED' => 1,
+                        'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
+                        'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
+                        '_LT_PROG_F77' => 1,
+                        'AC_PATH_TOOL_PREFIX' => 1,
+                        'LTOPTIONS_VERSION' => 1,
+                        'AC_PROG_LD_GNU' => 1,
+                        '_LT_AC_SYS_LIBPATH_AIX' => 1,
+                        'AM_MAINTAINER_MODE' => 1,
+                        'AC_LIB_LTDL' => 1,
+                        'gl_FUNC_ARGZ' => 1,
+                        'AM_ENABLE_STATIC' => 1,
+                        'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
+                        'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
+                        '_LT_AC_LANG_GCJ_CONFIG' => 1,
+                        'LT_AC_PROG_GCJ' => 1,
+                        'AM_DISABLE_STATIC' => 1,
+                        'AC_LIBLTDL_INSTALLABLE' => 1,
+                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
+                        '_LTDL_SETUP' => 1,
+                        '_LT_CC_BASENAME' => 1,
+                        'LT_SYS_MODULE_EXT' => 1,
+                        '_LT_LINKER_OPTION' => 1,
+                        'LT_SYS_MODULE_PATH' => 1,
+                        'AU_DEFUN' => 1,
+                        'AC_LTDL_SYMBOL_USCORE' => 1,
+                        '_AM_PROG_TAR' => 1,
+                        'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
+                        'AC_WITH_LTDL' => 1,
+                        'AC_LIBTOOL_F77' => 1,
+                        'AC_ENABLE_FAST_INSTALL' => 1,
+                        'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
+                        'AM_SET_DEPDIR' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        'UD_CHECK_CTYPE_FORTRAN' => 1,
+                        '_LT_AC_LANG_RC_CONFIG' => 1,
+                        'AC_PROG_FC_UPPERCASE_MOD' => 1,
+                        'UD_PROG_NM' => 1,
+                        'AC_LIBTOOL_LANG_C_CONFIG' => 1,
+                        'AC_ENABLE_SHARED' => 1,
+                        '_LT_AC_LANG_GCJ' => 1,
+                        '_AM_PROG_CC_C_O' => 1,
+                        'LTDL_INSTALLABLE' => 1,
+                        'AC_DEFUN_ONCE' => 1,
+                        '_LT_AC_CHECK_DLFCN' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        '_LT_PROG_FC' => 1,
+                        'AC_LTDL_PREOPEN' => 1,
+                        '_AM_SET_OPTION' => 1,
+                        'LTOBSOLETE_VERSION' => 1,
+                        'UD_CHECK_FORTRAN_CTYPE' => 1,
+                        '_LT_AC_LANG_C_CONFIG' => 1,
+                        'LTDL_INIT' => 1,
+                        '_LT_COMPILER_OPTION' => 1,
+                        'm4_pattern_forbid' => 1,
+                        'AX_F90_MODULE_FLAG' => 1,
+                        'UD_CHECK_LIB_MATH' => 1,
+                        'UD_CHECK_FORTRAN_NCTYPE' => 1,
+                        'UD_CHECK_SIZEOF' => 1,
+                        'LT_PROG_GO' => 1,
+                        '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
+                        '_LT_PROG_LTMAIN' => 1,
+                        'AC_CHECK_LIBM' => 1,
+                        '_LT_AC_LOCK' => 1,
+                        '_LT_LIBOBJ' => 1,
+                        'AC_ENABLE_STATIC' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        'AC_LIBTOOL_PROG_CC_C_O' => 1,
+                        '_LT_AC_LANG_CXX_CONFIG' => 1,
+                        'AC_LTDL_SHLIBEXT' => 1,
+                        'AM_SILENT_RULES' => 1,
+                        '_AM_MANGLE_OPTION' => 1,
+                        'LT_SYS_DLOPEN_DEPLIBS' => 1,
+                        'LT_INIT' => 1,
+                        '_LT_AC_FILE_LTDLL_C' => 1,
+                        'AM_AUX_DIR_EXPAND' => 1,
+                        'AM_MAKE_INCLUDE' => 1,
+                        'AC_CONFIG_MACRO_DIR' => 1,
+                        '_AM_AUTOCONF_VERSION' => 1,
+                        'AC_LIBTOOL_DLOPEN_SELF' => 1,
+                        'AC_LTDL_SHLIBPATH' => 1,
+                        '_LT_AC_TAGCONFIG' => 1,
+                        'LT_SYS_DLSEARCH_PATH' => 1,
+                        '_AM_CONFIG_MACRO_DIRS' => 1,
+                        'LT_SYS_DLOPEN_SELF' => 1,
+                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        '_m4_warn' => 1,
+                        'AM_MISSING_PROG' => 1,
+                        '_LT_AC_LANG_F77_CONFIG' => 1,
+                        'AM_PROG_INSTALL_SH' => 1,
+                        'AM_DISABLE_SHARED' => 1,
+                        'm4_include' => 1,
+                        'AC_PROG_EGREP' => 1,
+                        'UD_FORTRAN_TYPES' => 1,
+                        'AM_PROG_LIBTOOL' => 1,
+                        '_LT_AC_LANG_F77' => 1,
+                        'UD_SRCDIR' => 1,
+                        'AC_LTDL_DLSYM_USCORE' => 1,
+                        'AM_SANITY_CHECK' => 1,
+                        'LT_LIB_DLLOAD' => 1,
+                        'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
+                        'AM_DEP_TRACK' => 1,
+                        'LTSUGAR_VERSION' => 1,
+                        '_LT_AC_TRY_DLOPEN_SELF' => 1,
+                        'UD_DISPLAY_RESULTS' => 1,
+                        'LTVERSION_VERSION' => 1,
+                        'AC_LIBTOOL_SETUP' => 1,
+                        'LT_AC_PROG_SED' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'LT_PROG_RC' => 1,
+                        'AM_PROG_LD' => 1,
+                        'AC_LIBTOOL_PICMODE' => 1,
+                        'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
+                        'gl_PREREQ_ARGZ' => 1,
+                        'LT_PROG_GCJ' => 1,
+                        'AC_LIBTOOL_GCJ' => 1,
+                        '_LT_PREPARE_SED_QUOTE_VARS' => 1,
+                        '_LT_COMPILER_BOILERPLATE' => 1,
+                        'AC_LIBTOOL_LINKER_OPTION' => 1
+                      }
+                    ], 'Autom4te::Request' ),
+             bless( [
+                      '1',
+                      1,
+                      [
+                        '/usr/share/autoconf'
+                      ],
+                      [
+                        '/usr/share/autoconf/autoconf/autoconf.m4f',
+                        'aclocal.m4',
+                        'configure.ac'
+                      ],
+                      {
+                        '_AM_COND_ENDIF' => 1,
+                        'AM_PROG_AR' => 1,
+                        'm4_pattern_allow' => 1,
+                        'AM_MAKEFILE_INCLUDE' => 1,
+                        'AH_OUTPUT' => 1,
+                        'AM_PROG_MKDIR_P' => 1,
+                        'AC_CANONICAL_HOST' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        'AC_CANONICAL_TARGET' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        'AC_CONFIG_LIBOBJ_DIR' => 1,
+                        'include' => 1,
+                        '_AM_MAKEFILE_INCLUDE' => 1,
+                        'AM_SILENT_RULES' => 1,
+                        'AC_CONFIG_SUBDIRS' => 1,
+                        'AC_SUBST_TRACE' => 1,
+                        'AC_LIBSOURCE' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        'AC_CONFIG_HEADERS' => 1,
+                        'LT_INIT' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'm4_pattern_forbid' => 1,
+                        'AM_PROG_CXX_C_O' => 1,
+                        'AM_EXTRA_RECURSIVE_TARGETS' => 1,
+                        'AM_MAINTAINER_MODE' => 1,
+                        '_AM_COND_ELSE' => 1,
+                        'AC_CONFIG_FILES' => 1,
+                        'AM_ENABLE_MULTILIB' => 1,
+                        'AM_GNU_GETTEXT' => 1,
+                        '_AM_COND_IF' => 1,
+                        'AC_CANONICAL_SYSTEM' => 1,
+                        '_m4_warn' => 1,
+                        'AM_XGETTEXT_OPTION' => 1,
+                        'AM_PROG_FC_C_O' => 1,
+                        'AC_SUBST' => 1,
+                        'AM_NLS' => 1,
+                        'AC_REQUIRE_AUX_FILE' => 1,
+                        'AM_PATH_GUILE' => 1,
+                        'AM_PROG_F77_C_O' => 1,
+                        'AC_CONFIG_LINKS' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
+                        '_LT_AC_TAGCONFIG' => 1,
+                        'AC_FC_PP_SRCEXT' => 1,
+                        'AC_DEFINE_TRACE_LITERAL' => 1,
+                        'AC_FC_FREEFORM' => 1,
+                        'AC_FC_PP_DEFINE' => 1,
+                        'LT_CONFIG_LTDL_DIR' => 1,
+                        'sinclude' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        'm4_include' => 1,
+                        'AC_FC_SRCEXT' => 1,
+                        'AC_CONFIG_AUX_DIR' => 1,
+                        'AC_CANONICAL_BUILD' => 1,
+                        'AC_INIT' => 1,
+                        'AM_POT_TOOLS' => 1,
+                        'm4_sinclude' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
+                        'AM_PROG_MOC' => 1
+                      }
+                    ], 'Autom4te::Request' ),
+             bless( [
+                      '2',
+                      1,
+                      [
+                        '/usr/share/autoconf'
+                      ],
+                      [
+                        '/usr/share/autoconf/autoconf/autoconf.m4f',
+                        '-',
+                        '/usr/share/aclocal-1.14/internal/ac-config-macro-dirs.m4',
+                        '/usr/share/aclocal/argz.m4',
+                        '/usr/share/aclocal/ltdl.m4',
+                        '/usr/share/aclocal-1.14/amversion.m4',
+                        '/usr/share/aclocal-1.14/auxdir.m4',
+                        '/usr/share/aclocal-1.14/cond.m4',
+                        '/usr/share/aclocal-1.14/depend.m4',
+                        '/usr/share/aclocal-1.14/depout.m4',
+                        '/usr/share/aclocal-1.14/init.m4',
+                        '/usr/share/aclocal-1.14/install-sh.m4',
+                        '/usr/share/aclocal-1.14/lead-dot.m4',
+                        '/usr/share/aclocal-1.14/maintainer.m4',
+                        '/usr/share/aclocal-1.14/make.m4',
+                        '/usr/share/aclocal-1.14/missing.m4',
+                        '/usr/share/aclocal-1.14/options.m4',
+                        '/usr/share/aclocal-1.14/prog-cc-c-o.m4',
+                        '/usr/share/aclocal-1.14/runlog.m4',
+                        '/usr/share/aclocal-1.14/sanity.m4',
+                        '/usr/share/aclocal-1.14/silent.m4',
+                        '/usr/share/aclocal-1.14/strip.m4',
+                        '/usr/share/aclocal-1.14/substnot.m4',
+                        '/usr/share/aclocal-1.14/tar.m4',
+                        'm4/libtool.m4',
+                        'm4/ltoptions.m4',
+                        'm4/ltsugar.m4',
+                        'm4/ltversion.m4',
+                        'm4/lt~obsolete.m4',
+                        'acinclude.m4',
+                        'configure.ac'
+                      ],
+                      {
+                        '_LT_AC_LANG_GCJ_CONFIG' => 1,
+                        'AC_LIBLTDL_INSTALLABLE' => 1,
+                        'AM_DISABLE_STATIC' => 1,
+                        'LT_AC_PROG_GCJ' => 1,
+                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
+                        '_LTDL_SETUP' => 1,
+                        '_LT_CC_BASENAME' => 1,
+                        '_LT_AC_SYS_LIBPATH_AIX' => 1,
+                        'AM_MAINTAINER_MODE' => 1,
+                        'AC_PROG_LD_GNU' => 1,
+                        'AC_LIB_LTDL' => 1,
+                        'gl_FUNC_ARGZ' => 1,
+                        'AM_ENABLE_STATIC' => 1,
+                        'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
+                        'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
+                        'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
+                        'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
+                        '_LT_PROG_F77' => 1,
+                        'LTOPTIONS_VERSION' => 1,
+                        'AC_PATH_TOOL_PREFIX' => 1,
+                        'LT_FUNC_DLSYM_USCORE' => 1,
+                        'AC_LTDL_SYSSEARCHPATH' => 1,
+                        'AM_SET_LEADING_DOT' => 1,
+                        'AC_LIBTOOL_WIN32_DLL' => 1,
+                        'UD_CONFIG_HEADER' => 1,
+                        'LT_OUTPUT' => 1,
+                        '_LT_LINKER_BOILERPLATE' => 1,
+                        'LT_SYS_SYMBOL_USCORE' => 1,
+                        'AC_DISABLE_SHARED' => 1,
+                        'AM_ENABLE_SHARED' => 1,
+                        'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
+                        'AC_LTDL_OBJDIR' => 1,
+                        'LT_CONFIG_LTDL_DIR' => 1,
+                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
+                        'UD_PROG_CC_MAKEDEPEND' => 1,
+                        'AC_PROG_LD' => 1,
+                        'AC_LIBTOOL_CONFIG' => 1,
+                        'UD_CHECK_FCALLSCSUB' => 1,
+                        'AC_PATH_MAGIC' => 1,
+                        'AC_LIBTOOL_DLOPEN' => 1,
+                        'AC_LIBLTDL_CONVENIENCE' => 1,
+                        'AX_C_FLOAT_WORDS_BIGENDIAN' => 1,
+                        '_AM_DEPENDENCIES' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
+                        'LT_LANG' => 1,
+                        'LT_PATH_LD' => 1,
+                        'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
+                        'AM_RUN_LOG' => 1,
+                        'AC_LIBTOOL_COMPILER_OPTION' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        '_LT_REQUIRED_DARWIN_CHECKS' => 1,
+                        'LTDL_CONVENIENCE' => 1,
+                        'AM_PROG_NM' => 1,
+                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
+                        '_LT_AC_TAGVAR' => 1,
+                        '_AM_IF_OPTION' => 1,
+                        'UD_PROG_M4' => 1,
+                        '_LT_PATH_TOOL_PREFIX' => 1,
+                        'AC_LIBTOOL_OBJDIR' => 1,
+                        'LT_AC_PROG_EGREP' => 1,
+                        'LT_PATH_NM' => 1,
+                        'AM_MISSING_HAS_RUN' => 1,
+                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        'LT_AC_PROG_RC' => 1,
+                        'AC_DEPLIBS_CHECK_METHOD' => 1,
+                        'UD_CHECK_IEEE' => 1,
+                        '_LT_AC_PROG_CXXCPP' => 1,
+                        '_LT_AC_SHELL_INIT' => 1,
+                        'LT_LIB_M' => 1,
+                        '_LT_AC_SYS_COMPILER' => 1,
+                        'UD_CHECK_FORTRAN_TYPE' => 1,
+                        'AC_PROG_NM' => 1,
+                        'AC_PROG_LD_RELOAD_FLAG' => 1,
+                        'm4_pattern_allow' => 1,
+                        'AC_DISABLE_STATIC' => 1,
+                        '_LT_WITH_SYSROOT' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
+                        'AM_SUBST_NOTMAKE' => 1,
+                        'include' => 1,
+                        '_AM_SET_OPTIONS' => 1,
+                        'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
+                        'AC_LIBTOOL_CXX' => 1,
+                        'AC_LIBTOOL_FC' => 1,
+                        'AM_PROG_INSTALL_STRIP' => 1,
+                        'UD_C_LONG_LONG' => 1,
+                        '_LT_PROG_ECHO_BACKSLASH' => 1,
+                        'LT_WITH_LTDL' => 1,
+                        'AC_LTDL_DLLIB' => 1,
+                        'LT_CMD_MAX_LEN' => 1,
+                        'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
+                        'AC_LTDL_ENABLE_INSTALL' => 1,
+                        'AC_DEFUN' => 1,
+                        '_LT_PROG_CXX' => 1,
+                        '_AC_PROG_LIBTOOL' => 1,
+                        'AC_LIBTOOL_RC' => 1,
+                        'UD_FTPBINDIR' => 1,
+                        'UD_MAKEWHATIS' => 1,
+                        'AC_DISABLE_FAST_INSTALL' => 1,
+                        'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
+                        '_LT_AC_LANG_CXX' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
+                        'LT_PROG_GCJ' => 1,
+                        'gl_PREREQ_ARGZ' => 1,
+                        'AC_LIBTOOL_GCJ' => 1,
+                        '_LT_COMPILER_BOILERPLATE' => 1,
+                        '_LT_PREPARE_SED_QUOTE_VARS' => 1,
+                        'AC_LIBTOOL_LINKER_OPTION' => 1,
+                        'LT_AC_PROG_SED' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'LT_PROG_RC' => 1,
+                        'AM_PROG_LD' => 1,
+                        'AC_LIBTOOL_PICMODE' => 1,
+                        'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
+                        'LTVERSION_VERSION' => 1,
+                        'AC_LIBTOOL_SETUP' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        'AM_DEP_TRACK' => 1,
+                        'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
+                        'LTSUGAR_VERSION' => 1,
+                        '_LT_AC_TRY_DLOPEN_SELF' => 1,
+                        'UD_DISPLAY_RESULTS' => 1,
+                        'UD_SRCDIR' => 1,
+                        'AC_LTDL_DLSYM_USCORE' => 1,
+                        'AM_SANITY_CHECK' => 1,
+                        'LT_LIB_DLLOAD' => 1,
+                        'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
+                        'AM_PROG_INSTALL_SH' => 1,
+                        'AM_DISABLE_SHARED' => 1,
+                        'm4_include' => 1,
+                        'AC_PROG_EGREP' => 1,
+                        'UD_FORTRAN_TYPES' => 1,
+                        'AM_PROG_LIBTOOL' => 1,
+                        '_LT_AC_LANG_F77' => 1,
+                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        '_m4_warn' => 1,
+                        'AM_MISSING_PROG' => 1,
+                        '_LT_AC_LANG_F77_CONFIG' => 1,
+                        'AM_AUX_DIR_EXPAND' => 1,
+                        'AM_MAKE_INCLUDE' => 1,
+                        'AC_LIBTOOL_DLOPEN_SELF' => 1,
+                        'AC_CONFIG_MACRO_DIR' => 1,
+                        '_AM_AUTOCONF_VERSION' => 1,
+                        'LT_SYS_DLSEARCH_PATH' => 1,
+                        'AC_LTDL_SHLIBPATH' => 1,
+                        'LT_SYS_DLOPEN_SELF' => 1,
+                        '_AM_CONFIG_MACRO_DIRS' => 1,
+                        '_LT_AC_TAGCONFIG' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        '_LT_AC_LANG_CXX_CONFIG' => 1,
+                        'AC_LIBTOOL_PROG_CC_C_O' => 1,
+                        'AC_LTDL_SHLIBEXT' => 1,
+                        'AM_SILENT_RULES' => 1,
+                        '_AM_MANGLE_OPTION' => 1,
+                        'LT_SYS_DLOPEN_DEPLIBS' => 1,
+                        'LT_INIT' => 1,
+                        '_LT_AC_FILE_LTDLL_C' => 1,
+                        'LTDL_INIT' => 1,
+                        '_LT_COMPILER_OPTION' => 1,
+                        'AX_F90_MODULE_FLAG' => 1,
+                        'UD_CHECK_LIB_MATH' => 1,
+                        'm4_pattern_forbid' => 1,
+                        'UD_CHECK_FORTRAN_NCTYPE' => 1,
+                        'LT_PROG_GO' => 1,
+                        'UD_CHECK_SIZEOF' => 1,
+                        '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
+                        '_LT_PROG_LTMAIN' => 1,
+                        '_LT_LIBOBJ' => 1,
+                        '_LT_AC_LOCK' => 1,
+                        'AC_ENABLE_STATIC' => 1,
+                        'AC_CHECK_LIBM' => 1,
+                        'UD_CHECK_FORTRAN_CTYPE' => 1,
+                        '_LT_AC_LANG_C_CONFIG' => 1,
+                        '_LT_AC_CHECK_DLFCN' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        '_LT_PROG_FC' => 1,
+                        'AC_LTDL_PREOPEN' => 1,
+                        'LTOBSOLETE_VERSION' => 1,
+                        '_AM_SET_OPTION' => 1,
+                        'AC_ENABLE_SHARED' => 1,
+                        '_LT_AC_LANG_GCJ' => 1,
+                        '_AM_PROG_CC_C_O' => 1,
+                        'AC_DEFUN_ONCE' => 1,
+                        'LTDL_INSTALLABLE' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        'UD_CHECK_CTYPE_FORTRAN' => 1,
+                        '_LT_AC_LANG_RC_CONFIG' => 1,
+                        'UD_PROG_NM' => 1,
+                        'AC_PROG_FC_UPPERCASE_MOD' => 1,
+                        'AC_LIBTOOL_LANG_C_CONFIG' => 1,
+                        'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
+                        'AC_ENABLE_FAST_INSTALL' => 1,
+                        'AM_SET_DEPDIR' => 1,
+                        'LT_SYS_MODULE_EXT' => 1,
+                        '_LT_LINKER_OPTION' => 1,
+                        'LT_SYS_MODULE_PATH' => 1,
+                        '_AM_PROG_TAR' => 1,
+                        'AU_DEFUN' => 1,
+                        'AC_LTDL_SYMBOL_USCORE' => 1,
+                        'AC_WITH_LTDL' => 1,
+                        'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
+                        'AC_LIBTOOL_F77' => 1
+                      }
+                    ], 'Autom4te::Request' )
+           );
+
diff --git a/autom4te.cache/traces.0 b/autom4te.cache/traces.0
new file mode 100644
index 0000000..973827c
--- /dev/null
+++ b/autom4te.cache/traces.0
@@ -0,0 +1,3511 @@
+m4trace:/usr/share/aclocal/argz.m4:12: -1- AC_DEFUN([gl_FUNC_ARGZ], [gl_PREREQ_ARGZ
+
+AC_CHECK_HEADERS([argz.h], [], [], [AC_INCLUDES_DEFAULT])
+
+AC_CHECK_TYPES([error_t],
+  [],
+  [AC_DEFINE([error_t], [int],
+   [Define to a type to use for `error_t' if it is not otherwise available.])
+   AC_DEFINE([__error_t_defined], [1], [Define so that glibc/gnulib argp.h
+    does not typedef error_t.])],
+  [#if defined(HAVE_ARGZ_H)
+#  include <argz.h>
+#endif])
+
+ARGZ_H=
+AC_CHECK_FUNCS([argz_add argz_append argz_count argz_create_sep argz_insert \
+	argz_next argz_stringify], [], [ARGZ_H=argz.h; AC_LIBOBJ([argz])])
+
+dnl if have system argz functions, allow forced use of
+dnl libltdl-supplied implementation (and default to do so
+dnl on "known bad" systems). Could use a runtime check, but
+dnl (a) detecting malloc issues is notoriously unreliable
+dnl (b) only known system that declares argz functions,
+dnl     provides them, yet they are broken, is cygwin
+dnl     releases prior to 16-Mar-2007 (1.5.24 and earlier)
+dnl So, it's more straightforward simply to special case
+dnl this for known bad systems.
+AS_IF([test -z "$ARGZ_H"],
+    [AC_CACHE_CHECK(
+        [if argz actually works],
+        [lt_cv_sys_argz_works],
+        [[case $host_os in #(
+	 *cygwin*)
+	   lt_cv_sys_argz_works=no
+	   if test "$cross_compiling" != no; then
+	     lt_cv_sys_argz_works="guessing no"
+	   else
+	     lt_sed_extract_leading_digits='s/^\([0-9\.]*\).*/\1/'
+	     save_IFS=$IFS
+	     IFS=-.
+	     set x `uname -r | sed -e "$lt_sed_extract_leading_digits"`
+	     IFS=$save_IFS
+	     lt_os_major=${2-0}
+	     lt_os_minor=${3-0}
+	     lt_os_micro=${4-0}
+	     if test "$lt_os_major" -gt 1 \
+		|| { test "$lt_os_major" -eq 1 \
+		  && { test "$lt_os_minor" -gt 5 \
+		    || { test "$lt_os_minor" -eq 5 \
+		      && test "$lt_os_micro" -gt 24; }; }; }; then
+	       lt_cv_sys_argz_works=yes
+	     fi
+	   fi
+	   ;; #(
+	 *) lt_cv_sys_argz_works=yes ;;
+	 esac]])
+     AS_IF([test "$lt_cv_sys_argz_works" = yes],
+        [AC_DEFINE([HAVE_WORKING_ARGZ], 1,
+                   [This value is set to 1 to indicate that the system argz facility works])],
+        [ARGZ_H=argz.h
+        AC_LIBOBJ([argz])])])
+
+AC_SUBST([ARGZ_H])
+])
+m4trace:/usr/share/aclocal/argz.m4:79: -1- AC_DEFUN([gl_PREREQ_ARGZ], [:])
+m4trace:/usr/share/aclocal/libtool.m4:69: -1- AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])
+m4trace:/usr/share/aclocal/libtool.m4:107: -1- AU_DEFUN([AC_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:107: -1- AC_DEFUN([AC_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:108: -1- AU_DEFUN([AM_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:108: -1- AC_DEFUN([AM_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:609: -1- AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+  echo
+  AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+  -h, --help      print this help, then exit
+  -V, --version   print version number, then exit
+  -q, --quiet     do not print progress messages
+  -d, --debug     don't remove temporary files
+
+Report bugs to <bug-libtool at gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2011 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+  case $[1] in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+    *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test "$silent" = yes &&
+  lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
+])
+m4trace:/usr/share/aclocal/libtool.m4:790: -1- AC_DEFUN([LT_SUPPORTED_TAG], [])
+m4trace:/usr/share/aclocal/libtool.m4:801: -1- AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+  [C],			[_LT_LANG(C)],
+  [C++],		[_LT_LANG(CXX)],
+  [Go],			[_LT_LANG(GO)],
+  [Java],		[_LT_LANG(GCJ)],
+  [Fortran 77],		[_LT_LANG(F77)],
+  [Fortran],		[_LT_LANG(FC)],
+  [Windows Resource],	[_LT_LANG(RC)],
+  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+    [_LT_LANG($1)],
+    [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])
+m4trace:/usr/share/aclocal/libtool.m4:893: -1- AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+m4trace:/usr/share/aclocal/libtool.m4:893: -1- AC_DEFUN([AC_LIBTOOL_CXX], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_CXX' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(C++)])
+m4trace:/usr/share/aclocal/libtool.m4:894: -1- AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+m4trace:/usr/share/aclocal/libtool.m4:894: -1- AC_DEFUN([AC_LIBTOOL_F77], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_F77' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Fortran 77)])
+m4trace:/usr/share/aclocal/libtool.m4:895: -1- AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+m4trace:/usr/share/aclocal/libtool.m4:895: -1- AC_DEFUN([AC_LIBTOOL_FC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_FC' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Fortran)])
+m4trace:/usr/share/aclocal/libtool.m4:896: -1- AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+m4trace:/usr/share/aclocal/libtool.m4:896: -1- AC_DEFUN([AC_LIBTOOL_GCJ], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_GCJ' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Java)])
+m4trace:/usr/share/aclocal/libtool.m4:897: -1- AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
+m4trace:/usr/share/aclocal/libtool.m4:897: -1- AC_DEFUN([AC_LIBTOOL_RC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_RC' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Windows Resource)])
+m4trace:/usr/share/aclocal/libtool.m4:1225: -1- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[  --with-sysroot[=DIR] Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted.  We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   AC_MSG_RESULT([${with_sysroot}])
+   AC_MSG_ERROR([The sysroot must be an absolute path.])
+   ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and in which our libraries should be installed.])])
+m4trace:/usr/share/aclocal/libtool.m4:1515: -1- AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$5], , :, [$5])
+else
+    m4_if([$6], , :, [$6])
+fi
+])
+m4trace:/usr/share/aclocal/libtool.m4:1557: -1- AU_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1557: -1- AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_COMPILER_OPTION' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1566: -1- AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$4], , :, [$4])
+else
+    m4_if([$5], , :, [$5])
+fi
+])
+m4trace:/usr/share/aclocal/libtool.m4:1601: -1- AU_DEFUN([AC_LIBTOOL_LINKER_OPTION], [m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1601: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_LINKER_OPTION' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1608: -1- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+	test undefined != "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+    [What is the maximum length of a command?])
+])
+m4trace:/usr/share/aclocal/libtool.m4:1747: -1- AU_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1747: -1- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_SYS_MAX_CMD_LEN' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1858: -1- AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+    ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+	  [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+	[AC_CHECK_FUNC([dlopen],
+	      [lt_cv_dlopen="dlopen"],
+	  [AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+	    [AC_CHECK_LIB([svld], [dlopen],
+		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+	      [AC_CHECK_LIB([dld], [dld_link],
+		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+	      ])
+	    ])
+	  ])
+	])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+	  lt_cv_dlopen_self, [dnl
+	  _LT_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+	  lt_cv_dlopen_self_static, [dnl
+	  _LT_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+	 [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+	 [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+	 [Whether dlopen of statically linked programs is supported])
+])
+m4trace:/usr/share/aclocal/libtool.m4:1975: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1975: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN_SELF' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:2945: -1- AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="m4_if([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])
+m4trace:/usr/share/aclocal/libtool.m4:3007: -1- AU_DEFUN([AC_PATH_TOOL_PREFIX], [m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3007: -1- AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_DIAGNOSE([obsolete], [The macro `AC_PATH_TOOL_PREFIX' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3030: -1- AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
+
+AC_ARG_WITH([gnu-ld],
+    [AS_HELP_STRING([--with-gnu-ld],
+	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])
+m4trace:/usr/share/aclocal/libtool.m4:3119: -1- AU_DEFUN([AM_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3119: -1- AC_DEFUN([AM_PROG_LD], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LD' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3120: -1- AU_DEFUN([AC_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3120: -1- AC_DEFUN([AC_PROG_LD], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LD' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3410: -1- AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+  AC_SUBST([DUMPBIN])
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+  [lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
+  cat conftest.out >&AS_MESSAGE_LOG_FD
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*])
+])
+m4trace:/usr/share/aclocal/libtool.m4:3500: -1- AU_DEFUN([AM_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3500: -1- AC_DEFUN([AM_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_NM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3501: -1- AU_DEFUN([AC_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3501: -1- AC_DEFUN([AC_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_NM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3571: -1- AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+AC_SUBST([LIBM])
+])
+m4trace:/usr/share/aclocal/libtool.m4:3590: -1- AU_DEFUN([AC_CHECK_LIBM], [m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3590: -1- AC_DEFUN([AC_CHECK_LIBM], [AC_DIAGNOSE([obsolete], [The macro `AC_CHECK_LIBM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:7637: -1- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+    [AC_CHECK_TOOL(GCJ, gcj,)
+      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+      AC_SUBST(GCJFLAGS)])])[]dnl
+])
+m4trace:/usr/share/aclocal/libtool.m4:7646: -1- AU_DEFUN([LT_AC_PROG_GCJ], [m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:7646: -1- AC_DEFUN([LT_AC_PROG_GCJ], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_GCJ' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:7653: -1- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,)
+])
+m4trace:/usr/share/aclocal/libtool.m4:7660: -1- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,)
+])
+m4trace:/usr/share/aclocal/libtool.m4:7665: -1- AU_DEFUN([LT_AC_PROG_RC], [m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:7665: -1- AC_DEFUN([LT_AC_PROG_RC], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_RC' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:7785: -1- AU_DEFUN([LT_AC_PROG_SED], [m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:7785: -1- AC_DEFUN([LT_AC_PROG_SED], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_SED' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:16: -1- AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT])
+_$0($*)
+])
+m4trace:/usr/share/aclocal/ltdl.m4:68: -1- AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl
+dnl Although the argument is deprecated and no longer documented,
+dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one
+dnl here make sure it is the same as any other declaration of libltdl's
+dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
+_$0()
+])
+m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_CONVENIENCE])
+m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_CONVENIENCE' is obsolete.
+You should run autoupdate.])dnl
+_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_CONVENIENCE])
+m4trace:/usr/share/aclocal/ltdl.m4:124: -1- AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl
+dnl Although the argument is deprecated and no longer documented,
+dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one
+dnl here make sure it is the same as any other declaration of libltdl's
+dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
+_$0()
+])
+m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_INSTALLABLE])
+m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_INSTALLABLE' is obsolete.
+You should run autoupdate.])dnl
+_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_INSTALLABLE])
+m4trace:/usr/share/aclocal/ltdl.m4:213: -1- AC_DEFUN([_LT_LIBOBJ], [
+  m4_pattern_allow([^_LT_LIBOBJS$])
+  _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext"
+])
+m4trace:/usr/share/aclocal/ltdl.m4:226: -1- AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+dnl We need to keep our own list of libobjs separate from our parent project,
+dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while
+dnl we look for our own LIBOBJs.
+m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ]))
+m4_pushdef([AC_LIBSOURCES])
+
+dnl If not otherwise defined, default to the 1.5.x compatible subproject mode:
+m4_if(_LTDL_MODE, [],
+        [m4_define([_LTDL_MODE], m4_default([$2], [subproject]))
+        m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])],
+                [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])
+
+AC_ARG_WITH([included_ltdl],
+    [AS_HELP_STRING([--with-included-ltdl],
+                    [use the GNU ltdl sources included here])])
+
+if test "x$with_included_ltdl" != xyes; then
+  # We are not being forced to use the included libltdl sources, so
+  # decide whether there is a useful installed version we can use.
+  AC_CHECK_HEADER([ltdl.h],
+      [AC_CHECK_DECL([lt_dlinterface_register],
+	   [AC_CHECK_LIB([ltdl], [lt_dladvise_preload],
+	       [with_included_ltdl=no],
+	       [with_included_ltdl=yes])],
+	   [with_included_ltdl=yes],
+	   [AC_INCLUDES_DEFAULT
+	    #include <ltdl.h>])],
+      [with_included_ltdl=yes],
+      [AC_INCLUDES_DEFAULT]
+  )
+fi
+
+dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE
+dnl was called yet, then for old times' sake, we assume libltdl is in an
+dnl eponymous directory:
+AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])])
+
+AC_ARG_WITH([ltdl_include],
+    [AS_HELP_STRING([--with-ltdl-include=DIR],
+                    [use the ltdl headers installed in DIR])])
+
+if test -n "$with_ltdl_include"; then
+  if test -f "$with_ltdl_include/ltdl.h"; then :
+  else
+    AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include'])
+  fi
+else
+  with_ltdl_include=no
+fi
+
+AC_ARG_WITH([ltdl_lib],
+    [AS_HELP_STRING([--with-ltdl-lib=DIR],
+                    [use the libltdl.la installed in DIR])])
+
+if test -n "$with_ltdl_lib"; then
+  if test -f "$with_ltdl_lib/libltdl.la"; then :
+  else
+    AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib'])
+  fi
+else
+  with_ltdl_lib=no
+fi
+
+case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in
+  ,yes,no,no,)
+	m4_case(m4_default(_LTDL_TYPE, [convenience]),
+	    [convenience], [_LTDL_CONVENIENCE],
+	    [installable], [_LTDL_INSTALLABLE],
+	  [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)])
+	;;
+  ,no,no,no,)
+	# If the included ltdl is not to be used, then use the
+	# preinstalled libltdl we found.
+	AC_DEFINE([HAVE_LTDL], [1],
+	  [Define this if a modern libltdl is already installed])
+	LIBLTDL=-lltdl
+	LTDLDEPS=
+	LTDLINCL=
+	;;
+  ,no*,no,*)
+	AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together])
+	;;
+  *)	with_included_ltdl=no
+	LIBLTDL="-L$with_ltdl_lib -lltdl"
+	LTDLDEPS=
+	LTDLINCL="-I$with_ltdl_include"
+	;;
+esac
+INCLTDL="$LTDLINCL"
+
+# Report our decision...
+AC_MSG_CHECKING([where to find libltdl headers])
+AC_MSG_RESULT([$LTDLINCL])
+AC_MSG_CHECKING([where to find libltdl library])
+AC_MSG_RESULT([$LIBLTDL])
+
+_LTDL_SETUP
+
+dnl restore autoconf definition.
+m4_popdef([AC_LIBOBJ])
+m4_popdef([AC_LIBSOURCES])
+
+AC_CONFIG_COMMANDS_PRE([
+    _ltdl_libobjs=
+    _ltdl_ltlibobjs=
+    if test -n "$_LT_LIBOBJS"; then
+      # Remove the extension.
+      _lt_sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do
+        _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext"
+        _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo"
+      done
+    fi
+    AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs])
+    AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs])
+])
+
+# Only expand once:
+m4_define([LTDL_INIT])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AC_DEFUN([AC_LIB_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIB_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AC_DEFUN([AC_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_WITH_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AC_DEFUN([LT_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `LT_WITH_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:367: -1- AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_SYS_MODULE_EXT])dnl
+AC_REQUIRE([LT_SYS_MODULE_PATH])dnl
+AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl
+AC_REQUIRE([LT_LIB_DLLOAD])dnl
+AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
+AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl
+AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl
+AC_REQUIRE([gl_FUNC_ARGZ])dnl
+
+m4_require([_LT_CHECK_OBJDIR])dnl
+m4_require([_LT_HEADER_DLFCN])dnl
+m4_require([_LT_CHECK_DLPREOPEN])dnl
+m4_require([_LT_DECL_SED])dnl
+
+dnl Don't require this, or it will be expanded earlier than the code
+dnl that sets the variables it relies on:
+_LT_ENABLE_INSTALL
+
+dnl _LTDL_MODE specific code must be called at least once:
+_LTDL_MODE_DISPATCH
+
+# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS
+# the user used.  This is so that ltdl.h can pick up the parent projects
+# config.h file, The first file in AC_CONFIG_HEADERS must contain the
+# definitions required by ltdl.c.
+# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility).
+AC_CONFIG_COMMANDS_PRE([dnl
+m4_pattern_allow([^LT_CONFIG_H$])dnl
+m4_ifset([AH_HEADER],
+    [LT_CONFIG_H=AH_HEADER],
+    [m4_ifset([AC_LIST_HEADERS],
+	    [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[      ]]*,,;s,[[ :]].*$,,'`],
+	[])])])
+AC_SUBST([LT_CONFIG_H])
+
+AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h],
+	[], [], [AC_INCLUDES_DEFAULT])
+
+AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])])
+AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])])
+
+m4_pattern_allow([LT_LIBEXT])dnl
+AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension])
+
+name=
+eval "lt_libprefix=\"$libname_spec\""
+m4_pattern_allow([LT_LIBPREFIX])dnl
+AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix])
+
+name=ltdl
+eval "LTDLOPEN=\"$libname_spec\""
+AC_SUBST([LTDLOPEN])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:443: -1- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_CACHE_CHECK([whether deplibs are loaded by dlopen],
+  [lt_cv_sys_dlopen_deplibs],
+  [# PORTME does your system automatically load deplibs for dlopen?
+  # or its logical equivalent (e.g. shl_load for HP-UX < 11)
+  # For now, we just catch OSes we know something about -- in the
+  # future, we'll try test this programmatically.
+  lt_cv_sys_dlopen_deplibs=unknown
+  case $host_os in
+  aix3*|aix4.1.*|aix4.2.*)
+    # Unknown whether this is true for these versions of AIX, but
+    # we want this `case' here to explicitly catch those versions.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  aix[[4-9]]*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  amigaos*)
+    case $host_cpu in
+    powerpc)
+      lt_cv_sys_dlopen_deplibs=no
+      ;;
+    esac
+    ;;
+  darwin*)
+    # Assuming the user has installed a libdl from somewhere, this is true
+    # If you are looking for one http://www.opendarwin.org/projects/dlcompat
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  freebsd* | dragonfly*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    # GNU and its variants, using gnu ld.so (Glibc)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  hpux10*|hpux11*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  interix*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  irix[[12345]]*|irix6.[[01]]*)
+    # Catch all versions of IRIX before 6.2, and indicate that we don't
+    # know how it worked for any of those versions.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  irix*)
+    # The case above catches anything before 6.2, and it's known that
+    # at 6.2 and later dlopen does load deplibs.
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  netbsd* | netbsdelf*-gnu)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  openbsd*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  osf[[1234]]*)
+    # dlopen did load deplibs (at least at 4.x), but until the 5.x series,
+    # it did *not* use an RPATH in a shared library to find objects the
+    # library depends on, so we explicitly say `no'.
+    lt_cv_sys_dlopen_deplibs=no
+    ;;
+  osf5.0|osf5.0a|osf5.1)
+    # dlopen *does* load deplibs and with the right loader patch applied
+    # it even uses RPATH in a shared library to search for shared objects
+    # that the library depends on, but there's no easy way to know if that
+    # patch is installed.  Since this is the case, all we can really
+    # say is unknown -- it depends on the patch being installed.  If
+    # it is, this changes to `yes'.  Without it, it would be `no'.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  osf*)
+    # the two cases above should catch all versions of osf <= 5.1.  Read
+    # the comments above for what we know about them.
+    # At > 5.1, deplibs are loaded *and* any RPATH in a shared library
+    # is used to find them so we can finally say `yes'.
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  qnx*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  solaris*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+    libltdl_cv_sys_dlopen_deplibs=yes
+    ;;
+  esac
+  ])
+if test "$lt_cv_sys_dlopen_deplibs" != yes; then
+ AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1],
+    [Define if the OS needs help to load dependent libraries for dlopen().])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:542: -1- AU_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:542: -1- AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYS_DLOPEN_DEPLIBS' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:549: -1- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([which extension is used for runtime loadable modules],
+  [libltdl_cv_shlibext],
+[
+module=yes
+eval libltdl_cv_shlibext=$shrext_cmds
+module=no
+eval libltdl_cv_shrext=$shrext_cmds
+  ])
+if test -n "$libltdl_cv_shlibext"; then
+  m4_pattern_allow([LT_MODULE_EXT])dnl
+  AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"],
+    [Define to the extension used for runtime loadable modules, say, ".so".])
+fi
+if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then
+  m4_pattern_allow([LT_SHARED_EXT])dnl
+  AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"],
+    [Define to the shared library suffix, say, ".dylib".])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:572: -1- AU_DEFUN([AC_LTDL_SHLIBEXT], [m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:572: -1- AC_DEFUN([AC_LTDL_SHLIBEXT], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBEXT' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:579: -1- AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([which variable specifies run-time module search path],
+  [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"])
+if test -n "$lt_cv_module_path_var"; then
+  m4_pattern_allow([LT_MODULE_PATH_VAR])dnl
+  AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"],
+    [Define to the name of the environment variable that determines the run-time module search path.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:591: -1- AU_DEFUN([AC_LTDL_SHLIBPATH], [m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:591: -1- AC_DEFUN([AC_LTDL_SHLIBPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBPATH' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:598: -1- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([for the default library search path],
+  [lt_cv_sys_dlsearch_path],
+  [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"])
+if test -n "$lt_cv_sys_dlsearch_path"; then
+  sys_dlsearch_path=
+  for dir in $lt_cv_sys_dlsearch_path; do
+    if test -z "$sys_dlsearch_path"; then
+      sys_dlsearch_path="$dir"
+    else
+      sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir"
+    fi
+  done
+  m4_pattern_allow([LT_DLSEARCH_PATH])dnl
+  AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"],
+    [Define to the system default library search path.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:619: -1- AU_DEFUN([AC_LTDL_SYSSEARCHPATH], [m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:619: -1- AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYSSEARCHPATH' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:645: -1- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$])
+LT_DLLOADERS=
+AC_SUBST([LT_DLLOADERS])
+
+AC_LANG_PUSH([C])
+
+LIBADD_DLOPEN=
+AC_SEARCH_LIBS([dlopen], [dl],
+	[AC_DEFINE([HAVE_LIBDL], [1],
+		   [Define if you have the libdl library or equivalent.])
+	if test "$ac_cv_search_dlopen" != "none required" ; then
+	  LIBADD_DLOPEN="-ldl"
+	fi
+	libltdl_cv_lib_dl_dlopen="yes"
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
+    [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H
+#  include <dlfcn.h>
+#endif
+    ]], [[dlopen(0, 0);]])],
+	    [AC_DEFINE([HAVE_LIBDL], [1],
+		       [Define if you have the libdl library or equivalent.])
+	    libltdl_cv_func_dlopen="yes"
+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
+	[AC_CHECK_LIB([svld], [dlopen],
+		[AC_DEFINE([HAVE_LIBDL], [1],
+			 [Define if you have the libdl library or equivalent.])
+	        LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes"
+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])])
+if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes
+then
+  lt_save_LIBS="$LIBS"
+  LIBS="$LIBS $LIBADD_DLOPEN"
+  AC_CHECK_FUNCS([dlerror])
+  LIBS="$lt_save_LIBS"
+fi
+AC_SUBST([LIBADD_DLOPEN])
+
+LIBADD_SHL_LOAD=
+AC_CHECK_FUNC([shl_load],
+	[AC_DEFINE([HAVE_SHL_LOAD], [1],
+		   [Define if you have the shl_load function.])
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"],
+    [AC_CHECK_LIB([dld], [shl_load],
+	    [AC_DEFINE([HAVE_SHL_LOAD], [1],
+		       [Define if you have the shl_load function.])
+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"
+	    LIBADD_SHL_LOAD="-ldld"])])
+AC_SUBST([LIBADD_SHL_LOAD])
+
+case $host_os in
+darwin[[1567]].*)
+# We only want this for pre-Mac OS X 10.4.
+  AC_CHECK_FUNC([_dyld_func_lookup],
+	[AC_DEFINE([HAVE_DYLD], [1],
+		   [Define if you have the _dyld_func_lookup function.])
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"])
+  ;;
+beos*)
+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la"
+  ;;
+cygwin* | mingw* | os2* | pw32*)
+  AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include <sys/cygwin.h>]])
+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la"
+  ;;
+esac
+
+AC_CHECK_LIB([dld], [dld_link],
+	[AC_DEFINE([HAVE_DLD], [1],
+		   [Define if you have the GNU dld library.])
+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"])
+AC_SUBST([LIBADD_DLD_LINK])
+
+m4_pattern_allow([^LT_DLPREOPEN$])
+LT_DLPREOPEN=
+if test -n "$LT_DLLOADERS"
+then
+  for lt_loader in $LT_DLLOADERS; do
+    LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader "
+  done
+  AC_DEFINE([HAVE_LIBDLLOADER], [1],
+            [Define if libdlloader will be built on this platform])
+fi
+AC_SUBST([LT_DLPREOPEN])
+
+dnl This isn't used anymore, but set it for backwards compatibility
+LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD"
+AC_SUBST([LIBADD_DL])
+
+AC_LANG_POP
+])
+m4trace:/usr/share/aclocal/ltdl.m4:738: -1- AU_DEFUN([AC_LTDL_DLLIB], [m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:738: -1- AC_DEFUN([AC_LTDL_DLLIB], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLLIB' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:746: -1- AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+AC_CACHE_CHECK([for _ prefix in compiled symbols],
+  [lt_cv_sys_symbol_underscore],
+  [lt_cv_sys_symbol_underscore=no
+  cat > conftest.$ac_ext <<_LT_EOF
+void nm_test_func(){}
+int main(){nm_test_func;return 0;}
+_LT_EOF
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    ac_nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
+      # See whether the symbols have a leading underscore.
+      if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
+        lt_cv_sys_symbol_underscore=yes
+      else
+        if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
+	  :
+        else
+	  echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD
+        fi
+      fi
+    else
+      echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.c >&AS_MESSAGE_LOG_FD
+  fi
+  rm -rf conftest*
+  ])
+  sys_symbol_underscore=$lt_cv_sys_symbol_underscore
+  AC_SUBST([sys_symbol_underscore])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:783: -1- AU_DEFUN([AC_LTDL_SYMBOL_USCORE], [m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:783: -1- AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYMBOL_USCORE' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:790: -1- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
+if test x"$lt_cv_sys_symbol_underscore" = xyes; then
+  if test x"$libltdl_cv_func_dlopen" = xyes ||
+     test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then
+	AC_CACHE_CHECK([whether we have to add an underscore for dlsym],
+	  [libltdl_cv_need_uscore],
+	  [libltdl_cv_need_uscore=unknown
+          save_LIBS="$LIBS"
+          LIBS="$LIBS $LIBADD_DLOPEN"
+	  _LT_TRY_DLOPEN_SELF(
+	    [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes],
+	    [],				 [libltdl_cv_need_uscore=cross])
+	  LIBS="$save_LIBS"
+	])
+  fi
+fi
+
+if test x"$libltdl_cv_need_uscore" = xyes; then
+  AC_DEFINE([NEED_USCORE], [1],
+    [Define if dlsym() requires a leading underscore in symbol names.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:815: -1- AU_DEFUN([AC_LTDL_DLSYM_USCORE], [m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:815: -1- AC_DEFUN([AC_LTDL_DLSYM_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLSYM_USCORE' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltoptions.m4:14: -1- AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+m4trace:/usr/share/aclocal/ltoptions.m4:111: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:111: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN' is obsolete.
+You should run autoupdate.])dnl
+_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:146: -1- AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:146: -1- AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete.
+You should run autoupdate.])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:195: -1- AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:199: -1- AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:203: -1- AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:203: -1- AC_DEFUN([AM_ENABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_SHARED' is obsolete.
+You should run autoupdate.])dnl
+AC_ENABLE_SHARED($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:204: -1- AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:204: -1- AC_DEFUN([AM_DISABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_SHARED' is obsolete.
+You should run autoupdate.])dnl
+AC_DISABLE_SHARED($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:249: -1- AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:253: -1- AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:257: -1- AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:257: -1- AC_DEFUN([AM_ENABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_STATIC' is obsolete.
+You should run autoupdate.])dnl
+AC_ENABLE_STATIC($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:258: -1- AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:258: -1- AC_DEFUN([AM_DISABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_STATIC' is obsolete.
+You should run autoupdate.])dnl
+AC_DISABLE_STATIC($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:303: -1- AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:303: -1- AC_DEFUN([AC_ENABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_ENABLE_FAST_INSTALL' is obsolete.
+You should run autoupdate.])dnl
+_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:310: -1- AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:310: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_DISABLE_FAST_INSTALL' is obsolete.
+You should run autoupdate.])dnl
+_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:358: -1- AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:358: -1- AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_PICMODE' is obsolete.
+You should run autoupdate.])dnl
+_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltsugar.m4:13: -1- AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+m4trace:/usr/share/aclocal/ltversion.m4:18: -1- AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2'
+macro_revision='1.3337'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:36: -1- AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:40: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:41: -1- AC_DEFUN([_LT_AC_SHELL_INIT])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:42: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:44: -1- AC_DEFUN([_LT_AC_TAGVAR])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:45: -1- AC_DEFUN([AC_LTDL_ENABLE_INSTALL])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:46: -1- AC_DEFUN([AC_LTDL_PREOPEN])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:47: -1- AC_DEFUN([_LT_AC_SYS_COMPILER])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:48: -1- AC_DEFUN([_LT_AC_LOCK])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:49: -1- AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:50: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:51: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:52: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:53: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:54: -1- AC_DEFUN([AC_LTDL_OBJDIR])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:55: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:56: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:57: -1- AC_DEFUN([AC_PATH_MAGIC])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:58: -1- AC_DEFUN([AC_PROG_LD_GNU])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:59: -1- AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:60: -1- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:61: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:62: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:63: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:64: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:65: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:66: -1- AC_DEFUN([LT_AC_PROG_EGREP])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:71: -1- AC_DEFUN([_AC_PROG_LIBTOOL])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:72: -1- AC_DEFUN([AC_LIBTOOL_SETUP])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:73: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:74: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:75: -1- AC_DEFUN([_LT_AC_TAGCONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:77: -1- AC_DEFUN([_LT_AC_LANG_CXX])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:78: -1- AC_DEFUN([_LT_AC_LANG_F77])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:79: -1- AC_DEFUN([_LT_AC_LANG_GCJ])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:80: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:81: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:82: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:83: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:84: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:85: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:86: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:87: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:88: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:89: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:90: -1- AC_DEFUN([AC_LIBTOOL_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:91: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:93: -1- AC_DEFUN([_LT_AC_PROG_CXXCPP])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:96: -1- AC_DEFUN([_LT_PROG_F77])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:97: -1- AC_DEFUN([_LT_PROG_FC])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:98: -1- AC_DEFUN([_LT_PROG_CXX])
+m4trace:/usr/share/aclocal-1.14/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.14'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.14.1], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+m4trace:/usr/share/aclocal-1.14/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.14.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+m4trace:/usr/share/aclocal-1.14/auxdir.m4:47: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+m4trace:/usr/share/aclocal-1.14/cond.m4:12: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+m4trace:/usr/share/aclocal-1.14/depend.m4:26: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+m4trace:/usr/share/aclocal-1.14/depend.m4:163: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+m4trace:/usr/share/aclocal-1.14/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+m4trace:/usr/share/aclocal-1.14/depout.m4:12: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])
+m4trace:/usr/share/aclocal-1.14/depout.m4:71: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+m4trace:/usr/share/aclocal-1.14/init.m4:29: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi])
+m4trace:/usr/share/aclocal-1.14/init.m4:182: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+m4trace:/usr/share/aclocal-1.14/install-sh.m4:11: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST([install_sh])])
+m4trace:/usr/share/aclocal-1.14/lead-dot.m4:10: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+m4trace:/usr/share/aclocal-1.14/maintainer.m4:16: -1- AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t at _MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+
+])
+m4trace:/usr/share/aclocal-1.14/make.m4:12: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+m4trace:/usr/share/aclocal-1.14/missing.m4:11: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+m4trace:/usr/share/aclocal-1.14/missing.m4:20: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+m4trace:/usr/share/aclocal-1.14/options.m4:11: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+m4trace:/usr/share/aclocal-1.14/options.m4:17: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+m4trace:/usr/share/aclocal-1.14/options.m4:23: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+m4trace:/usr/share/aclocal-1.14/options.m4:29: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+m4trace:/usr/share/aclocal-1.14/prog-cc-c-o.m4:12: -1- AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+m4trace:/usr/share/aclocal-1.14/prog-cc-c-o.m4:47: -1- AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+m4trace:/usr/share/aclocal-1.14/runlog.m4:12: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+m4trace:/usr/share/aclocal-1.14/sanity.m4:11: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+m4trace:/usr/share/aclocal-1.14/silent.m4:12: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+m4trace:/usr/share/aclocal-1.14/strip.m4:17: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+m4trace:/usr/share/aclocal-1.14/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE])
+m4trace:/usr/share/aclocal-1.14/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+m4trace:/usr/share/aclocal-1.14/tar.m4:23: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
+  rm -rf conftest.dir
+
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+])
+m4trace:acinclude.m4:13: -1- AC_DEFUN([UD_PROG_NM], [
+    case "${NM-unset}" in
+	unset) AC_CHECK_PROGS(NM, nm, nm) ;;
+	*) AC_CHECK_PROGS(NM, $NM nm, nm) ;;
+    esac
+    AC_MSG_CHECKING(nm flags)
+    case "${NMFLAGS-unset}" in
+	unset) NMFLAGS= ;;
+    esac
+    AC_MSG_RESULT($NMFLAGS)
+    AC_SUBST(NMFLAGS)
+])
+m4trace:acinclude.m4:30: -1- AC_DEFUN([UD_PROG_M4], [
+    case "${M4-unset}" in
+	unset) AC_CHECK_PROGS(M4, m4 gm4, m4) ;;
+	*) AC_CHECK_PROGS(M4, $M4 m4 gm4, m4) ;;
+    esac
+    AC_MSG_CHECKING(m4 flags)
+    case "${M4FLAGS-unset}" in
+	unset) M4FLAGS=-B10000 ;;
+    esac
+    AC_MSG_RESULT($M4FLAGS)
+    AC_SUBST(M4FLAGS)
+])
+m4trace:acinclude.m4:47: -1- AC_DEFUN([UD_SRCDIR], [
+    AC_MSG_CHECKING(for top-level source-directory)
+    SRCDIR=`(cd $srcdir && pwd)`
+    AC_MSG_RESULT($SRCDIR)
+    AC_SUBST(SRCDIR)
+])
+m4trace:acinclude.m4:59: -1- AC_DEFUN([UD_C_LONG_LONG], [AC_MSG_CHECKING(for long long)
+AC_CACHE_VAL(ac_cv_c_long_long,
+[if test "$GCC" = yes; then
+  ac_cv_c_long_long=yes
+else
+AC_TRY_RUN([int main() {
+long long foo = 0;
+exit(sizeof(long long) < sizeof(long)); }],
+ac_cv_c_long_long=yes, ac_cv_c_long_long=no, :)
+fi])dnl
+AC_MSG_RESULT($ac_cv_c_long_long)
+if test "$ac_cv_c_long_long" = yes; then
+  AC_DEFINE([HAVE_LONG_LONG], [], [have long long type])
+fi
+])
+m4trace:acinclude.m4:77: -1- AC_DEFUN([UD_CHECK_SIZEOF], [changequote(<<, >>)dnl
+dnl The name to #define.
+define(<<AC_TYPE_NAME>>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl
+dnl The cache variable name.
+define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
+changequote([, ])dnl
+AC_MSG_CHECKING(size of $1)
+AC_CACHE_VAL(AC_CV_NAME,
+[AC_TRY_RUN([#include <stdio.h>
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#endif
+main()
+{
+  FILE *f=fopen("conftestval", "w");
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof($1));
+  exit(0);
+}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, AC_CV_NAME=0)])dnl
+AC_MSG_RESULT($AC_CV_NAME)
+AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [type size])
+undefine([AC_TYPE_NAME])dnl
+undefine([AC_CV_NAME])dnl
+])
+m4trace:acinclude.m4:111: -1- AC_DEFUN([UD_CHECK_IEEE], [
+AC_MSG_CHECKING(for IEEE floating point format)
+AC_TRY_RUN([#ifndef NO_FLOAT_H
+#include <float.h>
+#endif
+
+#define EXIT_NOTIEEE	1
+#define EXIT_MAYBEIEEE	0
+
+int
+main()
+{
+#if	defined(FLT_RADIX)	&& FLT_RADIX != 2
+		return EXIT_NOTIEEE;
+#elif	defined(DBL_MAX_EXP)	&& DBL_MAX_EXP != 1024
+		return EXIT_NOTIEEE;
+#elif	defined(DBL_MANT_DIG)	&& DBL_MANT_DIG != 53
+		return EXIT_NOTIEEE;
+#elif 	defined(FLT_MAX_EXP)	&& !(FLT_MAX_EXP == 1024 || FLT_MAX_EXP == 128)
+		return EXIT_NOTIEEE;
+#elif	defined(FLT_MANT_DIG)	&& !(FLT_MANT_DIG == 53 || FLT_MANT_DIG == 24)
+		return EXIT_NOTIEEE;
+#else
+	/* (assuming eight bit char) */
+	if(sizeof(double) != 8)
+		return EXIT_NOTIEEE;
+	if(!(sizeof(float) == 4 || sizeof(float) == 8))
+		return EXIT_NOTIEEE;
+
+	return EXIT_MAYBEIEEE;
+#endif
+}],ac_cv_c_ieeefloat=yes, ac_cv_c_ieeefloat=no, :)
+AC_MSG_RESULT($ac_cv_c_ieeefloat)
+if test "$ac_cv_c_ieeefloat" = no; then
+  AC_DEFINE([NO_IEEE_FLOAT], [], [no IEEE float on this platform])
+fi
+])
+m4trace:acinclude.m4:153: -1- AC_DEFUN([UD_PROG_CC_MAKEDEPEND], [
+    AC_MSG_CHECKING(how to make dependencies)
+    case `uname -s` in
+	IRIX*|OSF1)
+	    CC_MAKEDEPEND='cc -M'
+	    ;;
+	SunOS)
+	    case `uname -r` in
+		4*)
+		    CC_MAKEDEPEND='cc -M'
+		    ;;
+		5*|*)
+		    CC_MAKEDEPEND='cc -xM'
+		    ;;
+	    esac
+	    ;;
+	ULTRIX)
+	    case `uname -m` in
+		RISC)
+		    CC_MAKEDEPEND='cc -M'
+		    ;;
+		VAX)	# Can't handle prototypes in netcdf.h
+		    ;;
+	    esac
+	    ;;
+	AIX)	# Writes to .u files rather than standard out
+	    ;;
+	HP-UX)	# Writes escaped newlines to standard error
+	    ;;
+    esac
+    case "${CC_MAKEDEPEND}" in
+	'')
+	    CC_MAKEDEPEND=false
+	    ;;
+    esac
+    AC_MSG_RESULT($CC_MAKEDEPEND)
+    AC_SUBST(CC_MAKEDEPEND)
+])
+m4trace:acinclude.m4:197: -1- AC_DEFUN([UD_CHECK_FORTRAN_NCTYPE], [
+    AC_MSG_CHECKING(for Fortran-equivalent to netCDF \"$3\")
+    for type in $2; do
+	cat >conftest.f <<EOF
+               $type foo
+               end
+EOF
+	doit='$FC -c ${FFLAGS} conftest.f'
+	if AC_TRY_EVAL(doit); then
+	    break;
+	fi
+    done
+    rm -f conftest.f conftest.o
+    AC_DEFINE_UNQUOTED($1, $type, [type definition])
+    AC_MSG_RESULT($type)
+    $1=$type
+])
+m4trace:acinclude.m4:221: -1- AC_DEFUN([UD_CHECK_FORTRAN_CTYPE], [
+    AC_MSG_CHECKING(for Fortran-equivalent to C \"$3\")
+    cat >conftest.f <<EOF
+        subroutine sub(values, minval, maxval)
+        implicit        none
+        $2              values(5), minval, maxval
+        minval = values(2)
+        maxval = values(4)
+        if (values(2) .ge. values(4)) then
+            minval = values(4)
+            maxval = values(2)
+        endif
+        end
+EOF
+    doit='$FC -c ${FFLAGS conftest.f'
+    if AC_TRY_EVAL(doit); then
+	mv conftest.o conftestf.o
+	cat >conftest.c <<EOF
+#include <limits.h>
+#include <float.h>
+void main()
+{
+$3		values[[]] = {0, $4, 0, $5, 0};
+$3		minval, maxval;
+void	$FCALLSCSUB($3*, $3*, $3*);
+$FCALLSCSUB(values, &minval, &maxval);
+exit(!(minval == $4 && maxval == $5));
+}
+EOF
+	doit='$CC -o conftest ${CPPFLAGS} ${CFLAGS} ${LDFLAGS} conftest.c conftestf.o ${LIBS}'
+	if AC_TRY_EVAL(doit); then
+	    doit=./conftest
+	    if AC_TRY_EVAL(doit); then
+		AC_MSG_RESULT($2)
+		$1=$2
+		AC_DEFINE_UNQUOTED($1,$2, [take a guess])
+	    else
+		AC_MSG_RESULT(no equivalent type)
+		unset $1
+	    fi
+	else
+	    AC_MSG_ERROR(Could not compile-and-link conftest.c and conftestf.o)
+	fi
+    else
+	AC_MSG_ERROR(Could not compile conftest.f)
+    fi
+    rm -f conftest*
+])
+m4trace:acinclude.m4:276: -1- AC_DEFUN([UD_CHECK_FORTRAN_TYPE], [
+    for ftype in $2; do
+	AC_MSG_CHECKING(for Fortran \"$ftype\")
+	cat >conftest.f <<EOF
+      subroutine sub(value)
+      $ftype value
+      end
+EOF
+	doit='$FC -c ${FFLAGS} conftest.f'
+	if AC_TRY_EVAL(doit); then
+	    AC_MSG_RESULT(yes)
+	    $1=$ftype
+	    AC_DEFINE_UNQUOTED($1, $ftype, [type thing])
+	    break
+	else
+	    AC_MSG_RESULT(no)
+	fi
+    done
+    rm -f conftest*
+])
+m4trace:acinclude.m4:302: -1- AC_DEFUN([UD_CHECK_FCALLSCSUB], [
+#    AC_REQUIRE([UD_PROG_FC])
+    case "$FC" in
+	'') ;;
+	*)
+	    AC_REQUIRE([UD_PROG_NM])
+	    AC_BEFORE([UD_CHECK_FORTRAN_CTYPE])
+	    AC_BEFORE([UD_CHECK_CTYPE_FORTRAN])
+	    AC_MSG_CHECKING(for C-equivalent to Fortran routine \"SUB\")
+	    cat >conftest.f <<\EOF
+              call sub()
+              end
+EOF
+	    doit='$FC -c ${FFLAGS} conftest.f'
+	    if AC_TRY_EVAL(doit); then
+		FCALLSCSUB=`$NM $NMFLAGS conftest.o | awk '
+		    /SUB_/{print "SUB_";exit}
+		    /SUB/ {print "SUB"; exit}
+		    /sub_/{print "sub_";exit}
+		    /sub/ {print "sub"; exit}'`
+		case "$FCALLSCSUB" in
+		    '') AC_MSG_ERROR(not found)
+			;;
+		    *)  AC_MSG_RESULT($FCALLSCSUB)
+			;;
+		esac
+	    else
+		AC_MSG_ERROR(Could not compile conftest.f)
+	    fi
+	    rm -f conftest*
+	    ;;
+    esac
+])
+m4trace:acinclude.m4:342: -1- AC_DEFUN([UD_CHECK_CTYPE_FORTRAN], [
+    cat >conftestf.f <<EOF
+           $1 values(4)
+           data values /-1, -2, -3, -4/
+           call sub(values)
+           end
+EOF
+    for ctype in $2; do
+	AC_MSG_CHECKING(if Fortran \"$1\" is C \"$ctype\")
+	cat >conftest.c <<EOF
+	    void $FCALLSCSUB(values)
+		$ctype values[[4]];
+	    {
+		exit(values[[1]] != -2 || values[[2]] != -3);
+	    }
+EOF
+	doit='$CC -c ${CPPFLAGS} ${CFLAGS} conftest.c'
+	if AC_TRY_EVAL(doit); then
+	    doit='$FC ${FFLAGS} -c conftestf.f'
+	    if AC_TRY_EVAL(doit); then
+	        doit='$FC -o conftest ${FFLAGS} ${LDFLAGS} conftestf.o conftest.o ${FLIBS} ${LIBS}'
+	        if AC_TRY_EVAL(doit); then
+		    doit=./conftest
+		    if AC_TRY_EVAL(doit); then
+		        AC_MSG_RESULT(yes)
+		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
+			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
+		        AC_DEFINE_UNQUOTED(NF_$3[]_IS_C_$cname, [1], [fortran to c conversion])
+		        break
+		    else
+		        AC_MSG_RESULT(no)
+		    fi
+	        else
+		    AC_MSG_ERROR(Could not link conftestf.o and conftest.o)
+	        fi
+	    else
+		AC_MSG_ERROR(Could not compile conftestf.f)
+	    fi
+	else
+	    AC_MSG_ERROR(Could not compile conftest.c)
+	fi
+    done
+    rm -f conftest*
+])
+m4trace:acinclude.m4:391: -1- AC_DEFUN([UD_FORTRAN_TYPES], [
+#    AC_REQUIRE([UD_PROG_FC])
+    case "$FC" in
+    '')
+	;;
+    *)
+	AC_REQUIRE([UD_CHECK_FCALLSCSUB])
+dnl	UD_CHECK_FORTRAN_TYPE(NF_INT1_T, byte integer*1 "integer(kind(1))")
+dnl	UD_CHECK_FORTRAN_TYPE(NF_INT2_T, integer*2 "integer(kind(2))")
+	UD_CHECK_FORTRAN_TYPE(NF_INT1_T, byte integer*1 "integer(kind=1)" "integer(selected_int_kind(2))")
+	UD_CHECK_FORTRAN_TYPE(NF_INT2_T, integer*2 "integer(kind=2)" "integer(selected_int_kind(4))")
+
+	case "${NF_INT1_T}" in
+	    '') ;;
+	    *)  UD_CHECK_CTYPE_FORTRAN($NF_INT1_T, "signed char", INT1)
+		UD_CHECK_CTYPE_FORTRAN($NF_INT1_T, "short", INT1)
+		UD_CHECK_CTYPE_FORTRAN($NF_INT1_T, "int", INT1)
+		UD_CHECK_CTYPE_FORTRAN($NF_INT1_T, "long", INT1)
+		;;
+	esac
+	case "${NF_INT2_T}" in
+	    '') ;;
+	    *)  UD_CHECK_CTYPE_FORTRAN($NF_INT2_T, short, INT2)
+		UD_CHECK_CTYPE_FORTRAN($NF_INT2_T, int, INT2)
+		UD_CHECK_CTYPE_FORTRAN($NF_INT2_T, long, INT2)
+		;;
+	esac
+	UD_CHECK_CTYPE_FORTRAN(integer, int long, INT)
+	UD_CHECK_CTYPE_FORTRAN(real, float double, REAL)
+	UD_CHECK_CTYPE_FORTRAN(doubleprecision, double float, DOUBLEPRECISION)
+
+dnl	UD_CHECK_FORTRAN_NCTYPE(NCBYTE_T, byte integer*1 integer, byte)
+	UD_CHECK_FORTRAN_NCTYPE(NCBYTE_T, byte integer*1 "integer(kind=1)" "integer(selected_int_kind(2))" integer, byte)
+
+dnl	UD_CHECK_FORTRAN_NCTYPE(NCSHORT_T, integer*2 integer, short)
+	UD_CHECK_FORTRAN_NCTYPE(NCSHORT_T, integer*2 "integer(kind=2)" "integer(selected_int_kind(4))" integer, short)
+dnl	UD_CHECK_FORTRAN_CTYPE(NF_SHORT_T, $NCSHORT_T, short, SHRT_MIN, SHRT_MAX)
+
+dnl	UD_CHECK_FORTRAN_NCTYPE(NCLONG_T, integer*4 integer, long)
+dnl	UD_CHECK_FORTRAN_CTYPE(NF_INT_T, integer, int, INT_MIN, INT_MAX)
+
+dnl	UD_CHECK_FORTRAN_NCTYPE(NCFLOAT_T, real*4 real, float)
+dnl	UD_CHECK_FORTRAN_CTYPE(NF_FLOAT_T, $NCFLOAT_T, float, FLT_MIN, FLT_MAX)
+
+dnl	UD_CHECK_FORTRAN_NCTYPE(NCDOUBLE_T, real*8 doubleprecision real, double)
+dnl	UD_CHECK_FORTRAN_CTYPE(NF_DOUBLE_T, $NCDOUBLE_T, double, DBL_MIN, DBL_MAX)
+	;;
+    esac
+])
+m4trace:acinclude.m4:445: -1- AC_DEFUN([UD_MAKEWHATIS], [
+    #
+    # NB: We always want to define WHATIS to prevent the
+    # $(MANDIR)/$(WHATIS) make(1) target from being just $(MANDIR)/ and
+    # conflicting with the (directory creation) target with the same name.
+    #
+    WHATIS=whatis
+    case `uname -sr` in
+	BSD/OS*|FreeBSD*)
+	    # Can't generate a user-database -- only /usr/share/man/whatis.db.
+	    MAKEWHATIS_CMD=
+	    ;;
+	'IRIX64 6.5'|'IRIX 6.5')
+	    MAKEWHATIS_CMD='/usr/lib/makewhatis -M $(MANDIR) $(MANDIR)/whatis'
+	    ;;
+	'IRIX 6'*)
+	    # Can't generate a user-database.
+	    MAKEWHATIS_CMD=
+	    ;;
+	HP-UX*)
+	    # Can't generate a user-database -- only /usr/lib/whatis.
+	    MAKEWHATIS_CMD=
+	    ;;
+	'Linux '*)
+	    # /usr/sbin/makewhatis doesn't work
+	    MAKEWHATIS_CMD=
+	    ;;
+	ULTRIX*)
+	    # Can't generate a user-database -- only /usr/lib/whatis.
+	    MAKEWHATIS_CMD=
+	    ;;
+	*)
+	    if test -r /usr/man/windex; then
+		WHATIS=windex
+	    fi
+	    AC_CHECK_PROGS(prog, catman makewhatis /usr/lib/makewhatis)
+	    case "$prog" in
+		*catman*)
+		    MAKEWHATIS_CMD=$prog' -w -M $(MANDIR)'
+		    ;;
+		*makewhatis*)
+		    MAKEWHATIS_CMD=$prog' $(MANDIR)'
+		    ;;
+	    esac
+	    ;;
+    esac
+    AC_SUBST(WHATIS)
+    AC_SUBST(MAKEWHATIS_CMD)
+    AC_MSG_CHECKING(for manual-page index command)
+    AC_MSG_RESULT($MAKEWHATIS_CMD)
+])
+m4trace:acinclude.m4:501: -1- AC_DEFUN([UD_CHECK_LIB_MATH], [
+    case "${MATHLIB}" in
+	'')
+	    AC_CHECK_LIB(c, tanh, MATHLIB=,
+		    AC_CHECK_LIB(m, tanh, MATHLIB=-lm, MATHLIB=))
+	    ;;
+	*)
+	    ;;
+    esac 
+   AC_SUBST(MATHLIB)
+])
+m4trace:acinclude.m4:517: -1- AC_DEFUN([UD_FTPBINDIR], [dnl
+    AC_MSG_CHECKING([binary distribution directory])
+    case ${FTPBINDIR-unset} in
+	unset)
+	    system=`(system) 2>/dev/null || echo dummy_system`
+	    FTPBINDIR=${FTPDIR-/home/ftp}/pub/binary/$system
+	    ;;
+    esac
+    AC_SUBST(FTPBINDIR)dnl
+    AC_MSG_RESULT($FTPBINDIR)
+])
+m4trace:acinclude.m4:538: -1- AC_DEFUN([UD_CONFIG_HEADER], [define(UD_LIST_HEADER, $1)])
+m4trace:acinclude.m4:547: -1- AC_DEFUN([UD_DISPLAY_RESULTS], [
+AC_MSG_CHECKING(CPPFLAGS)
+AC_MSG_RESULT($CPPFLAGS)
+AC_MSG_CHECKING(CC CFLAGS)
+AC_MSG_RESULT($CC $CFLAGS)
+ud_type_cc=`type $CC`
+AC_MSG_CHECKING(type $CC)
+AC_MSG_RESULT($ud_type_cc)
+
+AC_MSG_CHECKING(CXX)
+if test -n "$CXX"; then
+	AC_MSG_RESULT($CXX)
+	AC_MSG_CHECKING(CXXFLAGS)
+	AC_MSG_RESULT($CXXFLAGS)
+	ud_type_CXX=`type $CXX`
+	AC_MSG_CHECKING(type $CXX)
+	AC_MSG_RESULT($ud_type_CXX)
+else
+	AC_MSG_RESULT(unset)
+fi
+
+AC_MSG_CHECKING(FC)
+if test -n "$FC"; then
+	AC_MSG_RESULT($FC)
+	AC_MSG_CHECKING(FFLAGS)
+	AC_MSG_RESULT($FFLAGS)
+	ud_type_fc=`type $FC`
+	AC_MSG_CHECKING(type $FC)
+	AC_MSG_RESULT($ud_type_fc)
+else
+	AC_MSG_RESULT(unset)
+fi
+
+AC_MSG_CHECKING(F90)
+if test -n "$F90"; then
+	AC_MSG_RESULT($F90)
+	AC_MSG_CHECKING(FCFLAGS)
+	AC_MSG_RESULT($FCFLAGS)
+	ud_type_F90=`type $F90`
+	AC_MSG_CHECKING(type $F90)
+	AC_MSG_RESULT($ud_type_F90)
+else
+	AC_MSG_RESULT(unset)
+fi
+
+AC_MSG_CHECKING(AR)
+if test -n "$AR"; then
+	AC_MSG_RESULT($AR)
+	AC_MSG_CHECKING(AR_FLAGS)
+	AC_MSG_RESULT($AR_FLAGS)
+	ud_type_AR=`type $AR`
+	AC_MSG_CHECKING(type $AR)
+	AC_MSG_RESULT($ud_type_AR)
+else
+	AC_MSG_RESULT(unset)
+fi
+
+AC_MSG_CHECKING(NM)
+if test -n "$NM"; then
+	AC_MSG_RESULT($NM)
+	AC_MSG_CHECKING(NMFLAGS)
+	AC_MSG_RESULT($NMFLAGS)
+#	ud_type_NM=`type $NM`
+#	AC_MSG_CHECKING(type $NM)
+#	AC_MSG_RESULT($ud_type_NM)
+else
+	AC_MSG_RESULT(unset)
+fi
+
+])
+m4trace:acinclude.m4:621: -1- AC_DEFUN([AC_PROG_FC_UPPERCASE_MOD], [
+AC_LANG_PUSH(Fortran)
+AC_MSG_CHECKING([if Fortran 90 compiler capitalizes .mod filenames])
+		    cat <<EOF >conftest.f90
+		      module conftest
+		      end module conftest
+EOF
+ac_try='$F90 ${F90FLAGS} conftest.f90 -c ${F90LIBS}>&AS_MESSAGE_LOG_FD'
+AC_TRY_EVAL(ac_try)
+# Following changed from "test -f" to adapt to OSX case-insensitive filesystems
+if test `ls *.mod` CONFTEST.mod ; then
+   ac_cv_prog_f90_uppercase_mod=yes
+   rm -f CONFTEST.mod
+else
+   ac_cv_prog_f90_uppercase_mod=no
+fi
+AC_MSG_RESULT($ac_cv_prog_f90_uppercase_mod)
+#rm -f conftest*
+AC_LANG_POP(Fortran)
+])
+m4trace:acinclude.m4:656: -1- AC_DEFUN([AX_F90_MODULE_FLAG], [
+AC_CACHE_CHECK([fortran 90 modules inclusion flag],
+ax_cv_f90_modflag,
+[AC_LANG_PUSH(Fortran)
+i=0
+while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do
+  i=`expr $i + 1`
+done
+mkdir tmpdir_$i
+cd tmpdir_$i
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([module conftest_module
+   contains
+   subroutine conftest_routine
+   write(*,'(a)') 'gotcha!'
+   end subroutine conftest_routine
+   end module conftest_module])
+  ],[],[])
+cd ..
+ax_cv_f90_modflag="not found"
+for ax_flag in "-I" "-M" "-p"; do
+  if test "$ax_cv_f90_modflag" = "not found" ; then
+    ax_save_FCFLAGS="$FCFLAGS"
+    FCFLAGS="$ax_save_FCFLAGS ${ax_flag}tmpdir_$i"
+    AC_COMPILE_IFELSE([AC_LANG_SOURCE([program conftest_program
+       use conftest_module
+       call conftest_routine
+       end program conftest_program])
+      ],[ax_cv_f90_modflag="$ax_flag"],[])
+    FCFLAGS="$ax_save_FCFLAGS"
+  fi
+done
+rm -fr tmpdir_$i
+if test "$ax_flag" = "not found" ; then
+  AC_MSG_ERROR([unable to find compiler flag for modules inclusion])
+fi
+AC_LANG_POP(Fortran)
+])])
+m4trace:acinclude.m4:709: -1- AC_DEFUN([AX_C_FLOAT_WORDS_BIGENDIAN], [AC_CACHE_CHECK(whether float word ordering is bigendian,
+                  ax_cv_c_float_words_bigendian, [
+
+ax_cv_c_float_words_bigendian=unknown
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+
+double d = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0;
+
+]])], [
+
+if grep noonsees conftest.$ac_objext >/dev/null ; then
+  ax_cv_c_float_words_bigendian=yes
+fi
+if grep seesnoon conftest.$ac_objext >/dev/null ; then
+  if test "$ax_cv_c_float_words_bigendian" = unknown; then
+    ax_cv_c_float_words_bigendian=no
+  else
+    ax_cv_c_float_words_bigendian=unknown
+  fi
+fi
+
+])])
+
+case $ax_cv_c_float_words_bigendian in
+  yes)
+    m4_default([$1],
+      [AC_DEFINE([FLOAT_WORDS_BIGENDIAN], 1,
+                 [Define to 1 if your system stores words within floats
+                  with the most significant word first])]) ;;
+  no)
+    $2 ;;
+  *)
+    m4_default([$3],
+      [AC_MSG_ERROR([
+
+Unknown float word ordering. You need to manually preset
+ax_cv_c_float_words_bigendian=no (or yes) according to your system.
+
+    ])]) ;;
+esac
+
+])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([^_?A[CHUM]_])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([_AC_])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^AS_FLAGS$])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([^_?m4_])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([^dnl$])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^SHELL$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PATH_SEPARATOR$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^exec_prefix$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^prefix$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^program_transform_name$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^bindir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^sbindir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^libexecdir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^datadir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^sysconfdir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^sharedstatedir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^localstatedir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^includedir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^oldincludedir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^docdir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^infodir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^dvidir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^pdfdir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^psdir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^libdir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^mandir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^DEFS$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^ECHO_C$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^ECHO_N$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^ECHO_T$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^build_alias$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^host_alias$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^target_alias$])
+m4trace:configure.ac:17: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:22: -1- AC_CONFIG_MACRO_DIR([m4])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^build$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^build_cpu$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^build_vendor$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^build_os$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^host$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^target$])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^target_cpu$])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^target_vendor$])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^target_os$])
+m4trace:configure.ac:31: -1- AM_INIT_AUTOMAKE([foreign dist-zip subdir-objects])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
+m4trace:configure.ac:31: -1- AM_SET_CURRENT_AUTOMAKE_VERSION
+m4trace:configure.ac:31: -1- AM_AUTOMAKE_VERSION([1.14.1])
+m4trace:configure.ac:31: -1- _AM_AUTOCONF_VERSION([2.69])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^INSTALL_DATA$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^am__isrc$])
+m4trace:configure.ac:31: -1- _AM_SUBST_NOTMAKE([am__isrc])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^CYGPATH_W$])
+m4trace:configure.ac:31: -1- _AM_SET_OPTIONS([foreign dist-zip subdir-objects])
+m4trace:configure.ac:31: -1- _AM_SET_OPTION([foreign])
+m4trace:configure.ac:31: -2- _AM_MANGLE_OPTION([foreign])
+m4trace:configure.ac:31: -1- _AM_SET_OPTION([dist-zip])
+m4trace:configure.ac:31: -2- _AM_MANGLE_OPTION([dist-zip])
+m4trace:configure.ac:31: -1- _AM_SET_OPTION([subdir-objects])
+m4trace:configure.ac:31: -2- _AM_MANGLE_OPTION([subdir-objects])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:31: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])
+m4trace:configure.ac:31: -2- _AM_MANGLE_OPTION([no-define])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:31: -1- AM_SANITY_CHECK
+m4trace:configure.ac:31: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+m4trace:configure.ac:31: -1- AM_MISSING_HAS_RUN
+m4trace:configure.ac:31: -1- AM_AUX_DIR_EXPAND
+m4trace:configure.ac:31: -1- m4_pattern_allow([^ACLOCAL$])
+m4trace:configure.ac:31: -1- AM_MISSING_PROG([AUTOCONF], [autoconf])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AUTOCONF$])
+m4trace:configure.ac:31: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AUTOMAKE$])
+m4trace:configure.ac:31: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AUTOHEADER$])
+m4trace:configure.ac:31: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^MAKEINFO$])
+m4trace:configure.ac:31: -1- AM_PROG_INSTALL_SH
+m4trace:configure.ac:31: -1- m4_pattern_allow([^install_sh$])
+m4trace:configure.ac:31: -1- AM_PROG_INSTALL_STRIP
+m4trace:configure.ac:31: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^MKDIR_P$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^mkdir_p$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AWK$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.ac:31: -1- AM_SET_LEADING_DOT
+m4trace:configure.ac:31: -1- m4_pattern_allow([^am__leading_dot$])
+m4trace:configure.ac:31: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+m4trace:configure.ac:31: -2- _AM_MANGLE_OPTION([tar-ustar])
+m4trace:configure.ac:31: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])
+m4trace:configure.ac:31: -2- _AM_MANGLE_OPTION([tar-pax])
+m4trace:configure.ac:31: -1- _AM_PROG_TAR([v7])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AMTAR$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^am__tar$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^am__untar$])
+m4trace:configure.ac:31: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+m4trace:configure.ac:31: -2- _AM_MANGLE_OPTION([no-dependencies])
+m4trace:configure.ac:31: -1- AM_SILENT_RULES
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AM_V$])
+m4trace:configure.ac:31: -1- AM_SUBST_NOTMAKE([AM_V])
+m4trace:configure.ac:31: -1- _AM_SUBST_NOTMAKE([AM_V])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AM_DEFAULT_V$])
+m4trace:configure.ac:31: -1- AM_SUBST_NOTMAKE([AM_DEFAULT_V])
+m4trace:configure.ac:31: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AM_BACKSLASH$])
+m4trace:configure.ac:31: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
+m4trace:configure.ac:32: -1- AM_MAINTAINER_MODE([])
+m4trace:configure.ac:32: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+m4trace:configure.ac:32: -1- m4_pattern_allow([^MAINTAINER_MODE_TRUE$])
+m4trace:configure.ac:32: -1- m4_pattern_allow([^MAINTAINER_MODE_FALSE$])
+m4trace:configure.ac:32: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_TRUE])
+m4trace:configure.ac:32: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_FALSE])
+m4trace:configure.ac:32: -1- m4_pattern_allow([^MAINT$])
+m4trace:configure.ac:65: -1- m4_pattern_allow([^EXTRA_TESTS$])
+m4trace:configure.ac:67: -1- AM_CONDITIONAL([EXTRA_TESTS], [test x$enable_extra_tests = xyes])
+m4trace:configure.ac:67: -1- m4_pattern_allow([^EXTRA_TESTS_TRUE$])
+m4trace:configure.ac:67: -1- m4_pattern_allow([^EXTRA_TESTS_FALSE$])
+m4trace:configure.ac:67: -1- _AM_SUBST_NOTMAKE([EXTRA_TESTS_TRUE])
+m4trace:configure.ac:67: -1- _AM_SUBST_NOTMAKE([EXTRA_TESTS_FALSE])
+m4trace:configure.ac:76: -1- AM_CONDITIONAL([BUILD_DOCS], [test "x$enable_doxygen" = xyes])
+m4trace:configure.ac:76: -1- m4_pattern_allow([^BUILD_DOCS_TRUE$])
+m4trace:configure.ac:76: -1- m4_pattern_allow([^BUILD_DOCS_FALSE$])
+m4trace:configure.ac:76: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_TRUE])
+m4trace:configure.ac:76: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_FALSE])
+m4trace:configure.ac:89: -1- m4_pattern_allow([^BUILD_INTERNAL_DOCS$])
+m4trace:configure.ac:92: -1- m4_pattern_allow([^DOXYGEN$])
+m4trace:configure.ac:99: -1- m4_pattern_allow([^DOT$])
+m4trace:configure.ac:111: -1- m4_pattern_allow([^HAVE_DOT$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.ac:128: -1- _AM_PROG_CC_C_O
+m4trace:configure.ac:128: -1- AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext])
+m4trace:configure.ac:128: -1- _AM_DEPENDENCIES([CC])
+m4trace:configure.ac:128: -1- AM_SET_DEPDIR
+m4trace:configure.ac:128: -1- m4_pattern_allow([^DEPDIR$])
+m4trace:configure.ac:128: -1- AM_OUTPUT_DEPENDENCY_COMMANDS
+m4trace:configure.ac:128: -1- AM_MAKE_INCLUDE
+m4trace:configure.ac:128: -1- m4_pattern_allow([^am__include$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^am__quote$])
+m4trace:configure.ac:128: -1- AM_DEP_TRACK
+m4trace:configure.ac:128: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^AMDEP_TRUE$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^AMDEP_FALSE$])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^am__nodep$])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([am__nodep])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.ac:128: -1- AM_CONDITIONAL([am__fastdepCC], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.ac:129: -1- AM_PROG_CC_C_O
+m4trace:configure.ac:130: -1- m4_pattern_allow([^const$])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^FC$])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^FCFLAGS$])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^FC$])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^ac_ct_FC$])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^F77$])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^FFLAGS$])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^F77$])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^ac_ct_F77$])
+m4trace:configure.ac:176: -1- m4_pattern_allow([^FCFLAGS_f90$])
+m4trace:configure.ac:178: -1- AX_F90_MODULE_FLAG
+m4trace:configure.ac:179: -1- m4_pattern_allow([^MOD_FLAG$])
+m4trace:configure.ac:204: -1- m4_pattern_allow([^HAVE_F2008$])
+m4trace:configure.ac:219: -1- m4_pattern_allow([^HAVE_TS29113_SUPPORT$])
+m4trace:configure.ac:277: -1- AM_CONDITIONAL([LARGE_FILE_TESTS], [test x$enable_large_file_tests = xyes])
+m4trace:configure.ac:277: -1- m4_pattern_allow([^LARGE_FILE_TESTS_TRUE$])
+m4trace:configure.ac:277: -1- m4_pattern_allow([^LARGE_FILE_TESTS_FALSE$])
+m4trace:configure.ac:277: -1- _AM_SUBST_NOTMAKE([LARGE_FILE_TESTS_TRUE])
+m4trace:configure.ac:277: -1- _AM_SUBST_NOTMAKE([LARGE_FILE_TESTS_FALSE])
+m4trace:configure.ac:279: -1- m4_pattern_allow([^LARGE_FILE_TESTS$])
+m4trace:configure.ac:289: -1- AM_CONDITIONAL([BUILD_BENCHMARKS], [test x$enable_benchmarks = xyes])
+m4trace:configure.ac:289: -1- m4_pattern_allow([^BUILD_BENCHMARKS_TRUE$])
+m4trace:configure.ac:289: -1- m4_pattern_allow([^BUILD_BENCHMARKS_FALSE$])
+m4trace:configure.ac:289: -1- _AM_SUBST_NOTMAKE([BUILD_BENCHMARKS_TRUE])
+m4trace:configure.ac:289: -1- _AM_SUBST_NOTMAKE([BUILD_BENCHMARKS_FALSE])
+m4trace:configure.ac:304: -1- m4_pattern_allow([^TEMP_LARGE$])
+m4trace:configure.ac:332: -1- m4_pattern_allow([^FCFLAGS_f90$])
+m4trace:configure.ac:334: -1- AX_F90_MODULE_FLAG
+m4trace:configure.ac:335: -1- m4_pattern_allow([^MOD_FLAG$])
+m4trace:configure.ac:343: -1- AM_CONDITIONAL([BUILD_F03], [test "x$nc_build_f03" = xyes])
+m4trace:configure.ac:343: -1- m4_pattern_allow([^BUILD_F03_TRUE$])
+m4trace:configure.ac:343: -1- m4_pattern_allow([^BUILD_F03_FALSE$])
+m4trace:configure.ac:343: -1- _AM_SUBST_NOTMAKE([BUILD_F03_TRUE])
+m4trace:configure.ac:343: -1- _AM_SUBST_NOTMAKE([BUILD_F03_FALSE])
+m4trace:configure.ac:348: -1- LT_INIT
+m4trace:configure.ac:348: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
+m4trace:configure.ac:348: -1- LTOPTIONS_VERSION
+m4trace:configure.ac:348: -1- LTSUGAR_VERSION
+m4trace:configure.ac:348: -1- LTVERSION_VERSION
+m4trace:configure.ac:348: -1- LTOBSOLETE_VERSION
+m4trace:configure.ac:348: -1- _LT_PROG_LTMAIN
+m4trace:configure.ac:348: -1- m4_pattern_allow([^LIBTOOL$])
+m4trace:configure.ac:348: -1- _LT_PREPARE_SED_QUOTE_VARS
+m4trace:configure.ac:348: -1- _LT_PROG_ECHO_BACKSLASH
+m4trace:configure.ac:348: -1- LT_PATH_LD
+m4trace:configure.ac:348: -1- m4_pattern_allow([^SED$])
+m4trace:configure.ac:348: -1- AC_PROG_EGREP
+m4trace:configure.ac:348: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^FGREP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:348: -1- LT_PATH_NM
+m4trace:configure.ac:348: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^LN_S$])
+m4trace:configure.ac:348: -1- LT_CMD_MAX_LEN
+m4trace:configure.ac:348: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^AR$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^ac_ct_AR$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:348: -1- _LT_WITH_SYSROOT
+m4trace:configure.ac:348: -1- m4_pattern_allow([LT_OBJDIR])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^LT_OBJDIR$])
+m4trace:configure.ac:348: -1- _LT_CC_BASENAME([$compiler])
+m4trace:configure.ac:348: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH])
+m4trace:configure.ac:348: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH])
+m4trace:configure.ac:348: -1- LT_SUPPORTED_TAG([CC])
+m4trace:configure.ac:348: -1- _LT_COMPILER_BOILERPLATE
+m4trace:configure.ac:348: -1- _LT_LINKER_BOILERPLATE
+m4trace:configure.ac:348: -1- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, )="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"])
+m4trace:configure.ac:348: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, ) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, )], [$_LT_TAGVAR(lt_prog_compiler_pic, )@&t at m4_if([],[],[ -DPIC],[m4_if([],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, ) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, )=" $_LT_TAGVAR(lt_prog_compiler_pic, )" ;;
+     esac], [_LT_TAGVAR(lt_prog_compiler_pic, )=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, )=no])
+m4trace:configure.ac:348: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, )=])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^MANIFEST_TOOL$])
+m4trace:configure.ac:348: -1- _LT_REQUIRED_DARWIN_CHECKS
+m4trace:configure.ac:348: -1- m4_pattern_allow([^DSYMUTIL$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^NMEDIT$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^LIPO$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^OTOOL$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^OTOOL64$])
+m4trace:configure.ac:348: -1- _LT_LINKER_OPTION([if $CC understands -b], [lt_cv_prog_compiler__b], [-b], [_LT_TAGVAR(archive_cmds, )='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, )='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])
+m4trace:configure.ac:348: -1- LT_SYS_DLOPEN_SELF
+m4trace:configure.ac:348: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
+m4trace:configure.ac:348: -1- LT_LANG([F77])
+m4trace:configure.ac:348: -1- LT_SUPPORTED_TAG([F77])
+m4trace:configure.ac:348: -1- _LT_COMPILER_BOILERPLATE
+m4trace:configure.ac:348: -1- _LT_LINKER_BOILERPLATE
+m4trace:configure.ac:348: -1- _LT_CC_BASENAME([$compiler])
+m4trace:configure.ac:348: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, F77) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, F77)], [$_LT_TAGVAR(lt_prog_compiler_pic, F77)@&t at m4_if([F77],[],[ -DPIC],[m4_if([F77],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, F77) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, F77)=" $_LT_TAGVAR(lt_prog_compiler_pic, F77)" ;;
+     esac], [_LT_TAGVAR(lt_prog_compiler_pic, F77)=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, F77)=no])
+m4trace:configure.ac:348: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_F77], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, F77)=])
+m4trace:configure.ac:348: -1- LT_LANG([FC])
+m4trace:configure.ac:348: -1- LT_SUPPORTED_TAG([FC])
+m4trace:configure.ac:348: -1- _LT_COMPILER_BOILERPLATE
+m4trace:configure.ac:348: -1- _LT_LINKER_BOILERPLATE
+m4trace:configure.ac:348: -1- _LT_CC_BASENAME([$compiler])
+m4trace:configure.ac:348: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, FC) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, FC)], [$_LT_TAGVAR(lt_prog_compiler_pic, FC)@&t at m4_if([FC],[],[ -DPIC],[m4_if([FC],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, FC) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, FC)=" $_LT_TAGVAR(lt_prog_compiler_pic, FC)" ;;
+     esac], [_LT_TAGVAR(lt_prog_compiler_pic, FC)=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, FC)=no])
+m4trace:configure.ac:348: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_FC], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, FC)=])
+m4trace:configure.ac:374: -1- m4_pattern_allow([^pgiFortran$])
+m4trace:configure.ac:378: -1- m4_pattern_allow([^gFortran$])
+m4trace:configure.ac:380: -1- m4_pattern_allow([^pgiFortran$])
+m4trace:configure.ac:384: -1- m4_pattern_allow([^f2cFortran$])
+m4trace:configure.ac:389: -1- m4_pattern_allow([^f2cFortran$])
+m4trace:configure.ac:396: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
+m4trace:configure.ac:396: -1- m4_pattern_allow([^_LARGE_FILES$])
+m4trace:configure.ac:411: -1- UD_FORTRAN_TYPES
+m4trace:configure.ac:411: -1- UD_CHECK_FCALLSCSUB
+m4trace:configure.ac:411: -1- UD_PROG_NM
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NMFLAGS$])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking for C-equivalent to Fortran routine \"SUB\"], [acinclude.m4:302: UD_CHECK_FCALLSCSUB is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for C-equivalent to Fortran routine \"SUB\"... ], [acinclude.m4:302: UD_CHECK_FCALLSCSUB is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_FORTRAN_TYPE([NF_INT1_T], [byte integer*1 "integer(kind=1)" "integer(selected_int_kind(2))"])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking for Fortran \"$ftype\"], [acinclude.m4:276: UD_CHECK_FORTRAN_TYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for Fortran \"$ftype\"... ], [acinclude.m4:276: UD_CHECK_FORTRAN_TYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NF_INT1_T$])
+m4trace:configure.ac:411: -1- UD_CHECK_FORTRAN_TYPE([NF_INT2_T], [integer*2 "integer(kind=2)" "integer(selected_int_kind(4))"])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking for Fortran \"$ftype\"], [acinclude.m4:276: UD_CHECK_FORTRAN_TYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for Fortran \"$ftype\"... ], [acinclude.m4:276: UD_CHECK_FORTRAN_TYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NF_INT2_T$])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([$NF_INT1_T], ["signed char"], [INT1])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([$NF_INT1_T], ["short"], [INT1])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([$NF_INT1_T], ["int"], [INT1])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([$NF_INT1_T], ["long"], [INT1])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([$NF_INT2_T], [short], [INT2])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([$NF_INT2_T], [int], [INT2])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([$NF_INT2_T], [long], [INT2])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([integer], [int long], [INT])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"integer\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"integer\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([real], [float double], [REAL])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"real\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"real\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([doubleprecision], [double float], [DOUBLEPRECISION])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"doubleprecision\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"doubleprecision\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_FORTRAN_NCTYPE([NCBYTE_T], [byte integer*1 "integer(kind=1)" "integer(selected_int_kind(2))" integer], [byte])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking for Fortran-equivalent to netCDF \"byte\"], [acinclude.m4:197: UD_CHECK_FORTRAN_NCTYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for Fortran-equivalent to netCDF \"byte\"... ], [acinclude.m4:197: UD_CHECK_FORTRAN_NCTYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NCBYTE_T$])
+m4trace:configure.ac:411: -1- UD_CHECK_FORTRAN_NCTYPE([NCSHORT_T], [integer*2 "integer(kind=2)" "integer(selected_int_kind(4))" integer], [short])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking for Fortran-equivalent to netCDF \"short\"], [acinclude.m4:197: UD_CHECK_FORTRAN_NCTYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for Fortran-equivalent to netCDF \"short\"... ], [acinclude.m4:197: UD_CHECK_FORTRAN_NCTYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NCSHORT_T$])
+m4trace:configure.ac:416: -1- m4_pattern_allow([^NCBYTE_T$])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^NCSHORT_T$])
+m4trace:configure.ac:418: -1- m4_pattern_allow([^NF_INT1_T$])
+m4trace:configure.ac:419: -1- m4_pattern_allow([^NF_INT2_T$])
+m4trace:configure.ac:420: -1- m4_pattern_allow([^NF_INT1_IS_C_SIGNED_CHAR$])
+m4trace:configure.ac:421: -1- m4_pattern_allow([^NF_INT2_IS_C_SHORT$])
+m4trace:configure.ac:422: -1- m4_pattern_allow([^NF_INT_IS_C_INT$])
+m4trace:configure.ac:423: -1- m4_pattern_allow([^NF_REAL_IS_C_FLOAT$])
+m4trace:configure.ac:424: -1- m4_pattern_allow([^NF_DOUBLEPRECISION_IS_C_DOUBLE$])
+m4trace:configure.ac:429: -1- AC_PROG_FC_UPPERCASE_MOD
+m4trace:configure.ac:434: -1- AM_CONDITIONAL([UPPER_CASE_MOD], [test "x$ac_cv_prog_f90_uppercase_mod" = xyes])
+m4trace:configure.ac:434: -1- m4_pattern_allow([^UPPER_CASE_MOD_TRUE$])
+m4trace:configure.ac:434: -1- m4_pattern_allow([^UPPER_CASE_MOD_FALSE$])
+m4trace:configure.ac:434: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_TRUE])
+m4trace:configure.ac:434: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_FALSE])
+m4trace:configure.ac:444: -1- AM_CONDITIONAL([EXTRA_EXAMPLE_TESTS], [test "x$enable_extra_example_tests" = xyes])
+m4trace:configure.ac:444: -1- m4_pattern_allow([^EXTRA_EXAMPLE_TESTS_TRUE$])
+m4trace:configure.ac:444: -1- m4_pattern_allow([^EXTRA_EXAMPLE_TESTS_FALSE$])
+m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([EXTRA_EXAMPLE_TESTS_TRUE])
+m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([EXTRA_EXAMPLE_TESTS_FALSE])
+m4trace:configure.ac:454: -1- AM_CONDITIONAL([BUILD_DLL], [test x$enable_dll = xyes])
+m4trace:configure.ac:454: -1- m4_pattern_allow([^BUILD_DLL_TRUE$])
+m4trace:configure.ac:454: -1- m4_pattern_allow([^BUILD_DLL_FALSE$])
+m4trace:configure.ac:454: -1- _AM_SUBST_NOTMAKE([BUILD_DLL_TRUE])
+m4trace:configure.ac:454: -1- _AM_SUBST_NOTMAKE([BUILD_DLL_FALSE])
+m4trace:configure.ac:456: -1- m4_pattern_allow([^DLL_NETCDF$])
+m4trace:configure.ac:462: -1- m4_pattern_allow([^HAVE_NETCDF_H$])
+m4trace:configure.ac:492: -1- m4_pattern_allow([^USE_NETCDF4$])
+m4trace:configure.ac:500: -1- AM_CONDITIONAL([USE_NETCDF4], [test "x$nc_build_v4" = xyes])
+m4trace:configure.ac:500: -1- m4_pattern_allow([^USE_NETCDF4_TRUE$])
+m4trace:configure.ac:500: -1- m4_pattern_allow([^USE_NETCDF4_FALSE$])
+m4trace:configure.ac:500: -1- _AM_SUBST_NOTMAKE([USE_NETCDF4_TRUE])
+m4trace:configure.ac:500: -1- _AM_SUBST_NOTMAKE([USE_NETCDF4_FALSE])
+m4trace:configure.ac:501: -1- AM_CONDITIONAL([BUILD_V2], [test "x$nc_build_v2" = xyes])
+m4trace:configure.ac:501: -1- m4_pattern_allow([^BUILD_V2_TRUE$])
+m4trace:configure.ac:501: -1- m4_pattern_allow([^BUILD_V2_FALSE$])
+m4trace:configure.ac:501: -1- _AM_SUBST_NOTMAKE([BUILD_V2_TRUE])
+m4trace:configure.ac:501: -1- _AM_SUBST_NOTMAKE([BUILD_V2_FALSE])
+m4trace:configure.ac:502: -1- AM_CONDITIONAL([USE_LOGGING], [test "x$nc_has_logging" = xyes])
+m4trace:configure.ac:502: -1- m4_pattern_allow([^USE_LOGGING_TRUE$])
+m4trace:configure.ac:502: -1- m4_pattern_allow([^USE_LOGGING_FALSE$])
+m4trace:configure.ac:502: -1- _AM_SUBST_NOTMAKE([USE_LOGGING_TRUE])
+m4trace:configure.ac:502: -1- _AM_SUBST_NOTMAKE([USE_LOGGING_FALSE])
+m4trace:configure.ac:503: -1- AM_CONDITIONAL([BUILD_DAP], [test "x$nc_has_dap" = xyes])
+m4trace:configure.ac:503: -1- m4_pattern_allow([^BUILD_DAP_TRUE$])
+m4trace:configure.ac:503: -1- m4_pattern_allow([^BUILD_DAP_FALSE$])
+m4trace:configure.ac:503: -1- _AM_SUBST_NOTMAKE([BUILD_DAP_TRUE])
+m4trace:configure.ac:503: -1- _AM_SUBST_NOTMAKE([BUILD_DAP_FALSE])
+m4trace:configure.ac:504: -1- AM_CONDITIONAL([BUILD_PARALLEL], [test "x$nc_has_parallel" = xyes])
+m4trace:configure.ac:504: -1- m4_pattern_allow([^BUILD_PARALLEL_TRUE$])
+m4trace:configure.ac:504: -1- m4_pattern_allow([^BUILD_PARALLEL_FALSE$])
+m4trace:configure.ac:504: -1- _AM_SUBST_NOTMAKE([BUILD_PARALLEL_TRUE])
+m4trace:configure.ac:504: -1- _AM_SUBST_NOTMAKE([BUILD_PARALLEL_FALSE])
+m4trace:configure.ac:505: -2- m4_pattern_allow([^NO_STDLIB_H$])
+m4trace:configure.ac:506: -2- m4_pattern_allow([^NO_SYS_TYPES_H$])
+m4trace:configure.ac:507: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$])
+m4trace:configure.ac:512: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:513: -1- m4_pattern_allow([^HAVE_SYS_WAIT_H$])
+m4trace:configure.ac:514: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$])
+m4trace:configure.ac:516: -1- m4_pattern_allow([^HAVE_VPRINTF$])
+m4trace:configure.ac:516: -1- m4_pattern_allow([^HAVE_DOPRNT$])
+m4trace:configure.ac:519: -1- m4_pattern_allow([^HAVE__BOOL$])
+m4trace:configure.ac:519: -1- m4_pattern_allow([^HAVE_STDBOOL_H$])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^size_t$])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^HAVE_ALLOCA_H$])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^HAVE_ALLOCA$])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^ALLOCA$])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^C_ALLOCA$])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^CRAY_STACKSEG_END$])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^STACK_DIRECTION$])
+m4trace:configure.ac:528: -1- m4_pattern_allow([^size_t$])
+m4trace:configure.ac:529: -1- m4_pattern_allow([^off_t$])
+m4trace:configure.ac:530: -1- m4_pattern_allow([^HAVE_SSIZE_T$])
+m4trace:configure.ac:530: -1- m4_pattern_allow([^HAVE_PTRDIFF_T$])
+m4trace:configure.ac:530: -1- m4_pattern_allow([^HAVE_UCHAR$])
+m4trace:configure.ac:530: -1- m4_pattern_allow([^HAVE_LONGLONG$])
+m4trace:configure.ac:531: -1- m4_pattern_allow([^__CHAR_UNSIGNED__$])
+m4trace:configure.ac:533: -1- m4_pattern_allow([^SIZEOF_SHORT$])
+m4trace:configure.ac:534: -1- m4_pattern_allow([^SIZEOF_INT$])
+m4trace:configure.ac:535: -1- m4_pattern_allow([^SIZEOF_LONG$])
+m4trace:configure.ac:536: -1- m4_pattern_allow([^SIZEOF_FLOAT$])
+m4trace:configure.ac:537: -1- m4_pattern_allow([^SIZEOF_DOUBLE$])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^SIZEOF_OFF_T$])
+m4trace:configure.ac:539: -1- m4_pattern_allow([^SIZEOF_SIZE_T$])
+m4trace:configure.ac:540: -1- m4_pattern_allow([^SIZEOF_PTRDIFF_T$])
+m4trace:configure.ac:548: -1- AM_CONDITIONAL([TEST_PARALLEL], [test "x$enable_parallel_tests" = xyes])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^TEST_PARALLEL_TRUE$])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^TEST_PARALLEL_FALSE$])
+m4trace:configure.ac:548: -1- _AM_SUBST_NOTMAKE([TEST_PARALLEL_TRUE])
+m4trace:configure.ac:548: -1- _AM_SUBST_NOTMAKE([TEST_PARALLEL_FALSE])
+m4trace:configure.ac:549: -1- AM_CONDITIONAL([USE_VALGRIND_TESTS], [test "x$enable_valgrind_tests" = xyes])
+m4trace:configure.ac:549: -1- m4_pattern_allow([^USE_VALGRIND_TESTS_TRUE$])
+m4trace:configure.ac:549: -1- m4_pattern_allow([^USE_VALGRIND_TESTS_FALSE$])
+m4trace:configure.ac:549: -1- _AM_SUBST_NOTMAKE([USE_VALGRIND_TESTS_TRUE])
+m4trace:configure.ac:549: -1- _AM_SUBST_NOTMAKE([USE_VALGRIND_TESTS_FALSE])
+m4trace:configure.ac:575: -1- m4_pattern_allow([^NC_LIBS$])
+m4trace:configure.ac:576: -1- m4_pattern_allow([^NC_FLIBS$])
+m4trace:configure.ac:577: -1- m4_pattern_allow([^HAS_F90$])
+m4trace:configure.ac:578: -1- m4_pattern_allow([^HAS_F03$])
+m4trace:configure.ac:579: -1- m4_pattern_allow([^HAS_DAP$])
+m4trace:configure.ac:580: -1- m4_pattern_allow([^HAS_NC2$])
+m4trace:configure.ac:581: -1- m4_pattern_allow([^HAS_NC4$])
+m4trace:configure.ac:604: -1- m4_pattern_allow([^LIB@&t at OBJS$])
+m4trace:configure.ac:604: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.ac:604: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
+m4trace:configure.ac:604: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
+m4trace:configure.ac:604: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
+m4trace:configure.ac:604: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
+m4trace:configure.ac:604: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
+m4trace:configure.ac:604: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"])
+m4trace:configure.ac:604: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS
+m4trace:configure.ac:604: -1- _LT_PROG_LTMAIN
diff --git a/autom4te.cache/traces.1 b/autom4te.cache/traces.1
new file mode 100644
index 0000000..c337328
--- /dev/null
+++ b/autom4te.cache/traces.1
@@ -0,0 +1,1175 @@
+m4trace:aclocal.m4:1186: -1- m4_include([m4/libtool.m4])
+m4trace:aclocal.m4:1187: -1- m4_include([m4/ltoptions.m4])
+m4trace:aclocal.m4:1188: -1- m4_include([m4/ltsugar.m4])
+m4trace:aclocal.m4:1189: -1- m4_include([m4/ltversion.m4])
+m4trace:aclocal.m4:1190: -1- m4_include([m4/lt~obsolete.m4])
+m4trace:aclocal.m4:1191: -1- m4_include([acinclude.m4])
+m4trace:configure.ac:12: -1- AC_INIT([netCDF-Fortran], [4.4.4], [support-netcdf at unidata.ucar.edu])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([^_?A[CHUM]_])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([_AC_])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^AS_FLAGS$])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([^_?m4_])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([^dnl$])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.ac:12: -1- AC_SUBST([SHELL])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([SHELL])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^SHELL$])
+m4trace:configure.ac:12: -1- AC_SUBST([PATH_SEPARATOR])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PATH_SEPARATOR$])
+m4trace:configure.ac:12: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME],      ['AC_PACKAGE_NAME'])])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([PACKAGE_NAME])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:12: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME],   ['AC_PACKAGE_TARNAME'])])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:12: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION],   ['AC_PACKAGE_VERSION'])])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:12: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING],    ['AC_PACKAGE_STRING'])])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([PACKAGE_STRING])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:12: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:12: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL],       ['AC_PACKAGE_URL'])])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([PACKAGE_URL])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:12: -1- AC_SUBST([exec_prefix], [NONE])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([exec_prefix])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^exec_prefix$])
+m4trace:configure.ac:12: -1- AC_SUBST([prefix], [NONE])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([prefix])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^prefix$])
+m4trace:configure.ac:12: -1- AC_SUBST([program_transform_name], [s,x,x,])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([program_transform_name])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^program_transform_name$])
+m4trace:configure.ac:12: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([bindir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^bindir$])
+m4trace:configure.ac:12: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([sbindir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^sbindir$])
+m4trace:configure.ac:12: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([libexecdir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^libexecdir$])
+m4trace:configure.ac:12: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([datarootdir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.ac:12: -1- AC_SUBST([datadir], ['${datarootdir}'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([datadir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^datadir$])
+m4trace:configure.ac:12: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([sysconfdir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^sysconfdir$])
+m4trace:configure.ac:12: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([sharedstatedir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^sharedstatedir$])
+m4trace:configure.ac:12: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([localstatedir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^localstatedir$])
+m4trace:configure.ac:12: -1- AC_SUBST([includedir], ['${prefix}/include'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([includedir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^includedir$])
+m4trace:configure.ac:12: -1- AC_SUBST([oldincludedir], ['/usr/include'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([oldincludedir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^oldincludedir$])
+m4trace:configure.ac:12: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
+				     ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
+				     ['${datarootdir}/doc/${PACKAGE}'])])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([docdir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^docdir$])
+m4trace:configure.ac:12: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([infodir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^infodir$])
+m4trace:configure.ac:12: -1- AC_SUBST([htmldir], ['${docdir}'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([htmldir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.ac:12: -1- AC_SUBST([dvidir], ['${docdir}'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([dvidir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^dvidir$])
+m4trace:configure.ac:12: -1- AC_SUBST([pdfdir], ['${docdir}'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([pdfdir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^pdfdir$])
+m4trace:configure.ac:12: -1- AC_SUBST([psdir], ['${docdir}'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([psdir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^psdir$])
+m4trace:configure.ac:12: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([libdir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^libdir$])
+m4trace:configure.ac:12: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([localedir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.ac:12: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([mandir])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^mandir$])
+m4trace:configure.ac:12: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:12: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
+@%:@undef PACKAGE_NAME])
+m4trace:configure.ac:12: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:12: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
+@%:@undef PACKAGE_TARNAME])
+m4trace:configure.ac:12: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:12: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
+@%:@undef PACKAGE_VERSION])
+m4trace:configure.ac:12: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:12: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
+@%:@undef PACKAGE_STRING])
+m4trace:configure.ac:12: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:12: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
+@%:@undef PACKAGE_BUGREPORT])
+m4trace:configure.ac:12: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:12: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
+@%:@undef PACKAGE_URL])
+m4trace:configure.ac:12: -1- AC_SUBST([DEFS])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([DEFS])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^DEFS$])
+m4trace:configure.ac:12: -1- AC_SUBST([ECHO_C])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([ECHO_C])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^ECHO_C$])
+m4trace:configure.ac:12: -1- AC_SUBST([ECHO_N])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([ECHO_N])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^ECHO_N$])
+m4trace:configure.ac:12: -1- AC_SUBST([ECHO_T])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([ECHO_T])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^ECHO_T$])
+m4trace:configure.ac:12: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:12: -1- AC_SUBST([build_alias])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([build_alias])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^build_alias$])
+m4trace:configure.ac:12: -1- AC_SUBST([host_alias])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([host_alias])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^host_alias$])
+m4trace:configure.ac:12: -1- AC_SUBST([target_alias])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([target_alias])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^target_alias$])
+m4trace:configure.ac:17: -1- AC_SUBST([PACKAGE_VERSION])
+m4trace:configure.ac:17: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
+m4trace:configure.ac:17: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:25: -1- AC_CANONICAL_HOST
+m4trace:configure.ac:25: -1- AC_CANONICAL_BUILD
+m4trace:configure.ac:25: -1- AC_REQUIRE_AUX_FILE([config.sub])
+m4trace:configure.ac:25: -1- AC_REQUIRE_AUX_FILE([config.guess])
+m4trace:configure.ac:25: -1- AC_SUBST([build], [$ac_cv_build])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([build])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^build$])
+m4trace:configure.ac:25: -1- AC_SUBST([build_cpu], [$[1]])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([build_cpu])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^build_cpu$])
+m4trace:configure.ac:25: -1- AC_SUBST([build_vendor], [$[2]])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([build_vendor])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^build_vendor$])
+m4trace:configure.ac:25: -1- AC_SUBST([build_os])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([build_os])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^build_os$])
+m4trace:configure.ac:25: -1- AC_SUBST([host], [$ac_cv_host])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([host])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^host$])
+m4trace:configure.ac:25: -1- AC_SUBST([host_cpu], [$[1]])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([host_cpu])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.ac:25: -1- AC_SUBST([host_vendor], [$[2]])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([host_vendor])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.ac:25: -1- AC_SUBST([host_os])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([host_os])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.ac:28: -1- AC_CANONICAL_TARGET
+m4trace:configure.ac:28: -1- AC_SUBST([target], [$ac_cv_target])
+m4trace:configure.ac:28: -1- AC_SUBST_TRACE([target])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^target$])
+m4trace:configure.ac:28: -1- AC_SUBST([target_cpu], [$[1]])
+m4trace:configure.ac:28: -1- AC_SUBST_TRACE([target_cpu])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^target_cpu$])
+m4trace:configure.ac:28: -1- AC_SUBST([target_vendor], [$[2]])
+m4trace:configure.ac:28: -1- AC_SUBST_TRACE([target_vendor])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^target_vendor$])
+m4trace:configure.ac:28: -1- AC_SUBST([target_os])
+m4trace:configure.ac:28: -1- AC_SUBST_TRACE([target_os])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^target_os$])
+m4trace:configure.ac:31: -1- AM_INIT_AUTOMAKE([foreign dist-zip subdir-objects])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
+m4trace:configure.ac:31: -1- AM_AUTOMAKE_VERSION([1.14.1])
+m4trace:configure.ac:31: -1- AC_REQUIRE_AUX_FILE([install-sh])
+m4trace:configure.ac:31: -1- AC_SUBST([INSTALL_PROGRAM])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
+m4trace:configure.ac:31: -1- AC_SUBST([INSTALL_SCRIPT])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
+m4trace:configure.ac:31: -1- AC_SUBST([INSTALL_DATA])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([INSTALL_DATA])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^INSTALL_DATA$])
+m4trace:configure.ac:31: -1- AC_SUBST([am__isrc], [' -I$(srcdir)'])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([am__isrc])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^am__isrc$])
+m4trace:configure.ac:31: -1- _AM_SUBST_NOTMAKE([am__isrc])
+m4trace:configure.ac:31: -1- AC_SUBST([CYGPATH_W])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([CYGPATH_W])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^CYGPATH_W$])
+m4trace:configure.ac:31: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([PACKAGE])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:31: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([VERSION])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:31: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:31: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
+@%:@undef PACKAGE])
+m4trace:configure.ac:31: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:31: -1- AH_OUTPUT([VERSION], [/* Version number of package */
+@%:@undef VERSION])
+m4trace:configure.ac:31: -1- AC_REQUIRE_AUX_FILE([missing])
+m4trace:configure.ac:31: -1- AC_SUBST([ACLOCAL])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([ACLOCAL])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^ACLOCAL$])
+m4trace:configure.ac:31: -1- AC_SUBST([AUTOCONF])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([AUTOCONF])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AUTOCONF$])
+m4trace:configure.ac:31: -1- AC_SUBST([AUTOMAKE])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([AUTOMAKE])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AUTOMAKE$])
+m4trace:configure.ac:31: -1- AC_SUBST([AUTOHEADER])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([AUTOHEADER])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AUTOHEADER$])
+m4trace:configure.ac:31: -1- AC_SUBST([MAKEINFO])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([MAKEINFO])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^MAKEINFO$])
+m4trace:configure.ac:31: -1- AC_SUBST([install_sh])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([install_sh])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^install_sh$])
+m4trace:configure.ac:31: -1- AC_SUBST([STRIP])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([STRIP])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:31: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
+m4trace:configure.ac:31: -1- AC_REQUIRE_AUX_FILE([install-sh])
+m4trace:configure.ac:31: -1- AC_SUBST([MKDIR_P])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([MKDIR_P])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^MKDIR_P$])
+m4trace:configure.ac:31: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([mkdir_p])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^mkdir_p$])
+m4trace:configure.ac:31: -1- AC_SUBST([AWK])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([AWK])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AWK$])
+m4trace:configure.ac:31: -1- AC_SUBST([SET_MAKE])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([SET_MAKE])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.ac:31: -1- AC_SUBST([am__leading_dot])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([am__leading_dot])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^am__leading_dot$])
+m4trace:configure.ac:31: -1- AC_SUBST([AMTAR], ['$${TAR-tar}'])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([AMTAR])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AMTAR$])
+m4trace:configure.ac:31: -1- AC_SUBST([am__tar])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([am__tar])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^am__tar$])
+m4trace:configure.ac:31: -1- AC_SUBST([am__untar])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([am__untar])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^am__untar$])
+m4trace:configure.ac:31: -1- AM_SILENT_RULES
+m4trace:configure.ac:31: -1- AC_SUBST([AM_V])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([AM_V])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AM_V$])
+m4trace:configure.ac:31: -1- _AM_SUBST_NOTMAKE([AM_V])
+m4trace:configure.ac:31: -1- AC_SUBST([AM_DEFAULT_V])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([AM_DEFAULT_V])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AM_DEFAULT_V$])
+m4trace:configure.ac:31: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
+m4trace:configure.ac:31: -1- AC_SUBST([AM_DEFAULT_VERBOSITY])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
+m4trace:configure.ac:31: -1- AC_SUBST([AM_BACKSLASH])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([AM_BACKSLASH])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AM_BACKSLASH$])
+m4trace:configure.ac:31: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
+m4trace:configure.ac:32: -1- AM_MAINTAINER_MODE([])
+m4trace:configure.ac:32: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+m4trace:configure.ac:32: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
+m4trace:configure.ac:32: -1- AC_SUBST_TRACE([MAINTAINER_MODE_TRUE])
+m4trace:configure.ac:32: -1- m4_pattern_allow([^MAINTAINER_MODE_TRUE$])
+m4trace:configure.ac:32: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
+m4trace:configure.ac:32: -1- AC_SUBST_TRACE([MAINTAINER_MODE_FALSE])
+m4trace:configure.ac:32: -1- m4_pattern_allow([^MAINTAINER_MODE_FALSE$])
+m4trace:configure.ac:32: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_TRUE])
+m4trace:configure.ac:32: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_FALSE])
+m4trace:configure.ac:32: -1- AC_SUBST([MAINT])
+m4trace:configure.ac:32: -1- AC_SUBST_TRACE([MAINT])
+m4trace:configure.ac:32: -1- m4_pattern_allow([^MAINT$])
+m4trace:configure.ac:65: -1- AC_DEFINE_TRACE_LITERAL([EXTRA_TESTS])
+m4trace:configure.ac:65: -1- m4_pattern_allow([^EXTRA_TESTS$])
+m4trace:configure.ac:65: -1- AH_OUTPUT([EXTRA_TESTS], [/* if true, run extra tests which may not work yet */
+@%:@undef EXTRA_TESTS])
+m4trace:configure.ac:67: -1- AM_CONDITIONAL([EXTRA_TESTS], [test x$enable_extra_tests = xyes])
+m4trace:configure.ac:67: -1- AC_SUBST([EXTRA_TESTS_TRUE])
+m4trace:configure.ac:67: -1- AC_SUBST_TRACE([EXTRA_TESTS_TRUE])
+m4trace:configure.ac:67: -1- m4_pattern_allow([^EXTRA_TESTS_TRUE$])
+m4trace:configure.ac:67: -1- AC_SUBST([EXTRA_TESTS_FALSE])
+m4trace:configure.ac:67: -1- AC_SUBST_TRACE([EXTRA_TESTS_FALSE])
+m4trace:configure.ac:67: -1- m4_pattern_allow([^EXTRA_TESTS_FALSE$])
+m4trace:configure.ac:67: -1- _AM_SUBST_NOTMAKE([EXTRA_TESTS_TRUE])
+m4trace:configure.ac:67: -1- _AM_SUBST_NOTMAKE([EXTRA_TESTS_FALSE])
+m4trace:configure.ac:76: -1- AM_CONDITIONAL([BUILD_DOCS], [test "x$enable_doxygen" = xyes])
+m4trace:configure.ac:76: -1- AC_SUBST([BUILD_DOCS_TRUE])
+m4trace:configure.ac:76: -1- AC_SUBST_TRACE([BUILD_DOCS_TRUE])
+m4trace:configure.ac:76: -1- m4_pattern_allow([^BUILD_DOCS_TRUE$])
+m4trace:configure.ac:76: -1- AC_SUBST([BUILD_DOCS_FALSE])
+m4trace:configure.ac:76: -1- AC_SUBST_TRACE([BUILD_DOCS_FALSE])
+m4trace:configure.ac:76: -1- m4_pattern_allow([^BUILD_DOCS_FALSE$])
+m4trace:configure.ac:76: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_TRUE])
+m4trace:configure.ac:76: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_FALSE])
+m4trace:configure.ac:89: -1- AC_SUBST([BUILD_INTERNAL_DOCS], [$enable_internal_docs])
+m4trace:configure.ac:89: -1- AC_SUBST_TRACE([BUILD_INTERNAL_DOCS])
+m4trace:configure.ac:89: -1- m4_pattern_allow([^BUILD_INTERNAL_DOCS$])
+m4trace:configure.ac:92: -1- AC_SUBST([DOXYGEN])
+m4trace:configure.ac:92: -1- AC_SUBST_TRACE([DOXYGEN])
+m4trace:configure.ac:92: -1- m4_pattern_allow([^DOXYGEN$])
+m4trace:configure.ac:99: -1- AC_SUBST([DOT])
+m4trace:configure.ac:99: -1- AC_SUBST_TRACE([DOT])
+m4trace:configure.ac:99: -1- m4_pattern_allow([^DOT$])
+m4trace:configure.ac:111: -1- AC_SUBST([HAVE_DOT])
+m4trace:configure.ac:111: -1- AC_SUBST_TRACE([HAVE_DOT])
+m4trace:configure.ac:111: -1- m4_pattern_allow([^HAVE_DOT$])
+m4trace:configure.ac:112: -1- AC_CONFIG_FILES([docs/Doxyfile])
+m4trace:configure.ac:128: -1- AC_SUBST([CC])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:128: -1- AC_SUBST([CFLAGS])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([CFLAGS])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:128: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:128: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:128: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:128: -1- AC_SUBST([CC])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:128: -1- AC_SUBST([CC])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:128: -1- AC_SUBST([CC])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:128: -1- AC_SUBST([CC])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:128: -1- AC_SUBST([ac_ct_CC])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([ac_ct_CC])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:128: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([EXEEXT])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.ac:128: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([OBJEXT])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.ac:128: -1- AC_REQUIRE_AUX_FILE([compile])
+m4trace:configure.ac:128: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([DEPDIR])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^DEPDIR$])
+m4trace:configure.ac:128: -1- AC_SUBST([am__include])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([am__include])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^am__include$])
+m4trace:configure.ac:128: -1- AC_SUBST([am__quote])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([am__quote])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^am__quote$])
+m4trace:configure.ac:128: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+m4trace:configure.ac:128: -1- AC_SUBST([AMDEP_TRUE])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([AMDEP_TRUE])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^AMDEP_TRUE$])
+m4trace:configure.ac:128: -1- AC_SUBST([AMDEP_FALSE])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([AMDEP_FALSE])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^AMDEP_FALSE$])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
+m4trace:configure.ac:128: -1- AC_SUBST([AMDEPBACKSLASH])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
+m4trace:configure.ac:128: -1- AC_SUBST([am__nodep])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([am__nodep])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^am__nodep$])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([am__nodep])
+m4trace:configure.ac:128: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([CCDEPMODE])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.ac:128: -1- AM_CONDITIONAL([am__fastdepCC], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:128: -1- AC_SUBST([am__fastdepCC_TRUE])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.ac:128: -1- AC_SUBST([am__fastdepCC_FALSE])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.ac:129: -1- AM_PROG_CC_C_O
+m4trace:configure.ac:130: -1- AC_DEFINE_TRACE_LITERAL([const])
+m4trace:configure.ac:130: -1- m4_pattern_allow([^const$])
+m4trace:configure.ac:130: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */
+@%:@undef const])
+m4trace:configure.ac:147: -1- AC_SUBST([FC])
+m4trace:configure.ac:147: -1- AC_SUBST_TRACE([FC])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^FC$])
+m4trace:configure.ac:147: -1- AC_SUBST([FCFLAGS])
+m4trace:configure.ac:147: -1- AC_SUBST_TRACE([FCFLAGS])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^FCFLAGS$])
+m4trace:configure.ac:147: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:147: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:147: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:147: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:147: -1- AC_SUBST([FC])
+m4trace:configure.ac:147: -1- AC_SUBST_TRACE([FC])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^FC$])
+m4trace:configure.ac:147: -1- AC_SUBST([ac_ct_FC])
+m4trace:configure.ac:147: -1- AC_SUBST_TRACE([ac_ct_FC])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^ac_ct_FC$])
+m4trace:configure.ac:148: -1- AC_SUBST([F77])
+m4trace:configure.ac:148: -1- AC_SUBST_TRACE([F77])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^F77$])
+m4trace:configure.ac:148: -1- AC_SUBST([FFLAGS])
+m4trace:configure.ac:148: -1- AC_SUBST_TRACE([FFLAGS])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^FFLAGS$])
+m4trace:configure.ac:148: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:148: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:148: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:148: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:148: -1- AC_SUBST([F77])
+m4trace:configure.ac:148: -1- AC_SUBST_TRACE([F77])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^F77$])
+m4trace:configure.ac:148: -1- AC_SUBST([ac_ct_F77])
+m4trace:configure.ac:148: -1- AC_SUBST_TRACE([ac_ct_F77])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^ac_ct_F77$])
+m4trace:configure.ac:176: -1- AC_FC_SRCEXT([f90])
+m4trace:configure.ac:176: -1- AC_SUBST([FCFLAGS_f90])
+m4trace:configure.ac:176: -1- AC_SUBST_TRACE([FCFLAGS_f90])
+m4trace:configure.ac:176: -1- m4_pattern_allow([^FCFLAGS_f90$])
+m4trace:configure.ac:179: -1- AC_SUBST([MOD_FLAG], [${ax_cv_f90_modflag}])
+m4trace:configure.ac:179: -1- AC_SUBST_TRACE([MOD_FLAG])
+m4trace:configure.ac:179: -1- m4_pattern_allow([^MOD_FLAG$])
+m4trace:configure.ac:204: -1- AC_DEFINE_TRACE_LITERAL([HAVE_F2008])
+m4trace:configure.ac:204: -1- m4_pattern_allow([^HAVE_F2008$])
+m4trace:configure.ac:204: -1- AH_OUTPUT([HAVE_F2008], [/* if true, use Fortran 2008 ISO_FORTRAN_ENV additions */
+@%:@undef HAVE_F2008])
+m4trace:configure.ac:219: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TS29113_SUPPORT])
+m4trace:configure.ac:219: -1- m4_pattern_allow([^HAVE_TS29113_SUPPORT$])
+m4trace:configure.ac:219: -1- AH_OUTPUT([HAVE_TS29113_SUPPORT], [/* if true, Fortran compiler supports TS29113 extension */
+@%:@undef HAVE_TS29113_SUPPORT])
+m4trace:configure.ac:277: -1- AM_CONDITIONAL([LARGE_FILE_TESTS], [test x$enable_large_file_tests = xyes])
+m4trace:configure.ac:277: -1- AC_SUBST([LARGE_FILE_TESTS_TRUE])
+m4trace:configure.ac:277: -1- AC_SUBST_TRACE([LARGE_FILE_TESTS_TRUE])
+m4trace:configure.ac:277: -1- m4_pattern_allow([^LARGE_FILE_TESTS_TRUE$])
+m4trace:configure.ac:277: -1- AC_SUBST([LARGE_FILE_TESTS_FALSE])
+m4trace:configure.ac:277: -1- AC_SUBST_TRACE([LARGE_FILE_TESTS_FALSE])
+m4trace:configure.ac:277: -1- m4_pattern_allow([^LARGE_FILE_TESTS_FALSE$])
+m4trace:configure.ac:277: -1- _AM_SUBST_NOTMAKE([LARGE_FILE_TESTS_TRUE])
+m4trace:configure.ac:277: -1- _AM_SUBST_NOTMAKE([LARGE_FILE_TESTS_FALSE])
+m4trace:configure.ac:279: -1- AC_DEFINE_TRACE_LITERAL([LARGE_FILE_TESTS])
+m4trace:configure.ac:279: -1- m4_pattern_allow([^LARGE_FILE_TESTS$])
+m4trace:configure.ac:279: -1- AH_OUTPUT([LARGE_FILE_TESTS], [/* do large file tests */
+@%:@undef LARGE_FILE_TESTS])
+m4trace:configure.ac:289: -1- AM_CONDITIONAL([BUILD_BENCHMARKS], [test x$enable_benchmarks = xyes])
+m4trace:configure.ac:289: -1- AC_SUBST([BUILD_BENCHMARKS_TRUE])
+m4trace:configure.ac:289: -1- AC_SUBST_TRACE([BUILD_BENCHMARKS_TRUE])
+m4trace:configure.ac:289: -1- m4_pattern_allow([^BUILD_BENCHMARKS_TRUE$])
+m4trace:configure.ac:289: -1- AC_SUBST([BUILD_BENCHMARKS_FALSE])
+m4trace:configure.ac:289: -1- AC_SUBST_TRACE([BUILD_BENCHMARKS_FALSE])
+m4trace:configure.ac:289: -1- m4_pattern_allow([^BUILD_BENCHMARKS_FALSE$])
+m4trace:configure.ac:289: -1- _AM_SUBST_NOTMAKE([BUILD_BENCHMARKS_TRUE])
+m4trace:configure.ac:289: -1- _AM_SUBST_NOTMAKE([BUILD_BENCHMARKS_FALSE])
+m4trace:configure.ac:304: -1- AC_DEFINE_TRACE_LITERAL([TEMP_LARGE])
+m4trace:configure.ac:304: -1- m4_pattern_allow([^TEMP_LARGE$])
+m4trace:configure.ac:304: -1- AH_OUTPUT([TEMP_LARGE], [/* Place to put very large netCDF test files. */
+@%:@undef TEMP_LARGE])
+m4trace:configure.ac:332: -1- AC_FC_SRCEXT([f90])
+m4trace:configure.ac:332: -1- AC_SUBST([FCFLAGS_f90])
+m4trace:configure.ac:332: -1- AC_SUBST_TRACE([FCFLAGS_f90])
+m4trace:configure.ac:332: -1- m4_pattern_allow([^FCFLAGS_f90$])
+m4trace:configure.ac:335: -1- AC_SUBST([MOD_FLAG], [${ax_cv_f90_modflag}])
+m4trace:configure.ac:335: -1- AC_SUBST_TRACE([MOD_FLAG])
+m4trace:configure.ac:335: -1- m4_pattern_allow([^MOD_FLAG$])
+m4trace:configure.ac:343: -1- AM_CONDITIONAL([BUILD_F03], [test "x$nc_build_f03" = xyes])
+m4trace:configure.ac:343: -1- AC_SUBST([BUILD_F03_TRUE])
+m4trace:configure.ac:343: -1- AC_SUBST_TRACE([BUILD_F03_TRUE])
+m4trace:configure.ac:343: -1- m4_pattern_allow([^BUILD_F03_TRUE$])
+m4trace:configure.ac:343: -1- AC_SUBST([BUILD_F03_FALSE])
+m4trace:configure.ac:343: -1- AC_SUBST_TRACE([BUILD_F03_FALSE])
+m4trace:configure.ac:343: -1- m4_pattern_allow([^BUILD_F03_FALSE$])
+m4trace:configure.ac:343: -1- _AM_SUBST_NOTMAKE([BUILD_F03_TRUE])
+m4trace:configure.ac:343: -1- _AM_SUBST_NOTMAKE([BUILD_F03_FALSE])
+m4trace:configure.ac:348: -1- LT_INIT
+m4trace:configure.ac:348: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
+m4trace:configure.ac:348: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
+m4trace:configure.ac:348: -1- AC_SUBST([LIBTOOL])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([LIBTOOL])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^LIBTOOL$])
+m4trace:configure.ac:348: -1- AC_SUBST([SED])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([SED])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^SED$])
+m4trace:configure.ac:348: -1- AC_SUBST([GREP])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([GREP])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:348: -1- AC_SUBST([EGREP])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([EGREP])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.ac:348: -1- AC_SUBST([FGREP])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([FGREP])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^FGREP$])
+m4trace:configure.ac:348: -1- AC_SUBST([GREP])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([GREP])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:348: -1- AC_SUBST([LD])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([LD])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:348: -1- AC_SUBST([DUMPBIN])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([DUMPBIN])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:348: -1- AC_SUBST([ac_ct_DUMPBIN])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
+m4trace:configure.ac:348: -1- AC_SUBST([DUMPBIN])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([DUMPBIN])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:348: -1- AC_SUBST([NM])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([NM])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:348: -1- AC_SUBST([LN_S], [$as_ln_s])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([LN_S])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^LN_S$])
+m4trace:configure.ac:348: -1- AC_SUBST([OBJDUMP])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([OBJDUMP])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:348: -1- AC_SUBST([OBJDUMP])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([OBJDUMP])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:348: -1- AC_SUBST([DLLTOOL])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([DLLTOOL])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:348: -1- AC_SUBST([DLLTOOL])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([DLLTOOL])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:348: -1- AC_SUBST([AR])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([AR])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^AR$])
+m4trace:configure.ac:348: -1- AC_SUBST([ac_ct_AR])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([ac_ct_AR])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^ac_ct_AR$])
+m4trace:configure.ac:348: -1- AC_SUBST([STRIP])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([STRIP])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:348: -1- AC_SUBST([RANLIB])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([RANLIB])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([LT_OBJDIR])
+m4trace:configure.ac:348: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^LT_OBJDIR$])
+m4trace:configure.ac:348: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+@%:@undef LT_OBJDIR])
+m4trace:configure.ac:348: -1- LT_SUPPORTED_TAG([CC])
+m4trace:configure.ac:348: -1- AC_SUBST([MANIFEST_TOOL])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([MANIFEST_TOOL])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^MANIFEST_TOOL$])
+m4trace:configure.ac:348: -1- AC_SUBST([DSYMUTIL])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([DSYMUTIL])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^DSYMUTIL$])
+m4trace:configure.ac:348: -1- AC_SUBST([NMEDIT])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([NMEDIT])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^NMEDIT$])
+m4trace:configure.ac:348: -1- AC_SUBST([LIPO])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([LIPO])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^LIPO$])
+m4trace:configure.ac:348: -1- AC_SUBST([OTOOL])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([OTOOL])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^OTOOL$])
+m4trace:configure.ac:348: -1- AC_SUBST([OTOOL64])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([OTOOL64])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^OTOOL64$])
+m4trace:configure.ac:348: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
+@%:@undef HAVE_DLFCN_H])
+m4trace:configure.ac:348: -1- AC_SUBST([CPP])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:348: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:348: -1- AC_SUBST([CPP])
+m4trace:configure.ac:348: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:348: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:348: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
+@%:@undef STDC_HEADERS])
+m4trace:configure.ac:348: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
+@%:@undef HAVE_SYS_TYPES_H])
+m4trace:configure.ac:348: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
+@%:@undef HAVE_SYS_STAT_H])
+m4trace:configure.ac:348: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:348: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:348: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+@%:@undef HAVE_MEMORY_H])
+m4trace:configure.ac:348: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+@%:@undef HAVE_STRINGS_H])
+m4trace:configure.ac:348: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+@%:@undef HAVE_INTTYPES_H])
+m4trace:configure.ac:348: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+@%:@undef HAVE_STDINT_H])
+m4trace:configure.ac:348: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+@%:@undef HAVE_UNISTD_H])
+m4trace:configure.ac:348: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
+m4trace:configure.ac:348: -1- LT_SUPPORTED_TAG([F77])
+m4trace:configure.ac:348: -1- LT_SUPPORTED_TAG([FC])
+m4trace:configure.ac:374: -1- AC_DEFINE_TRACE_LITERAL([pgiFortran])
+m4trace:configure.ac:374: -1- m4_pattern_allow([^pgiFortran$])
+m4trace:configure.ac:374: -1- AH_OUTPUT([pgiFortran], [/* Turned on by netCDF configure. */
+@%:@undef pgiFortran])
+m4trace:configure.ac:378: -1- AC_DEFINE_TRACE_LITERAL([gFortran])
+m4trace:configure.ac:378: -1- m4_pattern_allow([^gFortran$])
+m4trace:configure.ac:378: -1- AH_OUTPUT([gFortran], [/* Turned on by netCDF configure. */
+@%:@undef gFortran])
+m4trace:configure.ac:380: -1- AC_DEFINE_TRACE_LITERAL([pgiFortran])
+m4trace:configure.ac:380: -1- m4_pattern_allow([^pgiFortran$])
+m4trace:configure.ac:380: -1- AH_OUTPUT([pgiFortran], [/* Turned on by netCDF configure. */
+@%:@undef pgiFortran])
+m4trace:configure.ac:384: -1- AC_DEFINE_TRACE_LITERAL([f2cFortran])
+m4trace:configure.ac:384: -1- m4_pattern_allow([^f2cFortran$])
+m4trace:configure.ac:384: -1- AH_OUTPUT([f2cFortran], [/* Turned on by netCDF configure. */
+@%:@undef f2cFortran])
+m4trace:configure.ac:389: -1- AC_DEFINE_TRACE_LITERAL([f2cFortran])
+m4trace:configure.ac:389: -1- m4_pattern_allow([^f2cFortran$])
+m4trace:configure.ac:389: -1- AH_OUTPUT([f2cFortran], [/* Turned on by netCDF configure. */
+@%:@undef f2cFortran])
+m4trace:configure.ac:396: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS])
+m4trace:configure.ac:396: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
+m4trace:configure.ac:396: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */
+@%:@undef _FILE_OFFSET_BITS])
+m4trace:configure.ac:396: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES])
+m4trace:configure.ac:396: -1- m4_pattern_allow([^_LARGE_FILES$])
+m4trace:configure.ac:396: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */
+@%:@undef _LARGE_FILES])
+m4trace:configure.ac:396: -1- AH_OUTPUT([_DARWIN_USE_64_BIT_INODE], [/* Enable large inode numbers on Mac OS X 10.5.  */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif])
+m4trace:configure.ac:411: -1- AC_SUBST([NM])
+m4trace:configure.ac:411: -1- AC_SUBST_TRACE([NM])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:411: -1- AC_SUBST([NM])
+m4trace:configure.ac:411: -1- AC_SUBST_TRACE([NM])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:411: -1- AC_SUBST([NMFLAGS])
+m4trace:configure.ac:411: -1- AC_SUBST_TRACE([NMFLAGS])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NMFLAGS$])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking for C-equivalent to Fortran routine \"SUB\"], [acinclude.m4:302: UD_CHECK_FCALLSCSUB is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for C-equivalent to Fortran routine \"SUB\"... ], [acinclude.m4:302: UD_CHECK_FCALLSCSUB is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking for Fortran \"$ftype\"], [acinclude.m4:276: UD_CHECK_FORTRAN_TYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for Fortran \"$ftype\"... ], [acinclude.m4:276: UD_CHECK_FORTRAN_TYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- AC_DEFINE_TRACE_LITERAL([NF_INT1_T])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NF_INT1_T$])
+m4trace:configure.ac:411: -1- AH_OUTPUT([NF_INT1_T], [/* type thing */
+@%:@undef NF_INT1_T])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking for Fortran \"$ftype\"], [acinclude.m4:276: UD_CHECK_FORTRAN_TYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for Fortran \"$ftype\"... ], [acinclude.m4:276: UD_CHECK_FORTRAN_TYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- AC_DEFINE_TRACE_LITERAL([NF_INT2_T])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NF_INT2_T$])
+m4trace:configure.ac:411: -1- AH_OUTPUT([NF_INT2_T], [/* type thing */
+@%:@undef NF_INT2_T])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"integer\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"integer\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"real\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"real\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"doubleprecision\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"doubleprecision\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking for Fortran-equivalent to netCDF \"byte\"], [acinclude.m4:197: UD_CHECK_FORTRAN_NCTYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for Fortran-equivalent to netCDF \"byte\"... ], [acinclude.m4:197: UD_CHECK_FORTRAN_NCTYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- AC_DEFINE_TRACE_LITERAL([NCBYTE_T])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NCBYTE_T$])
+m4trace:configure.ac:411: -1- AH_OUTPUT([NCBYTE_T], [/* type definition */
+@%:@undef NCBYTE_T])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking for Fortran-equivalent to netCDF \"short\"], [acinclude.m4:197: UD_CHECK_FORTRAN_NCTYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for Fortran-equivalent to netCDF \"short\"... ], [acinclude.m4:197: UD_CHECK_FORTRAN_NCTYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- AC_DEFINE_TRACE_LITERAL([NCSHORT_T])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NCSHORT_T$])
+m4trace:configure.ac:411: -1- AH_OUTPUT([NCSHORT_T], [/* type definition */
+@%:@undef NCSHORT_T])
+m4trace:configure.ac:416: -1- AC_DEFINE_TRACE_LITERAL([NCBYTE_T])
+m4trace:configure.ac:416: -1- m4_pattern_allow([^NCBYTE_T$])
+m4trace:configure.ac:417: -1- AC_DEFINE_TRACE_LITERAL([NCSHORT_T])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^NCSHORT_T$])
+m4trace:configure.ac:418: -1- AC_DEFINE_TRACE_LITERAL([NF_INT1_T])
+m4trace:configure.ac:418: -1- m4_pattern_allow([^NF_INT1_T$])
+m4trace:configure.ac:419: -1- AC_DEFINE_TRACE_LITERAL([NF_INT2_T])
+m4trace:configure.ac:419: -1- m4_pattern_allow([^NF_INT2_T$])
+m4trace:configure.ac:420: -1- AC_DEFINE_TRACE_LITERAL([NF_INT1_IS_C_SIGNED_CHAR])
+m4trace:configure.ac:420: -1- m4_pattern_allow([^NF_INT1_IS_C_SIGNED_CHAR$])
+m4trace:configure.ac:420: -1- AH_OUTPUT([NF_INT1_IS_C_SIGNED_CHAR], [/* default */
+@%:@undef NF_INT1_IS_C_SIGNED_CHAR])
+m4trace:configure.ac:421: -1- AC_DEFINE_TRACE_LITERAL([NF_INT2_IS_C_SHORT])
+m4trace:configure.ac:421: -1- m4_pattern_allow([^NF_INT2_IS_C_SHORT$])
+m4trace:configure.ac:421: -1- AH_OUTPUT([NF_INT2_IS_C_SHORT], [/* default */
+@%:@undef NF_INT2_IS_C_SHORT])
+m4trace:configure.ac:422: -1- AC_DEFINE_TRACE_LITERAL([NF_INT_IS_C_INT])
+m4trace:configure.ac:422: -1- m4_pattern_allow([^NF_INT_IS_C_INT$])
+m4trace:configure.ac:422: -1- AH_OUTPUT([NF_INT_IS_C_INT], [/* default */
+@%:@undef NF_INT_IS_C_INT])
+m4trace:configure.ac:423: -1- AC_DEFINE_TRACE_LITERAL([NF_REAL_IS_C_FLOAT])
+m4trace:configure.ac:423: -1- m4_pattern_allow([^NF_REAL_IS_C_FLOAT$])
+m4trace:configure.ac:423: -1- AH_OUTPUT([NF_REAL_IS_C_FLOAT], [/* default */
+@%:@undef NF_REAL_IS_C_FLOAT])
+m4trace:configure.ac:424: -1- AC_DEFINE_TRACE_LITERAL([NF_DOUBLEPRECISION_IS_C_DOUBLE])
+m4trace:configure.ac:424: -1- m4_pattern_allow([^NF_DOUBLEPRECISION_IS_C_DOUBLE$])
+m4trace:configure.ac:424: -1- AH_OUTPUT([NF_DOUBLEPRECISION_IS_C_DOUBLE], [/* default */
+@%:@undef NF_DOUBLEPRECISION_IS_C_DOUBLE])
+m4trace:configure.ac:434: -1- AM_CONDITIONAL([UPPER_CASE_MOD], [test "x$ac_cv_prog_f90_uppercase_mod" = xyes])
+m4trace:configure.ac:434: -1- AC_SUBST([UPPER_CASE_MOD_TRUE])
+m4trace:configure.ac:434: -1- AC_SUBST_TRACE([UPPER_CASE_MOD_TRUE])
+m4trace:configure.ac:434: -1- m4_pattern_allow([^UPPER_CASE_MOD_TRUE$])
+m4trace:configure.ac:434: -1- AC_SUBST([UPPER_CASE_MOD_FALSE])
+m4trace:configure.ac:434: -1- AC_SUBST_TRACE([UPPER_CASE_MOD_FALSE])
+m4trace:configure.ac:434: -1- m4_pattern_allow([^UPPER_CASE_MOD_FALSE$])
+m4trace:configure.ac:434: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_TRUE])
+m4trace:configure.ac:434: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_FALSE])
+m4trace:configure.ac:444: -1- AM_CONDITIONAL([EXTRA_EXAMPLE_TESTS], [test "x$enable_extra_example_tests" = xyes])
+m4trace:configure.ac:444: -1- AC_SUBST([EXTRA_EXAMPLE_TESTS_TRUE])
+m4trace:configure.ac:444: -1- AC_SUBST_TRACE([EXTRA_EXAMPLE_TESTS_TRUE])
+m4trace:configure.ac:444: -1- m4_pattern_allow([^EXTRA_EXAMPLE_TESTS_TRUE$])
+m4trace:configure.ac:444: -1- AC_SUBST([EXTRA_EXAMPLE_TESTS_FALSE])
+m4trace:configure.ac:444: -1- AC_SUBST_TRACE([EXTRA_EXAMPLE_TESTS_FALSE])
+m4trace:configure.ac:444: -1- m4_pattern_allow([^EXTRA_EXAMPLE_TESTS_FALSE$])
+m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([EXTRA_EXAMPLE_TESTS_TRUE])
+m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([EXTRA_EXAMPLE_TESTS_FALSE])
+m4trace:configure.ac:454: -1- AM_CONDITIONAL([BUILD_DLL], [test x$enable_dll = xyes])
+m4trace:configure.ac:454: -1- AC_SUBST([BUILD_DLL_TRUE])
+m4trace:configure.ac:454: -1- AC_SUBST_TRACE([BUILD_DLL_TRUE])
+m4trace:configure.ac:454: -1- m4_pattern_allow([^BUILD_DLL_TRUE$])
+m4trace:configure.ac:454: -1- AC_SUBST([BUILD_DLL_FALSE])
+m4trace:configure.ac:454: -1- AC_SUBST_TRACE([BUILD_DLL_FALSE])
+m4trace:configure.ac:454: -1- m4_pattern_allow([^BUILD_DLL_FALSE$])
+m4trace:configure.ac:454: -1- _AM_SUBST_NOTMAKE([BUILD_DLL_TRUE])
+m4trace:configure.ac:454: -1- _AM_SUBST_NOTMAKE([BUILD_DLL_FALSE])
+m4trace:configure.ac:456: -1- AC_DEFINE_TRACE_LITERAL([DLL_NETCDF])
+m4trace:configure.ac:456: -1- m4_pattern_allow([^DLL_NETCDF$])
+m4trace:configure.ac:456: -1- AH_OUTPUT([DLL_NETCDF], [/* set this only when building a DLL under MinGW */
+@%:@undef DLL_NETCDF])
+m4trace:configure.ac:462: -1- AH_OUTPUT([HAVE_NETCDF_H], [/* Define to 1 if you have the <netcdf.h> header file. */
+@%:@undef HAVE_NETCDF_H])
+m4trace:configure.ac:462: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NETCDF_H])
+m4trace:configure.ac:462: -1- m4_pattern_allow([^HAVE_NETCDF_H$])
+m4trace:configure.ac:466: -1- AH_OUTPUT([HAVE_NC_DEF_OPAQUE], [/* Define to 1 if you have the `nc_def_opaque\' function. */
+@%:@undef HAVE_NC_DEF_OPAQUE])
+m4trace:configure.ac:466: -1- AH_OUTPUT([HAVE_NCCREATE], [/* Define to 1 if you have the `nccreate\' function. */
+@%:@undef HAVE_NCCREATE])
+m4trace:configure.ac:466: -1- AH_OUTPUT([HAVE_NC_SET_LOG_LEVEL], [/* Define to 1 if you have the `nc_set_log_level\' function. */
+@%:@undef HAVE_NC_SET_LOG_LEVEL])
+m4trace:configure.ac:466: -1- AH_OUTPUT([HAVE_OC_OPEN], [/* Define to 1 if you have the `oc_open\' function. */
+@%:@undef HAVE_OC_OPEN])
+m4trace:configure.ac:466: -1- AH_OUTPUT([HAVE_NC_USE_PARALLEL_ENABLED], [/* Define to 1 if you have the `nc_use_parallel_enabled\' function. */
+@%:@undef HAVE_NC_USE_PARALLEL_ENABLED])
+m4trace:configure.ac:492: -1- AC_DEFINE_TRACE_LITERAL([USE_NETCDF4])
+m4trace:configure.ac:492: -1- m4_pattern_allow([^USE_NETCDF4$])
+m4trace:configure.ac:492: -1- AH_OUTPUT([USE_NETCDF4], [/* if true, build netCDF-4 */
+@%:@undef USE_NETCDF4])
+m4trace:configure.ac:500: -1- AM_CONDITIONAL([USE_NETCDF4], [test "x$nc_build_v4" = xyes])
+m4trace:configure.ac:500: -1- AC_SUBST([USE_NETCDF4_TRUE])
+m4trace:configure.ac:500: -1- AC_SUBST_TRACE([USE_NETCDF4_TRUE])
+m4trace:configure.ac:500: -1- m4_pattern_allow([^USE_NETCDF4_TRUE$])
+m4trace:configure.ac:500: -1- AC_SUBST([USE_NETCDF4_FALSE])
+m4trace:configure.ac:500: -1- AC_SUBST_TRACE([USE_NETCDF4_FALSE])
+m4trace:configure.ac:500: -1- m4_pattern_allow([^USE_NETCDF4_FALSE$])
+m4trace:configure.ac:500: -1- _AM_SUBST_NOTMAKE([USE_NETCDF4_TRUE])
+m4trace:configure.ac:500: -1- _AM_SUBST_NOTMAKE([USE_NETCDF4_FALSE])
+m4trace:configure.ac:501: -1- AM_CONDITIONAL([BUILD_V2], [test "x$nc_build_v2" = xyes])
+m4trace:configure.ac:501: -1- AC_SUBST([BUILD_V2_TRUE])
+m4trace:configure.ac:501: -1- AC_SUBST_TRACE([BUILD_V2_TRUE])
+m4trace:configure.ac:501: -1- m4_pattern_allow([^BUILD_V2_TRUE$])
+m4trace:configure.ac:501: -1- AC_SUBST([BUILD_V2_FALSE])
+m4trace:configure.ac:501: -1- AC_SUBST_TRACE([BUILD_V2_FALSE])
+m4trace:configure.ac:501: -1- m4_pattern_allow([^BUILD_V2_FALSE$])
+m4trace:configure.ac:501: -1- _AM_SUBST_NOTMAKE([BUILD_V2_TRUE])
+m4trace:configure.ac:501: -1- _AM_SUBST_NOTMAKE([BUILD_V2_FALSE])
+m4trace:configure.ac:502: -1- AM_CONDITIONAL([USE_LOGGING], [test "x$nc_has_logging" = xyes])
+m4trace:configure.ac:502: -1- AC_SUBST([USE_LOGGING_TRUE])
+m4trace:configure.ac:502: -1- AC_SUBST_TRACE([USE_LOGGING_TRUE])
+m4trace:configure.ac:502: -1- m4_pattern_allow([^USE_LOGGING_TRUE$])
+m4trace:configure.ac:502: -1- AC_SUBST([USE_LOGGING_FALSE])
+m4trace:configure.ac:502: -1- AC_SUBST_TRACE([USE_LOGGING_FALSE])
+m4trace:configure.ac:502: -1- m4_pattern_allow([^USE_LOGGING_FALSE$])
+m4trace:configure.ac:502: -1- _AM_SUBST_NOTMAKE([USE_LOGGING_TRUE])
+m4trace:configure.ac:502: -1- _AM_SUBST_NOTMAKE([USE_LOGGING_FALSE])
+m4trace:configure.ac:503: -1- AM_CONDITIONAL([BUILD_DAP], [test "x$nc_has_dap" = xyes])
+m4trace:configure.ac:503: -1- AC_SUBST([BUILD_DAP_TRUE])
+m4trace:configure.ac:503: -1- AC_SUBST_TRACE([BUILD_DAP_TRUE])
+m4trace:configure.ac:503: -1- m4_pattern_allow([^BUILD_DAP_TRUE$])
+m4trace:configure.ac:503: -1- AC_SUBST([BUILD_DAP_FALSE])
+m4trace:configure.ac:503: -1- AC_SUBST_TRACE([BUILD_DAP_FALSE])
+m4trace:configure.ac:503: -1- m4_pattern_allow([^BUILD_DAP_FALSE$])
+m4trace:configure.ac:503: -1- _AM_SUBST_NOTMAKE([BUILD_DAP_TRUE])
+m4trace:configure.ac:503: -1- _AM_SUBST_NOTMAKE([BUILD_DAP_FALSE])
+m4trace:configure.ac:504: -1- AM_CONDITIONAL([BUILD_PARALLEL], [test "x$nc_has_parallel" = xyes])
+m4trace:configure.ac:504: -1- AC_SUBST([BUILD_PARALLEL_TRUE])
+m4trace:configure.ac:504: -1- AC_SUBST_TRACE([BUILD_PARALLEL_TRUE])
+m4trace:configure.ac:504: -1- m4_pattern_allow([^BUILD_PARALLEL_TRUE$])
+m4trace:configure.ac:504: -1- AC_SUBST([BUILD_PARALLEL_FALSE])
+m4trace:configure.ac:504: -1- AC_SUBST_TRACE([BUILD_PARALLEL_FALSE])
+m4trace:configure.ac:504: -1- m4_pattern_allow([^BUILD_PARALLEL_FALSE$])
+m4trace:configure.ac:504: -1- _AM_SUBST_NOTMAKE([BUILD_PARALLEL_TRUE])
+m4trace:configure.ac:504: -1- _AM_SUBST_NOTMAKE([BUILD_PARALLEL_FALSE])
+m4trace:configure.ac:505: -2- AC_DEFINE_TRACE_LITERAL([NO_STDLIB_H])
+m4trace:configure.ac:505: -2- m4_pattern_allow([^NO_STDLIB_H$])
+m4trace:configure.ac:505: -2- AH_OUTPUT([NO_STDLIB_H], [/* no stdlib.h */
+@%:@undef NO_STDLIB_H])
+m4trace:configure.ac:506: -2- AC_DEFINE_TRACE_LITERAL([NO_SYS_TYPES_H])
+m4trace:configure.ac:506: -2- m4_pattern_allow([^NO_SYS_TYPES_H$])
+m4trace:configure.ac:506: -2- AH_OUTPUT([NO_SYS_TYPES_H], [/* no sys_types.h */
+@%:@undef NO_SYS_TYPES_H])
+m4trace:configure.ac:507: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
+@%:@undef HAVE_SYS_PARAM_H])
+m4trace:configure.ac:507: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_PARAM_H])
+m4trace:configure.ac:507: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$])
+m4trace:configure.ac:509: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
+@%:@undef HAVE_LOCALE_H])
+m4trace:configure.ac:509: -1- AH_OUTPUT([HAVE_STDIO_H], [/* Define to 1 if you have the <stdio.h> header file. */
+@%:@undef HAVE_STDIO_H])
+m4trace:configure.ac:509: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the <stdarg.h> header file. */
+@%:@undef HAVE_STDARG_H])
+m4trace:configure.ac:509: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the <errno.h> header file. */
+@%:@undef HAVE_ERRNO_H])
+m4trace:configure.ac:509: -1- AH_OUTPUT([HAVE_CTYPE_H], [/* Define to 1 if you have the <ctype.h> header file. */
+@%:@undef HAVE_CTYPE_H])
+m4trace:configure.ac:509: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the <fcntl.h> header file. */
+@%:@undef HAVE_FCNTL_H])
+m4trace:configure.ac:509: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the <malloc.h> header file. */
+@%:@undef HAVE_MALLOC_H])
+m4trace:configure.ac:509: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:509: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:509: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+@%:@undef HAVE_STRINGS_H])
+m4trace:configure.ac:509: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+@%:@undef HAVE_UNISTD_H])
+m4trace:configure.ac:509: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
+@%:@undef HAVE_SYS_STAT_H])
+m4trace:configure.ac:509: -1- AH_OUTPUT([HAVE_GETOPT_H], [/* Define to 1 if you have the <getopt.h> header file. */
+@%:@undef HAVE_GETOPT_H])
+m4trace:configure.ac:509: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
+@%:@undef HAVE_SYS_TIME_H])
+m4trace:configure.ac:509: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the <sys/resource.h> header file. */
+@%:@undef HAVE_SYS_RESOURCE_H])
+m4trace:configure.ac:511: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR\'.
+   */
+@%:@undef HAVE_DIRENT_H])
+m4trace:configure.ac:511: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR\'.
+   */
+@%:@undef HAVE_SYS_NDIR_H])
+m4trace:configure.ac:511: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR\'.
+   */
+@%:@undef HAVE_SYS_DIR_H])
+m4trace:configure.ac:511: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR\'. */
+@%:@undef HAVE_NDIR_H])
+m4trace:configure.ac:512: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
+m4trace:configure.ac:512: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:512: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
+@%:@undef STDC_HEADERS])
+m4trace:configure.ac:513: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_WAIT_H])
+m4trace:configure.ac:513: -1- m4_pattern_allow([^HAVE_SYS_WAIT_H$])
+m4trace:configure.ac:513: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+@%:@undef HAVE_SYS_WAIT_H])
+m4trace:configure.ac:514: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME])
+m4trace:configure.ac:514: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$])
+m4trace:configure.ac:514: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+@%:@undef TIME_WITH_SYS_TIME])
+m4trace:configure.ac:516: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the `vprintf\' function. */
+@%:@undef HAVE_VPRINTF])
+m4trace:configure.ac:516: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF])
+m4trace:configure.ac:516: -1- m4_pattern_allow([^HAVE_VPRINTF$])
+m4trace:configure.ac:516: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT])
+m4trace:configure.ac:516: -1- m4_pattern_allow([^HAVE_DOPRNT$])
+m4trace:configure.ac:516: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don\'t have `vprintf\' but do have `_doprnt.\' */
+@%:@undef HAVE_DOPRNT])
+m4trace:configure.ac:519: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL])
+m4trace:configure.ac:519: -1- m4_pattern_allow([^HAVE__BOOL$])
+m4trace:configure.ac:519: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type `_Bool\'. */
+@%:@undef HAVE__BOOL])
+m4trace:configure.ac:519: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDBOOL_H])
+m4trace:configure.ac:519: -1- m4_pattern_allow([^HAVE_STDBOOL_H$])
+m4trace:configure.ac:519: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if stdbool.h conforms to C99. */
+@%:@undef HAVE_STDBOOL_H])
+m4trace:configure.ac:524: -1- AC_DEFINE_TRACE_LITERAL([size_t])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^size_t$])
+m4trace:configure.ac:524: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
+@%:@undef size_t])
+m4trace:configure.ac:524: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^HAVE_ALLOCA_H$])
+m4trace:configure.ac:524: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+@%:@undef HAVE_ALLOCA_H])
+m4trace:configure.ac:524: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^HAVE_ALLOCA$])
+m4trace:configure.ac:524: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */
+@%:@undef HAVE_ALLOCA])
+m4trace:configure.ac:524: -1- AC_LIBSOURCE([alloca.c])
+m4trace:configure.ac:524: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])
+m4trace:configure.ac:524: -1- AC_SUBST_TRACE([ALLOCA])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^ALLOCA$])
+m4trace:configure.ac:524: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^C_ALLOCA$])
+m4trace:configure.ac:524: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */
+@%:@undef C_ALLOCA])
+m4trace:configure.ac:524: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^CRAY_STACKSEG_END$])
+m4trace:configure.ac:524: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c\' support on those systems.
+   */
+@%:@undef CRAY_STACKSEG_END])
+m4trace:configure.ac:524: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at runtime.
+	STACK_DIRECTION > 0 => grows toward higher addresses
+	STACK_DIRECTION < 0 => grows toward lower addresses
+	STACK_DIRECTION = 0 => direction of growth unknown */
+@%:@undef STACK_DIRECTION])
+m4trace:configure.ac:524: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^STACK_DIRECTION$])
+m4trace:configure.ac:528: -1- AC_DEFINE_TRACE_LITERAL([size_t])
+m4trace:configure.ac:528: -1- m4_pattern_allow([^size_t$])
+m4trace:configure.ac:528: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
+@%:@undef size_t])
+m4trace:configure.ac:529: -1- AC_DEFINE_TRACE_LITERAL([off_t])
+m4trace:configure.ac:529: -1- m4_pattern_allow([^off_t$])
+m4trace:configure.ac:529: -1- AH_OUTPUT([off_t], [/* Define to `long int\' if <sys/types.h> does not define. */
+@%:@undef off_t])
+m4trace:configure.ac:530: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SSIZE_T])
+m4trace:configure.ac:530: -1- m4_pattern_allow([^HAVE_SSIZE_T$])
+m4trace:configure.ac:530: -1- AH_OUTPUT([HAVE_SSIZE_T], [/* Define to 1 if the system has the type `ssize_t\'. */
+@%:@undef HAVE_SSIZE_T])
+m4trace:configure.ac:530: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PTRDIFF_T])
+m4trace:configure.ac:530: -1- m4_pattern_allow([^HAVE_PTRDIFF_T$])
+m4trace:configure.ac:530: -1- AH_OUTPUT([HAVE_PTRDIFF_T], [/* Define to 1 if the system has the type `ptrdiff_t\'. */
+@%:@undef HAVE_PTRDIFF_T])
+m4trace:configure.ac:530: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UCHAR])
+m4trace:configure.ac:530: -1- m4_pattern_allow([^HAVE_UCHAR$])
+m4trace:configure.ac:530: -1- AH_OUTPUT([HAVE_UCHAR], [/* Define to 1 if the system has the type `uchar\'. */
+@%:@undef HAVE_UCHAR])
+m4trace:configure.ac:530: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONGLONG])
+m4trace:configure.ac:530: -1- m4_pattern_allow([^HAVE_LONGLONG$])
+m4trace:configure.ac:530: -1- AH_OUTPUT([HAVE_LONGLONG], [/* Define to 1 if the system has the type `longlong\'. */
+@%:@undef HAVE_LONGLONG])
+m4trace:configure.ac:531: -1- AH_OUTPUT([__CHAR_UNSIGNED__], [/* Define to 1 if type `char\' is unsigned and you are not using gcc.  */
+#ifndef __CHAR_UNSIGNED__
+# undef __CHAR_UNSIGNED__
+#endif])
+m4trace:configure.ac:531: -1- AC_DEFINE_TRACE_LITERAL([__CHAR_UNSIGNED__])
+m4trace:configure.ac:531: -1- m4_pattern_allow([^__CHAR_UNSIGNED__$])
+m4trace:configure.ac:533: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT])
+m4trace:configure.ac:533: -1- m4_pattern_allow([^SIZEOF_SHORT$])
+m4trace:configure.ac:533: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of `short\', as computed by sizeof. */
+@%:@undef SIZEOF_SHORT])
+m4trace:configure.ac:534: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT])
+m4trace:configure.ac:534: -1- m4_pattern_allow([^SIZEOF_INT$])
+m4trace:configure.ac:534: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of `int\', as computed by sizeof. */
+@%:@undef SIZEOF_INT])
+m4trace:configure.ac:535: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG])
+m4trace:configure.ac:535: -1- m4_pattern_allow([^SIZEOF_LONG$])
+m4trace:configure.ac:535: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of `long\', as computed by sizeof. */
+@%:@undef SIZEOF_LONG])
+m4trace:configure.ac:536: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_FLOAT])
+m4trace:configure.ac:536: -1- m4_pattern_allow([^SIZEOF_FLOAT$])
+m4trace:configure.ac:536: -1- AH_OUTPUT([SIZEOF_FLOAT], [/* The size of `float\', as computed by sizeof. */
+@%:@undef SIZEOF_FLOAT])
+m4trace:configure.ac:537: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_DOUBLE])
+m4trace:configure.ac:537: -1- m4_pattern_allow([^SIZEOF_DOUBLE$])
+m4trace:configure.ac:537: -1- AH_OUTPUT([SIZEOF_DOUBLE], [/* The size of `double\', as computed by sizeof. */
+@%:@undef SIZEOF_DOUBLE])
+m4trace:configure.ac:538: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_OFF_T])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^SIZEOF_OFF_T$])
+m4trace:configure.ac:538: -1- AH_OUTPUT([SIZEOF_OFF_T], [/* The size of `off_t\', as computed by sizeof. */
+@%:@undef SIZEOF_OFF_T])
+m4trace:configure.ac:539: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SIZE_T])
+m4trace:configure.ac:539: -1- m4_pattern_allow([^SIZEOF_SIZE_T$])
+m4trace:configure.ac:539: -1- AH_OUTPUT([SIZEOF_SIZE_T], [/* The size of `size_t\', as computed by sizeof. */
+@%:@undef SIZEOF_SIZE_T])
+m4trace:configure.ac:540: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_PTRDIFF_T])
+m4trace:configure.ac:540: -1- m4_pattern_allow([^SIZEOF_PTRDIFF_T$])
+m4trace:configure.ac:540: -1- AH_OUTPUT([SIZEOF_PTRDIFF_T], [/* The size of `ptrdiff_t\', as computed by sizeof. */
+@%:@undef SIZEOF_PTRDIFF_T])
+m4trace:configure.ac:548: -1- AM_CONDITIONAL([TEST_PARALLEL], [test "x$enable_parallel_tests" = xyes])
+m4trace:configure.ac:548: -1- AC_SUBST([TEST_PARALLEL_TRUE])
+m4trace:configure.ac:548: -1- AC_SUBST_TRACE([TEST_PARALLEL_TRUE])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^TEST_PARALLEL_TRUE$])
+m4trace:configure.ac:548: -1- AC_SUBST([TEST_PARALLEL_FALSE])
+m4trace:configure.ac:548: -1- AC_SUBST_TRACE([TEST_PARALLEL_FALSE])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^TEST_PARALLEL_FALSE$])
+m4trace:configure.ac:548: -1- _AM_SUBST_NOTMAKE([TEST_PARALLEL_TRUE])
+m4trace:configure.ac:548: -1- _AM_SUBST_NOTMAKE([TEST_PARALLEL_FALSE])
+m4trace:configure.ac:549: -1- AM_CONDITIONAL([USE_VALGRIND_TESTS], [test "x$enable_valgrind_tests" = xyes])
+m4trace:configure.ac:549: -1- AC_SUBST([USE_VALGRIND_TESTS_TRUE])
+m4trace:configure.ac:549: -1- AC_SUBST_TRACE([USE_VALGRIND_TESTS_TRUE])
+m4trace:configure.ac:549: -1- m4_pattern_allow([^USE_VALGRIND_TESTS_TRUE$])
+m4trace:configure.ac:549: -1- AC_SUBST([USE_VALGRIND_TESTS_FALSE])
+m4trace:configure.ac:549: -1- AC_SUBST_TRACE([USE_VALGRIND_TESTS_FALSE])
+m4trace:configure.ac:549: -1- m4_pattern_allow([^USE_VALGRIND_TESTS_FALSE$])
+m4trace:configure.ac:549: -1- _AM_SUBST_NOTMAKE([USE_VALGRIND_TESTS_TRUE])
+m4trace:configure.ac:549: -1- _AM_SUBST_NOTMAKE([USE_VALGRIND_TESTS_FALSE])
+m4trace:configure.ac:575: -1- AC_SUBST([NC_LIBS], [$NC_LIBS])
+m4trace:configure.ac:575: -1- AC_SUBST_TRACE([NC_LIBS])
+m4trace:configure.ac:575: -1- m4_pattern_allow([^NC_LIBS$])
+m4trace:configure.ac:576: -1- AC_SUBST([NC_FLIBS], [$NC_FLIBS])
+m4trace:configure.ac:576: -1- AC_SUBST_TRACE([NC_FLIBS])
+m4trace:configure.ac:576: -1- m4_pattern_allow([^NC_FLIBS$])
+m4trace:configure.ac:577: -1- AC_SUBST([HAS_F90], [$nc_build_f90])
+m4trace:configure.ac:577: -1- AC_SUBST_TRACE([HAS_F90])
+m4trace:configure.ac:577: -1- m4_pattern_allow([^HAS_F90$])
+m4trace:configure.ac:578: -1- AC_SUBST([HAS_F03], [$nc_build_f03])
+m4trace:configure.ac:578: -1- AC_SUBST_TRACE([HAS_F03])
+m4trace:configure.ac:578: -1- m4_pattern_allow([^HAS_F03$])
+m4trace:configure.ac:579: -1- AC_SUBST([HAS_DAP], [$nc_has_dap])
+m4trace:configure.ac:579: -1- AC_SUBST_TRACE([HAS_DAP])
+m4trace:configure.ac:579: -1- m4_pattern_allow([^HAS_DAP$])
+m4trace:configure.ac:580: -1- AC_SUBST([HAS_NC2], [$nc_build_v2])
+m4trace:configure.ac:580: -1- AC_SUBST_TRACE([HAS_NC2])
+m4trace:configure.ac:580: -1- m4_pattern_allow([^HAS_NC2$])
+m4trace:configure.ac:581: -1- AC_SUBST([HAS_NC4], [$nc_build_v4])
+m4trace:configure.ac:581: -1- AC_SUBST_TRACE([HAS_NC4])
+m4trace:configure.ac:581: -1- m4_pattern_allow([^HAS_NC4$])
+m4trace:configure.ac:586: -1- AC_CONFIG_HEADERS([config.h])
+m4trace:configure.ac:587: -1- AC_CONFIG_HEADERS([libsrc/nfconfig1.inc:libsrc/nfconfig.in], [sed '1d;s%^/\* \(.*\) \*/%\1%' libsrc/nfconfig1.inc >conftest.tmp && mv conftest.tmp libsrc/nfconfig.inc])
+m4trace:configure.ac:590: -1- AC_CONFIG_FILES([Makefile
+                 nf-config
+                 netcdf-fortran.pc
+                 docs/Makefile
+                 libsrc/Makefile
+                 fortran/Makefile
+                 nf_test/Makefile
+                 nf03_test/Makefile
+                 CMakeExtras/Makefile
+                 examples/Makefile
+                 examples/F90/Makefile
+                 examples/F77/Makefile], [test -f  nf-config && chmod 755 nf-config ])
+m4trace:configure.ac:604: -1- AC_SUBST([LIB@&t at OBJS], [$ac_libobjs])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([LIB@&t at OBJS])
+m4trace:configure.ac:604: -1- m4_pattern_allow([^LIB@&t at OBJS$])
+m4trace:configure.ac:604: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([LTLIBOBJS])
+m4trace:configure.ac:604: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.ac:604: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
+m4trace:configure.ac:604: -1- AC_SUBST([am__EXEEXT_TRUE])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
+m4trace:configure.ac:604: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
+m4trace:configure.ac:604: -1- AC_SUBST([am__EXEEXT_FALSE])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
+m4trace:configure.ac:604: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
+m4trace:configure.ac:604: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
+m4trace:configure.ac:604: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([top_builddir])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([top_build_prefix])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([srcdir])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([abs_srcdir])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([top_srcdir])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([abs_top_srcdir])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([builddir])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([abs_builddir])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([abs_top_builddir])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([INSTALL])
+m4trace:configure.ac:604: -1- AC_SUBST_TRACE([MKDIR_P])
+m4trace:configure.ac:604: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
diff --git a/autom4te.cache/traces.2 b/autom4te.cache/traces.2
new file mode 100644
index 0000000..35c4661
--- /dev/null
+++ b/autom4te.cache/traces.2
@@ -0,0 +1,3511 @@
+m4trace:/usr/share/aclocal/argz.m4:12: -1- AC_DEFUN([gl_FUNC_ARGZ], [gl_PREREQ_ARGZ
+
+AC_CHECK_HEADERS([argz.h], [], [], [AC_INCLUDES_DEFAULT])
+
+AC_CHECK_TYPES([error_t],
+  [],
+  [AC_DEFINE([error_t], [int],
+   [Define to a type to use for `error_t' if it is not otherwise available.])
+   AC_DEFINE([__error_t_defined], [1], [Define so that glibc/gnulib argp.h
+    does not typedef error_t.])],
+  [#if defined(HAVE_ARGZ_H)
+#  include <argz.h>
+#endif])
+
+ARGZ_H=
+AC_CHECK_FUNCS([argz_add argz_append argz_count argz_create_sep argz_insert \
+	argz_next argz_stringify], [], [ARGZ_H=argz.h; AC_LIBOBJ([argz])])
+
+dnl if have system argz functions, allow forced use of
+dnl libltdl-supplied implementation (and default to do so
+dnl on "known bad" systems). Could use a runtime check, but
+dnl (a) detecting malloc issues is notoriously unreliable
+dnl (b) only known system that declares argz functions,
+dnl     provides them, yet they are broken, is cygwin
+dnl     releases prior to 16-Mar-2007 (1.5.24 and earlier)
+dnl So, it's more straightforward simply to special case
+dnl this for known bad systems.
+AS_IF([test -z "$ARGZ_H"],
+    [AC_CACHE_CHECK(
+        [if argz actually works],
+        [lt_cv_sys_argz_works],
+        [[case $host_os in #(
+	 *cygwin*)
+	   lt_cv_sys_argz_works=no
+	   if test "$cross_compiling" != no; then
+	     lt_cv_sys_argz_works="guessing no"
+	   else
+	     lt_sed_extract_leading_digits='s/^\([0-9\.]*\).*/\1/'
+	     save_IFS=$IFS
+	     IFS=-.
+	     set x `uname -r | sed -e "$lt_sed_extract_leading_digits"`
+	     IFS=$save_IFS
+	     lt_os_major=${2-0}
+	     lt_os_minor=${3-0}
+	     lt_os_micro=${4-0}
+	     if test "$lt_os_major" -gt 1 \
+		|| { test "$lt_os_major" -eq 1 \
+		  && { test "$lt_os_minor" -gt 5 \
+		    || { test "$lt_os_minor" -eq 5 \
+		      && test "$lt_os_micro" -gt 24; }; }; }; then
+	       lt_cv_sys_argz_works=yes
+	     fi
+	   fi
+	   ;; #(
+	 *) lt_cv_sys_argz_works=yes ;;
+	 esac]])
+     AS_IF([test "$lt_cv_sys_argz_works" = yes],
+        [AC_DEFINE([HAVE_WORKING_ARGZ], 1,
+                   [This value is set to 1 to indicate that the system argz facility works])],
+        [ARGZ_H=argz.h
+        AC_LIBOBJ([argz])])])
+
+AC_SUBST([ARGZ_H])
+])
+m4trace:/usr/share/aclocal/argz.m4:79: -1- AC_DEFUN([gl_PREREQ_ARGZ], [:])
+m4trace:/usr/share/aclocal/ltdl.m4:16: -1- AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT])
+_$0($*)
+])
+m4trace:/usr/share/aclocal/ltdl.m4:68: -1- AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl
+dnl Although the argument is deprecated and no longer documented,
+dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one
+dnl here make sure it is the same as any other declaration of libltdl's
+dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
+_$0()
+])
+m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_CONVENIENCE])
+m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_CONVENIENCE' is obsolete.
+You should run autoupdate.])dnl
+_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_CONVENIENCE])
+m4trace:/usr/share/aclocal/ltdl.m4:124: -1- AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl
+dnl Although the argument is deprecated and no longer documented,
+dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one
+dnl here make sure it is the same as any other declaration of libltdl's
+dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
+_$0()
+])
+m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_INSTALLABLE])
+m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_INSTALLABLE' is obsolete.
+You should run autoupdate.])dnl
+_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_INSTALLABLE])
+m4trace:/usr/share/aclocal/ltdl.m4:213: -1- AC_DEFUN([_LT_LIBOBJ], [
+  m4_pattern_allow([^_LT_LIBOBJS$])
+  _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext"
+])
+m4trace:/usr/share/aclocal/ltdl.m4:226: -1- AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+dnl We need to keep our own list of libobjs separate from our parent project,
+dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while
+dnl we look for our own LIBOBJs.
+m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ]))
+m4_pushdef([AC_LIBSOURCES])
+
+dnl If not otherwise defined, default to the 1.5.x compatible subproject mode:
+m4_if(_LTDL_MODE, [],
+        [m4_define([_LTDL_MODE], m4_default([$2], [subproject]))
+        m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])],
+                [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])
+
+AC_ARG_WITH([included_ltdl],
+    [AS_HELP_STRING([--with-included-ltdl],
+                    [use the GNU ltdl sources included here])])
+
+if test "x$with_included_ltdl" != xyes; then
+  # We are not being forced to use the included libltdl sources, so
+  # decide whether there is a useful installed version we can use.
+  AC_CHECK_HEADER([ltdl.h],
+      [AC_CHECK_DECL([lt_dlinterface_register],
+	   [AC_CHECK_LIB([ltdl], [lt_dladvise_preload],
+	       [with_included_ltdl=no],
+	       [with_included_ltdl=yes])],
+	   [with_included_ltdl=yes],
+	   [AC_INCLUDES_DEFAULT
+	    #include <ltdl.h>])],
+      [with_included_ltdl=yes],
+      [AC_INCLUDES_DEFAULT]
+  )
+fi
+
+dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE
+dnl was called yet, then for old times' sake, we assume libltdl is in an
+dnl eponymous directory:
+AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])])
+
+AC_ARG_WITH([ltdl_include],
+    [AS_HELP_STRING([--with-ltdl-include=DIR],
+                    [use the ltdl headers installed in DIR])])
+
+if test -n "$with_ltdl_include"; then
+  if test -f "$with_ltdl_include/ltdl.h"; then :
+  else
+    AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include'])
+  fi
+else
+  with_ltdl_include=no
+fi
+
+AC_ARG_WITH([ltdl_lib],
+    [AS_HELP_STRING([--with-ltdl-lib=DIR],
+                    [use the libltdl.la installed in DIR])])
+
+if test -n "$with_ltdl_lib"; then
+  if test -f "$with_ltdl_lib/libltdl.la"; then :
+  else
+    AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib'])
+  fi
+else
+  with_ltdl_lib=no
+fi
+
+case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in
+  ,yes,no,no,)
+	m4_case(m4_default(_LTDL_TYPE, [convenience]),
+	    [convenience], [_LTDL_CONVENIENCE],
+	    [installable], [_LTDL_INSTALLABLE],
+	  [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)])
+	;;
+  ,no,no,no,)
+	# If the included ltdl is not to be used, then use the
+	# preinstalled libltdl we found.
+	AC_DEFINE([HAVE_LTDL], [1],
+	  [Define this if a modern libltdl is already installed])
+	LIBLTDL=-lltdl
+	LTDLDEPS=
+	LTDLINCL=
+	;;
+  ,no*,no,*)
+	AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together])
+	;;
+  *)	with_included_ltdl=no
+	LIBLTDL="-L$with_ltdl_lib -lltdl"
+	LTDLDEPS=
+	LTDLINCL="-I$with_ltdl_include"
+	;;
+esac
+INCLTDL="$LTDLINCL"
+
+# Report our decision...
+AC_MSG_CHECKING([where to find libltdl headers])
+AC_MSG_RESULT([$LTDLINCL])
+AC_MSG_CHECKING([where to find libltdl library])
+AC_MSG_RESULT([$LIBLTDL])
+
+_LTDL_SETUP
+
+dnl restore autoconf definition.
+m4_popdef([AC_LIBOBJ])
+m4_popdef([AC_LIBSOURCES])
+
+AC_CONFIG_COMMANDS_PRE([
+    _ltdl_libobjs=
+    _ltdl_ltlibobjs=
+    if test -n "$_LT_LIBOBJS"; then
+      # Remove the extension.
+      _lt_sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do
+        _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext"
+        _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo"
+      done
+    fi
+    AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs])
+    AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs])
+])
+
+# Only expand once:
+m4_define([LTDL_INIT])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AC_DEFUN([AC_LIB_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIB_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AC_DEFUN([AC_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_WITH_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AC_DEFUN([LT_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `LT_WITH_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:367: -1- AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_SYS_MODULE_EXT])dnl
+AC_REQUIRE([LT_SYS_MODULE_PATH])dnl
+AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl
+AC_REQUIRE([LT_LIB_DLLOAD])dnl
+AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
+AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl
+AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl
+AC_REQUIRE([gl_FUNC_ARGZ])dnl
+
+m4_require([_LT_CHECK_OBJDIR])dnl
+m4_require([_LT_HEADER_DLFCN])dnl
+m4_require([_LT_CHECK_DLPREOPEN])dnl
+m4_require([_LT_DECL_SED])dnl
+
+dnl Don't require this, or it will be expanded earlier than the code
+dnl that sets the variables it relies on:
+_LT_ENABLE_INSTALL
+
+dnl _LTDL_MODE specific code must be called at least once:
+_LTDL_MODE_DISPATCH
+
+# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS
+# the user used.  This is so that ltdl.h can pick up the parent projects
+# config.h file, The first file in AC_CONFIG_HEADERS must contain the
+# definitions required by ltdl.c.
+# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility).
+AC_CONFIG_COMMANDS_PRE([dnl
+m4_pattern_allow([^LT_CONFIG_H$])dnl
+m4_ifset([AH_HEADER],
+    [LT_CONFIG_H=AH_HEADER],
+    [m4_ifset([AC_LIST_HEADERS],
+	    [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[      ]]*,,;s,[[ :]].*$,,'`],
+	[])])])
+AC_SUBST([LT_CONFIG_H])
+
+AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h],
+	[], [], [AC_INCLUDES_DEFAULT])
+
+AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])])
+AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])])
+
+m4_pattern_allow([LT_LIBEXT])dnl
+AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension])
+
+name=
+eval "lt_libprefix=\"$libname_spec\""
+m4_pattern_allow([LT_LIBPREFIX])dnl
+AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix])
+
+name=ltdl
+eval "LTDLOPEN=\"$libname_spec\""
+AC_SUBST([LTDLOPEN])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:443: -1- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_CACHE_CHECK([whether deplibs are loaded by dlopen],
+  [lt_cv_sys_dlopen_deplibs],
+  [# PORTME does your system automatically load deplibs for dlopen?
+  # or its logical equivalent (e.g. shl_load for HP-UX < 11)
+  # For now, we just catch OSes we know something about -- in the
+  # future, we'll try test this programmatically.
+  lt_cv_sys_dlopen_deplibs=unknown
+  case $host_os in
+  aix3*|aix4.1.*|aix4.2.*)
+    # Unknown whether this is true for these versions of AIX, but
+    # we want this `case' here to explicitly catch those versions.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  aix[[4-9]]*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  amigaos*)
+    case $host_cpu in
+    powerpc)
+      lt_cv_sys_dlopen_deplibs=no
+      ;;
+    esac
+    ;;
+  darwin*)
+    # Assuming the user has installed a libdl from somewhere, this is true
+    # If you are looking for one http://www.opendarwin.org/projects/dlcompat
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  freebsd* | dragonfly*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    # GNU and its variants, using gnu ld.so (Glibc)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  hpux10*|hpux11*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  interix*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  irix[[12345]]*|irix6.[[01]]*)
+    # Catch all versions of IRIX before 6.2, and indicate that we don't
+    # know how it worked for any of those versions.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  irix*)
+    # The case above catches anything before 6.2, and it's known that
+    # at 6.2 and later dlopen does load deplibs.
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  netbsd* | netbsdelf*-gnu)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  openbsd*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  osf[[1234]]*)
+    # dlopen did load deplibs (at least at 4.x), but until the 5.x series,
+    # it did *not* use an RPATH in a shared library to find objects the
+    # library depends on, so we explicitly say `no'.
+    lt_cv_sys_dlopen_deplibs=no
+    ;;
+  osf5.0|osf5.0a|osf5.1)
+    # dlopen *does* load deplibs and with the right loader patch applied
+    # it even uses RPATH in a shared library to search for shared objects
+    # that the library depends on, but there's no easy way to know if that
+    # patch is installed.  Since this is the case, all we can really
+    # say is unknown -- it depends on the patch being installed.  If
+    # it is, this changes to `yes'.  Without it, it would be `no'.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  osf*)
+    # the two cases above should catch all versions of osf <= 5.1.  Read
+    # the comments above for what we know about them.
+    # At > 5.1, deplibs are loaded *and* any RPATH in a shared library
+    # is used to find them so we can finally say `yes'.
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  qnx*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  solaris*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+    libltdl_cv_sys_dlopen_deplibs=yes
+    ;;
+  esac
+  ])
+if test "$lt_cv_sys_dlopen_deplibs" != yes; then
+ AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1],
+    [Define if the OS needs help to load dependent libraries for dlopen().])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:542: -1- AU_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:542: -1- AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYS_DLOPEN_DEPLIBS' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:549: -1- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([which extension is used for runtime loadable modules],
+  [libltdl_cv_shlibext],
+[
+module=yes
+eval libltdl_cv_shlibext=$shrext_cmds
+module=no
+eval libltdl_cv_shrext=$shrext_cmds
+  ])
+if test -n "$libltdl_cv_shlibext"; then
+  m4_pattern_allow([LT_MODULE_EXT])dnl
+  AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"],
+    [Define to the extension used for runtime loadable modules, say, ".so".])
+fi
+if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then
+  m4_pattern_allow([LT_SHARED_EXT])dnl
+  AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"],
+    [Define to the shared library suffix, say, ".dylib".])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:572: -1- AU_DEFUN([AC_LTDL_SHLIBEXT], [m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:572: -1- AC_DEFUN([AC_LTDL_SHLIBEXT], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBEXT' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:579: -1- AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([which variable specifies run-time module search path],
+  [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"])
+if test -n "$lt_cv_module_path_var"; then
+  m4_pattern_allow([LT_MODULE_PATH_VAR])dnl
+  AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"],
+    [Define to the name of the environment variable that determines the run-time module search path.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:591: -1- AU_DEFUN([AC_LTDL_SHLIBPATH], [m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:591: -1- AC_DEFUN([AC_LTDL_SHLIBPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBPATH' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:598: -1- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([for the default library search path],
+  [lt_cv_sys_dlsearch_path],
+  [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"])
+if test -n "$lt_cv_sys_dlsearch_path"; then
+  sys_dlsearch_path=
+  for dir in $lt_cv_sys_dlsearch_path; do
+    if test -z "$sys_dlsearch_path"; then
+      sys_dlsearch_path="$dir"
+    else
+      sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir"
+    fi
+  done
+  m4_pattern_allow([LT_DLSEARCH_PATH])dnl
+  AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"],
+    [Define to the system default library search path.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:619: -1- AU_DEFUN([AC_LTDL_SYSSEARCHPATH], [m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:619: -1- AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYSSEARCHPATH' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:645: -1- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$])
+LT_DLLOADERS=
+AC_SUBST([LT_DLLOADERS])
+
+AC_LANG_PUSH([C])
+
+LIBADD_DLOPEN=
+AC_SEARCH_LIBS([dlopen], [dl],
+	[AC_DEFINE([HAVE_LIBDL], [1],
+		   [Define if you have the libdl library or equivalent.])
+	if test "$ac_cv_search_dlopen" != "none required" ; then
+	  LIBADD_DLOPEN="-ldl"
+	fi
+	libltdl_cv_lib_dl_dlopen="yes"
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
+    [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H
+#  include <dlfcn.h>
+#endif
+    ]], [[dlopen(0, 0);]])],
+	    [AC_DEFINE([HAVE_LIBDL], [1],
+		       [Define if you have the libdl library or equivalent.])
+	    libltdl_cv_func_dlopen="yes"
+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
+	[AC_CHECK_LIB([svld], [dlopen],
+		[AC_DEFINE([HAVE_LIBDL], [1],
+			 [Define if you have the libdl library or equivalent.])
+	        LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes"
+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])])
+if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes
+then
+  lt_save_LIBS="$LIBS"
+  LIBS="$LIBS $LIBADD_DLOPEN"
+  AC_CHECK_FUNCS([dlerror])
+  LIBS="$lt_save_LIBS"
+fi
+AC_SUBST([LIBADD_DLOPEN])
+
+LIBADD_SHL_LOAD=
+AC_CHECK_FUNC([shl_load],
+	[AC_DEFINE([HAVE_SHL_LOAD], [1],
+		   [Define if you have the shl_load function.])
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"],
+    [AC_CHECK_LIB([dld], [shl_load],
+	    [AC_DEFINE([HAVE_SHL_LOAD], [1],
+		       [Define if you have the shl_load function.])
+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"
+	    LIBADD_SHL_LOAD="-ldld"])])
+AC_SUBST([LIBADD_SHL_LOAD])
+
+case $host_os in
+darwin[[1567]].*)
+# We only want this for pre-Mac OS X 10.4.
+  AC_CHECK_FUNC([_dyld_func_lookup],
+	[AC_DEFINE([HAVE_DYLD], [1],
+		   [Define if you have the _dyld_func_lookup function.])
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"])
+  ;;
+beos*)
+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la"
+  ;;
+cygwin* | mingw* | os2* | pw32*)
+  AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include <sys/cygwin.h>]])
+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la"
+  ;;
+esac
+
+AC_CHECK_LIB([dld], [dld_link],
+	[AC_DEFINE([HAVE_DLD], [1],
+		   [Define if you have the GNU dld library.])
+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"])
+AC_SUBST([LIBADD_DLD_LINK])
+
+m4_pattern_allow([^LT_DLPREOPEN$])
+LT_DLPREOPEN=
+if test -n "$LT_DLLOADERS"
+then
+  for lt_loader in $LT_DLLOADERS; do
+    LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader "
+  done
+  AC_DEFINE([HAVE_LIBDLLOADER], [1],
+            [Define if libdlloader will be built on this platform])
+fi
+AC_SUBST([LT_DLPREOPEN])
+
+dnl This isn't used anymore, but set it for backwards compatibility
+LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD"
+AC_SUBST([LIBADD_DL])
+
+AC_LANG_POP
+])
+m4trace:/usr/share/aclocal/ltdl.m4:738: -1- AU_DEFUN([AC_LTDL_DLLIB], [m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:738: -1- AC_DEFUN([AC_LTDL_DLLIB], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLLIB' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:746: -1- AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+AC_CACHE_CHECK([for _ prefix in compiled symbols],
+  [lt_cv_sys_symbol_underscore],
+  [lt_cv_sys_symbol_underscore=no
+  cat > conftest.$ac_ext <<_LT_EOF
+void nm_test_func(){}
+int main(){nm_test_func;return 0;}
+_LT_EOF
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    ac_nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
+      # See whether the symbols have a leading underscore.
+      if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
+        lt_cv_sys_symbol_underscore=yes
+      else
+        if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
+	  :
+        else
+	  echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD
+        fi
+      fi
+    else
+      echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.c >&AS_MESSAGE_LOG_FD
+  fi
+  rm -rf conftest*
+  ])
+  sys_symbol_underscore=$lt_cv_sys_symbol_underscore
+  AC_SUBST([sys_symbol_underscore])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:783: -1- AU_DEFUN([AC_LTDL_SYMBOL_USCORE], [m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:783: -1- AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYMBOL_USCORE' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:790: -1- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
+if test x"$lt_cv_sys_symbol_underscore" = xyes; then
+  if test x"$libltdl_cv_func_dlopen" = xyes ||
+     test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then
+	AC_CACHE_CHECK([whether we have to add an underscore for dlsym],
+	  [libltdl_cv_need_uscore],
+	  [libltdl_cv_need_uscore=unknown
+          save_LIBS="$LIBS"
+          LIBS="$LIBS $LIBADD_DLOPEN"
+	  _LT_TRY_DLOPEN_SELF(
+	    [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes],
+	    [],				 [libltdl_cv_need_uscore=cross])
+	  LIBS="$save_LIBS"
+	])
+  fi
+fi
+
+if test x"$libltdl_cv_need_uscore" = xyes; then
+  AC_DEFINE([NEED_USCORE], [1],
+    [Define if dlsym() requires a leading underscore in symbol names.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:815: -1- AU_DEFUN([AC_LTDL_DLSYM_USCORE], [m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:815: -1- AC_DEFUN([AC_LTDL_DLSYM_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLSYM_USCORE' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])])
+m4trace:/usr/share/aclocal-1.14/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.14'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.14.1], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+m4trace:/usr/share/aclocal-1.14/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.14.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+m4trace:/usr/share/aclocal-1.14/auxdir.m4:47: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+m4trace:/usr/share/aclocal-1.14/cond.m4:12: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+m4trace:/usr/share/aclocal-1.14/depend.m4:26: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+m4trace:/usr/share/aclocal-1.14/depend.m4:163: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+m4trace:/usr/share/aclocal-1.14/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+m4trace:/usr/share/aclocal-1.14/depout.m4:12: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])
+m4trace:/usr/share/aclocal-1.14/depout.m4:71: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+m4trace:/usr/share/aclocal-1.14/init.m4:29: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi])
+m4trace:/usr/share/aclocal-1.14/init.m4:182: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+m4trace:/usr/share/aclocal-1.14/install-sh.m4:11: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST([install_sh])])
+m4trace:/usr/share/aclocal-1.14/lead-dot.m4:10: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+m4trace:/usr/share/aclocal-1.14/maintainer.m4:16: -1- AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t at _MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+
+])
+m4trace:/usr/share/aclocal-1.14/make.m4:12: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+m4trace:/usr/share/aclocal-1.14/missing.m4:11: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+m4trace:/usr/share/aclocal-1.14/missing.m4:20: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+m4trace:/usr/share/aclocal-1.14/options.m4:11: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+m4trace:/usr/share/aclocal-1.14/options.m4:17: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+m4trace:/usr/share/aclocal-1.14/options.m4:23: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+m4trace:/usr/share/aclocal-1.14/options.m4:29: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+m4trace:/usr/share/aclocal-1.14/prog-cc-c-o.m4:12: -1- AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+m4trace:/usr/share/aclocal-1.14/prog-cc-c-o.m4:47: -1- AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+m4trace:/usr/share/aclocal-1.14/runlog.m4:12: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+m4trace:/usr/share/aclocal-1.14/sanity.m4:11: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+m4trace:/usr/share/aclocal-1.14/silent.m4:12: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+m4trace:/usr/share/aclocal-1.14/strip.m4:17: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+m4trace:/usr/share/aclocal-1.14/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE])
+m4trace:/usr/share/aclocal-1.14/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+m4trace:/usr/share/aclocal-1.14/tar.m4:23: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
+  rm -rf conftest.dir
+
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+])
+m4trace:m4/libtool.m4:69: -1- AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])
+m4trace:m4/libtool.m4:107: -1- AU_DEFUN([AC_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:m4/libtool.m4:107: -1- AC_DEFUN([AC_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:m4/libtool.m4:108: -1- AU_DEFUN([AM_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:m4/libtool.m4:108: -1- AC_DEFUN([AM_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:m4/libtool.m4:609: -1- AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+  echo
+  AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+  -h, --help      print this help, then exit
+  -V, --version   print version number, then exit
+  -q, --quiet     do not print progress messages
+  -d, --debug     don't remove temporary files
+
+Report bugs to <bug-libtool at gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2011 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+  case $[1] in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+    *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test "$silent" = yes &&
+  lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
+])
+m4trace:m4/libtool.m4:790: -1- AC_DEFUN([LT_SUPPORTED_TAG], [])
+m4trace:m4/libtool.m4:801: -1- AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+  [C],			[_LT_LANG(C)],
+  [C++],		[_LT_LANG(CXX)],
+  [Go],			[_LT_LANG(GO)],
+  [Java],		[_LT_LANG(GCJ)],
+  [Fortran 77],		[_LT_LANG(F77)],
+  [Fortran],		[_LT_LANG(FC)],
+  [Windows Resource],	[_LT_LANG(RC)],
+  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+    [_LT_LANG($1)],
+    [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])
+m4trace:m4/libtool.m4:893: -1- AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+m4trace:m4/libtool.m4:893: -1- AC_DEFUN([AC_LIBTOOL_CXX], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_CXX' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(C++)])
+m4trace:m4/libtool.m4:894: -1- AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+m4trace:m4/libtool.m4:894: -1- AC_DEFUN([AC_LIBTOOL_F77], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_F77' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Fortran 77)])
+m4trace:m4/libtool.m4:895: -1- AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+m4trace:m4/libtool.m4:895: -1- AC_DEFUN([AC_LIBTOOL_FC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_FC' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Fortran)])
+m4trace:m4/libtool.m4:896: -1- AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+m4trace:m4/libtool.m4:896: -1- AC_DEFUN([AC_LIBTOOL_GCJ], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_GCJ' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Java)])
+m4trace:m4/libtool.m4:897: -1- AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
+m4trace:m4/libtool.m4:897: -1- AC_DEFUN([AC_LIBTOOL_RC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_RC' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Windows Resource)])
+m4trace:m4/libtool.m4:1225: -1- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[  --with-sysroot[=DIR] Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted.  We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   AC_MSG_RESULT([${with_sysroot}])
+   AC_MSG_ERROR([The sysroot must be an absolute path.])
+   ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and in which our libraries should be installed.])])
+m4trace:m4/libtool.m4:1515: -1- AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$5], , :, [$5])
+else
+    m4_if([$6], , :, [$6])
+fi
+])
+m4trace:m4/libtool.m4:1557: -1- AU_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
+m4trace:m4/libtool.m4:1557: -1- AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_COMPILER_OPTION' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
+m4trace:m4/libtool.m4:1566: -1- AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$4], , :, [$4])
+else
+    m4_if([$5], , :, [$5])
+fi
+])
+m4trace:m4/libtool.m4:1601: -1- AU_DEFUN([AC_LIBTOOL_LINKER_OPTION], [m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
+m4trace:m4/libtool.m4:1601: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_LINKER_OPTION' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
+m4trace:m4/libtool.m4:1608: -1- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+	test undefined != "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+    [What is the maximum length of a command?])
+])
+m4trace:m4/libtool.m4:1747: -1- AU_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
+m4trace:m4/libtool.m4:1747: -1- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_SYS_MAX_CMD_LEN' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
+m4trace:m4/libtool.m4:1858: -1- AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+    ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+	  [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+	[AC_CHECK_FUNC([dlopen],
+	      [lt_cv_dlopen="dlopen"],
+	  [AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+	    [AC_CHECK_LIB([svld], [dlopen],
+		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+	      [AC_CHECK_LIB([dld], [dld_link],
+		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+	      ])
+	    ])
+	  ])
+	])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+	  lt_cv_dlopen_self, [dnl
+	  _LT_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+	  lt_cv_dlopen_self_static, [dnl
+	  _LT_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+	 [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+	 [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+	 [Whether dlopen of statically linked programs is supported])
+])
+m4trace:m4/libtool.m4:1975: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
+m4trace:m4/libtool.m4:1975: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN_SELF' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
+m4trace:m4/libtool.m4:2945: -1- AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="m4_if([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])
+m4trace:m4/libtool.m4:3007: -1- AU_DEFUN([AC_PATH_TOOL_PREFIX], [m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
+m4trace:m4/libtool.m4:3007: -1- AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_DIAGNOSE([obsolete], [The macro `AC_PATH_TOOL_PREFIX' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
+m4trace:m4/libtool.m4:3030: -1- AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
+
+AC_ARG_WITH([gnu-ld],
+    [AS_HELP_STRING([--with-gnu-ld],
+	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])
+m4trace:m4/libtool.m4:3119: -1- AU_DEFUN([AM_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:m4/libtool.m4:3119: -1- AC_DEFUN([AM_PROG_LD], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LD' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:m4/libtool.m4:3120: -1- AU_DEFUN([AC_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:m4/libtool.m4:3120: -1- AC_DEFUN([AC_PROG_LD], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LD' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:m4/libtool.m4:3410: -1- AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+  AC_SUBST([DUMPBIN])
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+  [lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
+  cat conftest.out >&AS_MESSAGE_LOG_FD
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*])
+])
+m4trace:m4/libtool.m4:3500: -1- AU_DEFUN([AM_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:m4/libtool.m4:3500: -1- AC_DEFUN([AM_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_NM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:m4/libtool.m4:3501: -1- AU_DEFUN([AC_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:m4/libtool.m4:3501: -1- AC_DEFUN([AC_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_NM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:m4/libtool.m4:3571: -1- AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+AC_SUBST([LIBM])
+])
+m4trace:m4/libtool.m4:3590: -1- AU_DEFUN([AC_CHECK_LIBM], [m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
+m4trace:m4/libtool.m4:3590: -1- AC_DEFUN([AC_CHECK_LIBM], [AC_DIAGNOSE([obsolete], [The macro `AC_CHECK_LIBM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
+m4trace:m4/libtool.m4:7637: -1- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+    [AC_CHECK_TOOL(GCJ, gcj,)
+      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+      AC_SUBST(GCJFLAGS)])])[]dnl
+])
+m4trace:m4/libtool.m4:7646: -1- AU_DEFUN([LT_AC_PROG_GCJ], [m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
+m4trace:m4/libtool.m4:7646: -1- AC_DEFUN([LT_AC_PROG_GCJ], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_GCJ' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
+m4trace:m4/libtool.m4:7653: -1- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,)
+])
+m4trace:m4/libtool.m4:7660: -1- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,)
+])
+m4trace:m4/libtool.m4:7665: -1- AU_DEFUN([LT_AC_PROG_RC], [m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
+m4trace:m4/libtool.m4:7665: -1- AC_DEFUN([LT_AC_PROG_RC], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_RC' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
+m4trace:m4/libtool.m4:7785: -1- AU_DEFUN([LT_AC_PROG_SED], [m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
+m4trace:m4/libtool.m4:7785: -1- AC_DEFUN([LT_AC_PROG_SED], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_SED' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
+m4trace:m4/ltoptions.m4:14: -1- AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+m4trace:m4/ltoptions.m4:111: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:111: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN' is obsolete.
+You should run autoupdate.])dnl
+_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:146: -1- AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:146: -1- AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete.
+You should run autoupdate.])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:195: -1- AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+m4trace:m4/ltoptions.m4:199: -1- AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+m4trace:m4/ltoptions.m4:203: -1- AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+m4trace:m4/ltoptions.m4:203: -1- AC_DEFUN([AM_ENABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_SHARED' is obsolete.
+You should run autoupdate.])dnl
+AC_ENABLE_SHARED($@)])
+m4trace:m4/ltoptions.m4:204: -1- AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+m4trace:m4/ltoptions.m4:204: -1- AC_DEFUN([AM_DISABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_SHARED' is obsolete.
+You should run autoupdate.])dnl
+AC_DISABLE_SHARED($@)])
+m4trace:m4/ltoptions.m4:249: -1- AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+m4trace:m4/ltoptions.m4:253: -1- AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+m4trace:m4/ltoptions.m4:257: -1- AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+m4trace:m4/ltoptions.m4:257: -1- AC_DEFUN([AM_ENABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_STATIC' is obsolete.
+You should run autoupdate.])dnl
+AC_ENABLE_STATIC($@)])
+m4trace:m4/ltoptions.m4:258: -1- AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+m4trace:m4/ltoptions.m4:258: -1- AC_DEFUN([AM_DISABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_STATIC' is obsolete.
+You should run autoupdate.])dnl
+AC_DISABLE_STATIC($@)])
+m4trace:m4/ltoptions.m4:303: -1- AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:303: -1- AC_DEFUN([AC_ENABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_ENABLE_FAST_INSTALL' is obsolete.
+You should run autoupdate.])dnl
+_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:310: -1- AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:310: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_DISABLE_FAST_INSTALL' is obsolete.
+You should run autoupdate.])dnl
+_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:358: -1- AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltoptions.m4:358: -1- AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_PICMODE' is obsolete.
+You should run autoupdate.])dnl
+_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+m4trace:m4/ltsugar.m4:13: -1- AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+m4trace:m4/ltversion.m4:18: -1- AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2'
+macro_revision='1.3337'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
+m4trace:m4/lt~obsolete.m4:36: -1- AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+m4trace:m4/lt~obsolete.m4:40: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])
+m4trace:m4/lt~obsolete.m4:41: -1- AC_DEFUN([_LT_AC_SHELL_INIT])
+m4trace:m4/lt~obsolete.m4:42: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])
+m4trace:m4/lt~obsolete.m4:44: -1- AC_DEFUN([_LT_AC_TAGVAR])
+m4trace:m4/lt~obsolete.m4:45: -1- AC_DEFUN([AC_LTDL_ENABLE_INSTALL])
+m4trace:m4/lt~obsolete.m4:46: -1- AC_DEFUN([AC_LTDL_PREOPEN])
+m4trace:m4/lt~obsolete.m4:47: -1- AC_DEFUN([_LT_AC_SYS_COMPILER])
+m4trace:m4/lt~obsolete.m4:48: -1- AC_DEFUN([_LT_AC_LOCK])
+m4trace:m4/lt~obsolete.m4:49: -1- AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])
+m4trace:m4/lt~obsolete.m4:50: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])
+m4trace:m4/lt~obsolete.m4:51: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])
+m4trace:m4/lt~obsolete.m4:52: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])
+m4trace:m4/lt~obsolete.m4:53: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR])
+m4trace:m4/lt~obsolete.m4:54: -1- AC_DEFUN([AC_LTDL_OBJDIR])
+m4trace:m4/lt~obsolete.m4:55: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])
+m4trace:m4/lt~obsolete.m4:56: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])
+m4trace:m4/lt~obsolete.m4:57: -1- AC_DEFUN([AC_PATH_MAGIC])
+m4trace:m4/lt~obsolete.m4:58: -1- AC_DEFUN([AC_PROG_LD_GNU])
+m4trace:m4/lt~obsolete.m4:59: -1- AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])
+m4trace:m4/lt~obsolete.m4:60: -1- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])
+m4trace:m4/lt~obsolete.m4:61: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])
+m4trace:m4/lt~obsolete.m4:62: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])
+m4trace:m4/lt~obsolete.m4:63: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])
+m4trace:m4/lt~obsolete.m4:64: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])
+m4trace:m4/lt~obsolete.m4:65: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])
+m4trace:m4/lt~obsolete.m4:66: -1- AC_DEFUN([LT_AC_PROG_EGREP])
+m4trace:m4/lt~obsolete.m4:71: -1- AC_DEFUN([_AC_PROG_LIBTOOL])
+m4trace:m4/lt~obsolete.m4:72: -1- AC_DEFUN([AC_LIBTOOL_SETUP])
+m4trace:m4/lt~obsolete.m4:73: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN])
+m4trace:m4/lt~obsolete.m4:74: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])
+m4trace:m4/lt~obsolete.m4:75: -1- AC_DEFUN([_LT_AC_TAGCONFIG])
+m4trace:m4/lt~obsolete.m4:77: -1- AC_DEFUN([_LT_AC_LANG_CXX])
+m4trace:m4/lt~obsolete.m4:78: -1- AC_DEFUN([_LT_AC_LANG_F77])
+m4trace:m4/lt~obsolete.m4:79: -1- AC_DEFUN([_LT_AC_LANG_GCJ])
+m4trace:m4/lt~obsolete.m4:80: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])
+m4trace:m4/lt~obsolete.m4:81: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG])
+m4trace:m4/lt~obsolete.m4:82: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])
+m4trace:m4/lt~obsolete.m4:83: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])
+m4trace:m4/lt~obsolete.m4:84: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])
+m4trace:m4/lt~obsolete.m4:85: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG])
+m4trace:m4/lt~obsolete.m4:86: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])
+m4trace:m4/lt~obsolete.m4:87: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])
+m4trace:m4/lt~obsolete.m4:88: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])
+m4trace:m4/lt~obsolete.m4:89: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG])
+m4trace:m4/lt~obsolete.m4:90: -1- AC_DEFUN([AC_LIBTOOL_CONFIG])
+m4trace:m4/lt~obsolete.m4:91: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C])
+m4trace:m4/lt~obsolete.m4:93: -1- AC_DEFUN([_LT_AC_PROG_CXXCPP])
+m4trace:m4/lt~obsolete.m4:96: -1- AC_DEFUN([_LT_PROG_F77])
+m4trace:m4/lt~obsolete.m4:97: -1- AC_DEFUN([_LT_PROG_FC])
+m4trace:m4/lt~obsolete.m4:98: -1- AC_DEFUN([_LT_PROG_CXX])
+m4trace:acinclude.m4:13: -1- AC_DEFUN([UD_PROG_NM], [
+    case "${NM-unset}" in
+	unset) AC_CHECK_PROGS(NM, nm, nm) ;;
+	*) AC_CHECK_PROGS(NM, $NM nm, nm) ;;
+    esac
+    AC_MSG_CHECKING(nm flags)
+    case "${NMFLAGS-unset}" in
+	unset) NMFLAGS= ;;
+    esac
+    AC_MSG_RESULT($NMFLAGS)
+    AC_SUBST(NMFLAGS)
+])
+m4trace:acinclude.m4:30: -1- AC_DEFUN([UD_PROG_M4], [
+    case "${M4-unset}" in
+	unset) AC_CHECK_PROGS(M4, m4 gm4, m4) ;;
+	*) AC_CHECK_PROGS(M4, $M4 m4 gm4, m4) ;;
+    esac
+    AC_MSG_CHECKING(m4 flags)
+    case "${M4FLAGS-unset}" in
+	unset) M4FLAGS=-B10000 ;;
+    esac
+    AC_MSG_RESULT($M4FLAGS)
+    AC_SUBST(M4FLAGS)
+])
+m4trace:acinclude.m4:47: -1- AC_DEFUN([UD_SRCDIR], [
+    AC_MSG_CHECKING(for top-level source-directory)
+    SRCDIR=`(cd $srcdir && pwd)`
+    AC_MSG_RESULT($SRCDIR)
+    AC_SUBST(SRCDIR)
+])
+m4trace:acinclude.m4:59: -1- AC_DEFUN([UD_C_LONG_LONG], [AC_MSG_CHECKING(for long long)
+AC_CACHE_VAL(ac_cv_c_long_long,
+[if test "$GCC" = yes; then
+  ac_cv_c_long_long=yes
+else
+AC_TRY_RUN([int main() {
+long long foo = 0;
+exit(sizeof(long long) < sizeof(long)); }],
+ac_cv_c_long_long=yes, ac_cv_c_long_long=no, :)
+fi])dnl
+AC_MSG_RESULT($ac_cv_c_long_long)
+if test "$ac_cv_c_long_long" = yes; then
+  AC_DEFINE([HAVE_LONG_LONG], [], [have long long type])
+fi
+])
+m4trace:acinclude.m4:77: -1- AC_DEFUN([UD_CHECK_SIZEOF], [changequote(<<, >>)dnl
+dnl The name to #define.
+define(<<AC_TYPE_NAME>>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl
+dnl The cache variable name.
+define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
+changequote([, ])dnl
+AC_MSG_CHECKING(size of $1)
+AC_CACHE_VAL(AC_CV_NAME,
+[AC_TRY_RUN([#include <stdio.h>
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#endif
+main()
+{
+  FILE *f=fopen("conftestval", "w");
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof($1));
+  exit(0);
+}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, AC_CV_NAME=0)])dnl
+AC_MSG_RESULT($AC_CV_NAME)
+AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [type size])
+undefine([AC_TYPE_NAME])dnl
+undefine([AC_CV_NAME])dnl
+])
+m4trace:acinclude.m4:111: -1- AC_DEFUN([UD_CHECK_IEEE], [
+AC_MSG_CHECKING(for IEEE floating point format)
+AC_TRY_RUN([#ifndef NO_FLOAT_H
+#include <float.h>
+#endif
+
+#define EXIT_NOTIEEE	1
+#define EXIT_MAYBEIEEE	0
+
+int
+main()
+{
+#if	defined(FLT_RADIX)	&& FLT_RADIX != 2
+		return EXIT_NOTIEEE;
+#elif	defined(DBL_MAX_EXP)	&& DBL_MAX_EXP != 1024
+		return EXIT_NOTIEEE;
+#elif	defined(DBL_MANT_DIG)	&& DBL_MANT_DIG != 53
+		return EXIT_NOTIEEE;
+#elif 	defined(FLT_MAX_EXP)	&& !(FLT_MAX_EXP == 1024 || FLT_MAX_EXP == 128)
+		return EXIT_NOTIEEE;
+#elif	defined(FLT_MANT_DIG)	&& !(FLT_MANT_DIG == 53 || FLT_MANT_DIG == 24)
+		return EXIT_NOTIEEE;
+#else
+	/* (assuming eight bit char) */
+	if(sizeof(double) != 8)
+		return EXIT_NOTIEEE;
+	if(!(sizeof(float) == 4 || sizeof(float) == 8))
+		return EXIT_NOTIEEE;
+
+	return EXIT_MAYBEIEEE;
+#endif
+}],ac_cv_c_ieeefloat=yes, ac_cv_c_ieeefloat=no, :)
+AC_MSG_RESULT($ac_cv_c_ieeefloat)
+if test "$ac_cv_c_ieeefloat" = no; then
+  AC_DEFINE([NO_IEEE_FLOAT], [], [no IEEE float on this platform])
+fi
+])
+m4trace:acinclude.m4:153: -1- AC_DEFUN([UD_PROG_CC_MAKEDEPEND], [
+    AC_MSG_CHECKING(how to make dependencies)
+    case `uname -s` in
+	IRIX*|OSF1)
+	    CC_MAKEDEPEND='cc -M'
+	    ;;
+	SunOS)
+	    case `uname -r` in
+		4*)
+		    CC_MAKEDEPEND='cc -M'
+		    ;;
+		5*|*)
+		    CC_MAKEDEPEND='cc -xM'
+		    ;;
+	    esac
+	    ;;
+	ULTRIX)
+	    case `uname -m` in
+		RISC)
+		    CC_MAKEDEPEND='cc -M'
+		    ;;
+		VAX)	# Can't handle prototypes in netcdf.h
+		    ;;
+	    esac
+	    ;;
+	AIX)	# Writes to .u files rather than standard out
+	    ;;
+	HP-UX)	# Writes escaped newlines to standard error
+	    ;;
+    esac
+    case "${CC_MAKEDEPEND}" in
+	'')
+	    CC_MAKEDEPEND=false
+	    ;;
+    esac
+    AC_MSG_RESULT($CC_MAKEDEPEND)
+    AC_SUBST(CC_MAKEDEPEND)
+])
+m4trace:acinclude.m4:197: -1- AC_DEFUN([UD_CHECK_FORTRAN_NCTYPE], [
+    AC_MSG_CHECKING(for Fortran-equivalent to netCDF \"$3\")
+    for type in $2; do
+	cat >conftest.f <<EOF
+               $type foo
+               end
+EOF
+	doit='$FC -c ${FFLAGS} conftest.f'
+	if AC_TRY_EVAL(doit); then
+	    break;
+	fi
+    done
+    rm -f conftest.f conftest.o
+    AC_DEFINE_UNQUOTED($1, $type, [type definition])
+    AC_MSG_RESULT($type)
+    $1=$type
+])
+m4trace:acinclude.m4:221: -1- AC_DEFUN([UD_CHECK_FORTRAN_CTYPE], [
+    AC_MSG_CHECKING(for Fortran-equivalent to C \"$3\")
+    cat >conftest.f <<EOF
+        subroutine sub(values, minval, maxval)
+        implicit        none
+        $2              values(5), minval, maxval
+        minval = values(2)
+        maxval = values(4)
+        if (values(2) .ge. values(4)) then
+            minval = values(4)
+            maxval = values(2)
+        endif
+        end
+EOF
+    doit='$FC -c ${FFLAGS conftest.f'
+    if AC_TRY_EVAL(doit); then
+	mv conftest.o conftestf.o
+	cat >conftest.c <<EOF
+#include <limits.h>
+#include <float.h>
+void main()
+{
+$3		values[[]] = {0, $4, 0, $5, 0};
+$3		minval, maxval;
+void	$FCALLSCSUB($3*, $3*, $3*);
+$FCALLSCSUB(values, &minval, &maxval);
+exit(!(minval == $4 && maxval == $5));
+}
+EOF
+	doit='$CC -o conftest ${CPPFLAGS} ${CFLAGS} ${LDFLAGS} conftest.c conftestf.o ${LIBS}'
+	if AC_TRY_EVAL(doit); then
+	    doit=./conftest
+	    if AC_TRY_EVAL(doit); then
+		AC_MSG_RESULT($2)
+		$1=$2
+		AC_DEFINE_UNQUOTED($1,$2, [take a guess])
+	    else
+		AC_MSG_RESULT(no equivalent type)
+		unset $1
+	    fi
+	else
+	    AC_MSG_ERROR(Could not compile-and-link conftest.c and conftestf.o)
+	fi
+    else
+	AC_MSG_ERROR(Could not compile conftest.f)
+    fi
+    rm -f conftest*
+])
+m4trace:acinclude.m4:276: -1- AC_DEFUN([UD_CHECK_FORTRAN_TYPE], [
+    for ftype in $2; do
+	AC_MSG_CHECKING(for Fortran \"$ftype\")
+	cat >conftest.f <<EOF
+      subroutine sub(value)
+      $ftype value
+      end
+EOF
+	doit='$FC -c ${FFLAGS} conftest.f'
+	if AC_TRY_EVAL(doit); then
+	    AC_MSG_RESULT(yes)
+	    $1=$ftype
+	    AC_DEFINE_UNQUOTED($1, $ftype, [type thing])
+	    break
+	else
+	    AC_MSG_RESULT(no)
+	fi
+    done
+    rm -f conftest*
+])
+m4trace:acinclude.m4:302: -1- AC_DEFUN([UD_CHECK_FCALLSCSUB], [
+#    AC_REQUIRE([UD_PROG_FC])
+    case "$FC" in
+	'') ;;
+	*)
+	    AC_REQUIRE([UD_PROG_NM])
+	    AC_BEFORE([UD_CHECK_FORTRAN_CTYPE])
+	    AC_BEFORE([UD_CHECK_CTYPE_FORTRAN])
+	    AC_MSG_CHECKING(for C-equivalent to Fortran routine \"SUB\")
+	    cat >conftest.f <<\EOF
+              call sub()
+              end
+EOF
+	    doit='$FC -c ${FFLAGS} conftest.f'
+	    if AC_TRY_EVAL(doit); then
+		FCALLSCSUB=`$NM $NMFLAGS conftest.o | awk '
+		    /SUB_/{print "SUB_";exit}
+		    /SUB/ {print "SUB"; exit}
+		    /sub_/{print "sub_";exit}
+		    /sub/ {print "sub"; exit}'`
+		case "$FCALLSCSUB" in
+		    '') AC_MSG_ERROR(not found)
+			;;
+		    *)  AC_MSG_RESULT($FCALLSCSUB)
+			;;
+		esac
+	    else
+		AC_MSG_ERROR(Could not compile conftest.f)
+	    fi
+	    rm -f conftest*
+	    ;;
+    esac
+])
+m4trace:acinclude.m4:342: -1- AC_DEFUN([UD_CHECK_CTYPE_FORTRAN], [
+    cat >conftestf.f <<EOF
+           $1 values(4)
+           data values /-1, -2, -3, -4/
+           call sub(values)
+           end
+EOF
+    for ctype in $2; do
+	AC_MSG_CHECKING(if Fortran \"$1\" is C \"$ctype\")
+	cat >conftest.c <<EOF
+	    void $FCALLSCSUB(values)
+		$ctype values[[4]];
+	    {
+		exit(values[[1]] != -2 || values[[2]] != -3);
+	    }
+EOF
+	doit='$CC -c ${CPPFLAGS} ${CFLAGS} conftest.c'
+	if AC_TRY_EVAL(doit); then
+	    doit='$FC ${FFLAGS} -c conftestf.f'
+	    if AC_TRY_EVAL(doit); then
+	        doit='$FC -o conftest ${FFLAGS} ${LDFLAGS} conftestf.o conftest.o ${FLIBS} ${LIBS}'
+	        if AC_TRY_EVAL(doit); then
+		    doit=./conftest
+		    if AC_TRY_EVAL(doit); then
+		        AC_MSG_RESULT(yes)
+		        cname=`echo $ctype | tr ' abcdefghijklmnopqrstuvwxyz' \
+			    _ABCDEFGHIJKLMNOPQRSTUVWXYZ`
+		        AC_DEFINE_UNQUOTED(NF_$3[]_IS_C_$cname, [1], [fortran to c conversion])
+		        break
+		    else
+		        AC_MSG_RESULT(no)
+		    fi
+	        else
+		    AC_MSG_ERROR(Could not link conftestf.o and conftest.o)
+	        fi
+	    else
+		AC_MSG_ERROR(Could not compile conftestf.f)
+	    fi
+	else
+	    AC_MSG_ERROR(Could not compile conftest.c)
+	fi
+    done
+    rm -f conftest*
+])
+m4trace:acinclude.m4:391: -1- AC_DEFUN([UD_FORTRAN_TYPES], [
+#    AC_REQUIRE([UD_PROG_FC])
+    case "$FC" in
+    '')
+	;;
+    *)
+	AC_REQUIRE([UD_CHECK_FCALLSCSUB])
+dnl	UD_CHECK_FORTRAN_TYPE(NF_INT1_T, byte integer*1 "integer(kind(1))")
+dnl	UD_CHECK_FORTRAN_TYPE(NF_INT2_T, integer*2 "integer(kind(2))")
+	UD_CHECK_FORTRAN_TYPE(NF_INT1_T, byte integer*1 "integer(kind=1)" "integer(selected_int_kind(2))")
+	UD_CHECK_FORTRAN_TYPE(NF_INT2_T, integer*2 "integer(kind=2)" "integer(selected_int_kind(4))")
+
+	case "${NF_INT1_T}" in
+	    '') ;;
+	    *)  UD_CHECK_CTYPE_FORTRAN($NF_INT1_T, "signed char", INT1)
+		UD_CHECK_CTYPE_FORTRAN($NF_INT1_T, "short", INT1)
+		UD_CHECK_CTYPE_FORTRAN($NF_INT1_T, "int", INT1)
+		UD_CHECK_CTYPE_FORTRAN($NF_INT1_T, "long", INT1)
+		;;
+	esac
+	case "${NF_INT2_T}" in
+	    '') ;;
+	    *)  UD_CHECK_CTYPE_FORTRAN($NF_INT2_T, short, INT2)
+		UD_CHECK_CTYPE_FORTRAN($NF_INT2_T, int, INT2)
+		UD_CHECK_CTYPE_FORTRAN($NF_INT2_T, long, INT2)
+		;;
+	esac
+	UD_CHECK_CTYPE_FORTRAN(integer, int long, INT)
+	UD_CHECK_CTYPE_FORTRAN(real, float double, REAL)
+	UD_CHECK_CTYPE_FORTRAN(doubleprecision, double float, DOUBLEPRECISION)
+
+dnl	UD_CHECK_FORTRAN_NCTYPE(NCBYTE_T, byte integer*1 integer, byte)
+	UD_CHECK_FORTRAN_NCTYPE(NCBYTE_T, byte integer*1 "integer(kind=1)" "integer(selected_int_kind(2))" integer, byte)
+
+dnl	UD_CHECK_FORTRAN_NCTYPE(NCSHORT_T, integer*2 integer, short)
+	UD_CHECK_FORTRAN_NCTYPE(NCSHORT_T, integer*2 "integer(kind=2)" "integer(selected_int_kind(4))" integer, short)
+dnl	UD_CHECK_FORTRAN_CTYPE(NF_SHORT_T, $NCSHORT_T, short, SHRT_MIN, SHRT_MAX)
+
+dnl	UD_CHECK_FORTRAN_NCTYPE(NCLONG_T, integer*4 integer, long)
+dnl	UD_CHECK_FORTRAN_CTYPE(NF_INT_T, integer, int, INT_MIN, INT_MAX)
+
+dnl	UD_CHECK_FORTRAN_NCTYPE(NCFLOAT_T, real*4 real, float)
+dnl	UD_CHECK_FORTRAN_CTYPE(NF_FLOAT_T, $NCFLOAT_T, float, FLT_MIN, FLT_MAX)
+
+dnl	UD_CHECK_FORTRAN_NCTYPE(NCDOUBLE_T, real*8 doubleprecision real, double)
+dnl	UD_CHECK_FORTRAN_CTYPE(NF_DOUBLE_T, $NCDOUBLE_T, double, DBL_MIN, DBL_MAX)
+	;;
+    esac
+])
+m4trace:acinclude.m4:445: -1- AC_DEFUN([UD_MAKEWHATIS], [
+    #
+    # NB: We always want to define WHATIS to prevent the
+    # $(MANDIR)/$(WHATIS) make(1) target from being just $(MANDIR)/ and
+    # conflicting with the (directory creation) target with the same name.
+    #
+    WHATIS=whatis
+    case `uname -sr` in
+	BSD/OS*|FreeBSD*)
+	    # Can't generate a user-database -- only /usr/share/man/whatis.db.
+	    MAKEWHATIS_CMD=
+	    ;;
+	'IRIX64 6.5'|'IRIX 6.5')
+	    MAKEWHATIS_CMD='/usr/lib/makewhatis -M $(MANDIR) $(MANDIR)/whatis'
+	    ;;
+	'IRIX 6'*)
+	    # Can't generate a user-database.
+	    MAKEWHATIS_CMD=
+	    ;;
+	HP-UX*)
+	    # Can't generate a user-database -- only /usr/lib/whatis.
+	    MAKEWHATIS_CMD=
+	    ;;
+	'Linux '*)
+	    # /usr/sbin/makewhatis doesn't work
+	    MAKEWHATIS_CMD=
+	    ;;
+	ULTRIX*)
+	    # Can't generate a user-database -- only /usr/lib/whatis.
+	    MAKEWHATIS_CMD=
+	    ;;
+	*)
+	    if test -r /usr/man/windex; then
+		WHATIS=windex
+	    fi
+	    AC_CHECK_PROGS(prog, catman makewhatis /usr/lib/makewhatis)
+	    case "$prog" in
+		*catman*)
+		    MAKEWHATIS_CMD=$prog' -w -M $(MANDIR)'
+		    ;;
+		*makewhatis*)
+		    MAKEWHATIS_CMD=$prog' $(MANDIR)'
+		    ;;
+	    esac
+	    ;;
+    esac
+    AC_SUBST(WHATIS)
+    AC_SUBST(MAKEWHATIS_CMD)
+    AC_MSG_CHECKING(for manual-page index command)
+    AC_MSG_RESULT($MAKEWHATIS_CMD)
+])
+m4trace:acinclude.m4:501: -1- AC_DEFUN([UD_CHECK_LIB_MATH], [
+    case "${MATHLIB}" in
+	'')
+	    AC_CHECK_LIB(c, tanh, MATHLIB=,
+		    AC_CHECK_LIB(m, tanh, MATHLIB=-lm, MATHLIB=))
+	    ;;
+	*)
+	    ;;
+    esac 
+   AC_SUBST(MATHLIB)
+])
+m4trace:acinclude.m4:517: -1- AC_DEFUN([UD_FTPBINDIR], [dnl
+    AC_MSG_CHECKING([binary distribution directory])
+    case ${FTPBINDIR-unset} in
+	unset)
+	    system=`(system) 2>/dev/null || echo dummy_system`
+	    FTPBINDIR=${FTPDIR-/home/ftp}/pub/binary/$system
+	    ;;
+    esac
+    AC_SUBST(FTPBINDIR)dnl
+    AC_MSG_RESULT($FTPBINDIR)
+])
+m4trace:acinclude.m4:538: -1- AC_DEFUN([UD_CONFIG_HEADER], [define(UD_LIST_HEADER, $1)])
+m4trace:acinclude.m4:547: -1- AC_DEFUN([UD_DISPLAY_RESULTS], [
+AC_MSG_CHECKING(CPPFLAGS)
+AC_MSG_RESULT($CPPFLAGS)
+AC_MSG_CHECKING(CC CFLAGS)
+AC_MSG_RESULT($CC $CFLAGS)
+ud_type_cc=`type $CC`
+AC_MSG_CHECKING(type $CC)
+AC_MSG_RESULT($ud_type_cc)
+
+AC_MSG_CHECKING(CXX)
+if test -n "$CXX"; then
+	AC_MSG_RESULT($CXX)
+	AC_MSG_CHECKING(CXXFLAGS)
+	AC_MSG_RESULT($CXXFLAGS)
+	ud_type_CXX=`type $CXX`
+	AC_MSG_CHECKING(type $CXX)
+	AC_MSG_RESULT($ud_type_CXX)
+else
+	AC_MSG_RESULT(unset)
+fi
+
+AC_MSG_CHECKING(FC)
+if test -n "$FC"; then
+	AC_MSG_RESULT($FC)
+	AC_MSG_CHECKING(FFLAGS)
+	AC_MSG_RESULT($FFLAGS)
+	ud_type_fc=`type $FC`
+	AC_MSG_CHECKING(type $FC)
+	AC_MSG_RESULT($ud_type_fc)
+else
+	AC_MSG_RESULT(unset)
+fi
+
+AC_MSG_CHECKING(F90)
+if test -n "$F90"; then
+	AC_MSG_RESULT($F90)
+	AC_MSG_CHECKING(FCFLAGS)
+	AC_MSG_RESULT($FCFLAGS)
+	ud_type_F90=`type $F90`
+	AC_MSG_CHECKING(type $F90)
+	AC_MSG_RESULT($ud_type_F90)
+else
+	AC_MSG_RESULT(unset)
+fi
+
+AC_MSG_CHECKING(AR)
+if test -n "$AR"; then
+	AC_MSG_RESULT($AR)
+	AC_MSG_CHECKING(AR_FLAGS)
+	AC_MSG_RESULT($AR_FLAGS)
+	ud_type_AR=`type $AR`
+	AC_MSG_CHECKING(type $AR)
+	AC_MSG_RESULT($ud_type_AR)
+else
+	AC_MSG_RESULT(unset)
+fi
+
+AC_MSG_CHECKING(NM)
+if test -n "$NM"; then
+	AC_MSG_RESULT($NM)
+	AC_MSG_CHECKING(NMFLAGS)
+	AC_MSG_RESULT($NMFLAGS)
+#	ud_type_NM=`type $NM`
+#	AC_MSG_CHECKING(type $NM)
+#	AC_MSG_RESULT($ud_type_NM)
+else
+	AC_MSG_RESULT(unset)
+fi
+
+])
+m4trace:acinclude.m4:621: -1- AC_DEFUN([AC_PROG_FC_UPPERCASE_MOD], [
+AC_LANG_PUSH(Fortran)
+AC_MSG_CHECKING([if Fortran 90 compiler capitalizes .mod filenames])
+		    cat <<EOF >conftest.f90
+		      module conftest
+		      end module conftest
+EOF
+ac_try='$F90 ${F90FLAGS} conftest.f90 -c ${F90LIBS}>&AS_MESSAGE_LOG_FD'
+AC_TRY_EVAL(ac_try)
+# Following changed from "test -f" to adapt to OSX case-insensitive filesystems
+if test `ls *.mod` CONFTEST.mod ; then
+   ac_cv_prog_f90_uppercase_mod=yes
+   rm -f CONFTEST.mod
+else
+   ac_cv_prog_f90_uppercase_mod=no
+fi
+AC_MSG_RESULT($ac_cv_prog_f90_uppercase_mod)
+#rm -f conftest*
+AC_LANG_POP(Fortran)
+])
+m4trace:acinclude.m4:656: -1- AC_DEFUN([AX_F90_MODULE_FLAG], [
+AC_CACHE_CHECK([fortran 90 modules inclusion flag],
+ax_cv_f90_modflag,
+[AC_LANG_PUSH(Fortran)
+i=0
+while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do
+  i=`expr $i + 1`
+done
+mkdir tmpdir_$i
+cd tmpdir_$i
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([module conftest_module
+   contains
+   subroutine conftest_routine
+   write(*,'(a)') 'gotcha!'
+   end subroutine conftest_routine
+   end module conftest_module])
+  ],[],[])
+cd ..
+ax_cv_f90_modflag="not found"
+for ax_flag in "-I" "-M" "-p"; do
+  if test "$ax_cv_f90_modflag" = "not found" ; then
+    ax_save_FCFLAGS="$FCFLAGS"
+    FCFLAGS="$ax_save_FCFLAGS ${ax_flag}tmpdir_$i"
+    AC_COMPILE_IFELSE([AC_LANG_SOURCE([program conftest_program
+       use conftest_module
+       call conftest_routine
+       end program conftest_program])
+      ],[ax_cv_f90_modflag="$ax_flag"],[])
+    FCFLAGS="$ax_save_FCFLAGS"
+  fi
+done
+rm -fr tmpdir_$i
+if test "$ax_flag" = "not found" ; then
+  AC_MSG_ERROR([unable to find compiler flag for modules inclusion])
+fi
+AC_LANG_POP(Fortran)
+])])
+m4trace:acinclude.m4:709: -1- AC_DEFUN([AX_C_FLOAT_WORDS_BIGENDIAN], [AC_CACHE_CHECK(whether float word ordering is bigendian,
+                  ax_cv_c_float_words_bigendian, [
+
+ax_cv_c_float_words_bigendian=unknown
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+
+double d = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0;
+
+]])], [
+
+if grep noonsees conftest.$ac_objext >/dev/null ; then
+  ax_cv_c_float_words_bigendian=yes
+fi
+if grep seesnoon conftest.$ac_objext >/dev/null ; then
+  if test "$ax_cv_c_float_words_bigendian" = unknown; then
+    ax_cv_c_float_words_bigendian=no
+  else
+    ax_cv_c_float_words_bigendian=unknown
+  fi
+fi
+
+])])
+
+case $ax_cv_c_float_words_bigendian in
+  yes)
+    m4_default([$1],
+      [AC_DEFINE([FLOAT_WORDS_BIGENDIAN], 1,
+                 [Define to 1 if your system stores words within floats
+                  with the most significant word first])]) ;;
+  no)
+    $2 ;;
+  *)
+    m4_default([$3],
+      [AC_MSG_ERROR([
+
+Unknown float word ordering. You need to manually preset
+ax_cv_c_float_words_bigendian=no (or yes) according to your system.
+
+    ])]) ;;
+esac
+
+])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([^_?A[CHUM]_])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([_AC_])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^AS_FLAGS$])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([^_?m4_])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([^dnl$])
+m4trace:configure.ac:12: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^SHELL$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PATH_SEPARATOR$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^exec_prefix$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^prefix$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^program_transform_name$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^bindir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^sbindir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^libexecdir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^datadir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^sysconfdir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^sharedstatedir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^localstatedir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^includedir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^oldincludedir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^docdir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^infodir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^dvidir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^pdfdir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^psdir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^libdir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^mandir$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^DEFS$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^ECHO_C$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^ECHO_N$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^ECHO_T$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^build_alias$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^host_alias$])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^target_alias$])
+m4trace:configure.ac:17: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:22: -1- AC_CONFIG_MACRO_DIR([m4])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^build$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^build_cpu$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^build_vendor$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^build_os$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^host$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^target$])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^target_cpu$])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^target_vendor$])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^target_os$])
+m4trace:configure.ac:31: -1- AM_INIT_AUTOMAKE([foreign dist-zip subdir-objects])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
+m4trace:configure.ac:31: -1- AM_SET_CURRENT_AUTOMAKE_VERSION
+m4trace:configure.ac:31: -1- AM_AUTOMAKE_VERSION([1.14.1])
+m4trace:configure.ac:31: -1- _AM_AUTOCONF_VERSION([2.69])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^INSTALL_DATA$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^am__isrc$])
+m4trace:configure.ac:31: -1- _AM_SUBST_NOTMAKE([am__isrc])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^CYGPATH_W$])
+m4trace:configure.ac:31: -1- _AM_SET_OPTIONS([foreign dist-zip subdir-objects])
+m4trace:configure.ac:31: -1- _AM_SET_OPTION([foreign])
+m4trace:configure.ac:31: -2- _AM_MANGLE_OPTION([foreign])
+m4trace:configure.ac:31: -1- _AM_SET_OPTION([dist-zip])
+m4trace:configure.ac:31: -2- _AM_MANGLE_OPTION([dist-zip])
+m4trace:configure.ac:31: -1- _AM_SET_OPTION([subdir-objects])
+m4trace:configure.ac:31: -2- _AM_MANGLE_OPTION([subdir-objects])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:31: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])
+m4trace:configure.ac:31: -2- _AM_MANGLE_OPTION([no-define])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:31: -1- AM_SANITY_CHECK
+m4trace:configure.ac:31: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+m4trace:configure.ac:31: -1- AM_MISSING_HAS_RUN
+m4trace:configure.ac:31: -1- AM_AUX_DIR_EXPAND
+m4trace:configure.ac:31: -1- m4_pattern_allow([^ACLOCAL$])
+m4trace:configure.ac:31: -1- AM_MISSING_PROG([AUTOCONF], [autoconf])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AUTOCONF$])
+m4trace:configure.ac:31: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AUTOMAKE$])
+m4trace:configure.ac:31: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AUTOHEADER$])
+m4trace:configure.ac:31: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^MAKEINFO$])
+m4trace:configure.ac:31: -1- AM_PROG_INSTALL_SH
+m4trace:configure.ac:31: -1- m4_pattern_allow([^install_sh$])
+m4trace:configure.ac:31: -1- AM_PROG_INSTALL_STRIP
+m4trace:configure.ac:31: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^MKDIR_P$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^mkdir_p$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AWK$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.ac:31: -1- AM_SET_LEADING_DOT
+m4trace:configure.ac:31: -1- m4_pattern_allow([^am__leading_dot$])
+m4trace:configure.ac:31: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+m4trace:configure.ac:31: -2- _AM_MANGLE_OPTION([tar-ustar])
+m4trace:configure.ac:31: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])
+m4trace:configure.ac:31: -2- _AM_MANGLE_OPTION([tar-pax])
+m4trace:configure.ac:31: -1- _AM_PROG_TAR([v7])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AMTAR$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^am__tar$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^am__untar$])
+m4trace:configure.ac:31: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+m4trace:configure.ac:31: -2- _AM_MANGLE_OPTION([no-dependencies])
+m4trace:configure.ac:31: -1- AM_SILENT_RULES
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AM_V$])
+m4trace:configure.ac:31: -1- AM_SUBST_NOTMAKE([AM_V])
+m4trace:configure.ac:31: -1- _AM_SUBST_NOTMAKE([AM_V])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AM_DEFAULT_V$])
+m4trace:configure.ac:31: -1- AM_SUBST_NOTMAKE([AM_DEFAULT_V])
+m4trace:configure.ac:31: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AM_BACKSLASH$])
+m4trace:configure.ac:31: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
+m4trace:configure.ac:32: -1- AM_MAINTAINER_MODE([])
+m4trace:configure.ac:32: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+m4trace:configure.ac:32: -1- m4_pattern_allow([^MAINTAINER_MODE_TRUE$])
+m4trace:configure.ac:32: -1- m4_pattern_allow([^MAINTAINER_MODE_FALSE$])
+m4trace:configure.ac:32: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_TRUE])
+m4trace:configure.ac:32: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_FALSE])
+m4trace:configure.ac:32: -1- m4_pattern_allow([^MAINT$])
+m4trace:configure.ac:65: -1- m4_pattern_allow([^EXTRA_TESTS$])
+m4trace:configure.ac:67: -1- AM_CONDITIONAL([EXTRA_TESTS], [test x$enable_extra_tests = xyes])
+m4trace:configure.ac:67: -1- m4_pattern_allow([^EXTRA_TESTS_TRUE$])
+m4trace:configure.ac:67: -1- m4_pattern_allow([^EXTRA_TESTS_FALSE$])
+m4trace:configure.ac:67: -1- _AM_SUBST_NOTMAKE([EXTRA_TESTS_TRUE])
+m4trace:configure.ac:67: -1- _AM_SUBST_NOTMAKE([EXTRA_TESTS_FALSE])
+m4trace:configure.ac:76: -1- AM_CONDITIONAL([BUILD_DOCS], [test "x$enable_doxygen" = xyes])
+m4trace:configure.ac:76: -1- m4_pattern_allow([^BUILD_DOCS_TRUE$])
+m4trace:configure.ac:76: -1- m4_pattern_allow([^BUILD_DOCS_FALSE$])
+m4trace:configure.ac:76: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_TRUE])
+m4trace:configure.ac:76: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_FALSE])
+m4trace:configure.ac:89: -1- m4_pattern_allow([^BUILD_INTERNAL_DOCS$])
+m4trace:configure.ac:92: -1- m4_pattern_allow([^DOXYGEN$])
+m4trace:configure.ac:99: -1- m4_pattern_allow([^DOT$])
+m4trace:configure.ac:111: -1- m4_pattern_allow([^HAVE_DOT$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.ac:128: -1- _AM_PROG_CC_C_O
+m4trace:configure.ac:128: -1- AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext])
+m4trace:configure.ac:128: -1- _AM_DEPENDENCIES([CC])
+m4trace:configure.ac:128: -1- AM_SET_DEPDIR
+m4trace:configure.ac:128: -1- m4_pattern_allow([^DEPDIR$])
+m4trace:configure.ac:128: -1- AM_OUTPUT_DEPENDENCY_COMMANDS
+m4trace:configure.ac:128: -1- AM_MAKE_INCLUDE
+m4trace:configure.ac:128: -1- m4_pattern_allow([^am__include$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^am__quote$])
+m4trace:configure.ac:128: -1- AM_DEP_TRACK
+m4trace:configure.ac:128: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^AMDEP_TRUE$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^AMDEP_FALSE$])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^am__nodep$])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([am__nodep])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.ac:128: -1- AM_CONDITIONAL([am__fastdepCC], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.ac:128: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.ac:129: -1- AM_PROG_CC_C_O
+m4trace:configure.ac:130: -1- m4_pattern_allow([^const$])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^FC$])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^FCFLAGS$])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^FC$])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^ac_ct_FC$])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^F77$])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^FFLAGS$])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^F77$])
+m4trace:configure.ac:148: -1- m4_pattern_allow([^ac_ct_F77$])
+m4trace:configure.ac:176: -1- m4_pattern_allow([^FCFLAGS_f90$])
+m4trace:configure.ac:178: -1- AX_F90_MODULE_FLAG
+m4trace:configure.ac:179: -1- m4_pattern_allow([^MOD_FLAG$])
+m4trace:configure.ac:204: -1- m4_pattern_allow([^HAVE_F2008$])
+m4trace:configure.ac:219: -1- m4_pattern_allow([^HAVE_TS29113_SUPPORT$])
+m4trace:configure.ac:277: -1- AM_CONDITIONAL([LARGE_FILE_TESTS], [test x$enable_large_file_tests = xyes])
+m4trace:configure.ac:277: -1- m4_pattern_allow([^LARGE_FILE_TESTS_TRUE$])
+m4trace:configure.ac:277: -1- m4_pattern_allow([^LARGE_FILE_TESTS_FALSE$])
+m4trace:configure.ac:277: -1- _AM_SUBST_NOTMAKE([LARGE_FILE_TESTS_TRUE])
+m4trace:configure.ac:277: -1- _AM_SUBST_NOTMAKE([LARGE_FILE_TESTS_FALSE])
+m4trace:configure.ac:279: -1- m4_pattern_allow([^LARGE_FILE_TESTS$])
+m4trace:configure.ac:289: -1- AM_CONDITIONAL([BUILD_BENCHMARKS], [test x$enable_benchmarks = xyes])
+m4trace:configure.ac:289: -1- m4_pattern_allow([^BUILD_BENCHMARKS_TRUE$])
+m4trace:configure.ac:289: -1- m4_pattern_allow([^BUILD_BENCHMARKS_FALSE$])
+m4trace:configure.ac:289: -1- _AM_SUBST_NOTMAKE([BUILD_BENCHMARKS_TRUE])
+m4trace:configure.ac:289: -1- _AM_SUBST_NOTMAKE([BUILD_BENCHMARKS_FALSE])
+m4trace:configure.ac:304: -1- m4_pattern_allow([^TEMP_LARGE$])
+m4trace:configure.ac:332: -1- m4_pattern_allow([^FCFLAGS_f90$])
+m4trace:configure.ac:334: -1- AX_F90_MODULE_FLAG
+m4trace:configure.ac:335: -1- m4_pattern_allow([^MOD_FLAG$])
+m4trace:configure.ac:343: -1- AM_CONDITIONAL([BUILD_F03], [test "x$nc_build_f03" = xyes])
+m4trace:configure.ac:343: -1- m4_pattern_allow([^BUILD_F03_TRUE$])
+m4trace:configure.ac:343: -1- m4_pattern_allow([^BUILD_F03_FALSE$])
+m4trace:configure.ac:343: -1- _AM_SUBST_NOTMAKE([BUILD_F03_TRUE])
+m4trace:configure.ac:343: -1- _AM_SUBST_NOTMAKE([BUILD_F03_FALSE])
+m4trace:configure.ac:348: -1- LT_INIT
+m4trace:configure.ac:348: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
+m4trace:configure.ac:348: -1- LTOPTIONS_VERSION
+m4trace:configure.ac:348: -1- LTSUGAR_VERSION
+m4trace:configure.ac:348: -1- LTVERSION_VERSION
+m4trace:configure.ac:348: -1- LTOBSOLETE_VERSION
+m4trace:configure.ac:348: -1- _LT_PROG_LTMAIN
+m4trace:configure.ac:348: -1- m4_pattern_allow([^LIBTOOL$])
+m4trace:configure.ac:348: -1- _LT_PREPARE_SED_QUOTE_VARS
+m4trace:configure.ac:348: -1- _LT_PROG_ECHO_BACKSLASH
+m4trace:configure.ac:348: -1- LT_PATH_LD
+m4trace:configure.ac:348: -1- m4_pattern_allow([^SED$])
+m4trace:configure.ac:348: -1- AC_PROG_EGREP
+m4trace:configure.ac:348: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^FGREP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:348: -1- LT_PATH_NM
+m4trace:configure.ac:348: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^LN_S$])
+m4trace:configure.ac:348: -1- LT_CMD_MAX_LEN
+m4trace:configure.ac:348: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^AR$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^ac_ct_AR$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:348: -1- _LT_WITH_SYSROOT
+m4trace:configure.ac:348: -1- m4_pattern_allow([LT_OBJDIR])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^LT_OBJDIR$])
+m4trace:configure.ac:348: -1- _LT_CC_BASENAME([$compiler])
+m4trace:configure.ac:348: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH])
+m4trace:configure.ac:348: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH])
+m4trace:configure.ac:348: -1- LT_SUPPORTED_TAG([CC])
+m4trace:configure.ac:348: -1- _LT_COMPILER_BOILERPLATE
+m4trace:configure.ac:348: -1- _LT_LINKER_BOILERPLATE
+m4trace:configure.ac:348: -1- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, )="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"])
+m4trace:configure.ac:348: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, ) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, )], [$_LT_TAGVAR(lt_prog_compiler_pic, )@&t at m4_if([],[],[ -DPIC],[m4_if([],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, ) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, )=" $_LT_TAGVAR(lt_prog_compiler_pic, )" ;;
+     esac], [_LT_TAGVAR(lt_prog_compiler_pic, )=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, )=no])
+m4trace:configure.ac:348: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, )=])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^MANIFEST_TOOL$])
+m4trace:configure.ac:348: -1- _LT_REQUIRED_DARWIN_CHECKS
+m4trace:configure.ac:348: -1- m4_pattern_allow([^DSYMUTIL$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^NMEDIT$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^LIPO$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^OTOOL$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^OTOOL64$])
+m4trace:configure.ac:348: -1- _LT_LINKER_OPTION([if $CC understands -b], [lt_cv_prog_compiler__b], [-b], [_LT_TAGVAR(archive_cmds, )='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, )='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])
+m4trace:configure.ac:348: -1- LT_SYS_DLOPEN_SELF
+m4trace:configure.ac:348: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:348: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
+m4trace:configure.ac:348: -1- LT_LANG([F77])
+m4trace:configure.ac:348: -1- LT_SUPPORTED_TAG([F77])
+m4trace:configure.ac:348: -1- _LT_COMPILER_BOILERPLATE
+m4trace:configure.ac:348: -1- _LT_LINKER_BOILERPLATE
+m4trace:configure.ac:348: -1- _LT_CC_BASENAME([$compiler])
+m4trace:configure.ac:348: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, F77) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, F77)], [$_LT_TAGVAR(lt_prog_compiler_pic, F77)@&t at m4_if([F77],[],[ -DPIC],[m4_if([F77],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, F77) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, F77)=" $_LT_TAGVAR(lt_prog_compiler_pic, F77)" ;;
+     esac], [_LT_TAGVAR(lt_prog_compiler_pic, F77)=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, F77)=no])
+m4trace:configure.ac:348: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_F77], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, F77)=])
+m4trace:configure.ac:348: -1- LT_LANG([FC])
+m4trace:configure.ac:348: -1- LT_SUPPORTED_TAG([FC])
+m4trace:configure.ac:348: -1- _LT_COMPILER_BOILERPLATE
+m4trace:configure.ac:348: -1- _LT_LINKER_BOILERPLATE
+m4trace:configure.ac:348: -1- _LT_CC_BASENAME([$compiler])
+m4trace:configure.ac:348: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, FC) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, FC)], [$_LT_TAGVAR(lt_prog_compiler_pic, FC)@&t at m4_if([FC],[],[ -DPIC],[m4_if([FC],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, FC) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, FC)=" $_LT_TAGVAR(lt_prog_compiler_pic, FC)" ;;
+     esac], [_LT_TAGVAR(lt_prog_compiler_pic, FC)=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, FC)=no])
+m4trace:configure.ac:348: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_FC], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, FC)=])
+m4trace:configure.ac:374: -1- m4_pattern_allow([^pgiFortran$])
+m4trace:configure.ac:378: -1- m4_pattern_allow([^gFortran$])
+m4trace:configure.ac:380: -1- m4_pattern_allow([^pgiFortran$])
+m4trace:configure.ac:384: -1- m4_pattern_allow([^f2cFortran$])
+m4trace:configure.ac:389: -1- m4_pattern_allow([^f2cFortran$])
+m4trace:configure.ac:396: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
+m4trace:configure.ac:396: -1- m4_pattern_allow([^_LARGE_FILES$])
+m4trace:configure.ac:411: -1- UD_FORTRAN_TYPES
+m4trace:configure.ac:411: -1- UD_CHECK_FCALLSCSUB
+m4trace:configure.ac:411: -1- UD_PROG_NM
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NMFLAGS$])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking for C-equivalent to Fortran routine \"SUB\"], [acinclude.m4:302: UD_CHECK_FCALLSCSUB is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for C-equivalent to Fortran routine \"SUB\"... ], [acinclude.m4:302: UD_CHECK_FCALLSCSUB is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_FORTRAN_TYPE([NF_INT1_T], [byte integer*1 "integer(kind=1)" "integer(selected_int_kind(2))"])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking for Fortran \"$ftype\"], [acinclude.m4:276: UD_CHECK_FORTRAN_TYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for Fortran \"$ftype\"... ], [acinclude.m4:276: UD_CHECK_FORTRAN_TYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NF_INT1_T$])
+m4trace:configure.ac:411: -1- UD_CHECK_FORTRAN_TYPE([NF_INT2_T], [integer*2 "integer(kind=2)" "integer(selected_int_kind(4))"])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking for Fortran \"$ftype\"], [acinclude.m4:276: UD_CHECK_FORTRAN_TYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for Fortran \"$ftype\"... ], [acinclude.m4:276: UD_CHECK_FORTRAN_TYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NF_INT2_T$])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([$NF_INT1_T], ["signed char"], [INT1])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([$NF_INT1_T], ["short"], [INT1])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([$NF_INT1_T], ["int"], [INT1])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([$NF_INT1_T], ["long"], [INT1])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT1_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([$NF_INT2_T], [short], [INT2])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([$NF_INT2_T], [int], [INT2])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([$NF_INT2_T], [long], [INT2])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"$NF_INT2_T\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([integer], [int long], [INT])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"integer\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"integer\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([real], [float double], [REAL])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"real\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"real\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_CTYPE_FORTRAN([doubleprecision], [double float], [DOUBLEPRECISION])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking if Fortran \"doubleprecision\" is C \"$ctype\"], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking if Fortran \"doubleprecision\" is C \"$ctype\"... ], [acinclude.m4:342: UD_CHECK_CTYPE_FORTRAN is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- UD_CHECK_FORTRAN_NCTYPE([NCBYTE_T], [byte integer*1 "integer(kind=1)" "integer(selected_int_kind(2))" integer], [byte])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking for Fortran-equivalent to netCDF \"byte\"], [acinclude.m4:197: UD_CHECK_FORTRAN_NCTYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for Fortran-equivalent to netCDF \"byte\"... ], [acinclude.m4:197: UD_CHECK_FORTRAN_NCTYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NCBYTE_T$])
+m4trace:configure.ac:411: -1- UD_CHECK_FORTRAN_NCTYPE([NCSHORT_T], [integer*2 "integer(kind=2)" "integer(selected_int_kind(4))" integer], [short])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:${as_lineno-$LINENO}: checking for Fortran-equivalent to netCDF \"short\"], [acinclude.m4:197: UD_CHECK_FORTRAN_NCTYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for Fortran-equivalent to netCDF \"short\"... ], [acinclude.m4:197: UD_CHECK_FORTRAN_NCTYPE is expanded from...
+acinclude.m4:391: UD_FORTRAN_TYPES is expanded from...
+configure.ac:411: the top level])
+m4trace:configure.ac:411: -1- m4_pattern_allow([^NCSHORT_T$])
+m4trace:configure.ac:416: -1- m4_pattern_allow([^NCBYTE_T$])
+m4trace:configure.ac:417: -1- m4_pattern_allow([^NCSHORT_T$])
+m4trace:configure.ac:418: -1- m4_pattern_allow([^NF_INT1_T$])
+m4trace:configure.ac:419: -1- m4_pattern_allow([^NF_INT2_T$])
+m4trace:configure.ac:420: -1- m4_pattern_allow([^NF_INT1_IS_C_SIGNED_CHAR$])
+m4trace:configure.ac:421: -1- m4_pattern_allow([^NF_INT2_IS_C_SHORT$])
+m4trace:configure.ac:422: -1- m4_pattern_allow([^NF_INT_IS_C_INT$])
+m4trace:configure.ac:423: -1- m4_pattern_allow([^NF_REAL_IS_C_FLOAT$])
+m4trace:configure.ac:424: -1- m4_pattern_allow([^NF_DOUBLEPRECISION_IS_C_DOUBLE$])
+m4trace:configure.ac:429: -1- AC_PROG_FC_UPPERCASE_MOD
+m4trace:configure.ac:434: -1- AM_CONDITIONAL([UPPER_CASE_MOD], [test "x$ac_cv_prog_f90_uppercase_mod" = xyes])
+m4trace:configure.ac:434: -1- m4_pattern_allow([^UPPER_CASE_MOD_TRUE$])
+m4trace:configure.ac:434: -1- m4_pattern_allow([^UPPER_CASE_MOD_FALSE$])
+m4trace:configure.ac:434: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_TRUE])
+m4trace:configure.ac:434: -1- _AM_SUBST_NOTMAKE([UPPER_CASE_MOD_FALSE])
+m4trace:configure.ac:444: -1- AM_CONDITIONAL([EXTRA_EXAMPLE_TESTS], [test "x$enable_extra_example_tests" = xyes])
+m4trace:configure.ac:444: -1- m4_pattern_allow([^EXTRA_EXAMPLE_TESTS_TRUE$])
+m4trace:configure.ac:444: -1- m4_pattern_allow([^EXTRA_EXAMPLE_TESTS_FALSE$])
+m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([EXTRA_EXAMPLE_TESTS_TRUE])
+m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([EXTRA_EXAMPLE_TESTS_FALSE])
+m4trace:configure.ac:454: -1- AM_CONDITIONAL([BUILD_DLL], [test x$enable_dll = xyes])
+m4trace:configure.ac:454: -1- m4_pattern_allow([^BUILD_DLL_TRUE$])
+m4trace:configure.ac:454: -1- m4_pattern_allow([^BUILD_DLL_FALSE$])
+m4trace:configure.ac:454: -1- _AM_SUBST_NOTMAKE([BUILD_DLL_TRUE])
+m4trace:configure.ac:454: -1- _AM_SUBST_NOTMAKE([BUILD_DLL_FALSE])
+m4trace:configure.ac:456: -1- m4_pattern_allow([^DLL_NETCDF$])
+m4trace:configure.ac:462: -1- m4_pattern_allow([^HAVE_NETCDF_H$])
+m4trace:configure.ac:492: -1- m4_pattern_allow([^USE_NETCDF4$])
+m4trace:configure.ac:500: -1- AM_CONDITIONAL([USE_NETCDF4], [test "x$nc_build_v4" = xyes])
+m4trace:configure.ac:500: -1- m4_pattern_allow([^USE_NETCDF4_TRUE$])
+m4trace:configure.ac:500: -1- m4_pattern_allow([^USE_NETCDF4_FALSE$])
+m4trace:configure.ac:500: -1- _AM_SUBST_NOTMAKE([USE_NETCDF4_TRUE])
+m4trace:configure.ac:500: -1- _AM_SUBST_NOTMAKE([USE_NETCDF4_FALSE])
+m4trace:configure.ac:501: -1- AM_CONDITIONAL([BUILD_V2], [test "x$nc_build_v2" = xyes])
+m4trace:configure.ac:501: -1- m4_pattern_allow([^BUILD_V2_TRUE$])
+m4trace:configure.ac:501: -1- m4_pattern_allow([^BUILD_V2_FALSE$])
+m4trace:configure.ac:501: -1- _AM_SUBST_NOTMAKE([BUILD_V2_TRUE])
+m4trace:configure.ac:501: -1- _AM_SUBST_NOTMAKE([BUILD_V2_FALSE])
+m4trace:configure.ac:502: -1- AM_CONDITIONAL([USE_LOGGING], [test "x$nc_has_logging" = xyes])
+m4trace:configure.ac:502: -1- m4_pattern_allow([^USE_LOGGING_TRUE$])
+m4trace:configure.ac:502: -1- m4_pattern_allow([^USE_LOGGING_FALSE$])
+m4trace:configure.ac:502: -1- _AM_SUBST_NOTMAKE([USE_LOGGING_TRUE])
+m4trace:configure.ac:502: -1- _AM_SUBST_NOTMAKE([USE_LOGGING_FALSE])
+m4trace:configure.ac:503: -1- AM_CONDITIONAL([BUILD_DAP], [test "x$nc_has_dap" = xyes])
+m4trace:configure.ac:503: -1- m4_pattern_allow([^BUILD_DAP_TRUE$])
+m4trace:configure.ac:503: -1- m4_pattern_allow([^BUILD_DAP_FALSE$])
+m4trace:configure.ac:503: -1- _AM_SUBST_NOTMAKE([BUILD_DAP_TRUE])
+m4trace:configure.ac:503: -1- _AM_SUBST_NOTMAKE([BUILD_DAP_FALSE])
+m4trace:configure.ac:504: -1- AM_CONDITIONAL([BUILD_PARALLEL], [test "x$nc_has_parallel" = xyes])
+m4trace:configure.ac:504: -1- m4_pattern_allow([^BUILD_PARALLEL_TRUE$])
+m4trace:configure.ac:504: -1- m4_pattern_allow([^BUILD_PARALLEL_FALSE$])
+m4trace:configure.ac:504: -1- _AM_SUBST_NOTMAKE([BUILD_PARALLEL_TRUE])
+m4trace:configure.ac:504: -1- _AM_SUBST_NOTMAKE([BUILD_PARALLEL_FALSE])
+m4trace:configure.ac:505: -2- m4_pattern_allow([^NO_STDLIB_H$])
+m4trace:configure.ac:506: -2- m4_pattern_allow([^NO_SYS_TYPES_H$])
+m4trace:configure.ac:507: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$])
+m4trace:configure.ac:512: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:513: -1- m4_pattern_allow([^HAVE_SYS_WAIT_H$])
+m4trace:configure.ac:514: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$])
+m4trace:configure.ac:516: -1- m4_pattern_allow([^HAVE_VPRINTF$])
+m4trace:configure.ac:516: -1- m4_pattern_allow([^HAVE_DOPRNT$])
+m4trace:configure.ac:519: -1- m4_pattern_allow([^HAVE__BOOL$])
+m4trace:configure.ac:519: -1- m4_pattern_allow([^HAVE_STDBOOL_H$])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^size_t$])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^HAVE_ALLOCA_H$])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^HAVE_ALLOCA$])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^ALLOCA$])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^C_ALLOCA$])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^CRAY_STACKSEG_END$])
+m4trace:configure.ac:524: -1- m4_pattern_allow([^STACK_DIRECTION$])
+m4trace:configure.ac:528: -1- m4_pattern_allow([^size_t$])
+m4trace:configure.ac:529: -1- m4_pattern_allow([^off_t$])
+m4trace:configure.ac:530: -1- m4_pattern_allow([^HAVE_SSIZE_T$])
+m4trace:configure.ac:530: -1- m4_pattern_allow([^HAVE_PTRDIFF_T$])
+m4trace:configure.ac:530: -1- m4_pattern_allow([^HAVE_UCHAR$])
+m4trace:configure.ac:530: -1- m4_pattern_allow([^HAVE_LONGLONG$])
+m4trace:configure.ac:531: -1- m4_pattern_allow([^__CHAR_UNSIGNED__$])
+m4trace:configure.ac:533: -1- m4_pattern_allow([^SIZEOF_SHORT$])
+m4trace:configure.ac:534: -1- m4_pattern_allow([^SIZEOF_INT$])
+m4trace:configure.ac:535: -1- m4_pattern_allow([^SIZEOF_LONG$])
+m4trace:configure.ac:536: -1- m4_pattern_allow([^SIZEOF_FLOAT$])
+m4trace:configure.ac:537: -1- m4_pattern_allow([^SIZEOF_DOUBLE$])
+m4trace:configure.ac:538: -1- m4_pattern_allow([^SIZEOF_OFF_T$])
+m4trace:configure.ac:539: -1- m4_pattern_allow([^SIZEOF_SIZE_T$])
+m4trace:configure.ac:540: -1- m4_pattern_allow([^SIZEOF_PTRDIFF_T$])
+m4trace:configure.ac:548: -1- AM_CONDITIONAL([TEST_PARALLEL], [test "x$enable_parallel_tests" = xyes])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^TEST_PARALLEL_TRUE$])
+m4trace:configure.ac:548: -1- m4_pattern_allow([^TEST_PARALLEL_FALSE$])
+m4trace:configure.ac:548: -1- _AM_SUBST_NOTMAKE([TEST_PARALLEL_TRUE])
+m4trace:configure.ac:548: -1- _AM_SUBST_NOTMAKE([TEST_PARALLEL_FALSE])
+m4trace:configure.ac:549: -1- AM_CONDITIONAL([USE_VALGRIND_TESTS], [test "x$enable_valgrind_tests" = xyes])
+m4trace:configure.ac:549: -1- m4_pattern_allow([^USE_VALGRIND_TESTS_TRUE$])
+m4trace:configure.ac:549: -1- m4_pattern_allow([^USE_VALGRIND_TESTS_FALSE$])
+m4trace:configure.ac:549: -1- _AM_SUBST_NOTMAKE([USE_VALGRIND_TESTS_TRUE])
+m4trace:configure.ac:549: -1- _AM_SUBST_NOTMAKE([USE_VALGRIND_TESTS_FALSE])
+m4trace:configure.ac:575: -1- m4_pattern_allow([^NC_LIBS$])
+m4trace:configure.ac:576: -1- m4_pattern_allow([^NC_FLIBS$])
+m4trace:configure.ac:577: -1- m4_pattern_allow([^HAS_F90$])
+m4trace:configure.ac:578: -1- m4_pattern_allow([^HAS_F03$])
+m4trace:configure.ac:579: -1- m4_pattern_allow([^HAS_DAP$])
+m4trace:configure.ac:580: -1- m4_pattern_allow([^HAS_NC2$])
+m4trace:configure.ac:581: -1- m4_pattern_allow([^HAS_NC4$])
+m4trace:configure.ac:604: -1- m4_pattern_allow([^LIB@&t at OBJS$])
+m4trace:configure.ac:604: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.ac:604: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
+m4trace:configure.ac:604: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
+m4trace:configure.ac:604: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
+m4trace:configure.ac:604: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
+m4trace:configure.ac:604: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
+m4trace:configure.ac:604: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"])
+m4trace:configure.ac:604: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS
+m4trace:configure.ac:604: -1- _LT_PROG_LTMAIN
diff --git a/configure b/configure
index 5dc5f7f..06ac8b0 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for netCDF-Fortran 4.4.3.
+# Generated by GNU Autoconf 2.69 for netCDF-Fortran 4.4.4.
 #
 # Report bugs to <support-netcdf at unidata.ucar.edu>.
 #
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='netCDF-Fortran'
 PACKAGE_TARNAME='netcdf-fortran'
-PACKAGE_VERSION='4.4.3'
-PACKAGE_STRING='netCDF-Fortran 4.4.3'
+PACKAGE_VERSION='4.4.4'
+PACKAGE_STRING='netCDF-Fortran 4.4.4'
 PACKAGE_BUGREPORT='support-netcdf at unidata.ucar.edu'
 PACKAGE_URL=''
 
@@ -1388,7 +1388,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures netCDF-Fortran 4.4.3 to adapt to many kinds of systems.
+\`configure' configures netCDF-Fortran 4.4.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1459,7 +1459,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of netCDF-Fortran 4.4.3:";;
+     short | recursive ) echo "Configuration of netCDF-Fortran 4.4.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1605,7 +1605,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-netCDF-Fortran configure 4.4.3
+netCDF-Fortran configure 4.4.4
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2379,7 +2379,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by netCDF-Fortran $as_me 4.4.3, which was
+It was created by netCDF-Fortran $as_me 4.4.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2730,11 +2730,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # Create the VERSION file, which contains the package version from
 # AC_INIT.
-echo -n 4.4.3>VERSION
+echo -n 4.4.4>VERSION
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF-Fortran 4.4.3" >&5
-$as_echo "$as_me: netCDF-Fortran 4.4.3" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF-Fortran 4.4.4" >&5
+$as_echo "$as_me: netCDF-Fortran 4.4.4" >&6;}
 
 # Keep libtool macros in an m4 directory.
 
@@ -3369,7 +3369,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='netcdf-fortran'
- VERSION='4.4.3'
+ VERSION='4.4.4'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -22202,7 +22202,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by netCDF-Fortran $as_me 4.4.3, which was
+This file was extended by netCDF-Fortran $as_me 4.4.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -22268,7 +22268,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-netCDF-Fortran config.status 4.4.3
+netCDF-Fortran config.status 4.4.4
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 7a02569..37ab46e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9,7 +9,7 @@
 AC_PREREQ([2.59])
 
 # Initialize with name, version, and support email address.
-AC_INIT([netCDF-Fortran], [4.4.3], [support-netcdf at unidata.ucar.edu])
+AC_INIT([netCDF-Fortran], [4.4.4], [support-netcdf at unidata.ucar.edu])
 
 # Create the VERSION file, which contains the package version from
 # AC_INIT.
diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in
index 0953950..6f40ebc 100644
--- a/docs/Doxyfile.in
+++ b/docs/Doxyfile.in
@@ -409,13 +409,13 @@ LOOKUP_CACHE_SIZE      = 0
 # normally produced when WARNINGS is set to YES.
 # The default value is: NO.
 
-EXTRACT_ALL            = NO
+EXTRACT_ALL            = YES
 
 # If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
 # be included in the documentation.
 # The default value is: NO.
 
-EXTRACT_PRIVATE        = NO
+EXTRACT_PRIVATE        = YES
 
 # If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
 # scope will be included in the documentation.
@@ -756,10 +756,17 @@ WARN_LOGFILE           =
 
 INPUT                  = @abs_top_srcdir@/RELEASE_NOTES.md \
                          @abs_top_srcdir@/README.md \
-						 @abs_top_srcdir@/libsrc \
-						 @abs_top_srcdir@/fortran \
-						 @abs_top_srcdir@/docs/netcdf-f77.md \
+						                   @abs_top_srcdir@/libsrc \
+						                         @abs_top_srcdir@/fortran \
+						                               @abs_top_srcdir@/docs/netcdf-f77.md \
                          @abs_top_srcdir@/docs/netcdf-f90.md \
+                         @abs_top_srcdir@/docs/netcdf-f90-sec1-usage.md \
+                         @abs_top_srcdir@/docs/netcdf-f90-sec2-datasets.md \
+                         @abs_top_srcdir@/docs/netcdf-f90-sec3-groups.md \
+                         @abs_top_srcdir@/docs/netcdf-f90-sec4-dimensions.md \
+                         @abs_top_srcdir@/docs/netcdf-f90-sec5-user_defined_types.md \
+                         @abs_top_srcdir@/docs/netcdf-f90-sec6-variables.md \
+                         @abs_top_srcdir@/docs/netcdf-f90-sec7-attributes.md \
                          @abs_top_srcdir@/fortran \
                          @abs_top_srcdir@/libsrc
 
diff --git a/docs/netcdf-f77.md b/docs/netcdf-f77.md
index 3449b44..19dada5 100644
--- a/docs/netcdf-f77.md
+++ b/docs/netcdf-f77.md
@@ -12,8 +12,7 @@ You can use the netCDF library without knowing about all of the netCDF
 interface. If you are creating a netCDF dataset, only a handful of
 routines are required to define the necessary dimensions, variables, and
 attributes, and to write the data to the netCDF dataset. (Even less are
-needed if you use the ncgen utility to create the dataset before running
-a program using netCDF library calls to write data. See
+needed if you use the ncgen utility to create the dataset before runninga program using netCDF library calls to write data. See
 section ‘ncgen’ in The NetCDF Users
 Guide.) Similarly, if you are writing software to access data stored in
 a particular netCDF object, only a smallbset of the netCDF library is
@@ -29,8 +28,6 @@ statements that are typically invoked multiple times; and use ... to
 represent arbitrary sequences of other statements. Full parameter lists
 are described in laters.
 
-
-
 1.1 Creating a NetCDF Dataset {#f77_Creating_a_NetCDF_Dataset}
 -----------------------------
 
@@ -41,17 +38,17 @@ dataset:
 
 
     NF_CREATE           ! create netCDF dataset: enter define mode
-         ... 
+         ...
        NF_DEF_DIM       ! define dimensions: from name and length
-         ... 
+         ...
        NF_DEF_VAR       ! define variables: from name, type, dims
-         ... 
+         ...
        NF_PUT_ATT       ! assign attribute values
-         ... 
+         ...
     NF_ENDDEF           ! end definitions: leave define mode
-         ... 
+         ...
        NF_PUT_VAR       ! provide values for variable
-         ... 
+         ...
     NF_CLOSE            ! close: save new netCDF dataset
 
 
@@ -91,7 +88,7 @@ setting the NF\_SHARE flag when opening the dataset. But even if this
 flag is set, changes to attribute values or changes made in define mode
 are not written out until NF\_SYNC or NF\_CLOSE is called.
 
-1.2 Reading a NetCDF Dataset with Known Names {#f77_Reading_a_NetCDF_Dataset_with_Known_Names} 
+1.2 Reading a NetCDF Dataset with Known Names {#f77_Reading_a_NetCDF_Dataset_with_Known_Names}
 ---------------------------------------------
 
 Here we consider the case where you know the names of not only the
@@ -104,15 +101,15 @@ is:
 
 
     NF_OPEN               ! open existing netCDF dataset
-         ... 
+         ...
        NF_INQ_DIMID       ! get dimension IDs
-         ... 
+         ...
        NF_INQ_VARID       ! get variable IDs
-         ... 
+         ...
        NF_GET_ATT         ! get attribute values
-         ... 
+         ...
        NF_GET_VAR         ! get values of variables
-         ... 
+         ...
     NF_CLOSE              ! close netCDF dataset
 
 
@@ -154,21 +151,21 @@ The following template illustrates how they are used:
 
 
     NF_OPEN                   ! open existing netCDF dataset
-      ... 
+      ...
     NF_INQ                    ! find out what is in it
-         ... 
+         ...
        NF_INQ_DIM             ! get dimension names, lengths
-         ... 
+         ...
        NF_INQ_VAR             ! get variable names, types, shapes
-            ... 
+            ...
           NF_INQ_ATTNAME      ! get attribute names
-            ... 
+            ...
           NF_INQ_ATT          ! get attribute values
-            ... 
+            ...
           NF_GET_ATT          ! get attribute values
-            ... 
+            ...
        NF_GET_VAR             ! get values of variables
-         ... 
+         ...
     NF_CLOSE                  ! close netCDF dataset
 
 
@@ -220,19 +217,19 @@ sequence of calls to add new netCDF components to an existing dataset:
 
 
     NF_OPEN             ! open existing netCDF dataset
-      ... 
+      ...
     NF_REDEF            ! put it into define mode
-        ... 
+        ...
       NF_DEF_DIM        ! define additional dimensions (if any)
-        ... 
+        ...
       NF_DEF_VAR        ! define additional variables (if any)
-        ... 
+        ...
       NF_PUT_ATT        ! define other attributes (if any)
-        ... 
+        ...
     NF_ENDDEF           ! check definitions, leave define mode
-        ... 
+        ...
       NF_PUT_VAR        ! provide new variable values
-        ... 
+        ...
     NF_CLOSE            ! close netCDF dataset
 
 
@@ -269,7 +266,7 @@ some means external to the library is necessary to prevent readers from
 making concurrent accesses and to inform readers to call NF\_SYNC before
 the next access.
 
-1.5 Error Handling {#f77_Error_Handling_1_5} 
+1.5 Error Handling {#f77_Error_Handling_1_5}
 ------------------
 
 The netCDF library provides the facilities needed to handle errors in a
@@ -378,7 +375,7 @@ approriate libraries be linked in.
 2. Datasets  {#f77_Datasets}
 ===========
 
-2.1 Datasets Introduction {#f77_Datasets_Introduction} 
+2.1 Datasets Introduction {#f77_Datasets_Introduction}
 -------------------------
 
 This presents the interfaces of the netCDF functions that deal
@@ -415,7 +412,7 @@ The operationspported on a netCDF dataset as a single object are:
     interfaces, the rest of this presents a detailed description
     of the interfaces for these operations.
 
-2.2 NetCDF Library Interface Descriptions {#f77_NetCDF_Library_Interface_Descriptions} 
+2.2 NetCDF Library Interface Descriptions {#f77_NetCDF_Library_Interface_Descriptions}
 -----------------------------------------
 
 Each interface description for a particular netCDF function in this and
@@ -435,7 +432,7 @@ calling a handle\_error function in case an error was detected. For an
 example ofch a function, see Section 5.2 "Get error message
 corresponding to error status: nf\_strerror".
 
-2.3 NF_STRERROR {#f77_NF_STRERROR} 
+2.3 NF_STRERROR {#f77_NF_STRERROR}
 ----------------
 
 The function NF\_STRERROR returns a static reference to an error message
@@ -444,7 +441,7 @@ error number, prmably returned by a previous call to some other
 netCDF function. The list of netCDF error status codes is available in
 the appropriate include file for each language binding.
 
-### Usage 
+### Usage
 
 ~~~
 CHARACTER*80 FUNCTION NF_STRERROR(INTEGER NCERR)
@@ -455,14 +452,14 @@ CHARACTER*80 FUNCTION NF_STRERROR(INTEGER NCERR)
     to some netCDF function.
 
 
-### Errors 
+### Errors
 
 If you provide an invalid integer error status that does not correspond
 to any netCDF error message or or to any system error message (as
 understood by the system strerror function), NF\_STRERROR returns a
 string indicating that there is noch error status.
 
-### Example 
+### Example
 
 Here is an example of a simple error handling function that uses
 NF\_STRERROR to print the error message corresponding to the netCDF
@@ -472,7 +469,7 @@ error status returned from any netCDF function call and then exit:
 
 ~~~
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 SUBROUTINE HANDLE_ERR(STATUS)
 INTEGER STATUS
 IF (STATUS .NE. NF_NOERR) THEN
@@ -483,24 +480,24 @@ END
 ~~~
 
 
-2.4 Get netCDF library version: NF_INQ_LIBVERS {#f77_Get_netCDF_library_version_NF_INQ_LIBVERS} 
+2.4 Get netCDF library version: NF_INQ_LIBVERS {#f77_Get_netCDF_library_version_NF_INQ_LIBVERS}
 ------------------------------------------------
 
 The function NF\_INQ\_LIBVERS returns a string identifying the version
 of the netCDF library, and when it was built.
 
-### Usage 
+### Usage
 
 ~~~
 CHARACTER*80 FUNCTION NF_INQ_LIBVERS()
 ~~~
 
-### Errors 
+### Errors
 
 This function takes no arguments, and thus no errors are possible in its
 invocation.
 
-### Example 
+### Example
 
 Here is an example using nf\_inq\_libvers to print the version of the
 netCDF library with which the program is linked:
@@ -508,11 +505,11 @@ netCDF library with which the program is linked:
 
 ~~~
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 PRINT *, NF_INQ_LIBVERS()
 ~~~
 
-2.5 NF_CREATE {#f77_NF_CREATE} 
+2.5 NF_CREATE {#f77_NF_CREATE}
 --------------
 
 This function creates a new netCDF dataset, returning a netCDF ID that
@@ -524,10 +521,10 @@ attributes.
 A creation mode flag specifies whether to overwrite any existing dataset
 with the same name and whether access to the dataset is shared.
 
-### Usage 
+### Usage
  
 ~~~
-INTEGER FUNCTION NF_CREATE (CHARACTER*(*) PATH, INTEGER CMODE, 
+INTEGER FUNCTION NF_CREATE (CHARACTER*(*) PATH, INTEGER CMODE,
                             INTEGER ncid)
 ~~~
 
@@ -544,7 +541,7 @@ INTEGER FUNCTION NF_CREATE (CHARACTER*(*) PATH, INTEGER CMODE,
 A zero value (defined for convenience as NF_CLOBBER) specifies the
 default behavior: overwrite any existing dataset with the same file
 name and buffer and cache accesses for efficiency. The dataset will
-be in netCDF classic format. See  'NetCDF Classic Format Limitations' 
+be in netCDF classic format. See  'NetCDF Classic Format Limitations'
 in The NetCDF Users Guide.
 
 Setting NF\_NOCLOBBER means you do not want to clobber (overwrite)
@@ -589,7 +586,7 @@ causes of errors include:
 -   Attempting to create a netCDF dataset in a directory where you don’t
     have permission to create files.
 
-### Example 
+### Example
 
 In this example we create a netCDF dataset named foo.nc; we want the
 dataset to be created in the current directory only if a dataset with
@@ -599,9 +596,9 @@ that name does not already exist:
 
 ~~~
 INCLUDE 'netcdf.inc'
-  ... 
+  ...
 INTEGER NCID, STATUS
-... 
+...
 STATUS = NF_CREATE('foo.nc', NF_NOCLOBBER, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 ~~~
@@ -624,10 +621,10 @@ attributes.
 A creation mode flag specifies whether to overwrite any existing dataset
 with the same name and whether access to the dataset is shared.
 
-### Usage 
+### Usage
 
 ~~~
-INTEGER FUNCTION NF__CREATE (CHARACTER*(*) PATH, INTEGER CMODE, INTEGER INITIALSZ, 
+INTEGER FUNCTION NF__CREATE (CHARACTER*(*) PATH, INTEGER CMODE, INTEGER INITIALSZ,
                             INTEGER BUFRSIZEHINT, INTEGER ncid)
 
 ~~~
@@ -703,7 +700,7 @@ INTEGER FUNCTION NF__CREATE (CHARACTER*(*) PATH, INTEGER CMODE, INTEGER INITIALS
  `ncid`
 :   Returned netCDF ID.
 
-### Errors 
+### Errors
 
 NF\_\_CREATE returns the value NF\_NOERR if no errors occurred. Possible
 causes of errors include:
@@ -716,7 +713,7 @@ causes of errors include:
 -   Attempting to create a netCDF dataset in a directory where you don’t
     have permission to create files.
 
-### Example 
+### Example
 
 In this example we create a netCDF dataset named foo.nc; we want the
 dataset to be created in the current directory only if a dataset with
@@ -726,16 +723,16 @@ that name does not already exist:
 
 ~~~
 INCLUDE 'netcdf.inc'
-  ... 
+  ...
 INTEGER NCID, STATUS, INITIALSZ, BUFRSIZEHINT
-... 
+...
 INITIALSZ = 2048
 BUFRSIZEHINT = 1024
 STATUS = NF__CREATE('foo.nc', NF_NOCLOBBER, INITIALSZ, BUFRSIZEHINT, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 ~~~
 
-2.7 NF_CREATE_PAR {#f77_NF_CREATE_PAR} 
+2.7 NF_CREATE_PAR {#f77_NF_CREATE_PAR}
 -------------------
 
 This function is a variant of nf\_create, nf\_create\_par allows users
@@ -758,11 +755,11 @@ operations are the default. To use collective access on a variable, See
 section [Change between Collective and Independent Parallel Access:
 NF\_VAR\_PAR\_ACCESS](#NF_005fVAR_005fPAR_005fACCESS).
 
-### Usage 
+### Usage
 
 ~~~
-INTEGER FUNCTION NF_CREATE_PAR(CHARACTER*(*) PATH, INTEGER CMODE, 
-                               INTEGER MPI_COMM, INTEGER MPI_INFO, 
+INTEGER FUNCTION NF_CREATE_PAR(CHARACTER*(*) PATH, INTEGER CMODE,
+                               INTEGER MPI_COMM, INTEGER MPI_INFO,
                                INTEGER ncid)
 ~~~
 
@@ -795,7 +792,7 @@ INTEGER FUNCTION NF_CREATE_PAR(CHARACTER*(*) PATH, INTEGER CMODE,
  `ncid`
 :   Returned netCDF ID.
 
-### Errors 
+### Errors
 
 
 NF\_CREATE returns the value NF\_NOERR if no errors occurred. Possible
@@ -809,7 +806,7 @@ causes of errors include:
 -   Attempting to create a netCDF dataset in a directory where you don’t
     have permission to create files.
 
-### Example 
+### Example
 
 
 This example is from test program nf\_test/ftst\_parallel.F.
@@ -817,9 +814,9 @@ This example is from test program nf\_test/ftst\_parallel.F.
  
 
 ~~~
-!     Create the netCDF file. 
-      mode_flag = IOR(nf_netcdf4, nf_classic_model) 
-      retval = nf_create_par(FILE_NAME, mode_flag, MPI_COMM_WORLD, 
+!     Create the netCDF file.
+      mode_flag = IOR(nf_netcdf4, nf_classic_model)
+      retval = nf_create_par(FILE_NAME, mode_flag, MPI_COMM_WORLD,
      $     MPI_INFO_NULL, ncid)
       if (retval .ne. nf_noerr) stop 2
 ~~~
@@ -830,7 +827,7 @@ This example is from test program nf\_test/ftst\_parallel.F.
 
 The function NF\_OPEN opens an existing netCDF dataset for access.
 
-### Usage 
+### Usage
 
 ~~~
 INTEGER FUNCTION NF_OPEN(CHARACTER*(*) PATH, INTEGER OMODE, INTEGER ncid)
@@ -860,7 +857,7 @@ INTEGER FUNCTION NF_OPEN(CHARACTER*(*) PATH, INTEGER OMODE, INTEGER ncid)
  `ncid`
 :   Returned netCDF ID.
 
-### Errors 
+### Errors
 
 
 NF\_OPEN returns the value NF\_NOERR if no errors occurred. Otherwise,
@@ -870,16 +867,16 @@ include:
 -   The specified netCDF dataset does not exist.
 -   A meaningless mode was specified.
 
-### Example 
+### Example
 
 Here is an example using NF\_OPEN to open an existing netCDF dataset
 named foo.nc for read-only, non-shared access:
 
 ~~~
 INCLUDE 'netcdf.inc'
- ... 
+ ...
 INTEGER NCID, STATUS
-... 
+...
 STATUS = NF_OPEN('foo.nc', 0, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 ~~~
@@ -890,7 +887,7 @@ IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 The function NF\_OPEN opens an existing netCDF dataset for access, with
 a performance tuning parameter.
 
-### Usage 
+### Usage
 
 ~~~
 INTEGER FUNCTION NF_OPEN(CHARACTER*(*) PATH, INTEGER OMODE, INTEGER
@@ -941,7 +938,7 @@ BUFRSIZEHINT, INTEGER ncid)
  `ncid`
 :   Returned netCDF ID.
 
-### Errors 
+### Errors
 
 
 NF\_\_OPEN returns the value NF\_NOERR if no errors occurred. Otherwise,
@@ -951,7 +948,7 @@ include:
 -   The specified netCDF dataset does not exist.
 -   A meaningless mode was specified.
 
-### Example 
+### Example
 
 Here is an example using NF\_\_OPEN to open an existing netCDF dataset
 named foo.nc for read-only, non-shared access:
@@ -959,9 +956,9 @@ named foo.nc for read-only, non-shared access:
 
 ~~~
 INCLUDE 'netcdf.inc'
- ... 
+ ...
 INTEGER NCID, STATUS, BUFRSIZEHINT
-... 
+...
 BUFRSIZEHINT = 1024
 STATUS = NF_OPEN('foo.nc', 0, BUFRSIZEHINT, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
@@ -996,12 +993,12 @@ operations are the default. To use independent access on a variable, See
 section [Change between Collective and Independent Parallel Access:
 NF\_VAR\_PAR\_ACCESS](#NF_005fVAR_005fPAR_005fACCESS).
 
-Usage 
+Usage
 -----
 
 ~~~
-INTEGER FUNCTION NF_OPEN_PAR(CHARACTER*(*) PATH, INTEGER OMODE, 
-                             INTEGER MPI_COMM, INTEGER MPI_INFO, 
+INTEGER FUNCTION NF_OPEN_PAR(CHARACTER*(*) PATH, INTEGER OMODE,
+                             INTEGER MPI_COMM, INTEGER MPI_INFO,
                              INTEGER ncid)
 ~~~
 
@@ -1030,7 +1027,7 @@ INTEGER FUNCTION NF_OPEN_PAR(CHARACTER*(*) PATH, INTEGER OMODE,
  `ncid`
 :   Returned netCDF ID.
 
-Errors 
+Errors
 ------
 
 NF\_OPEN returns the value NF\_NOERR if no errors occurred. Otherwise,
@@ -1041,7 +1038,7 @@ include:
 -   A meaningless mode was specified.
 -   Not a netCDF-4 file.
 
-Example 
+Example
 -------
 
 This example is from the test program nf\_test/ftst\_parallel.F.
@@ -1050,7 +1047,7 @@ This example is from the test program nf\_test/ftst\_parallel.F.
 
 ~~~~
 !     Reopen the file.
-      retval = nf_open_par(FILE_NAME, nf_nowrite, MPI_COMM_WORLD, 
+      retval = nf_open_par(FILE_NAME, nf_nowrite, MPI_COMM_WORLD,
      $     MPI_INFO_NULL, ncid)
       if (retval .ne. nf_noerr) stop 2
 ~~~~
@@ -1062,7 +1059,7 @@ The function NF\_REDEF puts an open netCDF dataset into define mode, so
 dimensions, variables, and attributes can be added or renamed and
 attributes can be deleted.
 
-Usage 
+Usage
 -----
 
  
@@ -1074,7 +1071,7 @@ INTEGER FUNCTION NF_REDEF(INTEGER NCID)
  `NCID`
 :   netCDF ID, from a previous call to NF\_OPEN or NF\_CREATE.
 
-Errors 
+Errors
 ------
 
 NF\_REDEF returns the value NF\_NOERR if no errors occurred. Otherwise,
@@ -1085,7 +1082,7 @@ include:
 -   The specified netCDF dataset was opened for read-only.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_REDEF to open an existing netCDF dataset
@@ -1095,18 +1092,18 @@ named foo.nc and put it into define mode:
 ~~~~
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER NCID, STATUS
-   ... 
+   ...
 STATUS = NF_OPEN('foo.nc', NF_WRITE, NCID)   ! open dataset
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_REDEF(NCID)                      ! put in define mode
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 ~~~~
 
-2.12 NF_ENDDEF {#f77_NF-ENDDEF} 
+2.12 NF_ENDDEF {#f77_NF-ENDDEF}
 ---------------
 
 The function NF\_ENDDEF takes an open netCDF dataset out of define mode.
@@ -1121,7 +1118,7 @@ This call may involve copying data under some circumstances. See
 Performance](netcdf.html#File-Structure-and-Performance) ‘File
 Structure and Performance’ in NetCDF Users’ Guide.
 
-Usage 
+Usage
 -----
 
  
@@ -1133,7 +1130,7 @@ INTEGER FUNCTION NF_ENDDEF(INTEGER NCID)
  `NCID`
 :   NetCDF ID, from a previous call to NF\_OPEN or NF\_CREATE.
 
-Errors 
+Errors
 ------
 
 NF\_ENDDEF returns the value NF\_NOERR if no errors occurred. Otherwise,
@@ -1147,7 +1144,7 @@ include:
     File Support](netcdf.html#Large-File-Support) ‘Large File
     Support’ in The NetCDF Users Guide.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_ENDDEF to finish the definitions of a new
@@ -1156,9 +1153,9 @@ netCDF dataset named foo.nc and put it into data mode:
 ~~~~
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER NCID, STATUS
-   ... 
+   ...
 STATUS = NF_CREATE('foo.nc', NF_NOCLOBBER, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
@@ -1234,7 +1231,7 @@ prevents us from providing minfree and alignment control of the
 dimension, the third will always be copied with the new variable
 added.
 
-Usage 
+Usage
 -----
 
  
@@ -1262,7 +1259,7 @@ INTEGER FUNCTION NF_ENDDEF(INTEGER NCID, INTEGER H_MINFREE, INTEGER V_ALIGN,
 :   Controls the alignment of the beginning of the data for
     variables which have an unlimited dimension (record variables).
 
-Errors 
+Errors
 ------
 
 NF\_\_ENDDEF returns the value NF\_NOERR if no errors occurred.
@@ -1276,7 +1273,7 @@ errors include:
     File Support](netcdf.html#Large-File-Support) ‘Large File
     Support’ in The NetCDF Users Guide.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_\_ENDDEF to finish the definitions of a new
@@ -1285,9 +1282,9 @@ netCDF dataset named foo.nc and put it into data mode:
 ~~~~
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER NCID, STATUS, H_MINFREE, V_ALIGN, V_MINFREE, R_ALIGN
-   ... 
+   ...
 STATUS = NF_CREATE('foo.nc', NF_NOCLOBBER, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
@@ -1302,7 +1299,7 @@ IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 ~~~~
 
-2.14 NF_CLOSE {#f77_NF-CLOSE} 
+2.14 NF_CLOSE {#f77_NF-CLOSE}
 --------------
 
 The function NF\_CLOSE closes an open netCDF dataset. If the dataset is
@@ -1312,7 +1309,7 @@ to restore the dataset to the consistent state before define mode was
 last entered.) After an open netCDF dataset is closed, its netCDF ID may
 be reassigned to the next netCDF dataset that is opened or created.
 
-Usage 
+Usage
 -----
 
  
@@ -1324,7 +1321,7 @@ INTEGER FUNCTION NF_CLOSE(INTEGER NCID)
  `NCID`
 :   NetCDF ID, from a previous call to NF\_OPEN or NF\_CREATE.
 
-Errors 
+Errors
 ------
 
 NF\_CLOSE returns the value NF\_NOERR if no errors occurred. Otherwise,
@@ -1335,7 +1332,7 @@ include:
     failed.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_CLOSE to finish the definitions of a new
@@ -1345,9 +1342,9 @@ netCDF dataset named foo.nc and release its netCDF ID:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER NCID, STATUS
-   ... 
+   ...
 STATUS = NF_CREATE('foo.nc', NF_NOCLOBBER, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
@@ -1357,7 +1354,7 @@ STATUS = NF_CLOSE(NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-2.15 NF_INQ Family {#f77_NF-INQ-Family} 
+2.15 NF_INQ Family {#f77_NF-INQ-Family}
 -------------------
 
 Members of the NF\_INQ family of functions return information about an
@@ -1375,7 +1372,7 @@ function, NF\_INQ\_FORMAT, returns the (rarely needed) format version.
 No I/O is performed when these functions are called, since the required
 information is available in memory for each open netCDF dataset.
 
-Usage 
+Usage
 -----
 
  
@@ -1414,7 +1411,7 @@ INTEGER FUNCTION NF_INQ_FORMAT   (INTEGER NCID, INTEGER format)
     NF\_FORMAT\_64BIT, NF\_FORMAT\_NETCDF4,
     NF\_FORMAT\_NETCDF4\_CLASSIC.
 
-Errors 
+Errors
 ------
 
 All members of the NF\_INQ family return the value NF\_NOERR if no
@@ -1423,7 +1420,7 @@ Possible causes of errors include:
 
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_INQ to find out about a netCDF dataset
@@ -1432,18 +1429,18 @@ named foo.nc:
 ~~~~
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER STATUS, NCID, NDIMS, NVARS, NGATTS, UNLIMDIMID
-   ... 
+   ...
 STATUS = NF_OPEN('foo.nc', NF_NOWRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ(NCID, NDIMS, NVARS, NGATTS, UNLIMDIMID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 ~~~~
 
-2.16 NF_SYNC {#f77_NF-SYNC} 
+2.16 NF_SYNC {#f77_NF-SYNC}
 -------------
 
 The function NF\_SYNC offers a way to synchronize the disk copy of a
@@ -1503,7 +1500,7 @@ without having to close and reopen the dataset.
 Data is automatically synchronized to disk when a netCDF dataset is
 closed, or whenever you leave define mode.
 
-Usage 
+Usage
 -----
 
  
@@ -1515,7 +1512,7 @@ INTEGER FUNCTION NF_SYNC(INTEGER NCID)
  `NCID`
 :   NetCDF ID, from a previous call to NF\_OPEN or NF\_CREATE.
 
-Errors 
+Errors
 ------
 
 NF\_SYNC returns the value NF\_NOERR if no errors occurred. Otherwise,
@@ -1525,7 +1522,7 @@ include:
 -   The netCDF dataset is in define mode.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_SYNC to synchronize the disk writes of a
@@ -1535,19 +1532,19 @@ netCDF dataset named foo.nc:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER STATUS, NCID
-   ... 
+   ...
 STATUS = NF_OPEN('foo.nc', NF_WRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 ! write data or change attributes
-   ... 
+   ...
 STATUS = NF_SYNC(NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-2.17 NF_ABORT {#f77_NF-ABORT} 
+2.17 NF_ABORT {#f77_NF-ABORT}
 --------------
 
 You no longer need to call this function, since it is called
@@ -1559,7 +1556,7 @@ define mode was entered by a call to NF\_REDEF, the netCDF dataset is
 restored to its state before definition mode was entered and the dataset
 is closed.
 
-Usage 
+Usage
 -----
 
  
@@ -1571,7 +1568,7 @@ INTEGER FUNCTION NF_ABORT(INTEGER NCID)
  `NCID`
 :   NetCDF ID, from a previous call to NF\_OPEN or NF\_CREATE.
 
-Errors 
+Errors
 ------
 
 NF\_ABORT returns the value NF\_NOERR if no errors occurred. Otherwise,
@@ -1582,7 +1579,7 @@ include:
     deletion of the dataset failed.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_ABORT to back out of redefinitions of a
@@ -1591,15 +1588,15 @@ dataset named foo.nc:
 ~~~~
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER STATUS, NCID, LATID
-   ... 
+   ...
 STATUS = NF_OPEN('foo.nc', NF_WRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_REDEF(NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_DEF_DIM(NCID, 'LAT', 18, LATID)
 IF (STATUS .NE. NF_NOERR) THEN  ! dimension definition failed
    CALL HANDLE_ERR(STATUS)
@@ -1668,7 +1665,7 @@ The use of this feature may not be available (or even needed) in future
 releases. Programmers are cautioned against heavy reliance upon this
 feature.
 
-Usage 
+Usage
 -----
 
  
@@ -1688,7 +1685,7 @@ INTEGER FUNCTION NF_SET_FILL(INTEGER NCID, INTEGER FILLMODE,
 :   Returned current fill mode of the dataset before this call, either
     NF\_NOFILL or NF\_FILL.
 
-Errors 
+Errors
 ------
 
 NF\_SET\_FILL returns the value NF\_NOERR if no errors occurred.
@@ -1700,7 +1697,7 @@ errors include:
     access.
 -   The fill mode argument is neither NF\_NOFILL nor NF\_FILL..
 
-Example 
+Example
 -------
 
 Here is an example using NF\_SET\_FILL to set nofill mode forbsequent
@@ -1709,23 +1706,23 @@ writes of a netCDF dataset named foo.nc:
 ~~~~
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER NCID, STATUS, OMODE
-   ... 
+   ...
 STATUS = NF_OPEN('foo.nc', NF_WRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 ! write data with default prefilling behavior
-   ... 
+   ...
 STATUS = NF_SET_FILL(NCID, NF_NOFILL, OMODE)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 ! write data with no prefilling
-   ... 
+   ...
 
 ~~~~
 
-2.19 NF_SET_DEFAULT_FORMAT {#f77_NF-SET-DEFAULT-FORMAT} 
+2.19 NF_SET_DEFAULT_FORMAT {#f77_NF-SET-DEFAULT-FORMAT}
 -----------------------------
 
 This function is intended for advanced users.
@@ -1761,7 +1758,7 @@ Constants are provided in the netcdf.inc file to be used with this
 function: nf\_format\_classic, nf\_format\_64bit, nf\_format\_netcdf4
 and nf\_format\_netcdf4\_classic.
 
-Usage 
+Usage
 -----
 
  
@@ -1778,7 +1775,7 @@ INTEGER FUNCTION NF_SET_DEFAULT_FORMAT(INTEGER FORMAT, INTEGER OLD_FORMT)
 :   The default format at the time the function is called is returned
     here.
 
-Errors 
+Errors
 ------
 
 The following error codes may be returned by this function:
@@ -1786,19 +1783,19 @@ The following error codes may be returned by this function:
 -   An NF\_EINVAL error is returned if an invalid default format is
     specified.
 
-Example 
+Example
 -------
 
  
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER STATUS, OLD_FORMAT
-   ... 
+   ...
 STATUS = NF_SET_DEFAULT_FORMAT(nf_format_64bit, OLD_FORMAT)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 
 
 2.20 Set HDF5 Chunk Cache for Future File Opens/Creates: NF_SET_CHUNK_CACHE {#f77_Set-HDF5-Chunk}
@@ -1815,7 +1812,7 @@ For more information, see the documentation for the H5Pset\_cache()
 function in the HDF5 library at the HDF5 website:
 [http://hdfgroup.org/HDF5/](http://hdfgroup.org/HDF5/).
 
-Usage 
+Usage
 -----
 
  
@@ -1839,7 +1836,7 @@ INTEGER NF_SET_CHUNK_CACHE(INTEGER SIZE, INTEGER NELEMS, INTEGER PREEMPTION);
     a value of 100 means fully read chunks are always preempted before
     other chunks.
 
-Return Codes 
+Return Codes
 ------------
 
  `NF_NOERR`
@@ -1865,7 +1862,7 @@ For more information, see the documentation for the H5Pget\_cache()
 function in the HDF5 library at the HDF5 website:
 [http://hdfgroup.org/HDF5/](http://hdfgroup.org/HDF5/).
 
-Usage 
+Usage
 -----
 
  
@@ -1889,13 +1886,13 @@ INTEGER NC_GET_CHUNK_CACHE(INTEGER SIZE, INTEGER NELEMS, INTEGER PREEMPTION);
     is strictly LRU) while a value of 100 means fully read chunks are
     always preempted before other chunks.
 
-Return Codes 
+Return Codes
 ------------
 
  `NC_NOERR`
 :   No error.
 
-3. Groups {#f77_Groups} 
+3. Groups {#f77_Groups}
 =========
 
 NetCDF-4 addedpport for hierarchical groups within netCDF datasets.
@@ -1931,7 +1928,7 @@ cannot contain groups (except the root group).
 Given an ncid and group name (NULL or "" gets root group), return ncid
 of the named group.
 
-Usage 
+Usage
 -----
 
  
@@ -1950,7 +1947,7 @@ INTEGER FUNCTION NF_INQ_NCID(INTEGER NCID, CHARACTER*(*) NAME, INTEGER GRPID)
  `GRPID`
 :   The ID of the group will go here.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -1972,7 +1969,7 @@ Errors
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_groups.F.
@@ -1991,7 +1988,7 @@ C     Check getting the group by name
 Given a location id, return the number of groups it contains, and an
 array of their ncids.
 
-Usage 
+Usage
 -----
 
  
@@ -2010,7 +2007,7 @@ INTEGER FUNCTION NF_INQ_GRPS(INTEGER NCID, INTEGER NUMGRPS, INTEGER NCIDS)
 :   An array of ints which will receive the IDs of all the groups in
     this group.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -2032,7 +2029,7 @@ Errors
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_groups.F.
@@ -2050,7 +2047,7 @@ C     What groups are there from the root group?
 
 Find all varids for a location.
 
-Usage 
+Usage
 -----
 
  
@@ -2067,7 +2064,7 @@ INTEGER FUNCTION NF_INQ_VARIDS(INTEGER NCID, INTEGERS VARIDS)
     nf\_inq\_nvars to find out how many variables there are. (see
     [NF\_INQ Family](#NF_005fINQ-Family)).
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -2089,7 +2086,7 @@ Errors
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_groups.F.
@@ -2108,7 +2105,7 @@ C     Check varids inbgroup.
 Find all dimids for a location. This finds all dimensions in a group, or
 any of its parents.
 
-Usage 
+Usage
 -----
 
  
@@ -2134,7 +2131,7 @@ INTEGER FUNCTION NF_INQ_DIMIDS(INTEGER NCID, INTEGER NDIMS, INTEGER DIMIDS, INTE
 :   If zero, only the group specified by NCID will be searched for
     dimensions. Otherwise parent groups will be searched too.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -2156,7 +2153,7 @@ Errors
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_groups.F.
@@ -2177,7 +2174,7 @@ C     Check dimids inbgroup.
 Given ncid, find length of the full name. (Root group is named "/", with
 length 1.)
 
-Usage 
+Usage
 -----
 
  
@@ -2192,7 +2189,7 @@ INTEGER FUNCTION NF_INQ_GRPNAME_LEN(INTEGER NCID, INTEGER LEN)
  `LEN`
 :   An integer where the length will be placed.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -2214,7 +2211,7 @@ Errors
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_groups.F.
@@ -2227,7 +2224,7 @@ C     Check the length of the full name.
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-3.6 Find a Group’s Name: NF_INQ_GRPNAME {#f77_NF-INQ-GRPNAME} 
+3.6 Find a Group’s Name: NF_INQ_GRPNAME {#f77_NF-INQ-GRPNAME}
 -----------------------------------------
 
 Given ncid, find relative name of group. (Root group is named "/").
@@ -2238,7 +2235,7 @@ separated with a forward slash (as in Unix directory names) See
 [Find a Group’s Full Name:
 NF\_INQ\_GRPNAME\_FULL](#NF_005fINQ_005fGRPNAME_005fFULL).
 
-Usage 
+Usage
 -----
 
  
@@ -2258,7 +2255,7 @@ will be less than NF\_MAX\_NAME in length.
 
 ``
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -2280,7 +2277,7 @@ Errors
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_groups.F.
@@ -2295,7 +2292,7 @@ C     Check the name of the root group.
 
 
 
-3.7 Find a Group’s Full Name: NF_INQ_GRPNAME_FULL {#f77_NF-INQ-GRPNAME-FULL} 
+3.7 Find a Group’s Full Name: NF_INQ_GRPNAME_FULL {#f77_NF-INQ-GRPNAME-FULL}
 ----------------------------------------------------
 
 Given ncid, find complete name of group. (Root group is named "/").
@@ -2309,7 +2306,7 @@ NF\_INQ\_GRPNAME](#NF_005fINQ_005fGRPNAME).
 To find the length of the full name See [Find the Length of a
 Group’s Name: NF\_INQ\_GRPNAME\_LEN](#NF_005fINQ_005fGRPNAME_005fLEN).
 
-Usage 
+Usage
 -----
 
  
@@ -2327,7 +2324,7 @@ INTEGER FUNCTION NF_INQ_GRPNAME_FULL(INTEGER NCID, INTEGER LEN, CHARACTER*(*) NA
  `NAME`
 :   The name of the group will be copied to this character array.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -2349,7 +2346,7 @@ Errors
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_groups.F.
@@ -2362,7 +2359,7 @@ C     Check the full name.
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-3.8 Find a Group’s Parent: NF_INQ_GRP_PARENT {#f77_NF-INQ-GRP-PARENT} 
+3.8 Find a Group’s Parent: NF_INQ_GRP_PARENT {#f77_NF-INQ-GRP-PARENT}
 -----------------------------------------------
 
 Given ncid, find the ncid of the parent group.
@@ -2370,7 +2367,7 @@ Given ncid, find the ncid of the parent group.
 When used with the root group, this function returns the NF\_ENOGRP
 error (since the root group has no parent.)
 
-Usage 
+Usage
 -----
 
  
@@ -2385,7 +2382,7 @@ INTEGER FUNCTION NF_INQ_GRP_PARENT(INTEGER NCID, INTEGER PARENT_NCID)
  `PARENT_NCID`
 :   The ncid of the parent group will be copied here.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -2410,7 +2407,7 @@ Errors
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_groups.F.
@@ -2423,12 +2420,12 @@ C     Check the parent ncid.
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-3.9 Find a Group by Name: NF_INQ_GRP_NCID {#f77_NF-INQ-GRP-NCID} 
+3.9 Find a Group by Name: NF_INQ_GRP_NCID {#f77_NF-INQ-GRP-NCID}
 --------------------------------------------
 
 Given a group name an an ncid, find the ncid of the group id.
 
-Usage 
+Usage
 -----
 
  
@@ -2446,7 +2443,7 @@ INTEGER FUNCTION NF_INQ_GRP_NCID(INTEGER NCID, CHARACTER GRP_NAME, INTEGER GRP_N
  `GRP_NCID`
 :   This will get the group id, if it is found.
 
-Return Codes 
+Return Codes
 ------------
 
 The following return codes may be returned by this function.
@@ -2476,7 +2473,7 @@ The following return codes may be returned by this function.
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_types3.F.
@@ -2489,13 +2486,13 @@ C     Go to a child group and find the id of our type.
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-3.10 Find a Group by its Fully-qualified Name: NF_INQ_GRP_FULL_NCID {#f77_NF-INQ-GRP-FULL-NCID} 
+3.10 Find a Group by its Fully-qualified Name: NF_INQ_GRP_FULL_NCID {#f77_NF-INQ-GRP-FULL-NCID}
 -----------------------------------------------------------------------
 
 Given a fully qualified group name an an ncid, find the ncid of the
 group id.
 
-Usage 
+Usage
 -----
 
  
@@ -2513,7 +2510,7 @@ INTEGER FUNCTION NF_INQ_GRP_FULL_NCID(INTEGER NCID, CHARACTER FULL_NAME, INTEGER
  `GRP_NCID`
 :   This will get the group id, if it is found.
 
-Return Codes 
+Return Codes
 ------------
 
 The following return codes may be returned by this function.
@@ -2543,7 +2540,7 @@ The following return codes may be returned by this function.
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_groups.F.
@@ -2561,7 +2558,7 @@ C     Check the full name of the root group (also "/").
 
 Create a group. Its location id is returned in new\_ncid.
 
-Usage 
+Usage
 -----
 
  
@@ -2581,7 +2578,7 @@ INTEGER FUNCTION NF_DEF_GRP(INTEGER PARENT_NCID, CHARACTER*(*) NAME,
  `NEW_NCID`
 :   The ncid of the new group will be placed there.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -2618,7 +2615,7 @@ Errors
  `NF_ENOTINDEFINE`
 :   Not in define mode.
 
-Example 
+Example
 -------
 
 In this exampe rom nf\_test/ftst\_groups.F, a groups is reated, and then
@@ -2638,10 +2635,10 @@ C     Create a group and abgroup.
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-4. Dimensions {#f77_Dimensions} 
+4. Dimensions {#f77_Dimensions}
 =============
 
-4.1 Dimensions Introduction {#f77_Dimensions-Introduction} 
+4.1 Dimensions Introduction {#f77_Dimensions-Introduction}
 ---------------------------
 
 Dimensions for a netCDF dataset are defined when it is created, while
@@ -2678,7 +2675,7 @@ Operationspported on dimensions are:
 -   Get a dimension’s name and length from its ID.
 -   Rename a dimension.
 
-4.2 NF_DEF_DIM {#f77_NF-DEF-DIM} 
+4.2 NF_DEF_DIM {#f77_NF-DEF-DIM}
 ----------------
 
 The function NF\_DEF\_DIM adds a new dimension to an open netCDF dataset
@@ -2687,7 +2684,7 @@ netCDF ID, the dimension name, and the dimension length. At most one
 unlimited length dimension, called the record dimension, may be defined
 for each netCDF dataset.
 
-Usage 
+Usage
 -----
 
  
@@ -2711,7 +2708,7 @@ INTEGER FUNCTION NF_DEF_DIM (INTEGER NCID, CHARACTER*(*) NAME,
  `dimid`
 :   Returned dimension ID.
 
-Errors 
+Errors
 ------
 
 NF\_DEF\_DIM returns the value NF\_NOERR if no errors occurred.
@@ -2726,7 +2723,7 @@ errors include:
     length dimension defined for this netCDF dataset.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_DEF\_DIM to create a dimension named lat of
@@ -2737,19 +2734,19 @@ named foo.nc:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER STATUS, NCID, LATID, RECID
-   ... 
+   ...
 STATUS = NF_CREATE('foo.nc', NF_NOCLOBBER, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_DEF_DIM(NCID, 'lat', 18, LATID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 STATUS = NF_DEF_DIM(NCID, 'rec', NF_UNLIMITED, RECID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-4.3 NF_INQ_DIMID {#f77_NF-INQ-DIMID} 
+4.3 NF_INQ_DIMID {#f77_NF-INQ-DIMID}
 ------------------
 
 The function NF\_INQ\_DIMID returns (as an argument) the ID of a netCDF
@@ -2757,7 +2754,7 @@ dimension, given the name of the dimension. If ndims is the number of
 dimensions defined for a netCDF dataset, each dimension has an ID
 between 1 and ndims.
 
-Usage 
+Usage
 -----
 
  
@@ -2776,7 +2773,7 @@ INTEGER FUNCTION NF_INQ_DIMID (INTEGER NCID, CHARACTER*(*) NAME,
  `dimid`
 :   Returned dimension ID.
 
-Errors 
+Errors
 ------
 
 NF\_INQ\_DIMID returns the value NF\_NOERR if no errors occurred.
@@ -2787,7 +2784,7 @@ errors include:
     netCDF dataset.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_INQ\_DIMID to determine the dimension ID of
@@ -2798,12 +2795,12 @@ existing netCDF dataset named foo.nc:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER STATUS, NCID, LATID
-   ... 
+   ...
 STATUS = NF_OPEN('foo.nc', NF_NOWRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_DIMID(NCID, 'lat', LATID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
@@ -2821,7 +2818,7 @@ NF\_INQ\_DIMLEN. The function NF\_INQ\_DIM returns all the information
 about a dimension; the other functions each return just one item of
 information.
 
-Usage 
+Usage
 -----
 
  
@@ -2852,7 +2849,7 @@ INTEGER FUNCTION NF_INQ_DIMLEN  (INTEGER NCID, INTEGER DIMID,
     the current maximum value used for writing any variables with this
     dimension, that is the maximum record number.
 
-Errors 
+Errors
 ------
 
 These functions return the value NF\_NOERR if no errors occurred.
@@ -2862,7 +2859,7 @@ errors include:
 -   The dimension ID is invalid for the specified netCDF dataset.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_INQ\_DIM to determine the length of a
@@ -2873,16 +2870,16 @@ unlimited dimension for an existing netCDF dataset named foo.nc:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER STATUS, NCID, LATID, LATLEN, RECID, NRECS
 CHARACTER*(NF_MAX_NAME) LATNAM, RECNAM
-   ... 
+   ...
 STATUS = NF_OPEN('foo.nc', NF_NOWRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 ! get ID of unlimited dimension
 STATUS = NF_INQ_UNLIMDIM(NCID, RECID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_DIMID(NCID, 'lat', LATID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 ! get lat length
@@ -2893,7 +2890,7 @@ STATUS = NF_INQ_DIM(NCID, RECID, RECNAME, NRECS)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-4.5 NF_RENAME_DIM {#f77_NF-RENAME-DIM} 
+4.5 NF_RENAME_DIM {#f77_NF-RENAME-DIM}
 -------------------
 
 The function NF\_RENAME\_DIM renames an existing dimension in a netCDF
@@ -2901,7 +2898,7 @@ dataset open for writing. If the new name is longer than the old name,
 the netCDF dataset must be in define mode. You cannot rename a dimension
 to have the same name as another dimension.
 
-Usage 
+Usage
 -----
 
  
@@ -2921,7 +2918,7 @@ INTEGER FUNCTION NF_RENAME_DIM (INTEGER NCID, INTEGER DIMID,
  `NAME`
 :   New dimension name.
 
-Errors 
+Errors
 ------
 
 NF\_RENAME\_DIM returns the value NF\_NOERR if no errors occurred.
@@ -2934,7 +2931,7 @@ errors include:
 -   The new name is longer than the old name and the netCDF dataset is
     not in define mode.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_RENAME\_DIM to rename the dimension lat to
@@ -2944,12 +2941,12 @@ latitude in an existing netCDF dataset named foo.nc:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER STATUS, NCID, LATID
-   ... 
+   ...
 STATUS = NF_OPEN('foo.nc', NF_WRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 ! put in define mode to rename dimension
 STATUS = NF_REDEF(NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
@@ -2962,7 +2959,7 @@ STATUS = NF_ENDDEF(NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-5. User Defined Data Types {#f77_User-Defined-Data-Types} 
+5. User Defined Data Types {#f77_User-Defined-Data-Types}
 ==========================
 
 5.1 User Defined Types Introduction {#f77_User-Defined-Types-Introduction}
@@ -3002,17 +2999,17 @@ Create attributes of the new type with NF\_PUT\_ATT (see
 of the new type with NF\_GET\_ATT (see [NF\_GET\_ATT\_
 type](#NF_005fGET_005fATT_005f-type)).
 
-5.2 Learn the IDs of All Types in Group: NF_INQ_TYPEIDS {#f77_NF-INQ-TYPEIDS} 
+5.2 Learn the IDs of All Types in Group: NF_INQ_TYPEIDS {#f77_NF-INQ-TYPEIDS}
 ---------------------------------------------------------
 
 Learn the number of types defined in a group, and their IDs.
 
-Usage 
+Usage
 -----
 
 
 
-INTEGER FUNCTION NF_INQ_TYPEIDS(INTEGER NCID, INTEGER NTYPES, 
+INTEGER FUNCTION NF_INQ_TYPEIDS(INTEGER NCID, INTEGER NTYPES,
         INTEGER TYPEIDS)
 
 
@@ -3027,7 +3024,7 @@ INTEGER FUNCTION NF_INQ_TYPEIDS(INTEGER NCID, INTEGER NTYPES,
 :   A pointer to an int array which will get the typeids. If NULL,
     ignored.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -3036,7 +3033,7 @@ Errors
  `NF_BADID`
 :   Bad ncid.
 
-Example 
+Example
 -------
 
 The following example is from the test program nf\_test/ftst\_vars3.F.
@@ -3049,14 +3046,14 @@ The following example is from the test program nf\_test/ftst\_vars3.F.
 
 
 
-5.3 Find a Typeid from Group and Name: NF_INQ_TYPEID {#f77_NF-INQ-TYPEID} 
+5.3 Find a Typeid from Group and Name: NF_INQ_TYPEID {#f77_NF-INQ-TYPEID}
 ------------------------------------------------------
 
 Given a group ID and a type name, find the ID of the type. If the type
 is not found in the group, then the parents are searched. If still not
 found, the entire file is searched.
 
-Usage 
+Usage
 -----
 
  
@@ -3074,7 +3071,7 @@ INTEGER FUNCTION NF_INQ_TYPEID(INTEGER NCID, CHARACTER NAME, NF_TYPE TYPEIDP)
  `TYPEIDP`
 :   The typeid of the named type (if found).
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -3086,7 +3083,7 @@ Errors
  `NF_EBADTYPE`
 :   Can’t find type.
 
-Example 
+Example
 -------
 
 The following example is from nf\_test/ftst\_types3.F:
@@ -3101,7 +3098,7 @@ C     Go to a child group and find the id of our type.
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-5.4 Learn About a User Defined Type: NF_INQ_TYPE {#f77_NF-INQ-TYPE} 
+5.4 Learn About a User Defined Type: NF_INQ_TYPE {#f77_NF-INQ-TYPE}
 --------------------------------------------------
 
 Given an ncid and a typeid, get the information about a type. This
@@ -3111,13 +3108,13 @@ type, whether compound, opaque, enumeration, or variable length array.
 For even more information about a user defined type [Learn About a User
 Defined Type: NF\_INQ\_USER\_TYPE](#NF_005fINQ_005fUSER_005fTYPE).
 
-Usage 
+Usage
 -----
 
  
 
 
-INTEGER FUNCTION NF_INQ_TYPE(INTEGER NCID, INTEGER XTYPE, 
+INTEGER FUNCTION NF_INQ_TYPE(INTEGER NCID, INTEGER XTYPE,
         CHARACTER*(*) NAME, INTEGER SIZE)
 
 
@@ -3142,7 +3139,7 @@ INTEGER FUNCTION NF_INQ_TYPE(INTEGER NCID, INTEGER XTYPE,
     nc\_vlen\_t). String size is returned as the size of one C character
     pointer.
 
-Return Codes 
+Return Codes
 ------------
 
  `NF_NOERR`
@@ -3167,7 +3164,7 @@ Return Codes
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from the test program nf\_test/ftst\_vars3.F, and it
@@ -3180,31 +3177,31 @@ C     Check the enum type.
       retval = NF_INQ_TYPEIDS(ncid, num_types, typeids)
       if (retval .ne. nf_noerr) call handle_err(retval)
       if (num_types .ne. MAX_TYPES) stop 2
-      retval = nf_inq_enum(ncid, typeids(1), type_name, base_type, 
+      retval = nf_inq_enum(ncid, typeids(1), type_name, base_type,
      &     base_size, num_members)
       if (retval .ne. nf_noerr) call handle_err(retval)
       if (base_type .ne. NF_INT .or. num_members .ne. 2) stop 2
-      retval = nf_inq_enum_member(ncid, typeids(1), 1, member_name, 
+      retval = nf_inq_enum_member(ncid, typeids(1), 1, member_name,
      &     member_value)
       if (retval .ne. nf_noerr) call handle_err(retval)
       if (member_name(1:len(one_name)) .ne. one_name) stop 2
 
 
-5.5 Learn About a User Defined Type: NF_INQ_USER_TYPE {#f77_NF-INQ-USER-TYPE} 
+5.5 Learn About a User Defined Type: NF_INQ_USER_TYPE {#f77_NF-INQ-USER-TYPE}
 --------------------------------------------------------
 
 Given an ncid and a typeid, get the information about a user defined
 type. This function will work on any user defined type, whether
 compound, opaque, enumeration, or variable length array.
 
-Usage 
+Usage
 -----
 
  
 
 
 INTEGER FUNCTION NF_INQ_USER_TYPE(INTEGER NCID, INTEGER XTYPE,
-        CHARACTER*(*) NAME, INTEGER SIZE, INTEGER BASE_NF_TYPE, 
+        CHARACTER*(*) NAME, INTEGER SIZE, INTEGER BASE_NF_TYPE,
         INTEGER NFIELDS, INTEGER CLASS)
 
 
@@ -3233,7 +3230,7 @@ INTEGER FUNCTION NF_INQ_USER_TYPE(INTEGER NCID, INTEGER XTYPE,
 :   The class of the user defined type, NF\_VLEN, NF\_OPAQUE, NF\_ENUM,
     or NF\_COMPOUND, will be copied here.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -3248,7 +3245,7 @@ Errors
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_types2.F.
@@ -3257,12 +3254,12 @@ This example is from nf\_test/ftst\_types2.F.
 
 
 C     Check the type.
-      retval = nf_inq_user_type(ncid, typeids(1), name_in, size_in, 
+      retval = nf_inq_user_type(ncid, typeids(1), name_in, size_in,
      &     base_type_in, nfields_in, class_in)
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-5.6 Compound Types Introduction {#f77_Compound-Types-Introduction} 
+5.6 Compound Types Introduction {#f77_Compound-Types-Introduction}
 -------------------------------
 
 NetCDF-4 addedpport for compound types, which allow users to
@@ -3286,7 +3283,7 @@ C compiler which compiled netCDF would store the structure.
 The use of compound types introduces challenges and portability ies
 for Fortran users.
 
-### 5.6.1 Creating a Compound Type: NF_DEF_COMPOUND {#f77_NF-DEF-COMPOUND} 
+### 5.6.1 Creating a Compound Type: NF_DEF_COMPOUND {#f77_NF-DEF-COMPOUND}
 
 Create a compound type. Provide an ncid, a name, and a total size (in
 bytes) of one element of the completed compound type.
@@ -3303,7 +3300,7 @@ structures in Fortran 90 (and there are no structures in Fortran 77).
 Fortran users may use character buffers to read and write compound
 types.
 
-Usage 
+Usage
 -----
 
  
@@ -3325,7 +3322,7 @@ INTEGER FUNCTION NF_DEF_COMPOUND(INTEGER NCID, INTEGER SIZE,
  `TYPEIDP`
 :   The typeid of the new type will be placed here.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -3364,7 +3361,7 @@ Errors
  `NF_ENOTINDEFINE`
 :   Not in define mode.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_types2.F.
@@ -3373,22 +3370,22 @@ This example is from nf\_test/ftst\_types2.F.
 
 
 C     Define a compound type.
-      retval = nf_def_compound(ncid, cmp_size, type_name, 
+      retval = nf_def_compound(ncid, cmp_size, type_name,
      &     cmp_typeid)
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-### 5.6.2 Inserting a Field into a Compound Type: NF_INSERT_COMPOUND {#f77_NF-INSERT-COMPOUND} 
+### 5.6.2 Inserting a Field into a Compound Type: NF_INSERT_COMPOUND {#f77_NF-INSERT-COMPOUND}
 
 Insert a named field into a compound type.
 
-Usage 
+Usage
 -----
 
  
 
 
-INTEGER FUNTION NF_INSERT_COMPOUND(INTEGER TYPEID, CHARACTER*(*) NAME, INTEGER OFFSET, 
+INTEGER FUNTION NF_INSERT_COMPOUND(INTEGER TYPEID, CHARACTER*(*) NAME, INTEGER OFFSET,
         INTEGER FIELD_TYPEID)
 
 
@@ -3406,7 +3403,7 @@ INTEGER FUNTION NF_INSERT_COMPOUND(INTEGER TYPEID, CHARACTER*(*) NAME, INTEGER O
  `FIELD_TYPEID`
 :   The type of the field to be inserted.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -3442,7 +3439,7 @@ Errors
  `NF_ENOTINDEFINE`
 :   Not in define mode.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_types.F.
@@ -3451,7 +3448,7 @@ This example is from nf\_test/ftst\_types.F.
 
 
 C     Define a compound type.
-      retval = nf_def_compound(ncid, WIND_T_SIZE, type_name, 
+      retval = nf_def_compound(ncid, WIND_T_SIZE, type_name,
      &     wind_typeid)
       if (retval .ne. nf_noerr) call handle_err(retval)
       retval = nf_insert_compound(ncid, wind_typeid, u_name, 0, NF_INT)
@@ -3465,7 +3462,7 @@ C     Define a compound type.
 
 Insert a named array field into a compound type.
 
-Usage 
+Usage
 -----
 
  
@@ -3473,7 +3470,7 @@ Usage
 
 INTEGER FUNCTION NF_INSERT_ARRAY_COMPOUND(INTEGER NCID, INTEGER XTYPE,
         CHARACTER*(*) NAME, INTEGER OFFSET, INTEGER FIELD_TYPEID,
-        INTEGER NDIMS, INTEGER DIM_SIZES) 
+        INTEGER NDIMS, INTEGER DIM_SIZES)
 
 
  `NCID`
@@ -3500,7 +3497,7 @@ INTEGER FUNCTION NF_INSERT_ARRAY_COMPOUND(INTEGER NCID, INTEGER XTYPE,
  `DIM_SIZES`
 :   An array containing the sizes of each dimension.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -3542,7 +3539,7 @@ Errors
     and can’t be changed. If you wish to add an array to a compound
     type, you must do so before the compound type is committed.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_types2.F.
@@ -3551,14 +3548,14 @@ This example is from nf\_test/ftst\_types2.F.
 
 
 C     Define a compound type.
-      retval = nf_def_compound(ncid, cmp_size, type_name, 
+      retval = nf_def_compound(ncid, cmp_size, type_name,
      &     cmp_typeid)
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 C     Include an array.
       dim_sizes(1) = NX
       dim_sizes(2) = NY
-      retval = nf_insert_array_compound(ncid, cmp_typeid, ary_name, 0, 
+      retval = nf_insert_array_compound(ncid, cmp_typeid, ary_name, 0,
      &     NF_INT, NDIMS, dim_sizes)
       if (retval .ne. nf_noerr) call handle_err(retval)
 
@@ -3570,7 +3567,7 @@ Get the number of fields, length in bytes, and name of a compound type.
 In addtion to the NF\_INQ\_COMPOUND function, three additional functions
 are provided which get only the name, size, and number of fields.
 
-Usage 
+Usage
 -----
 
  
@@ -3579,13 +3576,13 @@ Usage
 INTEGER FUNCTION NF_INQ_COMPOUND(INTEGER NCID, INTEGER XTYPE,
         CHARACTER*(*) NAME, INTEGER SIZEP, INTEGER NFIELDSP)
 
-INTEGER FUNCTION NF_INQ_COMPOUND_NAME(INTEGER NCID, INTEGER XTYPE, 
+INTEGER FUNCTION NF_INQ_COMPOUND_NAME(INTEGER NCID, INTEGER XTYPE,
         CHARACTER*(*) NAME)
 
-INTEGER FUNCTION NF_INQ_COMPOUND_SIZE(INTEGER NCID, INTEGER XTYPE, 
+INTEGER FUNCTION NF_INQ_COMPOUND_SIZE(INTEGER NCID, INTEGER XTYPE,
         INTEGER SIZEP)
 
-INTEGER FUNCTION NF_INQ_COMPOUND_NFIELDS(INTEGER NCID, INTEGER XTYPE, 
+INTEGER FUNCTION NF_INQ_COMPOUND_NFIELDS(INTEGER NCID, INTEGER XTYPE,
         INTEGER NFIELDSP)
 
 
@@ -3606,7 +3603,7 @@ INTEGER FUNCTION NF_INQ_COMPOUND_NFIELDS(INTEGER NCID, INTEGER XTYPE,
  `NFIELDSP`
 :   The number of fields in the compound type will be placed here.
 
-Return Codes 
+Return Codes
 ------------
 
  `NF_NOERR`
@@ -3631,7 +3628,7 @@ Return Codes
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_types.F.
@@ -3640,10 +3637,10 @@ This example is from nf\_test/ftst\_types.F.
 
 
 C     Check it differently.
-      retval = nf_inq_compound(ncid, typeids(1), name_in, size_in, 
+      retval = nf_inq_compound(ncid, typeids(1), name_in, size_in,
      &     nfields_in)
       if (retval .ne. nf_noerr) call handle_err(retval)
-      if (name_in(1:len(type_name)) .ne. type_name .or. 
+      if (name_in(1:len(type_name)) .ne. type_name .or.
      &     size_in .ne. WIND_T_SIZE .or. nfields_in .ne. 2) stop 2
 
 C     Check it one piece at a time.
@@ -3658,36 +3655,36 @@ C     Check it one piece at a time.
       if (name_in(1:len(type_name)) .ne. type_name) stop 2
 
 
-### 5.6.5 Learn About a Field of a Compound Type: NF_INQ_COMPOUND_FIELD {#f77_NF-INQ-COMPOUND-FIELD} 
+### 5.6.5 Learn About a Field of a Compound Type: NF_INQ_COMPOUND_FIELD {#f77_NF-INQ-COMPOUND-FIELD}
 
 Get information about one of the fields of a compound type.
 
-Usage 
+Usage
 -----
 
  
 
 
 INTEGER FUNCTION NF_INQ_COMPOUND_FIELD(INTEGER NCID, INTEGER XTYPE,
-        INTEGER FIELDID, CHARACTER*(*) NAME, INTEGER OFFSETP, 
+        INTEGER FIELDID, CHARACTER*(*) NAME, INTEGER OFFSETP,
         INTEGER FIELD_TYPEIDP, INTEGER NDIMSP, INTEGER DIM_SIZESP)
 
-INTEGER FUNCTION NF_INQ_COMPOUND_FIELDNAME(INTEGER TYPEID, 
+INTEGER FUNCTION NF_INQ_COMPOUND_FIELDNAME(INTEGER TYPEID,
         INTEGER FIELDID, CHARACTER*(*) NAME)
 
 INTEGER FUNCTION NF_INQ_COMPOUND_FIELDINDEX(INTEGER TYPEID,    
         CHARACTER*(*) NAME, INTEGER FIELDIDP)
 
-INTEGER FUNCTION NF_INQ_COMPOUND_FIELDOFFSET(INTEGER TYPEID, 
+INTEGER FUNCTION NF_INQ_COMPOUND_FIELDOFFSET(INTEGER TYPEID,
         INTEGER FIELDID, INTEGER OFFSETP)
 
-INTEGER FUNCTION NF_INQ_COMPOUND_FIELDTYPE(INTEGER TYPEID, 
+INTEGER FUNCTION NF_INQ_COMPOUND_FIELDTYPE(INTEGER TYPEID,
         INTEGER FIELDID, INTEGER FIELD_TYPEIDP)
 
-INTEGER FUNCTION NF_INQ_COMPOUND_FIELDNDIMS(INTEGER NCID, 
+INTEGER FUNCTION NF_INQ_COMPOUND_FIELDNDIMS(INTEGER NCID,
         INTEGER XTYPE, INTEGER FIELDID, INTEGER NDIMSP)
 
-INTEGER FUNCTION NF_INQ_COMPOUND_FIELDDIM_SIZES(INTEGER NCID, 
+INTEGER FUNCTION NF_INQ_COMPOUND_FIELDDIM_SIZES(INTEGER NCID,
         INTEGER XTYPE, INTEGER FIELDID, INTEGER DIM_SIZES)
 
 
@@ -3717,7 +3714,7 @@ INTEGER FUNCTION NF_INQ_COMPOUND_FIELDDIM_SIZES(INTEGER NCID,
  `DIM_SIZESP`
 :   An integer array which will get the dimension sizes of the field.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -3729,7 +3726,7 @@ Errors
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/fst\_types.F.
@@ -3738,7 +3735,7 @@ This example is from nf\_test/fst\_types.F.
 
 ~~~~
 C     Check the first field of the compound type.
-      retval = nf_inq_compound_field(ncid, typeids(1), 1, name_in, 
+      retval = nf_inq_compound_field(ncid, typeids(1), 1, name_in,
      &     offset_in, field_typeid_in, ndims_in, dim_sizes_in)
       if (retval .ne. nf_noerr) call handle_err(retval)
       if (name_in(1:len(u_name)) .ne. u_name .or. offset_in .ne. 0 .or.
@@ -3746,21 +3743,21 @@ C     Check the first field of the compound type.
       retval = nf_inq_compound_fieldname(ncid, typeids(1), 1, name_in)
       if (retval .ne. nf_noerr) call handle_err(retval)
       if (name_in(1:len(u_name)) .ne. u_name) stop 2
-      retval = nf_inq_compound_fieldoffset(ncid, typeids(1), 1, 
+      retval = nf_inq_compound_fieldoffset(ncid, typeids(1), 1,
      &     offset_in)
       if (retval .ne. nf_noerr) call handle_err(retval)
       if (offset_in .ne. 0) stop 2
-      retval = nf_inq_compound_fieldtype(ncid, typeids(1), 1, 
+      retval = nf_inq_compound_fieldtype(ncid, typeids(1), 1,
      &     field_typeid_in)
       if (retval .ne. nf_noerr) call handle_err(retval)
       if (field_typeid_in .ne. NF_INT) stop 2
-      retval = nf_inq_compound_fieldndims(ncid, typeids(1), 1, 
+      retval = nf_inq_compound_fieldndims(ncid, typeids(1), 1,
      &     ndims_in)
       if (retval .ne. nf_noerr) call handle_err(retval)
       if (ndims_in .ne. 0) stop 2
 ~~~~
 
-5.7 Variable Length Array Introduction 
+5.7 Variable Length Array Introduction
 --------------------------------------
 
 NetCDF-4 addedpport for a variable length array type. This is not
@@ -3799,24 +3796,24 @@ Compression is permitted but may not be effective for VLEN data, because
 the compression is applied to the nc\_vlen\_t structures, rather than
 the actual data.
 
-### 5.7.1 Define a Variable Length Array (VLEN): NF\_DEF\_VLEN 
+### 5.7.1 Define a Variable Length Array (VLEN): NF\_DEF\_VLEN
 
 Use this function to define a variable length array type.
 
-Usage 
+Usage
 -----
 
  
 
 
-INTEGER FUNCTION NF_DEF_VLEN(INTEGER NCID, CHARACTER*(*) NAME, 
+INTEGER FUNCTION NF_DEF_VLEN(INTEGER NCID, CHARACTER*(*) NAME,
         INTEGER BASE_TYPEID, INTEGER XTYPEP)
 
 
  `NCID`
 :   The ncid of the file to create the VLEN type in.
 
- `NAME` 
+ `NAME`
 :   A name for the VLEN type.
 
  `BASE_TYPEID`
@@ -3826,7 +3823,7 @@ INTEGER FUNCTION NF_DEF_VLEN(INTEGER NCID, CHARACTER*(*) NAME,
  `XTYPEP`
 :   The typeid of the new VLEN type will be set here.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -3853,7 +3850,7 @@ Errors
  `NF_ENOMEM`
 :   Out of memory.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_vars4.F.
@@ -3866,11 +3863,11 @@ C     Create the vlen type.
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-### 5.7.2 Learning about a Variable Length Array (VLEN) Type: NF\_INQ\_VLEN 
+### 5.7.2 Learning about a Variable Length Array (VLEN) Type: NF\_INQ\_VLEN
 
 Use this type to learn about a vlen.
 
-Usage 
+Usage
 -----
 
  
@@ -3899,7 +3896,7 @@ INTEGER FUNCTION NF_INQ_VLEN(INTEGER NCID, INTEGER XTYPE,
 :   An integer that will get the type of the VLEN base type. (In other
     words, what type is this a VLEN of?)
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -3914,7 +3911,7 @@ Errors
  `NF_EBADGRPID`
 :   Group ID part of ncid was invalid.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_vars4.F.
@@ -3924,12 +3921,12 @@ This example is from nf\_test/ftst\_vars4.F.
 
 C     Use nf_inq_vlen and makere we get the same answers as we did
 C     with nf_inq_user_type.
-      retval = nf_inq_vlen(ncid, typeids(1), type_name, base_size, 
+      retval = nf_inq_vlen(ncid, typeids(1), type_name, base_size,
      &     base_type)
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-### 5.7.3 Releasing Memory for a Variable Length Array (VLEN) Type: NF\_FREE\_VLEN 
+### 5.7.3 Releasing Memory for a Variable Length Array (VLEN) Type: NF\_FREE\_VLEN
 
 When a VLEN is read into user memory from the file, the HDF5 library
 performs memory allocations for each of the variable length arrays
@@ -3941,7 +3938,7 @@ for all memory allocation. But, with VLEN arrays, the underlying HDF5
 library allocates the memory for the user, and the user is responsible
 for deallocating that memory.
 
-Usage 
+Usage
 -----
 
  
@@ -3953,7 +3950,7 @@ INTEGER FUNCTION NF_FREE_VLEN(CHARACTER VL);
  `VL`
 :   The variable length array structure which is to be freed.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -3962,15 +3959,15 @@ Errors
  `NF_EBADTYPE`
 :   Can’t find the typeid.
 
-Example 
+Example
 -------
 
-### 5.7.4 Set a Variable Length Array with NF\_PUT\_VLEN\_ELEMENT 
+### 5.7.4 Set a Variable Length Array with NF\_PUT\_VLEN\_ELEMENT
 
 Use this to set the element of the (potentially) n-dimensional array of
 VLEN. That is, this sets the data in one variable length array.
 
-Usage 
+Usage
 -----
 
  
@@ -3995,7 +3992,7 @@ INTEGER FUNCTION NF_PUT_VLEN_ELEMENT(INTEGER NCID, INTEGER XTYPE,
  `DATA`
 :   The data to be stored. Must match the base type of this VLEN.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -4010,7 +4007,7 @@ Errors
  `NF_EBADGRPID`
 :   Group ID part of ncid was invalid.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_vars4.F.
@@ -4020,17 +4017,17 @@ This example is from nf\_test/ftst\_vars4.F.
 
 C     Set up the vlen with this helper function, since F77 can't deal
 C     with pointers.
-      retval = nf_put_vlen_element(ncid, vlen_typeid, vlen, 
+      retval = nf_put_vlen_element(ncid, vlen_typeid, vlen,
      &     vlen_len, data1)
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-### 5.7.5 Set a Variable Length Array with NF\_GET\_VLEN\_ELEMENT 
+### 5.7.5 Set a Variable Length Array with NF\_GET\_VLEN\_ELEMENT
 
 Use this to set the element of the (potentially) n-dimensional array of
 VLEN. That is, this sets the data in one variable length array.
 
-Usage 
+Usage
 -----
 
  
@@ -4056,7 +4053,7 @@ INTEGER FUNCTION NF_GET_VLEN_ELEMENT(INTEGER NCID, INTEGER XTYPE,
 :   The data will be copied here. Sufficient storage must be available
     or bad things will happen to you.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -4071,7 +4068,7 @@ Errors
  `NF_EBADGRPID`
 :   Group ID part of ncid was invalid.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_vars4.F.
@@ -4084,12 +4081,12 @@ C     Read the vlen attribute.
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 C     Get the data from the vlen we just read.
-      retval = nf_get_vlen_element(ncid, vlen_typeid, vlen_in, 
+      retval = nf_get_vlen_element(ncid, vlen_typeid, vlen_in,
      &     vlen_len_in, data1_in)
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-5.8 Opaque Type Introduction 
+5.8 Opaque Type Introduction
 ----------------------------
 
 NetCDF-4 addedpport for the opaque type. This is notpported in
@@ -4105,17 +4102,17 @@ NF\_DEF\_OPAQUE](#NF_005fDEF_005fOPAQUE). If encountering an enum type
 in a new data file, use [Learn About an Opaque Type:
 NF\_INQ\_OPAQUE](#NF_005fINQ_005fOPAQUE) to learn its name and size.
 
-### 5.8.1 Creating Opaque Types: NF\_DEF\_OPAQUE 
+### 5.8.1 Creating Opaque Types: NF\_DEF\_OPAQUE
 
 Create an opaque type. Provide a size and a name.
 
-Usage 
+Usage
 -----
 
  
 
 
-INTEGER FUNCTION NF_DEF_OPAQUE(INTEGER NCID, INTEGER SIZE, 
+INTEGER FUNCTION NF_DEF_OPAQUE(INTEGER NCID, INTEGER SIZE,
         CHARACTER*(*) NAME, INTEGER TYPEIDP)
 
 
@@ -4134,7 +4131,7 @@ INTEGER FUNCTION NF_DEF_OPAQUE(INTEGER NCID, INTEGER SIZE,
     typeid when defining variables of this type with [Create a Variable:
     `NF_DEF_VAR`](#NF_005fDEF_005fVAR).
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -4149,7 +4146,7 @@ Errors
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_vars3.F.
@@ -4158,16 +4155,16 @@ This example is from nf\_test/ftst\_vars3.F.
 
 
 C     Create the opaque type.
-      retval = nf_def_opaque(ncid, opaque_size, opaque_type_name, 
+      retval = nf_def_opaque(ncid, opaque_size, opaque_type_name,
      &     opaque_typeid)
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-### 5.8.2 Learn About an Opaque Type: NF\_INQ\_OPAQUE 
+### 5.8.2 Learn About an Opaque Type: NF\_INQ\_OPAQUE
 
 Given a typeid, get the information about an opaque type.
 
-Usage 
+Usage
 -----
 
  
@@ -4191,7 +4188,7 @@ INTEGER FUNCTION NF_INQ_OPAQUE(INTEGER NCID, INTEGER XTYPE,
  `SIZEP`
 :   The size of the opaque type will be copied here.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -4206,7 +4203,7 @@ Errors
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_vars3.F.
@@ -4220,13 +4217,13 @@ C     with nf_inq_user_type.
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-5.9 Enum Type Introduction 
+5.9 Enum Type Introduction
 --------------------------
 
 NetCDF-4 addedpport for the enum type. This is notpported in
 classic or 64-bit offset files.
 
-### 5.9.1 Creating a Enum Type: NF\_DEF\_ENUM 
+### 5.9.1 Creating a Enum Type: NF\_DEF\_ENUM
 
 Create an enum type. Provide an ncid, a name, and a base integer type.
 
@@ -4235,13 +4232,13 @@ NF\_INSERT\_ENUM (see [Inserting a Field into a Enum Type:
 NF\_INSERT\_ENUM](#NF_005fINSERT_005fENUM)). Call NF\_INSERT\_ENUM once
 for each value you wish to make part of the enumeration.
 
-Usage 
+Usage
 -----
 
  
 
 
-INTEGER FUNCTION NF_DEF_ENUM(INTEGER NCID, INTEGER BASE_TYPEID, 
+INTEGER FUNCTION NF_DEF_ENUM(INTEGER NCID, INTEGER BASE_TYPEID,
         CHARACTER*(*) NAME, INTEGER TYPEIDP)
 
 
@@ -4259,7 +4256,7 @@ INTEGER FUNCTION NF_DEF_ENUM(INTEGER NCID, INTEGER BASE_TYPEID,
  `TYPEIDP`
 :   The typeid of the new type will be placed here.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -4308,17 +4305,17 @@ C     Create the enum type.
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-### 5.9.2 Inserting a Field into a Enum Type: NF\_INSERT\_ENUM 
+### 5.9.2 Inserting a Field into a Enum Type: NF\_INSERT\_ENUM
 
 Insert a named member into a enum type.
 
-Usage 
+Usage
 -----
 
  
 
 
-INTEGER FUNCTION NF_INSERT_ENUM(INTEGER NCID, INTEGER XTYPE, 
+INTEGER FUNCTION NF_INSERT_ENUM(INTEGER NCID, INTEGER XTYPE,
         CHARACTER IDENTIFIER, INTEGER VALUE)
 
 
@@ -4335,7 +4332,7 @@ INTEGER FUNCTION NF_INSERT_ENUM(INTEGER NCID, INTEGER XTYPE,
  `VALUE`
 :   The value that is to be associated with this member.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -4370,7 +4367,7 @@ Errors
  `NF_ENOTINDEFINE`
 :   Not in define mode.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_vars3.F.
@@ -4386,18 +4383,18 @@ This example is from nf\_test/ftst\_vars3.F.
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-### 5.9.3 Learn About a Enum Type: NF\_INQ\_ENUM 
+### 5.9.3 Learn About a Enum Type: NF\_INQ\_ENUM
 
 Get information about a user-defined enumeration type.
 
-Usage 
+Usage
 -----
 
  
 
 
 INTEGER FUNCTION NF_INQ_ENUM(INTEGER NCID, INTEGER XTYPE,
-        CHARACTER*(*) NAME, INTEGER BASE_NF_TYPE, INTEGER BASE_SIZE, 
+        CHARACTER*(*) NAME, INTEGER BASE_NF_TYPE, INTEGER BASE_SIZE,
         INTEGER NUM_MEMBERS)
 
 
@@ -4423,7 +4420,7 @@ INTEGER FUNCTION NF_INQ_ENUM(INTEGER NCID, INTEGER XTYPE,
 :   An integer which will get the number of members defined for this
     enumeration type.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -4435,7 +4432,7 @@ Errors
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 In this example from nf\_test/ftst\_vars3.F, an enum type is created and
@@ -4444,23 +4441,23 @@ then examined:
  
 
 
-      retval = nf_inq_enum(ncid, typeids(1), type_name, base_type, 
+      retval = nf_inq_enum(ncid, typeids(1), type_name, base_type,
      &     base_size, num_members)
       if (retval .ne. nf_noerr) call handle_err(retval)
       if (base_type .ne. NF_INT .or. num_members .ne. 2) stop 2
 
 
-### 5.9.4 Learn the Name of a Enum Type: nf\_inq\_enum\_member 
+### 5.9.4 Learn the Name of a Enum Type: nf\_inq\_enum\_member
 
 Get information about a member of an enum type.
 
-Usage 
+Usage
 -----
 
  
 
 
-INTEGER FUNCTION NF_INQ_ENUM_MEMBER(INTEGER NCID, INTEGER XTYPE, 
+INTEGER FUNCTION NF_INQ_ENUM_MEMBER(INTEGER NCID, INTEGER XTYPE,
         INTEGER IDX, CHARACTER*(*) NAME, INTEGER VALUE)
 
 
@@ -4480,7 +4477,7 @@ INTEGER FUNCTION NF_INQ_ENUM_MEMBER(INTEGER NCID, INTEGER XTYPE,
  `VALUE`
 :   An integer that will get the value associated with this member.
 
-Errors 
+Errors
 ------
 
  `NF_NOERR`
@@ -4492,7 +4489,7 @@ Errors
  `NF_EHDFERR`
 :   An error was reported by the HDF5 layer.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_vars3.F:
@@ -4501,26 +4498,26 @@ This example is from nf\_test/ftst\_vars3.F:
 
 
 C     Check the members of the enum type.
-      retval = nf_inq_enum_member(ncid, typeids(1), 1, member_name, 
+      retval = nf_inq_enum_member(ncid, typeids(1), 1, member_name,
      &     member_value)
       if (retval .ne. nf_noerr) call handle_err(retval)
       if (member_name(1:len(zero_name)) .ne. zero_name .or.
      &     member_value .ne. 0) stop 2
-      retval = nf_inq_enum_member(ncid, typeids(1), 2, member_name, 
+      retval = nf_inq_enum_member(ncid, typeids(1), 2, member_name,
      &     member_value)
       if (retval .ne. nf_noerr) call handle_err(retval)
       if (member_name(1:len(one_name)) .ne. one_name .or.
      &     member_value .ne. 1) stop 2
 
 
-### 5.9.5 Learn the Name of a Enum Type: NF\_INQ\_ENUM\_IDENT 
+### 5.9.5 Learn the Name of a Enum Type: NF\_INQ\_ENUM\_IDENT
 
 Get the name which is associated with an enum member value.
 
 This is similar to NF\_INQ\_ENUM\_MEMBER, but instead of using the index
 of the member, you use the value of the member.
 
-Usage 
+Usage
 -----
 
  
@@ -4543,7 +4540,7 @@ INTEGER FUNCTION NF_INQ_ENUM_IDENT(INTEGER NCID, INTEGER XTYPE,
 :   A character array that will get the identifier. It will have a
     maximum length of NF\_MAX\_NAME.
 
-Return Code 
+Return Code
 -----------
 
  `NF_NOERR`
@@ -4558,7 +4555,7 @@ Return Code
  `NF_EINVAL`
 :   The value was not found in the enum.
 
-Example 
+Example
 -------
 
 In this example from nf\_test/ftst\_vars3.F, the values for 0 and 1 are
@@ -4575,10 +4572,10 @@ checked in an enum.
       if (member_name(1:len(one_name)) .ne. one_name) stop 2
 
 
-6. Variables 
+6. Variables
 ============
 
-6.1 Variables Introduction 
+6.1 Variables Introduction
 --------------------------
 
 Variables for a netCDF dataset are defined when the dataset is created,
@@ -4625,7 +4622,7 @@ Operationspported on variables are:
 -   Rename a variable.
 
 
-6.2 Language Types Corresponding to netCDF external data types 
+6.2 Language Types Corresponding to netCDF external data types
 --------------------------------------------------------------
 
 The following table gives the netCDF external data types and the
@@ -4653,7 +4650,7 @@ Note that there are no netCDF types corresponding to 64-bit integers or
 to characters wider than 8 bits in the current version of the netCDF
 library.
 
-6.3 Create a Variable: `NF_DEF_VAR` 
+6.3 Create a Variable: `NF_DEF_VAR`
 -----------------------------------
 
 The function NF\_DEF\_VAR adds a new variable to an open netCDF dataset
@@ -4661,7 +4658,7 @@ in define mode. It returns (as an argument) a variable ID, given the
 netCDF ID, the variable name, the variable type, the number of
 dimensions, and a list of the dimension IDs.
 
-Usage 
+Usage
 -----
 
  
@@ -4703,7 +4700,7 @@ INTEGER FUNCTION NF_DEF_VAR(INTEGER NCID, CHARACTER*(*) NAME,
  `varid`
 :   Returned variable ID.
 
-Errors 
+Errors
 ------
 
 NF\_DEF\_VAR returns the value NF\_NOERR if no errors occurred.
@@ -4723,7 +4720,7 @@ errors include:
     maximum number of variables permitted in a netCDF dataset.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_DEF\_VAR to create a variable named rh of
@@ -4734,15 +4731,15 @@ dataset named foo.nc:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER  STATUS, NCID
 INTEGER  LATDIM, LONDIM, TIMDIM  ! dimension IDs
 INTEGER  RHID                    ! variable ID
 INTEGER  RHDIMS(3)               ! variable shape
-   ... 
+   ...
 STATUS = NF_CREATE ('foo.nc', NF_NOCLOBBER, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
                                  ! define dimensions
 STATUS = NF_DEF_DIM(NCID, 'lat', 5, LATDIM)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
@@ -4750,7 +4747,7 @@ STATUS = NF_DEF_DIM(NCID, 'lon', 10, LONDIM)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 STATUS = NF_DEF_DIM(NCID, 'time', NF_UNLIMITED, TIMDIM)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-         ... 
+         ...
                                  ! define variable
 RHDIMS(1) = LONDIM
 RHDIMS(2) = LATDIM
@@ -4759,7 +4756,7 @@ STATUS = NF_DEF_VAR (NCID, 'rh', NF_DOUBLE, 3, RHDIMS, RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-6.4 Define Chunking Parameters for a Variable: `NF_DEF_VAR_CHUNKING` 
+6.4 Define Chunking Parameters for a Variable: `NF_DEF_VAR_CHUNKING`
 --------------------------------------------------------------------
 
 The function NF\_DEF\_VAR\_CHUNKING sets the storage parameters for a
@@ -4786,7 +4783,7 @@ before nc\_enddef is called.
 Note that you cannot set chunking for scalar variables. Only non-scalar
 variables can have chunking.
 
-Usage 
+Usage
 -----
 
  
@@ -4822,7 +4819,7 @@ NF_DEF_VAR_CHUNKING(INTEGER NCID, INTEGER VARID, INTEGER STORAGE, INTEGER CHUNKS
     each dimension in the variable. If contiguous storage is used, then
     the chunksizes parameter is ignored.
 
-Errors 
+Errors
 ------
 
 NF\_DEF\_VAR\_CHUNKING returns the value NF\_NOERR if no errors
@@ -4863,7 +4860,7 @@ Possible return codes include:
 :   Trying to create a var some place other than the root group in a
     netCDF file with NF\_STRICT\_NC3 turned on.
 
-Example 
+Example
 -------
 
 In this example from nf\_test/ftst\_vars.F, a file is created, two
@@ -4884,7 +4881,7 @@ C     Define the dimensions.
       retval = nf_def_dim(ncid, "y", NY, y_dimid)
       if (retval .ne. nf_noerr) call handle_err(retval)
 
-C     Define the variable. 
+C     Define the variable.
       dimids(1) = y_dimid
       dimids(2) = x_dimid
       retval = NF_DEF_VAR(ncid, "data", NF_INT, NDIMS, dimids, varid)
@@ -4897,13 +4894,13 @@ C     Turn on chunking.
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-6.5 Learn About Chunking Parameters for a Variable: `NF_INQ_VAR_CHUNKING` 
+6.5 Learn About Chunking Parameters for a Variable: `NF_INQ_VAR_CHUNKING`
 -------------------------------------------------------------------------
 
 The function NF\_INQ\_VAR\_CHUNKING returns the chunking settings for a
 variable in a netCDF-4 file.
 
-Usage 
+Usage
 -----
 
  
@@ -4926,7 +4923,7 @@ NF_INQ_VAR_CHUNKING(INTEGER NCID, INTEGER VARID, INTEGER STORAGE, INTEGER CHUNKS
 :   An array of chunk sizes. The length of CHUNKSIZES must be the same
     as the number of dimensions of the variable.
 
-Errors 
+Errors
 ------
 
 NF\_INQ\_VAR\_CHUNKING returns the value NF\_NOERR if no errors
@@ -4946,7 +4943,7 @@ Possible return codes include:
  `NF_ENOTVAR`
 :   Can’t find this variable.
 
-Example 
+Example
 -------
 
 In this example from nf\_test/ftst\_vars.F, a variable with chunked
@@ -4964,7 +4961,7 @@ C     Is everything set that ispposed to be?
       if (chunks(2) .ne. chunks_in(2)) stop 2
 
 
-6.6 Set HDF5 Chunk Cache for a Variable: NF\_SET\_VAR\_CHUNK\_CACHE 
+6.6 Set HDF5 Chunk Cache for a Variable: NF\_SET\_VAR\_CHUNK\_CACHE
 -------------------------------------------------------------------
 
 This function changes the chunk cache settings for a variable. The
@@ -4975,13 +4972,13 @@ For more information, see the documentation for the H5Pset\_cache()
 function in the HDF5 library at the HDF5 website:
 [http://hdfgroup.org/HDF5/](http://hdfgroup.org/HDF5/).
 
-Usage 
+Usage
 -----
 
  
 
 
-NF_SET_VAR_CHUNK_CACHE(INTEGER NCID, INTEGER VARID, INTEGER SIZE, INTEGER NELEMS, 
+NF_SET_VAR_CHUNK_CACHE(INTEGER NCID, INTEGER VARID, INTEGER SIZE, INTEGER NELEMS,
                INTEGER PREEMPTION);
 
 
@@ -5012,7 +5009,7 @@ NF_SET_VAR_CHUNK_CACHE(INTEGER NCID, INTEGER VARID, INTEGER SIZE, INTEGER NELEMS
     other chunks. (The C API uses a float between 0 and 1 for this
     value).
 
-Return Codes 
+Return Codes
 ------------
 
  `NF_NOERR`
@@ -5021,7 +5018,7 @@ Return Codes
  `NF_EINVAL`
 :   Preemption must be between zero and 100 (inclusive).
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_vars2.F:
@@ -5037,12 +5034,12 @@ C     These will be used to set the per-variable chunk cache.
       parameter (CACHE_PREEMPTION = 42)
 ...
 C        Set variable caches.
-         retval = nf_set_var_chunk_cache(ncid, varid(i), CACHE_SIZE, 
+         retval = nf_set_var_chunk_cache(ncid, varid(i), CACHE_SIZE,
      &        CACHE_NELEMS, CACHE_PREEMPTION)
          if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-6.7 Get the HDF5 Chunk Cache Settings for a variable: NF\_GET\_VAR\_CHUNK\_CACHE 
+6.7 Get the HDF5 Chunk Cache Settings for a variable: NF\_GET\_VAR\_CHUNK\_CACHE
 --------------------------------------------------------------------------------
 
 This function gets the current chunk cache settings for a variable in a
@@ -5052,13 +5049,13 @@ For more information, see the documentation for the H5Pget\_cache()
 function in the HDF5 library at the HDF5 website:
 [http://hdfgroup.org/HDF5/](http://hdfgroup.org/HDF5/).
 
-Usage 
+Usage
 -----
 
  
 
 
-INTEGER NF_GET_VAR_CHUNK_CACHE(INTEGER NCID, INTEGER VARID, INTEGER SIZE, INTEGER NELEMS, 
+INTEGER NF_GET_VAR_CHUNK_CACHE(INTEGER NCID, INTEGER VARID, INTEGER SIZE, INTEGER NELEMS,
                                INTEGER PREEMPTION);
 
 
@@ -5084,13 +5081,13 @@ INTEGER NF_GET_VAR_CHUNK_CACHE(INTEGER NCID, INTEGER VARID, INTEGER SIZE, INTEGE
     is strictly LRU) while a value of 100 means fully read chunks are
     always preempted before other chunks.
 
-Return Codes 
+Return Codes
 ------------
 
  `NC_NOERR`
 :   No error.
 
-Example 
+Example
 -------
 
 This example is from nf\_test/ftst\_vars2.c:
@@ -5110,15 +5107,15 @@ C     cache.
       integer cache_size_in, cache_nelems_in, cache_preemption_in
 
 ...
-         retval = nf_get_var_chunk_cache(ncid, varid(i), cache_size_in, 
+         retval = nf_get_var_chunk_cache(ncid, varid(i), cache_size_in,
      &        cache_nelems_in, cache_preemption_in)
          if (retval .ne. nf_noerr) call handle_err(retval)
-         if (cache_size_in .ne. CACHE_SIZE .or. cache_nelems_in .ne. 
+         if (cache_size_in .ne. CACHE_SIZE .or. cache_nelems_in .ne.
      &        CACHE_NELEMS .or. cache_preemption .ne. CACHE_PREEMPTION)
      &        stop 8
 
 
-6.8 Define Fill Parameters for a Variable: `nf_def_var_fill` 
+6.8 Define Fill Parameters for a Variable: `nf_def_var_fill`
 ------------------------------------------------------------
 
 The function NF\_DEF\_VAR\_FILL sets the fill parameters for a variable
@@ -5127,7 +5124,7 @@ in a netCDF-4 file.
 This function must be called after the variable is defined, but before
 NF\_ENDDEF is called.
 
-Usage 
+Usage
 -----
 
  
@@ -5157,7 +5154,7 @@ NF_DEF_VAR_FILL(INTEGER NCID, INTEGER VARID, INTEGER NO_FILL, FILL_VALUE);
     \_FillValue attribute, created for this purpose. If NULL, this
     argument will be ignored.
 
-Return Codes 
+Return Codes
 ------------
 
  `NF_NOERR`
@@ -5187,16 +5184,16 @@ Return Codes
  `NF_EPERM`
 :   Attempt to create object in read-only file.
 
-Example 
+Example
 -------
 
-6.9 Learn About Fill Parameters for a Variable: `NF_INQ_VAR_FILL` 
+6.9 Learn About Fill Parameters for a Variable: `NF_INQ_VAR_FILL`
 -----------------------------------------------------------------
 
 The function NF\_INQ\_VAR\_FILL returns the fill settings for a variable
 in a netCDF-4 file.
 
-Usage 
+Usage
 -----
 
  
@@ -5219,7 +5216,7 @@ NF_INQ_VAR_FILL(INTEGER NCID, INTEGER VARID, INTEGER NO_FILL, FILL_VALUE)
 :   This will get the fill value for this variable. This parameter will
     be ignored if it is NULL.
 
-Return Codes 
+Return Codes
 ------------
 
  `NF_NOERR`
@@ -5234,10 +5231,10 @@ Return Codes
  `NF_ENOTVAR`
 :   Can’t find this variable.
 
-Example 
+Example
 -------
 
-6.10 Define Compression Parameters for a Variable: `NF_DEF_VAR_DEFLATE` 
+6.10 Define Compression Parameters for a Variable: `NF_DEF_VAR_DEFLATE`
 -----------------------------------------------------------------------
 
 The function NF\_DEF\_VAR\_DEFLATE sets the deflate parameters for a
@@ -5252,13 +5249,13 @@ exactly map the data to disk location.
 NF\_DEF\_VAR\_DEFLATE must be called after the variable is defined, but
 before NF\_ENDDEF is called.
 
-Usage 
+Usage
 -----
 
  
 
 
-NF_DEF_VAR_DEFLATE(INTEGER NCID, INTEGER VARID, INTEGER SHUFFLE, INTEGER DEFLATE, 
+NF_DEF_VAR_DEFLATE(INTEGER NCID, INTEGER VARID, INTEGER SHUFFLE, INTEGER DEFLATE,
                    INTEGER DEFLATE_LEVEL);
 
 
@@ -5288,7 +5285,7 @@ NF_DEF_VAR_DEFLATE(INTEGER NCID, INTEGER VARID, INTEGER SHUFFLE, INTEGER DEFLATE
     little to be gained (with the limited set of test data used here),
     in setting the deflate level above 2 or 3.
 
-Errors 
+Errors
 ------
 
 NF\_DEF\_VAR\_DEFLATE returns the value NF\_NOERR if no errors occurred.
@@ -5327,7 +5324,7 @@ Possible return codes include:
 :   Invalid deflate\_level. The deflate level must be between 0 and 9,
     inclusive.
 
-Example 
+Example
 -------
 
 In this example from nf\_test/ftst\_vars.F, a file is created with two
@@ -5347,7 +5344,7 @@ C     Define the dimensions.
       retval = nf_def_dim(ncid, "y", NY, y_dimid)
       if (retval .ne. nf_noerr) call handle_err(retval)
 
-C     Define the variable. 
+C     Define the variable.
       dimids(1) = y_dimid
       dimids(2) = x_dimid
       retval = NF_DEF_VAR(ncid, "data", NF_INT, NDIMS, dimids, varid)
@@ -5366,7 +5363,7 @@ C     Turn on deflate compression, fletcher32 checm.
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-6.11 Learn About Deflate Parameters for a Variable: `NF_INQ_VAR_DEFLATE` 
+6.11 Learn About Deflate Parameters for a Variable: `NF_INQ_VAR_DEFLATE`
 ------------------------------------------------------------------------
 
 The function NF\_INQ\_VAR\_DEFLATE returns the deflate settings for a
@@ -5375,13 +5372,13 @@ variable in a netCDF-4 file.
 It is not necessary to know the deflate settings to read the variable.
 (Deflate is completely transparent to readers of the data).
 
-Usage 
+Usage
 -----
 
  
 
 
-NF_INQ_VAR_DEFLATE(INTEGER NCID, INTEGER VARID, INTEGER SHUFFLE, 
+NF_INQ_VAR_DEFLATE(INTEGER NCID, INTEGER VARID, INTEGER SHUFFLE,
                    INTEGER DEFLATE, INTEGER DEFLATE_LEVEL);
 
 
@@ -5403,7 +5400,7 @@ NF_INQ_VAR_DEFLATE(INTEGER NCID, INTEGER VARID, INTEGER SHUFFLE,
 :   NF\_INQ\_VAR\_DEFLATE function will write the deflate\_level here,
     if deflate is in use.
 
-Errors 
+Errors
 ------
 
 NF\_INQ\_VAR\_DEFLATE returns the value NF\_NOERR if no errors occurred.
@@ -5423,7 +5420,7 @@ Possible return codes include:
  `NF_ENOTVAR`
 :   Can’t find this variable.
 
-Example 
+Example
 -------
 
 In this example code from nf\_test/ftst\_vars.F, a file with a variable
@@ -5433,14 +5430,14 @@ using deflate is opened, and the deflate level checked.
 
 
 C     Is everything set that ispposed to be?
-      retval = nf_inq_var_deflate(ncid, varid, shuffle, deflate, 
+      retval = nf_inq_var_deflate(ncid, varid, shuffle, deflate,
      +     deflate_level)
       if (retval .ne. nf_noerr) call handle_err(retval)
-      if (shuffle .ne. 0 .or. deflate .ne. 1 .or. 
+      if (shuffle .ne. 0 .or. deflate .ne. 1 .or.
      +     deflate_level .ne. 4) stop 2
 
 
-6.12 Learn About Szip Parameters for a Variable: `NF_INQ_VAR_SZIP` 
+6.12 Learn About Szip Parameters for a Variable: `NF_INQ_VAR_SZIP`
 ------------------------------------------------------------------
 
 The function NF\_INQ\_VAR\_SZIP returns the szip settings for a variable
@@ -5449,13 +5446,13 @@ in a netCDF-4 file.
 It is not necessary to know the szip settings to read the variable.
 (Szip is completely transparent to readers of the data).
 
-Usage 
+Usage
 -----
 
  
 
 
-NF_INQ_VAR_SZIP(INTEGER NCID, INTEGER VARID, INTEGER OPTION_MASK, 
+NF_INQ_VAR_SZIP(INTEGER NCID, INTEGER VARID, INTEGER OPTION_MASK,
                         PIXELS_PER_BLOCK);
 
 
@@ -5471,7 +5468,7 @@ NF_INQ_VAR_SZIP(INTEGER NCID, INTEGER VARID, INTEGER OPTION_MASK,
  `PIXELS_PER_BLOCK`
 :   The number of bits per pixel will be put here.
 
-Errors 
+Errors
 ------
 
 NF\_INQ\_VAR\_SZIP returns the value NF\_NOERR if no errors occurred.
@@ -5492,7 +5489,7 @@ Possible return codes include:
 :   Can’t find this variable.
 
 
-6.13 Define Checm Parameters for a Variable: `NF_DEF_VAR_FLETCHER32` 
+6.13 Define Checm Parameters for a Variable: `NF_DEF_VAR_FLETCHER32`
 -----------------------------------------------------------------------
 
 The function NF\_DEF\_VAR\_FLETCHER32 sets the checm property for a
@@ -5501,7 +5498,7 @@ variable in a netCDF-4 file.
 This function may only be called after the variable is defined, but
 before NF\_ENDDEF is called.
 
-Usage 
+Usage
 -----
 
  
@@ -5520,7 +5517,7 @@ NF_DEF_VAR_FLETCHER32(INTEGER NCID, INTEGER VARID, INTEGER CHECKSUM);
 :   If this is NF\_FLETCHER32, fletcher32 checms will be turned on
     for this variable.
 
-Errors 
+Errors
 ------
 
 NF\_DEF\_VAR\_FLETCHER32 returns the value NF\_NOERR if no errors
@@ -5555,7 +5552,7 @@ Possible return codes include:
  `NF_EPERM`
 :   Attempt to create object in read-only file.
 
-Example 
+Example
 -------
 
 In this example from nf\_test/ftst\_vars.F, the variable in a file has
@@ -5574,7 +5571,7 @@ C     Define the dimensions.
       retval = nf_def_dim(ncid, "y", NY, y_dimid)
       if (retval .ne. nf_noerr) call handle_err(retval)
 
-C     Define the variable. 
+C     Define the variable.
       dimids(1) = y_dimid
       dimids(2) = x_dimid
       retval = NF_DEF_VAR(ncid, "data", NF_INT, NDIMS, dimids, varid)
@@ -5594,13 +5591,13 @@ C     Turn on deflate compression, fletcher32 checms.
 
 
 
-6.14 Learn About Checm Parameters for a Variable: `NF_INQ_VAR_FLETCHER32` 
+6.14 Learn About Checm Parameters for a Variable: `NF_INQ_VAR_FLETCHER32`
 ----------------------------------------------------------------------------
 
 The function NF\_INQ\_VAR\_FLETCHER32 returns the checm settings for
 a variable in a netCDF-4 file.
 
-Usage 
+Usage
 -----
 
  
@@ -5620,7 +5617,7 @@ NF_INQ_VAR_FLETCHER32(INTEGER NCID, INTEGER VARID, INTEGER CHECKSUM);
     fletcher32 filter is turned on for this variable, and NF\_NOCHECKSUM
     if it is not.
 
-Errors 
+Errors
 ------
 
 NF\_INQ\_VAR\_FLETCHER32 returns the value NF\_NOERR if no errors
@@ -5640,7 +5637,7 @@ Possible return codes include:
  `NF_ENOTVAR`
 :   Can’t find this variable.
 
-Example 
+Example
 -------
 
 In this example from nf\_test/ftst\_vars.F the checm filter is
@@ -5655,7 +5652,7 @@ checm variable is set to NF\_FLETCHER32.
       if (checm .ne. NF_FLETCHER32) stop 2
 
 
-6.15 Define Endianness of a Variable: `NF_DEF_VAR_ENDIAN` 
+6.15 Define Endianness of a Variable: `NF_DEF_VAR_ENDIAN`
 ---------------------------------------------------------
 
 The function NF\_DEF\_VAR\_ENDIAN sets the endianness for a variable in
@@ -5671,7 +5668,7 @@ endian machine.
 In some cases a user might wish to change from native endianness to
 either big or little-endianness. This function allows them to do that.
 
-Usage 
+Usage
 -----
 
  
@@ -5691,7 +5688,7 @@ NF_DEF_VAR_ENDIAN(INTEGER NCID, INTEGER VARID, INTEGER ENDIAN)
     default). Set to NF\_ENDIAN\_LITTLE for little endian, or
     NF\_ENDIAN\_BIG for big endian.
 
-Errors 
+Errors
 ------
 
 NF\_DEF\_VAR\_ENDIAN returns the value NF\_NOERR if no errors occurred.
@@ -5726,7 +5723,7 @@ Possible return codes include:
  `NF_EPERM`
 :   Attempt to create object in read-only file.
 
-Example 
+Example
 -------
 
 In this example from nf\_test/ftst\_vars.c, a file is created with one
@@ -5745,7 +5742,7 @@ C     Define the dimensions.
       retval = nf_def_dim(ncid, "y", NY, y_dimid)
       if (retval .ne. nf_noerr) call handle_err(retval)
 
-C     Define the variable. 
+C     Define the variable.
       dimids(1) = y_dimid
       dimids(2) = x_dimid
       retval = NF_DEF_VAR(ncid, "data", NF_INT, NDIMS, dimids, varid)
@@ -5763,13 +5760,13 @@ C     writing machine).
       if (retval .ne. nf_noerr) call handle_err(retval)
 
 
-6.16 Learn About Endian Parameters for a Variable: `NF_INQ_VAR_ENDIAN` 
+6.16 Learn About Endian Parameters for a Variable: `NF_INQ_VAR_ENDIAN`
 ----------------------------------------------------------------------
 
 The function NF\_INQ\_VAR\_ENDIAN returns the endianness settings for a
 variable in a netCDF-4 file.
 
-Usage 
+Usage
 -----
 
  
@@ -5790,7 +5787,7 @@ NF_INQ_VAR_ENDIAN(INTEGER NCID, INTEGER VARID, INTEGER ENDIAN)
     stored in big-endian format, and NF\_ENDIAN\_NATIVE if the
     endianness is not set, and the variable is not created yet.
 
-Errors 
+Errors
 ------
 
 NF\_INQ\_VAR\_ENDIAN returns the value NF\_NOERR if no errors occurred.
@@ -5810,7 +5807,7 @@ Possible return codes include:
  `NF_ENOTVAR`
 :   Can’t find this variable.
 
-Example 
+Example
 -------
 
 In this example from nf\_test/ftst\_vars.F, the endianness of a variable
@@ -5825,19 +5822,19 @@ is checked to makere it is NF\_ENDIAN\_BIG.
 
 
 
-6.17 Get a Variable ID from Its Name: NF\_INQ\_VARID 
+6.17 Get a Variable ID from Its Name: NF\_INQ\_VARID
 ----------------------------------------------------
 
 The function NF\_INQ\_VARID returns the ID of a netCDF variable, given
 its name.
 
-Usage 
+Usage
 -----
 
  
 
 
-INTEGER FUNCTION NF_INQ_VARID(INTEGER NCID, CHARACTER*(*) NAME, 
+INTEGER FUNCTION NF_INQ_VARID(INTEGER NCID, CHARACTER*(*) NAME,
                               INTEGER varid)
 
 
@@ -5850,7 +5847,7 @@ INTEGER FUNCTION NF_INQ_VARID(INTEGER NCID, CHARACTER*(*) NAME,
  `varid`
 :   Returned variable ID.
 
-Errors 
+Errors
 ------
 
 NF\_INQ\_VARID returns the value NF\_NOERR if no errors occurred.
@@ -5861,7 +5858,7 @@ errors include:
     the specified netCDF dataset.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_INQ\_VARID to find out the ID of a variable
@@ -5871,18 +5868,18 @@ named rh in an existing netCDF dataset named foo.nc:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER  STATUS, NCID, RHID
-   ... 
+   ...
 STATUS = NF_OPEN ('foo.nc', NF_NOWRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID (NCID, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
 
-6.18 Get Information about a Variable from Its ID: NF\_INQ\_VAR family 
+6.18 Get Information about a Variable from Its ID: NF\_INQ\_VAR family
 ----------------------------------------------------------------------
 
 A family of functions that returns information about a netCDF variable,
@@ -5898,7 +5895,7 @@ information about a variable.
 These other functions include NF\_INQ\_VARNAME, NF\_INQ\_VARTYPE,
 NF\_INQ\_VARNDIMS, NF\_INQ\_VARDIMID, and NF\_INQ\_VARNATTS.
 
-Usage 
+Usage
 -----
 
  
@@ -5908,15 +5905,15 @@ INTEGER FUNCTION NF_INQ_VAR      (INTEGER NCID, INTEGER VARID,
                                   CHARACTER*(*) name, INTEGER xtype,
                                   INTEGER ndims, INTEGER dimids(*),
                                   INTEGER natts)
-INTEGER FUNCTION NF_INQ_VARNAME  (INTEGER NCID, INTEGER VARID, 
+INTEGER FUNCTION NF_INQ_VARNAME  (INTEGER NCID, INTEGER VARID,
                                   CHARACTER*(*) name)
-INTEGER FUNCTION NF_INQ_VARTYPE  (INTEGER NCID, INTEGER VARID, 
+INTEGER FUNCTION NF_INQ_VARTYPE  (INTEGER NCID, INTEGER VARID,
                                   INTEGER xtype)
-INTEGER FUNCTION NF_INQ_VARNDIMS (INTEGER NCID, INTEGER VARID, 
+INTEGER FUNCTION NF_INQ_VARNDIMS (INTEGER NCID, INTEGER VARID,
                                   INTEGER ndims)
-INTEGER FUNCTION NF_INQ_VARDIMID (INTEGER NCID, INTEGER VARID, 
+INTEGER FUNCTION NF_INQ_VARDIMID (INTEGER NCID, INTEGER VARID,
                                   INTEGER dimids(*))
-INTEGER FUNCTION NF_INQ_VARNATTS (INTEGER NCID, INTEGER VARID, 
+INTEGER FUNCTION NF_INQ_VARNATTS (INTEGER NCID, INTEGER VARID,
                                   INTEGER natts)
 
 
@@ -5959,7 +5956,7 @@ errors include:
 -   The variable ID is invalid for the specified netCDF dataset.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_INQ\_VAR to find out about a variable named
@@ -5969,7 +5966,7 @@ rh in an existing netCDF dataset named foo.nc:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER  STATUS, NCID
 INTEGER  RHID               ! variable ID
 CHARACTER*31 RHNAME         ! variable name
@@ -5977,17 +5974,17 @@ INTEGER  RHTYPE             ! variable type
 INTEGER  RHN                ! number of dimensions
 INTEGER  RHDIMS(NF_MAX_VAR_DIMS)   ! variable shape
 INTEGER  RHNATT                    ! number of attributes
-   ... 
+   ...
 STATUS = NF_OPEN ('foo.nc', NF_NOWRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID (NCID, 'rh', RHID)  ! get ID
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 STATUS = NF_INQ_VAR (NCID, RHID, RHNAME, RHTYPE, RHN, RHDIMS, RHNATT)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-6.19 Write a Single Data Value: NF\_PUT\_VAR1\_ type 
+6.19 Write a Single Data Value: NF\_PUT\_VAR1\_ type
 ----------------------------------------------------
 
 The functions NF\_PUT\_VAR1\_type (for various types) put a single data
@@ -5997,7 +5994,7 @@ index that specifies which value to add or alter, and the data value.
 The value is converted to the external data type of the variable, if
 necessary.
 
-Usage 
+Usage
 -----
 
  
@@ -6014,9 +6011,9 @@ INTEGER FUNCTION  NF_PUT_VAR1_INT (INTEGER NCID, INTEGER VARID,
 INTEGER FUNCTION  NF_PUT_VAR1_REAL(INTEGER NCID, INTEGER VARID,
                                    INTEGER INDEX(*), REAL      RVAL)
 INTEGER FUNCTION  NF_PUT_VAR1_DOUBLE(INTEGER NCID, INTEGER VARID,
-                                   INTEGER INDEX(*), DOUBLE    DVAL) 
+                                   INTEGER INDEX(*), DOUBLE    DVAL)
 INTEGER FUNCTION  NF_PUT_VAR1(INTEGER NCID, INTEGER VARID,
-                                   INTEGER INDEX(*), *) 
+                                   INTEGER INDEX(*), *)
 
 
  `NCID`
@@ -6044,7 +6041,7 @@ INTEGER FUNCTION  NF_PUT_VAR1(INTEGER NCID, INTEGER VARID,
     See [(netcdf)Type Conversion](netcdf.html#Type-Conversion)
     ‘Type Conversion’ in The NetCDF Users Guide.
 
-Errors 
+Errors
 ------
 
 NF\_PUT\_VAR1\_ type returns the value NF\_NOERR if no errors occurred.
@@ -6061,7 +6058,7 @@ errors include:
 -   The specified netCDF is in define mode rather than data mode.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_PUT\_VAR1\_DOUBLE to set the (4,3,2)
@@ -6075,23 +6072,23 @@ value, and the second time value:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER  STATUS             ! error status
 INTEGER  NCID
 INTEGER  RHID               ! variable ID
 INTEGER  RHINDX(3)          ! where to put value
 DATA RHINDX /4, 3, 2/
-   ... 
+   ...
 STATUS = NF_OPEN ('foo.nc', NF_WRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID (NCID, 'rh', RHID)  ! get ID
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 STATUS = NF_PUT_VAR1_DOUBLE (NCID, RHID, RHINDX, 0.5)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-6.20 Write an Entire Variable: NF\_PUT\_VAR\_ type 
+6.20 Write an Entire Variable: NF\_PUT\_VAR\_ type
 --------------------------------------------------
 
 The NF\_PUT\_VAR\_ type family of functions write all the values of a
@@ -6116,7 +6113,7 @@ NF\_PUT\_VARA\_type interfaces for variables that use the NF\_UNLIMITED
 dimension. See [Write an Array of Values: NF\_PUT\_VARA\_
 type](#NF_005fPUT_005fVARA_005f-type).
 
-Usage 
+Usage
 -----
 
  
@@ -6161,7 +6158,7 @@ INTEGER FUNCTION NF_PUT_VAR       (INTEGER NCID, INTEGER VARID,
     written into the specified variable is with the first dimension
     varying fastest (like the ordinary FORTRAN convention).
 
-Errors 
+Errors
 ------
 
 Members of the NF\_PUT\_VAR\_ type family return the value NF\_NOERR if
@@ -6177,7 +6174,7 @@ Possible causes of errors include:
     mode.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_PUT\_VAR\_DOUBLE to add or change all the
@@ -6190,15 +6187,15 @@ values and five lat values.
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 PARAMETER (LATS=5, LONS=10) ! dimension lengths
 INTEGER  STATUS, NCID
 INTEGER  RHID                        ! variable ID
 DOUBLE RHVALS(LONS, LATS)
-   ... 
+   ...
 STATUS = NF_OPEN ('foo.nc', NF_WRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID (NCID, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 DO 10 ILON = 1, LONS
@@ -6210,7 +6207,7 @@ IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
 
-6.21 Write an Array of Values: NF\_PUT\_VARA\_ type 
+6.21 Write an Array of Values: NF\_PUT\_VARA\_ type
 ---------------------------------------------------
 
 The function NF\_PUT\_VARA\_ type writes values into a netCDF variable
@@ -6221,7 +6218,7 @@ associated with the netCDF variable by aming that the first dimension
 of the netCDF variable varies fastest in the FORTRAN interface. The
 netCDF dataset must be in data mode.
 
-Usage 
+Usage
 -----
 
  
@@ -6244,10 +6241,10 @@ INTEGER FUNCTION NF_PUT_VARA_REAL(INTEGER NCID, INTEGER VARID,
                                   REAL RVALS(*))
 INTEGER FUNCTION NF_PUT_VARA_DOUBLE(INTEGER NCID, INTEGER VARID,
                                   INTEGER START(*), INTEGER COUNT(*),
-                                  DOUBLE DVALS(*)) 
+                                  DOUBLE DVALS(*))
 INTEGER FUNCTION NF_PUT_VARA     (INTEGER NCID, INTEGER VARID,
                                   INTEGER START(*), INTEGER COUNT(*),
-                                  VALS(*)) 
+                                  VALS(*))
 
 
  `NCID`
@@ -6294,7 +6291,7 @@ INTEGER FUNCTION NF_PUT_VARA     (INTEGER NCID, INTEGER VARID,
     Conversion](netcdf.html#Type-Conversion) ‘Type Conversion’
     in The NetCDF Users Guide).
 
-Errors 
+Errors
 ------
 
 NF\_PUT\_VARA\_ type returns the value NF\_NOERR if no errors occurred.
@@ -6316,7 +6313,7 @@ errors include:
     mode.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_PUT\_VARA\_DOUBLE to add or change all the
@@ -6329,7 +6326,7 @@ time values, five lat values, and ten lon values.
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 PARAMETER (NDIMS=3)         ! number of dimensions
 PARAMETER (TIMES=3, LATS=5, LONS=10) ! dimension lengths
 INTEGER  STATUS, NCID, TIMES
@@ -6338,10 +6335,10 @@ INTEGER  START(NDIMS), COUNT(NDIMS)
 DOUBLE RHVALS(LONS, LATS, TIMES)
 DATA START /1, 1, 1/        ! start at first value
 DATA COUNT /LONS, LATS, TIMES/
-   ... 
+   ...
 STATUS = NF_OPEN ('foo.nc', NF_WRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID (NCID, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 DO 10 ILON = 1, LONS
@@ -6354,7 +6351,7 @@ IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
 
-6.22 NF\_PUT\_VARS\_ type 
+6.22 NF\_PUT\_VARS\_ type
 -------------------------
 
 Each member of the family of functions NF\_PUT\_VARS\_ type writes a
@@ -6363,7 +6360,7 @@ an open netCDF dataset. Thebsampled array is specified by
 giving a corner, a vector of counts, and a stride vector. The netCDF
 dataset must be in data mode.
 
-Usage 
+Usage
 -----
 
  
@@ -6443,7 +6440,7 @@ INTEGER FUNCTION NF_PUT_VARS       (INTEGER NCID, INTEGER VARID,
     Conversion](netcdf.html#Type-Conversion) ‘Type Conversion’
     in The NetCDF Users Guide).
 
-Errors 
+Errors
 ------
 
 NF\_PUT\_VARS\_ type returns the value NF\_NOERR if no errors occurred.
@@ -6458,7 +6455,7 @@ errors include:
 -   The specified netCDF is in define mode rather than data mode.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example of using NF\_PUT\_VARS\_REAL to write – from an
@@ -6470,7 +6467,7 @@ the dimensions):
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 PARAMETER (NDIM=2)   ! rank of netCDF variable
 INTEGER NCID         ! netCDF dataset ID
 INTEGER STATUS       ! return code
@@ -6484,17 +6481,17 @@ DATA START   /1, 1/  ! start at first netCDF variable value
 DATA COUNT   /3, 2/  ! size of internal array: entire bsampled)
                      ! netCDF variable
 DATA STRIDE /2, 2/   ! access every other netCDF element
-   ... 
+   ...
 STATUS = NF_OPEN('foo.nc', NF_WRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID(NCID, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_PUT_VARS_REAL(NCID, RHID, START, COUNT, STRIDE, RH)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
-6.23 NF\_PUT\_VARM\_ type 
+6.23 NF\_PUT\_VARM\_ type
 -------------------------
 
 The NF\_PUT\_VARM\_ type family of functions writes a mapped array
@@ -6507,7 +6504,7 @@ internal data array. No amptions are made about the ordering or
 length of the dimensions of the data array. The netCDF dataset must be
 in data mode.
 
-Usage 
+Usage
 -----
 
  
@@ -6601,7 +6598,7 @@ INTEGER FUNCTION NF_PUT_VARM_DOUBLE(INTEGER NCID, INTEGER VARID,
     Conversion](netcdf.html#Type-Conversion) ‘Type Conversion’
     in The NetCDF Users Guide).
 
-Errors 
+Errors
 ------
 
 NF\_PUT\_VARM\_ type returns the value NF\_NOERR if no errors occurred.
@@ -6617,7 +6614,7 @@ errors include:
 -   The specified netCDF is in define mode rather than data mode.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 The following IMAP vector maps in the trivial way a 2x3x4 netCDF
@@ -6647,7 +6644,7 @@ order of the dimensions):
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 PARAMETER (NDIM=2)   ! rank of netCDF variable
 INTEGER NCID         ! netCDF ID
 INTEGER STATUS       ! return code
@@ -6665,10 +6662,10 @@ DATA IMAP   /6, 1/   ! would be /1, 4/ if not transposing
 
 STATUS = NF_OPEN('foo.nc', NF_WRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID(NCID, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_PUT_VARM_REAL(NCID, RHID, START, COUNT, STRIDE, IMAP, RH)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
@@ -6681,7 +6678,7 @@ writing every other point of the netCDF variable:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 PARAMETER (NDIM=2)   ! rank of netCDF variable
 INTEGER NCID         ! netCDF dataset ID
 INTEGER STATUS       ! return code
@@ -6696,18 +6693,18 @@ DATA COUNT   /2, 3/  ! order of bsampled) dimensions corresponds
                      ! to netCDF variable -- not internal array
 DATA STRIDE /2, 2/   ! sample every other netCDF element
 DATA IMAP   /3, 1/   ! would be `1, 2' if not transposing
-   ... 
+   ...
 STATUS = NF_OPEN('foo.nc', NF_WRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID(NCID, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_PUT_VARM_REAL(NCID, RHID, START, COUNT, STRIDE, IMAP, RH)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-6.24 NF\_GET\_VAR1\_ type 
+6.24 NF\_GET\_VAR1\_ type
 -------------------------
 
 The functions NF\_GET\_VAR1\_ type get a single data value from a
@@ -6717,7 +6714,7 @@ which value to get, and the address of a location into which the data
 value will be read. The value is converted from the external data type
 of the variable, if necessary.
 
-Usage 
+Usage
 -----
 
  
@@ -6734,9 +6731,9 @@ INTEGER FUNCTION  NF_GET_VAR1_INT (INTEGER NCID, INTEGER VARID,
 INTEGER FUNCTION  NF_GET_VAR1_REAL(INTEGER NCID, INTEGER VARID,
                                    INTEGER INDEX(*), REAL      RVAL)
 INTEGER FUNCTION  NF_GET_VAR1_DOUBLE(INTEGER NCID, INTEGER VARID,
-                                   INTEGER INDEX(*), DOUBLE    DVAL) 
+                                   INTEGER INDEX(*), DOUBLE    DVAL)
 INTEGER FUNCTION  NF_GET_VAR1(INTEGER NCID, INTEGER VARID,
-                                   INTEGER INDEX(*), VAL) 
+                                   INTEGER INDEX(*), VAL)
 
 
  `NCID`
@@ -6766,7 +6763,7 @@ INTEGER FUNCTION  NF_GET_VAR1(INTEGER NCID, INTEGER VARID,
     [(netcdf)Type Conversion](netcdf.html#Type-Conversion) ‘Type
     Conversion’ in The NetCDF Users Guide).
 
-Errors 
+Errors
 ------
 
 NF\_GET\_VAR1\_ type returns the value NF\_NOERR if no errors occurred.
@@ -6783,7 +6780,7 @@ errors include:
 -   The specified netCDF is in define mode rather than data mode.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_GET\_VAR1\_DOUBLE to get the (4,3,2)
@@ -6797,23 +6794,23 @@ the second time value:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER STATUS, NCID
 INTEGER RHID           ! variable ID
 INTEGER RHINDX(3)      ! where to get value
 DOUBLE PRECISION RHVAL ! put it here
 DATA RHINDX /4, 3, 2/
-   ... 
+   ...
 STATUS = NF_OPEN ('foo.nc', NF_NOWRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID (NCID, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 STATUS = NF_GET_VAR1_DOUBLE (NCID, RHID, RHINDX, RHVAL)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-6.25 NF\_GET\_VAR\_ type 
+6.25 NF\_GET\_VAR\_ type
 ------------------------
 
 The members of the NF\_GET\_VAR\_ type family of functions read all the
@@ -6833,7 +6830,7 @@ better to use the NF\_GET\_VARA\_type interfaces for variables that use
 the NF\_UNLIMITED dimension. See [NF\_GET\_VARA\_
 type](#NF_005fGET_005fVARA_005f-type).
 
-Usage 
+Usage
 -----
 
  
@@ -6876,7 +6873,7 @@ INTEGER FUNCTION NF_GET_VAR       (INTEGER NCID, INTEGER VARID,
     Conversion](netcdf.html#Type-Conversion) ‘Type Conversion’
     in The NetCDF Users Guide).
 
-Errors 
+Errors
 ------
 
 NF\_GET\_VAR\_ type returns the value NF\_NOERR if no errors occurred.
@@ -6889,7 +6886,7 @@ errors include:
 -   The specified netCDF is in define mode rather than data mode.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_GET\_VAR\_DOUBLE to read all the values of
@@ -6902,22 +6899,22 @@ lat values.
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 PARAMETER (LATS=5, LONS=10) ! dimension lengths
 INTEGER STATUS, NCID
 INTEGER RHID                         ! variable ID
 DOUBLE RHVALS(LONS, LATS)
-   ... 
+   ...
 STATUS = NF_OPEN ('foo.nc', NF_NOWRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID (NCID, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 STATUS = NF_GET_VAR_DOUBLE (NCID, RHID, RHVALS)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-6.26 NF\_GET\_VARA\_ type 
+6.26 NF\_GET\_VARA\_ type
 -------------------------
 
 The members of the NF\_GET\_VARA\_ type family of functions read an
@@ -6926,7 +6923,7 @@ array is specified by giving a corner and a vector of edge lengths. The
 values are read into consecutive locations with the first dimension
 varying fastest. The netCDF dataset must be in data mode.
 
-Usage 
+Usage
 -----
 
  
@@ -6995,7 +6992,7 @@ INTEGER FUNCTION NF_GET_VARA_DOUBLE(INTEGER NCID, INTEGER VARID,
     Conversion](netcdf.html#Type-Conversion) ‘Type Conversion’
     in The NetCDF Users Guide).
 
-Errors 
+Errors
 ------
 
 NF\_GET\_VARA\_ type returns the value NF\_NOERR if no errors occurred.
@@ -7016,7 +7013,7 @@ errors include:
 -   The specified netCDF is in define mode rather than data mode.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_GET\_VARA\_DOUBLE to read all the values of
@@ -7029,7 +7026,7 @@ five lat values, and three time values.
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 PARAMETER (NDIMS=3)                  ! number of dimensions
 PARAMETER (TIMES=3, LATS=5, LONS=10) ! dimension lengths
 INTEGER STATUS, NCID
@@ -7038,17 +7035,17 @@ INTEGER START(NDIMS), COUNT(NDIMS)
 DOUBLE RHVALS(LONS, LATS, TIMES)
 DATA START /1, 1, 1/                 ! start at first value
 DATA COUNT /LONS, LATS, TIMES/       ! get all the values
-   ... 
+   ...
 STATUS = NF_OPEN ('foo.nc', NF_NOWRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID (NCID, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 STATUS = NF_GET_VARA_DOUBLE (NCID, RHID, START, COUNT, RHVALS)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-6.27 NF\_GET\_VARS\_ type 
+6.27 NF\_GET\_VARS\_ type
 -------------------------
 
 The NF\_GET\_VARS\_ type family of functions read absampled (strided)
@@ -7058,7 +7055,7 @@ vector of edge lengths, and a stride vector. The values are read with
 the first dimension of the netCDF variable varying fastest. The netCDF
 dataset must be in data mode.
 
-Usage 
+Usage
 -----
 
  
@@ -7133,7 +7130,7 @@ INTEGER FUNCTION NF_GET_VARS_DOUBLE(INTEGER NCID, INTEGER VARID,
     Conversion](netcdf.html#Type-Conversion) ‘Type Conversion’
     in The NetCDF Users Guide).
 
-Errors 
+Errors
 ------
 
 NF\_GET\_VARS\_ type returns the value NF\_NOERR if no errors occurred.
@@ -7148,7 +7145,7 @@ errors include:
 -   The specified netCDF is in define mode rather than data mode.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_GET\_VARS\_DOUBLE to read every other value
@@ -7162,7 +7159,7 @@ that there are ten lon values, five lat values, and three time values.
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 PARAMETER (NDIMS=3)                  ! number of dimensions
 PARAMETER (TIMES=3, LATS=5, LONS=10) ! dimension lengths
 INTEGER STATUS, NCID
@@ -7172,17 +7169,17 @@ DOUBLE DATA(LONS, LATS, TIMES)
 DATA START /1, 1, 1/                 ! start at first value
 DATA COUNT /LONS, LATS, TIMES/
 DATA STRIDE /2, 2, 2/
-   ... 
+   ...
 STATUS = NF_OPEN ('foo.nc', NF_NOWRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID (NCID, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 STATUS = NF_GET_VARS_DOUBLE(NCID,RHID,START,COUNT,STRIDE,DATA(1,1,1))
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-6.28 NF\_GET\_VARM\_ type 
+6.28 NF\_GET\_VARM\_ type
 -------------------------
 
 The NF\_GET\_VARM\_ type family of functions reads a mapped array
@@ -7195,7 +7192,7 @@ internal data array. No amptions are made about the ordering or
 length of the dimensions of the data array. The netCDF dataset must be
 in data mode.
 
-Usage 
+Usage
 -----
 
  
@@ -7290,7 +7287,7 @@ INTEGER FUNCTION NF_GET_VARM_DOUBLE(INTEGER NCID, INTEGER VARID,
     Conversion](netcdf.html#Type-Conversion) ‘Type Conversion’
     in The NetCDF Users Guide).
 
-Errors 
+Errors
 ------
 
 NF\_GET\_VARM\_ type returns the value NF\_NOERR if no errors occurred.
@@ -7306,7 +7303,7 @@ errors include:
 -   The specified netCDF is in define mode rather than data mode.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 The following IMAP vector maps in the trivial way a 2x3x4 netCDF
@@ -7335,7 +7332,7 @@ RH(4,6) (note the size and order of the dimensions):
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 PARAMETER (NDIM=2)   ! rank of netCDF variable
 INTEGER NCID         ! netCDF dataset ID
 INTEGER STATUS       ! return code
@@ -7350,13 +7347,13 @@ DATA COUNT   /4, 6/  ! entire netCDF variable; order corresponds
                      ! to netCDF variable -- not internal array
 DATA STRIDE /1, 1/   ! sample every netCDF element
 DATA IMAP   /6, 1/   ! would be /1, 4/ if not transposing
-   ... 
+   ...
 STATUS = NF_OPEN('foo.nc', NF_NOWRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID(NCID, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_GET_VARM_REAL(NCID, RHID, START, COUNT, STRIDE, IMAP, RH)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
@@ -7369,7 +7366,7 @@ other point of the netCDF variable:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 PARAMETER (NDIM=2)   ! rank of netCDF variable
 INTEGER NCID         ! netCDF dataset ID
 INTEGER STATUS       ! return code
@@ -7384,18 +7381,18 @@ DATA COUNT   /2, 3/  ! order of bsampled) dimensions corresponds
                      ! to netCDF variable -- not internal array
 DATA STRIDE /2, 2/   ! sample every other netCDF element
 DATA IMAP   /3, 1/   ! would be `1, 2' if not transposing
-   ... 
+   ...
 STATUS = NF_OPEN('foo.nc', NF_NOWRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID(NCID, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_GET_VARM_REAL(NCID, RHID, START, COUNT, STRIDE, IMAP, RH)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-6.29 Reading and Writing Character String Values 
+6.29 Reading and Writing Character String Values
 ------------------------------------------------
 
 Character strings are not a primitive netCDF external data type, in part
@@ -7460,7 +7457,7 @@ already has an unlimited record dimension time.
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER   TDIMS, TXLEN
 PARAMETER (TDIMS=2)    ! number of TX dimensions
 PARAMETER (TXLEN = 15) ! length of example string
@@ -7472,27 +7469,27 @@ INTEGER  TXDIMS(TDIMS) ! variable shape
 INTEGER  TSTART(TDIMS), TCOUNT(TDIMS)
 CHARACTER*40 TXVAL     ! max length 40
 DATA TXVAL /'example string'/
-   ... 
+   ...
 TXVAL(TXLEN:TXLEN) = CHAR(0)   ! null terminate
-   ... 
+   ...
 STATUS = NF_OPEN('foo.nc', NF_WRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 STATUS = NF_REDEF(NCID)        ! enter define mode
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 ! define character-position dimension for strings of max length 40
 STATUS = NF_DEF_DIM(NCID, "chid", 40, CHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 ! define a character-string variable
 TXDIMS(1) = CHID   ! character-position dimension first
 TXDIMS(2) = TIMEID
 STATUS = NF_DEF_VAR(NCID, "tx", NF_CHAR, TDIMS, TXDIMS, TXID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_ENDDEF(NCID) ! leave define mode
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 ! write txval into tx netCDF variable in record 3
 TSTART(1) = 1      ! start at beginning of variable
 TSTART(2) = 3      ! record number to write
@@ -7502,7 +7499,7 @@ STATUS = NF_PUT_VARA_TEXT (NCID, TXID, TSTART, TCOUNT, TXVAL)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-6.30 Fill Values 
+6.30 Fill Values
 ----------------
 
 What happens when you try to read a value that was never written in an
@@ -7545,7 +7542,7 @@ errors may occur on writing or reading values from a larger type ch
 as double) to a smaller type ch as float), if the fill value for the
 larger type cannot be represented in the smaller type.
 
-6.31 NF\_RENAME\_VAR 
+6.31 NF\_RENAME\_VAR
 --------------------
 
 The function NF\_RENAME\_VAR changes the name of a netCDF variable in an
@@ -7553,7 +7550,7 @@ open netCDF dataset. If the new name is longer than the old name, the
 netCDF dataset must be in define mode. You cannot rename a variable to
 have the name of any existing variable.
 
-Usage 
+Usage
 -----
 
  
@@ -7572,7 +7569,7 @@ INTEGER FUNCTION NF_RENAME_VAR (INTEGER NCID, INTEGER VARID,
  `NAME`
 :   New name for the specified variable.
 
-Errors 
+Errors
 ------
 
 NF\_RENAME\_VAR returns the value NF\_NOERR if no errors occurred.
@@ -7583,7 +7580,7 @@ errors include:
 -   The variable ID is invalid for the specified netCDF dataset.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_RENAME\_VAR to rename the variable rh to
@@ -7593,13 +7590,13 @@ rel\_hum in an existing netCDF dataset named foo.nc:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER  STATUS, NCID
 INTEGER  RHID             ! variable ID
-   ... 
+   ...
 STATUS = NF_OPEN ('foo.nc', NF_WRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_REDEF (NCID)  ! enter definition mode
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 STATUS = NF_INQ_VARID (NCID, 'rh', RHID)
@@ -7611,7 +7608,7 @@ IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
 
-6.32 Change between Collective and Independent Parallel Access: NF\_VAR\_PAR\_ACCESS 
+6.32 Change between Collective and Independent Parallel Access: NF\_VAR\_PAR\_ACCESS
 ------------------------------------------------------------------------------------
 
 The function NF\_VAR\_PAR\_ACCESS changes whether read/write operations
@@ -7634,7 +7631,7 @@ a variable to collective lasts only as long as that file is open.
 The variable can be changed from collective to independent, and back, as
 often as desired.
 
-Usage 
+Usage
 -----
 
  
@@ -7655,7 +7652,7 @@ INTEGER NF_VAR_PAR_ACCESS(INTEGER NCID, INTEGER VARID, INTEGER ACCESS);
 :   NF\_INDEPENDENT to set this variable to independent operations.
     NF\_COLLECTIVE to set it to collective operations.
 
-Return Values 
+Return Values
 -------------
 
  `NF_NOERR`
@@ -7670,7 +7667,7 @@ Return Values
  `NF_NOPAR`
 :   File not opened for parallel access.
 
-Example 
+Example
 -------
 
 This example comes from test program nf\_test/ftst\_parallel.F. For this
@@ -7686,10 +7683,10 @@ netcdf.
 
 
 
-7. Attributes 
+7. Attributes
 =============
 
-7.1 Attributes Introduction 
+7.1 Attributes Introduction
 ---------------------------
 
 Attributes may be associated with each netCDF variable to specifych
@@ -7732,7 +7729,7 @@ Operationspported on attributes are:
 -   Rename an attribute.
 -   Delete an attribute.
 
-7.2 NF\_PUT\_ATT\_ type 
+7.2 NF\_PUT\_ATT\_ type
 -----------------------
 
 The function NF\_PUT\_ATT\_ type adds or changes a variable attribute or
@@ -7740,7 +7737,7 @@ global attribute of an open netCDF dataset. If this attribute is new, or
 if the space required to store the attribute is greater than before, the
 netCDF dataset must be in define mode.
 
-Usage 
+Usage
 -----
 
 Although it’s possible to create attributes of all types, text and
@@ -7812,7 +7809,7 @@ INTEGER FUNCTION  NF_PUT_ATT       (INTEGER NCID, INTEGER VARID,
     Conversion](netcdf.html#Type-Conversion) ‘Type Conversion’
     in The NetCDF Users Guide.
 
-Errors 
+Errors
 ------
 
 NF\_PUT\_ATT\_ type returns the value NF\_NOERR if no errors occurred.
@@ -7829,7 +7826,7 @@ errors include:
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 -   The number of attributes for this variable exceeds NF\_MAX\_ATTRS.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_PUT\_ATT\_DOUBLE to add a variable
@@ -7840,32 +7837,32 @@ attribute named title to an existing netCDF dataset named foo.nc:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER STATUS, NCID
 INTEGER RHID                 ! variable ID
 DOUBLE RHRNGE(2)
 DATA RHRNGE /0.0D0, 100.0D0/
-   ... 
+   ...
 STATUS = NF_OPEN ('foo.nc', NF_WRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_REDEF (NCID)     ! enter define mode
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 STATUS = NF_INQ_VARID (NCID, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_PUT_ATT_DOUBLE (NCID, RHID, 'valid_range', NF_DOUBLE, &
                             2, RHRNGE)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-STATUS = NF_PUT_ATT_TEXT (NCID, NF_GLOBAL, 'title', 19, 
+STATUS = NF_PUT_ATT_TEXT (NCID, NF_GLOBAL, 'title', 19,
                           'example netCDF dataset')
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_ENDDEF (NCID)    ! leave define mode
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-7.3 NF\_INQ\_ATT Family 
+7.3 NF\_INQ\_ATT Family
 -----------------------
 
 This family of functions returns information about a netCDF attribute.
@@ -7887,7 +7884,7 @@ The function NF\_INQ\_ATT returns the attribute’s type and length. The
 other functions each return just one item of information about an
 attribute.
 
-Usage 
+Usage
 -----
 
  
@@ -7938,7 +7935,7 @@ INTEGER FUNCTION NF_INQ_ATTID  (INTEGER NCID, INTEGER VARID,
     very useful, because accessing information about an attribute
     requires its name.)
 
-Errors 
+Errors
 ------
 
 Each function returns the value NF\_NOERR if no errors occurred.
@@ -7952,7 +7949,7 @@ errors include:
     more than the number of attributes defined for the specified
     variable.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_INQ\_ATT to find out the type and length of
@@ -7964,30 +7961,30 @@ foo.nc:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER STATUS, NCID
 INTEGER RHID               ! variable ID
 INTEGER VRLEN, TLEN        ! attribute lengths
-   ... 
+   ...
 STATUS = NF_OPEN ('foo.nc', NF_NOWRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID (NCID, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_ATTLEN (NCID, RHID, 'valid_range', VRLEN)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 STATUS = NF_INQ_ATTLEN (NCID, NF_GLOBAL, 'title', TLEN)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-7.4 NF\_GET\_ATT\_ type 
+7.4 NF\_GET\_ATT\_ type
 -----------------------
 
 Members of the NF\_GET\_ATT\_ type family of functions get the value(s)
 of a netCDF attribute, given its variable ID and name.
 
-Usage 
+Usage
 -----
 
  
@@ -8042,7 +8039,7 @@ INTEGER FUNCTION NF_GET_ATT        (INTEGER NCID, INTEGER VARID,
     Conversion](netcdf.html#Type-Conversion) ‘Type Conversion’
     in The The NetCDF Users Guide.
 
-Errors 
+Errors
 ------
 
 NF\_GET\_ATT\_ type returns the value NF\_NOERR if no errors occurred.
@@ -8055,7 +8052,7 @@ errors include:
 -   One or more of the attribute values are out of the range of values
     representable by the desired type.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_GET\_ATT\_DOUBLE to determine the values of
@@ -8070,7 +8067,7 @@ inquire about the length of the attributes.
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 PARAMETER (MVRLEN=3)           ! max number of "valid_range" values
 PARAMETER (MTLEN=80)           ! max length of "title" attribute
 INTEGER STATUS, NCID
@@ -8078,13 +8075,13 @@ INTEGER RHID                   ! variable ID
 INTEGER VRLEN, TLEN            ! attribute lengths
 DOUBLE PRECISION VRVAL(MVRLEN) ! vr attribute values
 CHARACTER*80 TITLE             ! title attribute values
-   ... 
+   ...
 STATUS = NF_OPEN ('foo.nc', NF_WRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID (NCID, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 ! find out attribute lengths, to makere we have enough space
 STATUS = NF_INQ_ATTLEN (NCID, RHID, 'valid_range', VRLEN)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
@@ -8107,7 +8104,7 @@ ELSE
 ENDIF
 
 
-7.5 NF\_COPY\_ATT 
+7.5 NF\_COPY\_ATT
 -----------------
 
 The function NF\_COPY\_ATT copies an attribute from one open netCDF
@@ -8121,7 +8118,7 @@ ncid\_out if they are in define mode. (This is the ere that all
 user-defined types are committed to the file(s) before the copy is
 attempted.)
 
-Usage 
+Usage
 -----
 
  
@@ -8156,7 +8153,7 @@ INTEGER FUNCTION NF_COPY_ATT (INTEGER NCID_IN, INTEGER VARID_IN,
     attribute will be copied, or NF\_GLOBAL to copy to a global
     attribute.
 
-Errors 
+Errors
 ------
 
 NF\_COPY\_ATT returns the value NF\_NOERR if no errors occurred.
@@ -8171,7 +8168,7 @@ errors include:
 -   The input or output netCDF ID does not refer to an open netCDF
     dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_COPY\_ATT to copy the variable attribute
@@ -8184,32 +8181,32 @@ units attribute:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER STATUS             ! error status
 INTEGER NCID1, NCID2       ! netCDF IDs
 INTEGER RHID, AVRHID       ! variable IDs
-   ... 
+   ...
 STATUS = NF_OPEN ('foo.nc', NF_NOWRITE, NCID1)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 STATUS = NF_OPEN ('bar.nc', NF_WRITE, NCID2)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID (NCID1, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 STATUS = NF_INQ_VARID (NCID2, 'avgrh', AVRHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_REDEF (NCID2)  ! enter define mode
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 ! copy variable attribute from "rh" to "avgrh"
 STATUS = NF_COPY_ATT (NCID1, RHID, 'units', NCID2, AVRHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_ENDDEF (NCID2) ! leave define mode
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-7.6 NF\_RENAME\_ATT 
+7.6 NF\_RENAME\_ATT
 -------------------
 
 The function NF\_RENAME\_ATT changes the name of an attribute. If the
@@ -8217,7 +8214,7 @@ new name is longer than the original name, the netCDF dataset must be in
 define mode. You cannot rename an attribute to have the same name as
 another attribute of the same variable.
 
-Usage 
+Usage
 -----
 
  
@@ -8242,7 +8239,7 @@ INTEGER FUNCTION NF_RENAME_ATT (INTEGER NCID, INTEGER VARID,
     name is longer than the current name, the netCDF dataset must be in
     define mode.
 
-Errors 
+Errors
 ------
 
 NF\_RENAME\_ATT returns the value NF\_NOERR if no errors occurred.
@@ -8257,7 +8254,7 @@ errors include:
 -   The specified attribute does not exist.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_RENAME\_ATT to rename the variable
@@ -8268,29 +8265,29 @@ named foo.nc:
 
 
 INCLUDE "netcdf.inc"
-   ... 
+   ...
 INTEGER STATUS   ! error status
 INTEGER NCID     ! netCDF ID
 INTEGER RHID     ! variable ID
-   ... 
+   ...
 STATUS = NF_OPEN ("foo.nc", NF_NOWRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID (NCID, "rh", RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 ! rename attribute
 STATUS = NF_RENAME_ATT (NCID, RHID, "units", "Units")
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
 
 
-7.7 NF\_DEL\_ATT 
+7.7 NF\_DEL\_ATT
 ----------------
 
 The function NF\_DEL\_ATT deletes a netCDF attribute from an open netCDF
 dataset. The netCDF dataset must be in define mode.
 
-Usage 
+Usage
 -----
 
 INTEGER FUNCTION NF\_DEL\_ATT (INTEGER NCID, INTEGER VARID,
@@ -8306,7 +8303,7 @@ CHARACTER\*(\*) NAME)
  `NAME`
 :   The name of the attribute to be deleted.
 
-Errors 
+Errors
 ------
 
 NF\_DEL\_ATT returns the value NF\_NOERR if no errors occurred.
@@ -8318,7 +8315,7 @@ errors include:
 -   The specified attribute does not exist.
 -   The specified netCDF ID does not refer to an open netCDF dataset.
 
-Example 
+Example
 -------
 
 Here is an example using NF\_DEL\_ATT to delete the variable attribute
@@ -8328,17 +8325,17 @@ Units for a variable rh in an existing netCDF dataset named foo.nc:
 
 
 INCLUDE 'netcdf.inc'
-   ... 
+   ...
 INTEGER STATUS            ! error status
 INTEGER NCID              ! netCDF ID
 INTEGER RHID              ! variable ID
-   ... 
+   ...
 STATUS = NF_OPEN ('foo.nc', NF_WRITE, NCID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 STATUS = NF_INQ_VARID (NCID, 'rh', RHID)
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
-   ... 
+   ...
 ! delete attribute
 STATUS = NF_REDEF (NCID)  ! enter define mode
 IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
@@ -8595,9 +8592,9 @@ INTEGER FUNCTION  NF_INQ_DIMNAME    (NCID, DIMID, name)
 INTEGER FUNCTION  NF_INQ_DIMLEN     (NCID, DIMID, len)
 INTEGER FUNCTION  NF_RENAME_DIM     (NCID, DIMID, NAME)
 
-INTEGER FUNCTION  NF_DEF_VAR        (NCID, NAME, XTYPE, NDIMS, DIMIDS, 
+INTEGER FUNCTION  NF_DEF_VAR        (NCID, NAME, XTYPE, NDIMS, DIMIDS,
                                      varid)
-INTEGER FUNCTION  NF_INQ_VAR        (NCID, VARID, name, xtype, ndims, 
+INTEGER FUNCTION  NF_INQ_VAR        (NCID, VARID, name, xtype, ndims,
                                      dimids, natts)
 INTEGER FUNCTION  NF_INQ_VARID      (NCID, NAME, varid)
 INTEGER FUNCTION  NF_INQ_VARNAME    (NCID, VARID, name)
@@ -8777,7 +8774,7 @@ INTEGER       VARID        ! variable ID
 INTEGER       varid        ! returned variable ID
 INTEGER       VARID_IN     ! variable ID
 INTEGER       VARID_OUT    ! variable ID
-INTEGER       XTYPE        ! external type: NF_BYTE, NF_CHAR, ... , 
+INTEGER       XTYPE        ! external type: NF_BYTE, NF_CHAR, ... ,
 INTEGER       xtype        ! returned external type
 
-~~~~
\ No newline at end of file
+~~~~
diff --git a/docs/netcdf-f90-sec1-usage.md b/docs/netcdf-f90-sec1-usage.md
new file mode 100644
index 0000000..81905f5
--- /dev/null
+++ b/docs/netcdf-f90-sec1-usage.md
@@ -0,0 +1,438 @@
+
+1 Use of the NetCDF Library {#f90-use-of-the-netcdf-library}
+=====================
+
+[TOC]
+
+In this chapter we provide templates of common sequences of netCDF calls
+needed for common uses. For clarity we present only the names of
+routines; omit declarations and error checking; omit the type-specific
+suffixes of routine names for variables and attributes; indent
+statements that are typically invoked multiple times; and use ... to
+represent arbitrary sequences of other statements. Full parameter lists
+are described in later chapters.
+
+1.1 Creating a NetCDF Dataset {#f90-creating-a-netcdf-dataset}
+=====================
+
+Here is a typical sequence of netCDF calls used to create a new netCDF
+dataset:
+
+~~~~.fortran
+
+
+     NF90_CREATE           ! create netCDF dataset: enter define mode
+          ...
+        NF90_DEF_DIM       ! define dimensions: from name and length
+          ...
+        NF90_DEF_VAR       ! define variables: from name, type, dims
+          ...
+        NF90_PUT_ATT       ! assign attribute values
+          ...
+     NF90_ENDDEF           ! end definitions: leave define mode
+          ...
+        NF90_PUT_VAR       ! provide values for variable
+          ...
+     NF90_CLOSE            ! close: save new netCDF dataset
+
+~~~~
+
+
+Only one call is needed to create a netCDF dataset, at which point you
+will be in the first of two netCDF modes. When accessing an open netCDF
+dataset, it is either in define mode or data mode. In define mode, you
+can create dimensions, variables, and new attributes, but you cannot
+read or write variable data. In data mode, you can access data and
+change existing attributes, but you are not permitted to create new
+dimensions, variables, or attributes.
+
+One call to NF90\_DEF\_DIM is needed for each dimension created.
+Similarly, one call to NF90\_DEF\_VAR is needed for each variable
+creation, and one call to a member of the NF90\_PUT\_ATT family is
+needed for each attribute defined and assigned a value. To leave define
+mode and enter data mode, call NF90\_ENDDEF.
+
+Once in data mode, you can add new data to variables, change old values,
+and change values of existing attributes (so long as the attribute
+changes do not require more storage space). Data of all types is written
+to a netCDF variable using the NF90\_PUT\_VAR subroutine. Single values,
+arrays, or array sections may be supplied to NF90\_PUT\_VAR; optional
+arguments allow the writing of subsampled or mapped portions of the
+variable. (Subsampled and mapped access are general forms of data access
+that are explained later.)
+
+Finally, you should explicitly close all netCDF datasets that have been
+opened for writing by calling NF90\_CLOSE. By default, access to the
+file system is buffered by the netCDF library. If a program terminates
+abnormally with netCDF datasets open for writing, your most recent
+modifications may be lost. This default buffering of data is disabled by
+setting the NF90\_SHARE flag when opening the dataset. But even if this
+flag is set, changes to attribute values or changes made in define mode
+are not written out until NF90\_SYNC or NF90\_CLOSE is called.
+
+1.2 Reading a NetCDF Dataset with Known Names {#f90-reading-a-netcdf-dataset-with-known-names}
+=====================
+Here we consider the case where you know the names of not only the
+netCDF datasets, but also the names of their dimensions, variables, and
+attributes. (Otherwise you would have to do "inquire" calls.) The order
+of typical C calls to read data from those variables in a netCDF dataset
+is:
+
+~~~~.fortran
+
+
+
+
+     NF90_OPEN               ! open existing netCDF dataset
+          ...
+        NF90_INQ_DIMID       ! get dimension IDs
+          ...
+        NF90_INQ_VARID       ! get variable IDs
+          ...
+        NF90_GET_ATT         ! get attribute values
+          ...
+        NF90_GET_VAR         ! get values of variables
+          ...
+     NF90_CLOSE              ! close netCDF dataset
+
+
+
+~~~~
+
+
+First, a single call opens the netCDF dataset, given the dataset name,
+and returns a netCDF ID that is used to refer to the open netCDF dataset
+in all subsequent calls.
+
+Next, a call to NF90\_INQ\_DIMID for each dimension of interest gets the
+dimension ID from the dimension name. Similarly, each required variable
+ID is determined from its name by a call to NF90\_INQ\_VARID. Once
+variable IDs are known, variable attribute values can be retrieved using
+the netCDF ID, the variable ID, and the desired attribute name as input
+to NF90\_GET\_ATT for each desired attribute. Variable data values can
+be directly accessed from the netCDF dataset with calls to
+NF90\_GET\_VAR.
+
+Finally, the netCDF dataset is closed with NF90\_CLOSE. There is no need
+to close a dataset open only for reading.
+
+1.3 Reading a netCDF Dataset with Unknown Names {#f90-reading-a-netcdf-dataset-with-unknown-names}
+=====================
+
+It is possible to write programs (e.g., generic software) which do such
+things as processing every variable, without needing to know in advance
+the names of these variables. Similarly, the names of dimensions and
+attributes may be unknown.
+
+Names and other information about netCDF objects may be obtained from
+netCDF datasets by calling inquire functions. These return information
+about a whole netCDF dataset, a dimension, a variable, or an attribute.
+The following template illustrates how they are used:
+
+
+
+~~~~.fortran
+
+     NF90_OPEN                 ! open existing netCDF dataset
+       ...
+     NF90_INQUIRE              ! find out what is in it
+          ...
+        NF90_INQUIRE_DIMENSION ! get dimension names, lengths
+          ...
+        NF90_INQUIRE_VARIABLE  ! get variable names, types, shapes
+             ...
+           NF90_INQ_ATTNAME    ! get attribute names
+             ...
+           NF90_INQUIRE_ATTRIBUTE ! get other attribute information
+             ...
+           NF90_GET_ATT        ! get attribute values
+             ...
+        NF90_GET_VAR           ! get values of variables
+          ...
+     NF90_CLOSE                ! close netCDF dataset
+
+
+~~~~
+
+
+As in the previous example, a single call opens the existing netCDF
+dataset, returning a netCDF ID. This netCDF ID is given to the
+NF90\_INQUIRE routine, which returns the number of dimensions, the
+number of variables, the number of global attributes, and the ID of the
+unlimited dimension, if there is one.
+
+All the inquire functions are inexpensive to use and require no I/O,
+since the information they provide is stored in memory when a netCDF
+dataset is first opened.
+
+Dimension IDs use consecutive integers, beginning at 1. Also dimensions,
+once created, cannot be deleted. Therefore, knowing the number of
+dimension IDs in a netCDF dataset means knowing all the dimension IDs:
+they are the integers 1, 2, 3, ...up to the number of dimensions. For
+each dimension ID, a call to the inquire function
+NF90\_INQUIRE\_DIMENSION returns the dimension name and length.
+
+Variable IDs are also assigned from consecutive integers 1, 2, 3, ... up
+to the number of variables. These can be used in NF90\_INQUIRE\_VARIABLE
+calls to find out the names, types, shapes, and the number of attributes
+assigned to each variable.
+
+Once the number of attributes for a variable is known, successive calls
+to NF90\_INQ\_ATTNAME return the name for each attribute given the
+netCDF ID, variable ID, and attribute number. Armed with the attribute
+name, a call to NF90\_INQUIRE\_ATTRIBUTE returns its type and length.
+Given the type and length, you can allocate enough space to hold the
+attribute values. Then a call to NF90\_GET\_ATT returns the attribute
+values.
+
+Once the IDs and shapes of netCDF variables are known, data values can
+be accessed by calling NF90\_GET\_VAR.
+
+
+1.4 Writing Data in an Existing NetCDF Dataset {#f90-writing-data-in-an-existing-netcdf-dataset}
+=====================
+
+With write access to an existing netCDF dataset, you can overwrite data
+values in existing variables or append more data to record variables
+along the unlimited (record) dimension. To append more data to
+non-record variables requires changing the shape of such variables,
+which means creating a new netCDF dataset, defining new variables with
+the desired shape, and copying data. The netCDF data model was not
+designed to make such "schema changes" efficient or easy, so it is best
+to specify the shapes of variables correctly when you create a netCDF
+dataset, and to anticipate which variables will later grow by using the
+unlimited dimension in their definition.
+
+The following code template lists a typical sequence of calls to
+overwrite some existing values and add some new records to record
+variables in an existing netCDF dataset with known variable names:
+
+
+~~~~.fortran
+
+
+     NF90_OPEN             ! open existing netCDF dataset
+       ...
+       NF90_INQ_VARID      ! get variable IDs
+       ...
+       NF90_PUT_VAR        ! provide new values for variables, if any
+       ...
+       NF90_PUT_ATT        ! provide new values for attributes, if any
+         ...
+     NF90_CLOSE            ! close netCDF dataset
+
+
+
+~~~~
+
+A netCDF dataset is first opened by the NF90\_OPEN call. This call puts
+the open dataset in data mode, which means existing data values can be
+accessed and changed, existing attributes can be changed, but no new
+dimensions, variables, or attributes can be added.
+
+Next, calls to NF90\_INQ\_VARID get the variable ID from the name, for
+each variable you want to write. Then each call to NF90\_PUT\_VAR writes
+data into a specified variable, either a single value at a time, or a
+whole set of values at a time, depending on which variant of the
+interface is used. The calls used to overwrite values of non-record
+variables are the same as are used to overwrite values of record
+variables or append new data to record variables. The difference is
+that, with record variables, the record dimension is extended by writing
+values that don’t yet exist in the dataset. This extends all record
+variables at once, writing "fill values" for record variables for which
+the data has not yet been written (but see section [Fill
+Values](#Fill-Values) to specify different behavior).
+
+Calls to NF90\_PUT\_ATT may be used to change the values of existing
+attributes, although data that changes after a file is created is
+typically stored in variables rather than attributes.
+
+Finally, you should explicitly close any netCDF datasets into which data
+has been written by calling NF90\_CLOSE before program termination.
+Otherwise, modifications to the dataset may be lost.
+
+1.5 Adding New Dimensions, Variables, Attributes {#f90-adding-new-dimensions-variables-attributes}
+=====================
+
+An existing netCDF dataset can be extensively altered. New dimensions,
+variables, and attributes can be added or existing ones renamed, and
+existing attributes can be deleted. Existing dimensions, variables, and
+attributes can be renamed. The following code template lists a typical
+sequence of calls to add new netCDF components to an existing dataset:
+
+
+~~~~.fortran
+
+
+     NF90_OPEN             ! open existing netCDF dataset
+       ...
+     NF90_REDEF            ! put it into define mode
+         ...
+       NF90_DEF_DIM        ! define additional dimensions (if any)
+         ...
+       NF90_DEF_VAR        ! define additional variables (if any)
+         ...
+       NF90_PUT_ATT        ! define other attributes (if any)
+         ...
+     NF90_ENDDEF           ! check definitions, leave define mode
+         ...
+       NF90_PUT_VAR        ! provide new variable values
+         ...
+     NF90_CLOSE            ! close netCDF dataset
+
+
+~~~~
+
+
+A netCDF dataset is first opened by the NF90\_OPEN call. This call puts
+the open dataset in data mode, which means existing data values can be
+accessed and changed, existing attributes can be changed (so long as
+they do not grow), but nothing can be added. To add new netCDF
+dimensions, variables, or attributes you must enter define mode, by
+calling NF90\_REDEF. In define mode, call NF90\_DEF\_DIM to define new
+dimensions, NF90\_DEF\_VAR to define new variables, and NF90\_PUT\_ATT
+to assign new attributes to variables or enlarge old attributes.
+
+You can leave define mode and reenter data mode, checking all the new
+definitions for consistency and committing the changes to disk, by
+calling NF90\_ENDDEF. If you do not wish to reenter data mode, just call
+NF90\_CLOSE, which will have the effect of first calling NF90\_ENDDEF.
+
+Until the NF90\_ENDDEF call, you may back out of all the redefinitions
+made in define mode and restore the previous state of the netCDF dataset
+by calling NF90\_ABORT. You may also use the NF90\_ABORT call to restore
+the netCDF dataset to a consistent state if the call to NF90\_ENDDEF
+fails. If you have called NF90\_CLOSE from definition mode and the
+implied call to NF90\_ENDDEF fails, NF90\_ABORT will automatically be
+called to close the netCDF dataset and leave it in its previous
+consistent state (before you entered define mode).
+
+At most one process should have a netCDF dataset open for writing at one
+time. The library is designed to provide limited support for multiple
+concurrent readers with one writer, via disciplined use of the
+NF90\_SYNC function and the NF90\_SHARE flag. If a writer makes changes
+in define mode, such as the addition of new variables, dimensions, or
+attributes, some means external to the library is necessary to prevent
+readers from making concurrent accesses and to inform readers to call
+NF90\_SYNC before the next access.
+
+
+1.6 Error Handling {#f90-error-handling}
+=====================
+
+The netCDF library provides the facilities needed to handle errors in a
+flexible way. Each netCDF function returns an integer status value. If
+the returned status value indicates an error, you may handle it in any
+way desired, from printing an associated error message and exiting to
+ignoring the error indication and proceeding (not recommended!). For
+simplicity, the examples in this guide check the error status and call a
+separate function to handle any errors.
+
+The NF90\_STRERROR function is available to convert a returned integer
+error status into an error message string.
+
+Occasionally, low-level I/O errors may occur in a layer below the netCDF
+library. For example, if a write operation causes you to exceed disk
+quotas or to attempt to write to a device that is no longer available,
+you may get an error from a layer below the netCDF library, but the
+resulting write error will still be reflected in the returned status
+value.
+
+1.7 Compiling and Linking with the NetCDF Library {#f90-compiling-and-linking-with-the-netcdf-library}
+=====================
+Details of how to compile and link a program that uses the netCDF C or
+Fortran interfaces differ, depending on the operating system, the
+available compilers, and where the netCDF library and include files are
+installed. Nevertheless, we provide here examples of how to compile and
+link a program that uses the netCDF library on a Unix platform, so that
+you can adjust these examples to fit your installation.
+
+Every Fortran 90 procedure or module which references netCDF constants
+or procedures must have access to the module information created when
+the netCDF module was compiled. The suffix for this file is “MOD” (or
+sometimes “mod”).
+
+Most F90 compilers allow the user to specify the location of .MOD files,
+usually with the -I flag.
+
+
+
+
+    $ f90 -c -I/usr/local/include mymodule.f90
+
+
+
+
+Starting with version 3.6.2, another method of building the netCDF
+fortran libraries became available. With the –enable-separate-fortran
+option to configure, the user can specify that the C library should not
+contain the fortran functions. In these cases an additional library,
+libnetcdff.a (note the extra “f”) will be built. This library contains
+the Fortran functions. Since verion 4.1.3, the netCDF Fortran software
+and library is always distinct from the netCDF C library, but depends on
+it. If it is installed as a shared library, you need only use
+‘-lnetcdff’ to specify the Fortran library for linking.
+
+For more information about configure options, See [Specifying the
+Environment for Building](netcdf-install.html#Specifying-the-Environment-for-Building)
+in {No value for ‘i-man’}.
+
+If installed as a shared library, link, using something like:
+
+
+
+
+    $ f90 -o myprogram myprogram.o -L/usr/local/lib -lnetcdff
+
+
+
+
+If installed as a static library, you will at least need to mention the
+netCDF C library and perhaps other libraries, such as hdf5 or curl,
+depending on how the C library was built. For example:
+
+
+
+
+    $ f90 -o myprogram myprogram.o -L/usr/local/lib -lnetcdff -lnetcdf
+
+
+
+
+Use of the nf-config utility program, installed as part of the
+netcdf-fortran software, provides an easier way to compile and link,
+without needing to know the details of where the library has been
+installed, or whether it is installed as a shared or static library.
+
+To see all the options for ‘nf-config’, invoke it with the ‘–help’
+argument.
+
+Here’s an example of how you could use ‘nf-config’ to compile and link a
+Fortran program in one step:
+
+
+
+
+    $ f90 myprogram.f90 -o myprogram `nf-config --fflags --flibs`
+
+
+
+
+If it is installed on your system, you could also use the ‘pkg-config’
+utility to compile and link Fortran programs with the netCDF libraries.
+This is especially useful in Makefiles, to insulate them from changes to
+library versions and dependencies. Here is an example of how you could
+compile and link a Fortran program with netCDF libraries using
+pkg-config:
+
+
+
+
+    $ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
+    $ f90 myprogram.f90 -o myprogram `pkg-config --cflags --libs netcdf-fortran`
+
+
+
+
+where here ‘–cflags’ means compiler flags and ‘libs’ requests that the
+approriate libraries be linked in.
diff --git a/docs/netcdf-f90-sec2-datasets.md b/docs/netcdf-f90-sec2-datasets.md
new file mode 100644
index 0000000..4eeb9a5
--- /dev/null
+++ b/docs/netcdf-f90-sec2-datasets.md
@@ -0,0 +1,1193 @@
+2 Datasets {#f90_datasets}
+===========================
+
+[TOC]
+
+2.1 Datasets Introduction {#f90-datasets-introduction}
+=========================
+
+This chapter presents the interfaces of the netCDF functions that deal
+with a netCDF dataset or the whole netCDF library.
+
+A netCDF dataset that has not yet been opened can only be referred to by
+its dataset name. Once a netCDF dataset is opened, it is referred to by
+a netCDF ID, which is a small nonnegative integer returned when you
+create or open the dataset. A netCDF ID is much like a file descriptor
+in C or a logical unit number in FORTRAN. In any single program, the
+netCDF IDs of distinct open netCDF datasets are distinct. A single
+netCDF dataset may be opened multiple times and will then have multiple
+distinct netCDF IDs; however at most one of the open instances of a
+single netCDF dataset should permit writing. When an open netCDF dataset
+is closed, the ID is no longer associated with a netCDF dataset.
+
+Functions that deal with the netCDF library include:
+
+-   Get version of library.
+-   Get error message corresponding to a returned error code.
+
+The operations supported on a netCDF dataset as a single object are:
+
+-   Create, given dataset name and whether to overwrite or not.
+-   Open for access, given dataset name and read or write intent.
+-   Put into define mode, to add dimensions, variables, or attributes.
+-   Take out of define mode, checking consistency of additions.
+-   Close, writing to disk if required.
+-   Inquire about the number of dimensions, number of variables, number
+    of global attributes, and ID of the unlimited dimension, if any.
+-   Synchronize to disk to make sure it is current.
+-   Set and unset nofill mode for optimized sequential writes.
+-   After a summary of conventions used in describing the netCDF
+    interfaces, the rest of this chapter presents a detailed description
+    of the interfaces for these operations.
+
+2.2 NetCDF Library Interface Descriptions {#f90-netcdf-library-interface-descriptions}
+=========================
+
+Each interface description for a particular netCDF function in this and
+later chapters contains:
+
+-   a description of the purpose of the function;
+-   a Fortran 90 interface block that presents the type and order of the
+    formal parameters to the function;
+-   a description of each formal parameter in the C interface;
+-   a list of possible error conditions; and
+-   an example of a Fortran 90 program fragment calling the netCDF
+    function (and perhaps other netCDF functions).
+
+The examples follow a simple convention for error handling, always
+checking the error status returned from each netCDF function call and
+calling a handle\_error function in case an error was detected. For an
+example of such a function, see Section 5.2 "Get error message
+corresponding to error status: nf90\_strerror".
+
+2.3 NF90_STRERROR {#f90-nf90_strerror}
+=========================
+
+The function NF90\_STRERROR returns a static reference to an error
+message string corresponding to an integer netCDF error status or to a
+system error number, presumably returned by a previous call to some
+other netCDF function. The list of netCDF error status codes is
+available in the appropriate include file for each language binding.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+
+ function nf90_strerror(ncerr)
+   integer, intent( in) :: ncerr
+   character(len = 80)  :: nf90_strerror
+
+~~~~
+
+
+
+`NCERR`
+
+:   An error status that might have been returned from a previous call
+    to some netCDF function.
+
+## Errors
+
+If you provide an invalid integer error status that does not correspond
+to any netCDF error message or or to any system error message (as
+understood by the system strerror function), NF90\_STRERROR returns a
+string indicating that there is no such error status.
+
+## Example
+
+Here is an example of a simple error handling function that uses
+NF90\_STRERROR to print the error message corresponding to the netCDF
+error status returned from any netCDF function call and then exit:
+
+
+~~~~.fortran
+
+
+ subroutine handle_err(status)
+   integer, intent ( in) :: status
+
+   if(status /= nf90_noerr) then
+     print *, trim(nf90_strerror(status))
+     stop "Stopped"
+   end if
+ end subroutine handle_err
+
+
+
+~~~~
+
+2.4 Get netCDF library version: NF90_INQ_LIBVERS {#f90-get-netcdf-library-version-nf90_inq_libvers}
+=========================
+
+The function NF90\_INQ\_LIBVERS returns a string identifying the version
+of the netCDF library, and when it was built.
+
+
+
+## Usage
+
+
+
+
+~~~~.fortran
+
+ function nf90_inq_libvers()
+   character(len = 80) :: nf90_inq_libvers
+
+
+
+~~~~
+
+
+
+## Errors
+
+This function takes no arguments, and returns no error status.
+
+
+
+## Example
+
+Here is an example using nf90\_inq\_libvers to print the version of the
+netCDF library with which the program is linked:
+
+
+
+~~~~.fortran
+print *, trim(nf90_inq_libvers())
+
+~~~~
+
+
+
+
+2.5 NF90_CREATE {#f90-nf90_create}
+=========================
+
+
+
+This function creates a new netCDF dataset, returning a netCDF ID that
+can subsequently be used to refer to the netCDF dataset in other netCDF
+function calls. The new netCDF dataset opened for write access and
+placed in define mode, ready for you to add dimensions, variables, and
+attributes.
+
+A creation mode flag specifies whether to overwrite any existing dataset
+with the same name and whether access to the dataset is shared.
+
+
+
+## Usage
+
+
+
+~~~~.fortran
+
+  function nf90_create(path, cmode, ncid, initialsize, bufrsize, cache_size, &
+       cache_nelems, cache_preemption, comm, info)
+    implicit none
+    character (len = *), intent(in) :: path
+    integer, intent(in) :: cmode
+    integer, intent(out) :: ncid
+    integer, optional, intent(in) :: initialsize
+    integer, optional, intent(inout) :: bufrsize
+    integer, optional, intent(in) :: cache_size, cache_nelems
+    real, optional, intent(in) :: cache_preemption
+    integer, optional, intent(in) :: comm, info
+    integer :: nf90_create
+
+
+~~~~
+
+
+`path`
+
+:   The file name of the new netCDF dataset.
+
+`cmode`
+
+:   The creation mode flag. The following flags are available:
+    NF90\_CLOBBER, NF90\_NOCLOBBER, NF90\_SHARE, NF90\_64BIT\_OFFSET,
+    NF90\_NETCDF4, and NF90\_CLASSIC\_MODEL. (NF90\_HDF5 is deprecated,
+    use NF90\_NETCDF4 instead).
+
+    A zero value (defined for convenience as NF90\_CLOBBER) specifies:
+    overwrite any existing dataset with the same file name, and buffer
+    and cache accesses for efficiency. The dataset will be in netCDF
+    classic format. See [NetCDF Classic Format
+    Limitations](netcdf.html#NetCDF-Classic-Format-Limitations) in
+    NetCDF Users’ Guide.
+
+    Setting NF90\_NOCLOBBER means you do not want to clobber (overwrite)
+    an existing dataset; an error (NF90\_EEXIST) is returned if the
+    specified dataset already exists.
+
+    The NF90\_SHARE flag is appropriate when one process may be writing
+    the dataset and one or more other processes reading the dataset
+    concurrently; it means that dataset accesses are not buffered and
+    caching is limited. Since the buffering scheme is optimized for
+    sequential access, programs that do not access data sequentially may
+    see some performance improvement by setting the NF90\_SHARE flag.
+    (This only applies to netCDF-3 classic or 64-bit offset files.)
+
+    Setting NF90\_64BIT\_OFFSET causes netCDF to create a 64-bit offset
+    format file, instead of a netCDF classic format file. The 64-bit
+    offset format imposes far fewer restrictions on very large (i.e.
+    over 2 GB) data files. See [Large File
+    Support](netcdf.html#Large-File-Support) in NetCDF Users’ Guide.
+
+    Setting the NF90\_NETCDF4 flag causes netCDF to create a
+    netCDF-4/HDF5 format output file.
+
+    Oring the NF90\_CLASSIC\_MODEL flag with the NF90\_NETCDF4 flag
+    causes the resulting netCDF-4/HDF5 file to restrict itself to the
+    classic model - none of the new netCDF-4 data model features, such
+    as groups or user-defined types, are allowed in such a file.
+
+`ncid`
+
+:   Returned netCDF ID.
+
+The following optional arguments allow additional performance tuning.
+
+`initialsize`
+
+:   The initial size of the file (in bytes) at creation time. A value of
+    0 causes the file size to be computed when nf90\_enddef is called.
+    This is ignored for NetCDF-4/HDF5 files.
+
+`bufrsize`
+
+:   Controls a space versus time trade-off, memory allocated in the
+    netcdf library versus number of system calls. Because of internal
+    requirements, the value may not be set to exactly the
+    value requested. The actual value chosen is returned.
+
+    The library chooses a system-dependent default value if
+    NF90\_SIZEHINT\_DEFAULT is supplied as input. If the "preferred I/O
+    block size" is available from the stat() system call as member
+    st\_blksize this value is used. Lacking that, twice the system
+    pagesize is used. Lacking a call to discover the system pagesize,
+    the default bufrsize is set to 8192 bytes.
+
+    The bufrsize is a property of a given open netcdf descriptor ncid,
+    it is not a persistent property of the netcdf dataset.
+
+    This is ignored for NetCDF-4/HDF5 files.
+
+`cache_size`
+
+:   If the cache\_size is provided when creating a netCDF-4/HDF5 file,
+    it will be used instead of the default (32000000) as the size, in
+    bytes, of the HDF5 chunk cache.
+
+`cache_nelems`
+
+:   If cache\_nelems is provided when creating a netCDF-4/HDF5 file, it
+    will be used instead of the default (1000) as the maximum number of
+    elements in the HDF5 chunk cache.
+
+`cache_premtion`
+
+:   If cache\_preemption is provided when creating a netCDF-4/HDF5 file,
+    it will be used instead of the default (0.75) as the preemption
+    value for the HDF5 chunk cache.
+
+`comm`
+
+:   If the comm and info parameters are provided the file is created and
+    opened for parallel I/O. Set the comm parameter to the MPI
+    communicator (of type MPI\_Comm). If this parameter is provided the
+    info parameter must also be provided.
+
+`info`
+
+:   If the comm and info parameters are provided the file is created and
+    opened for parallel I/O. Set the comm parameter to the MPI
+    information value (of type MPI\_Info). If this parameter is provided
+    the comm parameter must also be provided.
+
+
+
+## Errors
+
+NF90\_CREATE returns the value NF90\_NOERR if no errors occurred.
+Possible causes of errors include:
+
+-   Passing a dataset name that includes a directory that does
+    not exist.
+-   Specifying a dataset name of a file that exists and also
+    specifying NF90\_NOCLOBBER.
+-   Specifying a meaningless value for the creation mode.
+-   Attempting to create a netCDF dataset in a directory where you don’t
+    have permission to create files.
+
+
+
+## Example
+
+In this example we create a netCDF dataset named foo.nc; we want the
+dataset to be created in the current directory only if a dataset with
+that name does not already exist:
+
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer :: ncid, status
+ ...
+ status = nf90_create(path = "foo.nc", cmode = nf90_noclobber, ncid = ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+
+
+~~~~
+
+
+
+2.6 NF90_OPEN {#f90-nf90_open}
+=========================
+
+The function NF90\_OPEN opens an existing netCDF dataset for access.
+
+## Usage
+
+
+~~~~.fortran
+
+
+  function nf90_open(path, mode, ncid, bufrsize, cache_size, cache_nelems, &
+                     cache_preemption, comm, info)
+    implicit none
+    character (len = *), intent(in) :: path
+    integer, intent(in) :: mode
+    integer, intent(out) :: ncid
+    integer, optional, intent(inout) :: bufrsize
+    integer, optional, intent(in) :: cache_size, cache_nelems
+    real, optional, intent(in) :: cache_preemption
+    integer, optional, intent(in) :: comm, info
+    integer :: nf90_open
+
+
+~~~~
+
+
+`path`
+
+:   File name for netCDF dataset to be opened. This may be an OPeNDAP
+    URL if DAP support is enabled.
+
+`mode`
+
+:   A zero value (or NF90\_NOWRITE) specifies: open the dataset with
+    read-only access, buffering and caching accesses for efficiency
+
+    Otherwise, the open mode is NF90\_WRITE, NF90\_SHARE,
+    or NF90\_WRITE|NF90\_SHARE. Setting the NF90\_WRITE flag opens the
+    dataset with read-write access. ("Writing" means any kind of change
+    to the dataset, including appending or changing data, adding or
+    renaming dimensions, variables, and attributes, or
+    deleting attributes.) The NF90\_SHARE flag is appropriate when one
+    process may be writing the dataset and one or more other processes
+    reading the dataset concurrently (note that this is not the same as
+    parallel I/O); it means that dataset accesses are not buffered and
+    caching is limited. Since the buffering scheme is optimized for
+    sequential access, programs that do not access data sequentially may
+    see some performance improvement by setting the NF90\_SHARE flag.
+
+`ncid`
+
+:   Returned netCDF ID.
+
+The following optional argument allows additional performance tuning.
+
+`bufrsize`
+
+:   This parameter applies only when opening classic format or 64-bit
+    offset files. It is ignored for netCDF-4/HDF5 files.
+
+    It Controls a space versus time trade-off, memory allocated in the
+    netcdf library versus number of system calls. Because of internal
+    requirements, the value may not be set to exactly the
+    value requested. The actual value chosen is returned.
+
+    The library chooses a system-dependent default value if
+    NF90\_SIZEHINT\_DEFAULT is supplied as input. If the "preferred I/O
+    block size" is available from the stat() system call as member
+    st\_blksize this value is used. Lacking that, twice the system
+    pagesize is used. Lacking a call to discover the system pagesize,
+    the default bufrsize is set to 8192 bytes.
+
+    The bufrsize is a property of a given open netcdf descriptor ncid,
+    it is not a persistent property of the netcdf dataset.
+
+`cache_size`
+
+:   If the cache\_size is provided when opening a netCDF-4/HDF5 file, it
+    will be used instead of the default (32000000) as the size, in
+    bytes, of the HDF5 chunk cache.
+
+`cache_nelems`
+
+:   If cache\_nelems is provided when opening a netCDF-4/HDF5 file, it
+    will be used instead of the default (1000) as the maximum number of
+    elements in the HDF5 chunk cache.
+
+`cache_premtion`
+
+:   If cache\_preemption is provided when opening a netCDF-4/HDF5 file,
+    it will be used instead of the default (0.75) as the preemption
+    value for the HDF5 chunk cache.
+
+`comm`
+
+:   If the comm and info parameters are provided the file is opened for
+    parallel I/O. Set the comm parameter to the MPI communicator (of
+    type MPI\_Comm). If this parameter is provided the info parameter
+    must also be provided.
+
+`info`
+
+:   If the comm and info parameters are provided the file is opened for
+    parallel I/O. Set the comm parameter to the MPI information value
+    (of type MPI\_Info). If this parameter is provided the comm
+    parameter must also be provided.
+
+
+
+## Errors
+
+NF90\_OPEN returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The specified netCDF dataset does not exist.
+-   A meaningless mode was specified.
+
+## Example
+
+Here is an example using NF90\_OPEN to open an existing netCDF dataset
+named foo.nc for read-only, non-shared access:
+
+
+~~~~.fortran
+
+
+ use netcdf
+ implicit none
+ integer :: ncid, status
+ ...
+ status = nf90_open(path = "foo.nc", mode = nf90_nowrite, ncid = ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+
+
+~~~~
+
+
+## Example
+
+Here is an example using NF90\_OPEN to open an existing netCDF dataset
+for parallel I/O access. (Note the use of the comm and info parameters).
+This example is from test program nf\_test/f90tst\_parallel.f90.
+
+
+~~~~.fortran
+
+
+ use netcdf
+ implicit none
+ integer :: ncid, status
+ ...
+  ! Reopen the file.
+  call handle_err(nf90_open(FILE_NAME, nf90_nowrite, ncid, comm = MPI_COMM_WORLD, &
+       info = MPI_INFO_NULL))
+
+
+
+~~~~
+
+2.7 NF90_REDEF {#f90-nf90_redef}
+=========================
+
+
+
+The function NF90\_REDEF puts an open netCDF dataset into define mode,
+so dimensions, variables, and attributes can be added or renamed and
+attributes can be deleted.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+
+ function nf90_redef(ncid)
+   integer, intent( in) :: ncid
+   integer              :: nf90_redef
+
+
+
+~~~~
+
+`ncid`
+
+:   netCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+
+
+## Errors
+
+NF90\_REDEF returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The specified netCDF dataset is already in define mode.
+-   The specified netCDF dataset was opened for read-only.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+
+
+
+## Example
+
+Here is an example using NF90\_REDEF to open an existing netCDF dataset
+named foo.nc and put it into define mode:
+
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer :: ncid, status
+ ...
+ status = nf90_open("foo.nc", nf90_write, ncid) ! Open dataset
+ if (status /= nf90_noerr) call handle_err(status)
+ ...
+ status = nf90_redef(ncid)                       ! Put the file in define mode
+ if (status /= nf90_noerr) call handle_err(status)
+
+
+
+~~~~
+
+2.8 NF90_ENDDEF {#f90-nf90_enddef}
+=========================
+
+
+
+The function NF90\_ENDDEF takes an open netCDF dataset out of define
+mode. The changes made to the netCDF dataset while it was in define mode
+are checked and committed to disk if no problems occurred. Non-record
+variables may be initialized to a "fill value" as well (see section
+[NF90_SET_FILL](#NF90_005fSET_005fFILL)). The netCDF dataset is then
+placed in data mode, so variable data can be read or written.
+
+This call may involve copying data under some circumstances. For a more
+extensive discussion See [File Structure and
+Performance](netcdf.html#File-Structure-and-Performance) in NetCDF Users
+Guide.
+
+## Usage
+
+
+~~~~.fortran
+
+
+ function nf90_enddef(ncid, h_minfree, v_align, v_minfree, r_align)
+   integer,           intent( in) :: ncid
+   integer, optional, intent( in) :: h_minfree, v_align, v_minfree, r_align
+   integer                        :: nf90_enddef
+
+~~~~
+
+
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+The following arguments allow additional performance tuning. Note: these
+arguments expose internals of the netcdf version 1 file format, and may
+not be available in future netcdf implementations.
+
+The current netcdf file format has three sections: the "header" section,
+the data section for fixed size variables, and the data section for
+variables which have an unlimited dimension (record variables). The
+header begins at the beginning of the file. The index (offset) of the
+beginning of the other two sections is contained in the header.
+Typically, there is no space between the sections. This causes copying
+overhead to accrue if one wishes to change the size of the sections, as
+may happen when changing the names of things, text attribute values,
+adding attributes or adding variables. Also, for buffered i/o, there may
+be advantages to aligning sections in certain ways.
+
+The minfree parameters allow one to control costs of future calls to
+nf90\_redef or nf90\_enddef by requesting that some space be available
+at the end of the section. The default value for both h\_minfree and
+v\_minfree is 0.
+
+The align parameters allow one to set the alignment of the beginning of
+the corresponding sections. The beginning of the section is rounded up
+to an index which is a multiple of the align parameter. The flag value
+NF90\_ALIGN\_CHUNK tells the library to use the bufrsize (see above) as
+the align parameter. The default value for both v\_align and r\_align is
+4 bytes.
+
+`h_minfree`
+
+:   Size of the pad (in bytes) at the end of the "header" section.
+
+`v_minfree`
+
+:   Size of the pad (in bytes) at the end of the data section for fixed
+    size variables.
+
+`v_align`
+
+:   The alignment of the beginning of the data section for fixed
+    size variables.
+
+`r_align`
+
+:   The alignment of the beginning of the data section for variables
+    which have an unlimited dimension (record variables).
+
+## Errors
+
+NF90\_ENDDEF returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The specified netCDF dataset is not in define mode.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+-   The size of one or more variables exceed the size constraints for
+    whichever variant of the file format is in use).
+
+## Example
+
+Here is an example using NF90\_ENDDEF to finish the definitions of a new
+netCDF dataset named foo.nc and put it into data mode:
+
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer :: ncid, status
+ ...
+ status = nf90_create("foo.nc", nf90_noclobber, ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...  !  create dimensions, variables, attributes
+ status = nf90_enddef(ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+
+
+~~~~
+
+
+
+
+2.9 NF90_CLOSE {#f90-nf90_close}
+=========================
+
+The function NF90\_CLOSE closes an open netCDF dataset. If the dataset
+is in define mode, NF90\_ENDDEF will be called before closing. (In this
+case, if NF90\_ENDDEF returns an error, NF90\_ABORT will automatically
+be called to restore the dataset to the consistent state before define
+mode was last entered.) After an open netCDF dataset is closed, its
+netCDF ID may be reassigned to the next netCDF dataset that is opened or
+created.
+
+
+
+## Usage
+
+
+
+~~~~.fortran
+
+ function nf90_close(ncid)
+   integer, intent( in) :: ncid
+   integer              :: nf90_close
+
+
+~~~~
+
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+
+
+## Errors
+
+NF90\_CLOSE returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   Define mode was entered and the automatic call made to
+    NF90\_ENDDEF failed.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+
+
+
+## Example
+
+Here is an example using NF90\_CLOSE to finish the definitions of a new
+netCDF dataset named foo.nc and release its netCDF ID:
+
+
+~~~~.fortran
+
+
+ use netcdf
+ implicit none
+ integer :: ncid, status
+ ...
+ status = nf90_create("foo.nc", nf90_noclobber, ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...  !  create dimensions, variables, attributes
+ status = nf90_close(ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+
+~~~~
+
+
+
+2.10 NF90_INQUIRE Family {#f90-nf90_inquire-family}
+=========================
+
+The NF90\_INQUIRE subroutine returns information about an open netCDF
+dataset, given its netCDF ID. The subroutine can be called from either
+define mode or data mode, and returns values for any or all of the
+following: the number of dimensions, the number of variables, the number
+of global attributes, and the dimension ID of the dimension defined with
+unlimited length, if any. An additional function, NF90\_INQ\_FORMAT,
+returns the (rarely needed) format version.
+
+No I/O is performed when NF90\_INQUIRE is called, since the required
+information is available in memory for each open netCDF dataset.
+
+## Usage
+
+
+~~~~.fortran
+
+
+ function nf90_inquire(ncid, nDimensions, nVariables, nAttributes, &
+                       unlimitedDimId, formatNum)
+   integer,           intent( in) :: ncid
+   integer, optional, intent(out) :: nDimensions, nVariables, &
+                                     nAttributes, unlimitedDimId, &
+                                     formatNum
+   integer                        :: nf90_inquire
+
+
+
+~~~~
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`nDimensions`
+
+:   Returned number of dimensions defined for this netCDF dataset.
+
+`nVariables`
+
+:   Returned number of variables defined for this netCDF dataset.
+
+`nAttributes`
+
+:   Returned number of global attributes defined for this
+    netCDF dataset.
+
+`unlimitedDimID`
+
+:   Returned ID of the unlimited dimension, if there is one for this
+    netCDF dataset. If no unlimited length dimension has been defined,
+    -1 is returned.
+
+`format`
+
+:   Returned integer indicating format version for this dataset, one of
+    nf90\_format\_classic, nf90\_format\_64bit, nf90\_format\_netcdf4,
+    or nf90\_format\_netcdf4\_classic. These are rarely needed by users
+    or applications, since thhe library recognizes the format of a file
+    it is accessing and handles it accordingly.
+
+
+
+## Errors
+
+Function NF90\_INQUIRE returns the value NF90\_NOERR if no errors
+occurred. Otherwise, the returned status indicates an error. Possible
+causes of errors include:
+
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+
+## Example
+
+Here is an example using NF90\_INQUIRE to find out about a netCDF
+dataset named foo.nc:
+
+
+~~~~.fortran
+
+
+ use netcdf
+ implicit none
+ integer :: ncid, status, nDims, nVars, nGlobalAtts, unlimDimID
+ ...
+ status = nf90_open("foo.nc", nf90_nowrite, ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...  
+ status = nf90_inquire(ncid, nDims, nVars, nGlobalAtts, unlimdimid)
+ if (status /= nf90_noerr) call handle_err(status)
+ status = nf90_inquire(ncid, nDimensions = nDims, &
+                       unlimitedDimID = unlimdimid)
+ if (status /= nf90_noerr) call handle_err(status)
+
+
+~~~~
+
+
+2.11 NF90_SYNC {#f90-nf90_sync}
+=========================
+
+
+
+The function NF90\_SYNC offers a way to synchronize the disk copy of a
+netCDF dataset with in-memory buffers. There are two reasons you might
+want to synchronize after writes:
+
+-   To minimize data loss in case of abnormal termination, or
+-   To make data available to other processes for reading immediately
+    after it is written. But note that a process that already had the
+    dataset open for reading would not see the number of records
+    increase when the writing process calls NF90\_SYNC; to accomplish
+    this, the reading process must call NF90\_SYNC.
+
+This function is backward-compatible with previous versions of the
+netCDF library. The intent was to allow sharing of a netCDF dataset
+among multiple readers and one writer, by having the writer call
+NF90\_SYNC after writing and the readers call NF90\_SYNC before each
+read. For a writer, this flushes buffers to disk. For a reader, it makes
+sure that the next read will be from disk rather than from previously
+cached buffers, so that the reader will see changes made by the writing
+process (e.g., the number of records written) without having to close
+and reopen the dataset. If you are only accessing a small amount of
+data, it can be expensive in computer resources to always synchronize to
+disk after every write, since you are giving up the benefits of
+buffering.
+
+An easier way to accomplish sharing (and what is now recommended) is to
+have the writer and readers open the dataset with the NF90\_SHARE flag,
+and then it will not be necessary to call NF90\_SYNC at all. However,
+the NF90\_SYNC function still provides finer granularity than the
+NF90\_SHARE flag, if only a few netCDF accesses need to be synchronized
+among processes.
+
+It is important to note that changes to the ancillary data, such as
+attribute values, are not propagated automatically by use of the
+NF90\_SHARE flag. Use of the NF90\_SYNC function is still required for
+this purpose.
+
+Sharing datasets when the writer enters define mode to change the data
+schema requires extra care. In previous releases, after the writer left
+define mode, the readers were left looking at an old copy of the
+dataset, since the changes were made to a new copy. The only way readers
+could see the changes was by closing and reopening the dataset. Now the
+changes are made in place, but readers have no knowledge that their
+internal tables are now inconsistent with the new dataset schema. If
+netCDF datasets are shared across redefinition, some mechanism external
+to the netCDF library must be provided that prevents access by readers
+during redefinition and causes the readers to call NF90\_SYNC before any
+subsequent access.
+
+When calling NF90\_SYNC, the netCDF dataset must be in data mode. A
+netCDF dataset in define mode is synchronized to disk only when
+NF90\_ENDDEF is called. A process that is reading a netCDF dataset that
+another process is writing may call NF90\_SYNC to get updated with the
+changes made to the data by the writing process (e.g., the number of
+records written), without having to close and reopen the dataset.
+
+Data is automatically synchronized to disk when a netCDF dataset is
+closed, or whenever you leave define mode.
+
+
+## Usage
+
+
+~~~~.fortran
+
+
+ function nf90_sync(ncid)
+   integer, intent( in) :: ncid
+   integer              :: nf90_sync
+
+
+
+~~~~
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+
+
+## Errors
+
+NF90\_SYNC returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The netCDF dataset is in define mode.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+
+
+
+## Example
+
+Here is an example using NF90\_SYNC to synchronize the disk writes of a
+netCDF dataset named foo.nc:
+
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer :: ncid, status
+ ...
+ status = nf90_open("foo.nc", nf90_write, ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...  
+ ! write data or change attributes
+ ...  
+ status = NF90_SYNC(ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+
+
+~~~~
+
+
+2.12 NF90_ABORT {#f90-nf90_abort}
+=========================
+
+
+
+You no longer need to call this function, since it is called
+automatically by NF90\_CLOSE in case the dataset is in define mode and
+something goes wrong with committing the changes. The function
+NF90\_ABORT just closes the netCDF dataset, if not in define mode. If
+the dataset is being created and is still in define mode, the dataset is
+deleted. If define mode was entered by a call to NF90\_REDEF, the netCDF
+dataset is restored to its state before definition mode was entered and
+the dataset is closed.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+
+ function nf90_abort(ncid)
+   integer, intent( in) :: ncid
+   integer              :: nf90_abort
+
+
+~~~~
+
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+
+
+## Errors
+
+NF90\_ABORT returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   When called from define mode while creating a netCDF dataset,
+    deletion of the dataset failed.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+
+
+
+## Example
+
+Here is an example using NF90\_ABORT to back out of redefinitions of a
+dataset named foo.nc:
+
+
+~~~~.fortran
+
+
+ use netcdf
+ implicit none
+ integer :: ncid, status, LatDimID
+ ...
+ status = nf90_open("foo.nc", nf90_write, ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...  
+ status = nf90_redef(ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...  
+ status = nf90_def_dim(ncid, "Lat", 18, LatDimID)
+ if (status /= nf90_noerr) then ! Dimension definition failed
+   call handle_err(status)
+   status = nf90_abort(ncid) ! Abort redefinitions
+   if (status /= nf90_noerr) call handle_err(status)
+ end if
+...
+
+
+~~~~
+
+
+
+2.13 NF90_SET_FILL {#f90-nf90_set_fill}
+=========================
+
+
+
+This function is intended for advanced usage, to optimize writes under
+some circumstances described below. The function NF90\_SET\_FILL sets
+the fill mode for a netCDF dataset open for writing and returns the
+current fill mode in a return parameter. The fill mode can be specified
+as either NF90\_FILL or NF90\_NOFILL. The default behavior corresponding
+to NF90\_FILL is that data is pre-filled with fill values, that is fill
+values are written when you create non-record variables or when you
+write a value beyond data that has not yet been written. This makes it
+possible to detect attempts to read data before it was written. See
+section [Fill Values](#Fill-Values), for more information on the use of
+fill values. See [Attribute
+Conventions](netcdf.html#Attribute-Conventions) in {No value for
+‘n-man’}, for information about how to define your own fill values.
+
+The behavior corresponding to NF90\_NOFILL overrides the default
+behavior of prefilling data with fill values. This can be used to
+enhance performance, because it avoids the duplicate writes that occur
+when the netCDF library writes fill values that are later overwritten
+with data.
+
+A value indicating which mode the netCDF dataset was already in is
+returned. You can use this value to temporarily change the fill mode of
+an open netCDF dataset and then restore it to the previous mode.
+
+After you turn on NF90\_NOFILL mode for an open netCDF dataset, you must
+be certain to write valid data in all the positions that will later be
+read. Note that nofill mode is only a transient property of a netCDF
+dataset open for writing: if you close and reopen the dataset, it will
+revert to the default behavior. You can also revert to the default
+behavior by calling NF90\_SET\_FILL again to explicitly set the fill
+mode to NF90\_FILL.
+
+There are three situations where it is advantageous to set nofill mode:
+
+1.  Creating and initializing a netCDF dataset. In this case, you should
+    set nofill mode before calling NF90\_ENDDEF and then write
+    completely all non-record variables and the initial records of all
+    the record variables you want to initialize.
+2.  Extending an existing record-oriented netCDF dataset. Set nofill
+    mode after opening the dataset for writing, then append the
+    additional records to the dataset completely, leaving no intervening
+    unwritten records.
+3.  Adding new variables that you are going to initialize to an existing
+    netCDF dataset. Set nofill mode before calling NF90\_ENDDEF then
+    write all the new variables completely.
+
+If the netCDF dataset has an unlimited dimension and the last record was
+written while in nofill mode, then the dataset may be shorter than if
+nofill mode was not set, but this will be completely transparent if you
+access the data only through the netCDF interfaces.
+
+The use of this feature may not be available (or even needed) in future
+releases. Programmers are cautioned against heavy reliance upon this
+feature.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+
+ function nf90_set_fill(ncid, fillmode, old_mode)
+   integer, intent( in) :: ncid, fillmode
+   integer, intent(out) :: old_mode
+   integer              :: nf90_set_fill
+
+
+
+~~~~
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`fillmode`
+
+:   Desired fill mode for the dataset, either NF90\_NOFILL
+    or NF90\_FILL.
+
+`old_mode`
+
+:   Returned current fill mode of the dataset before this call, either
+    NF90\_NOFILL or NF90\_FILL.
+
+
+
+## Errors
+
+NF90\_SET\_FILL returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+-   The specified netCDF ID refers to a dataset open for
+    read-only access.
+-   The fill mode argument is neither NF90\_NOFILL nor NF90\_FILL..
+
+## Example
+
+Here is an example using NF90\_SET\_FILL to set nofill mode for
+subsequent writes of a netCDF dataset named foo.nc:
+
+
+~~~~.fortran
+
+
+ use netcdf
+ implicit none
+ integer :: ncid, status, oldMode
+ ...
+ status = nf90_open("foo.nc", nf90_write, ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...  
+ ! Write data with prefilling behavior
+ ...  
+ status = nf90_set_fill(ncid, nf90_nofill, oldMode)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...
+ !  Write data with no prefilling
+ ...
+
+~~~~
diff --git a/docs/netcdf-f90-sec3-groups.md b/docs/netcdf-f90-sec3-groups.md
new file mode 100644
index 0000000..8d6f642
--- /dev/null
+++ b/docs/netcdf-f90-sec3-groups.md
@@ -0,0 +1,917 @@
+3 Groups {#f90_groups}
+========
+
+[TOC]
+
+NetCDF-4 added support for hierarchical groups within netCDF datasets.
+
+Groups are identified with a ncid, which identifies both the open file,
+and the group within that file. When a file is opened with NF90\_OPEN or
+NF90\_CREATE, the ncid for the root group of that file is provided.
+Using that as a starting point, users can add new groups, or list and
+navigate existing groups.
+
+All netCDF calls take a ncid which determines where the call will take
+its action. For example, the NF90\_DEF\_VAR function takes a ncid as its
+first parameter. It will create a variable in whichever group its ncid
+refers to. Use the root ncid provided by NF90\_CREATE or NF90\_OPEN to
+create a variable in the root group. Or use NF90\_DEF\_GRP to create a
+group and use its ncid to define a variable in the new group.
+
+Variable are only visible in the group in which they are defined. The
+same applies to attributes. “Global” attributes are defined in whichever
+group is refered to by the ncid.
+
+Dimensions are visible in their groups, and all child groups.
+
+Group operations are only permitted on netCDF-4 files - that is, files
+created with the HDF5 flag in nf90\_create. (see section
+[NF90_CREATE](#NF90_005fCREATE)). Groups are not compatible with the
+netCDF classic data model, so files created with the
+NF90\_CLASSIC\_MODEL file cannot contain groups (except the root group).
+
+
+3.1 Find a Group ID: NF90_INQ_NCID {#f90-find-a-group-id-nf90_inq_ncid}
+=========================
+
+Given an ncid and group name (NULL or "" gets root group), return ncid
+of the named group.
+
+## Usage
+
+
+~~~~.fortran
+
+
+  function nf90_inq_ncid(ncid, name, grp_ncid)
+    integer, intent(in) :: ncid
+    character (len = *), intent(in) :: name
+    integer, intent(out) :: grp_ncid
+    integer :: nf90_inq_ncid
+
+
+~~~~
+
+
+`NCID`
+
+:   The group id for this operation.
+
+`NAME`
+
+:   A character array that holds the name of the desired group. Must be
+    less then NF90\_MAX\_NAME.
+
+`GRPID`
+
+:   The ID of the group will go here.
+
+
+
+## Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad group id.
+
+`NF90_ENOTNC4`
+
+:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
+    operations can only be performed on files defined with a create mode
+    which includes flag HDF5. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_ESTRICTNC3`
+
+:   This file was created with the strict netcdf-3 flag, therefore
+    netcdf-4 operations are not allowed. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+## Example
+
+This example is from nf90\_test/ftst\_groups.F.
+
+
+3.2 Get a List of Groups in a Group: NF90_INQ_GRPS {#f90-get-a-list-of-groups-in-a-group-nf90_inq_grps}
+=========================
+
+
+
+Given a location id, return the number of groups it contains, and an
+array of their ncids.
+
+
+
+## Usage
+
+~~~~.fortran
+
+
+
+  function nf90_inq_grps(ncid, numgrps, ncids)
+    integer, intent(in) :: ncid
+    integer, intent(out) :: numgrps
+    integer, intent(out) :: ncids
+    integer :: nf90_inq_grps
+
+
+
+~~~~
+
+`NCID`
+
+:   The group id for this operation.
+
+`NUMGRPS`
+
+:   An integer which will get number of groups in this group.
+
+`NCIDS`
+
+:   An array of ints which will receive the IDs of all the groups in
+    this group.
+
+
+
+## Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad group id.
+
+`NF90_ENOTNC4`
+
+:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
+    operations can only be performed on files defined with a create mode
+    which includes flag HDF5. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_ESTRICTNC3`
+
+:   This file was created with the strict netcdf-3 flag, therefore
+    netcdf-4 operations are not allowed. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+## Example
+
+3.3 Find all the Variables in a Group: NF90_INQ_VARIDS {#f90-find-all-the-variables-in-a-group-nf90_inq_varids}
+=========================
+
+Find all varids for a location.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+
+  function nf90_inq_varids(ncid, nvars, varids)
+    integer, intent(in) :: ncid
+    integer, intent(out) :: nvars
+    integer, intent(out) :: varids
+    integer :: nf90_inq_varids
+
+
+~~~~
+
+
+`NCID`
+
+:   The group id for this operation.
+
+`VARIDS`
+
+:   An already allocated array to store the list of varids. Use
+    nf90\_inq\_nvars to find out how many variables there are. (see
+    section [Get Information about a Variable from Its ID:
+    NF90_INQUIRE_VARIABLE](#NF90_005fINQUIRE_005fVARIABLE)).
+
+
+
+## Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad group id.
+
+`NF90_ENOTNC4`
+
+:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
+    operations can only be performed on files defined with a create mode
+    which includes flag HDF5. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_ESTRICTNC3`
+
+:   This file was created with the strict netcdf-3 flag, therefore
+    netcdf-4 operations are not allowed. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+## Example
+
+3.4 Find all Dimensions Visible in a Group: NF90_INQ_DIMIDS {#f90-find-all-dimensions-visible-in-a-group-nf90_inq_dimids}
+=========================
+
+
+
+Find all dimids for a location. This finds all dimensions in a group, or
+any of its parents.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+
+  function nf90_inq_dimids(ncid, ndims, dimids, include_parents)
+    integer, intent(in) :: ncid
+    integer, intent(out) :: ndims
+    integer, intent(out) :: dimids
+    integer, intent(out) :: include_parents
+    integer :: nf90_inq_dimids
+
+
+~~~~
+
+
+`NCID`
+
+:   The group id for this operation.
+
+`NDIMS`
+
+:   Returned number of dimensions for this location. If include\_parents
+    is non-zero, number of dimensions visible from this group, which
+    includes dimensions in parent groups.
+
+`DIMIDS`
+
+:   An array of ints when the dimids of the visible dimensions will
+    be stashed. Use nf90\_inq\_ndims to find out how many dims are
+    visible from this group. (see section [Get Information about a Variable from Its ID: NF90_INQUIRE_VARIABLE](#f90-get-information-about-a-variable-from-its-id-nf90_inquire_variable) ).
+
+`INCLUDE_PARENTS`
+
+:   If zero, only the group specified by NCID will be searched
+    for dimensions. Otherwise parent groups will be searched too.
+
+
+
+## Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad group id.
+
+`NF90_ENOTNC4`
+
+:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
+    operations can only be performed on files defined with a create mode
+    which includes flag HDF5. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_ESTRICTNC3`
+
+:   This file was created with the strict netcdf-3 flag, therefore
+    netcdf-4 operations are not allowed. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+## Example
+
+3.5 Find the Length of a Group’s Full Name: NF90_INQ_GRPNAME_LEN {#f90-find-the-length-of-a-groups-full-name-nf90_inq_grpname_len}
+=========================
+
+Given ncid, find length of the full name. (Root group is named "/", with
+length 1.)
+
+## Usage
+
+
+~~~~.fortran
+
+
+  function nf90_inq_grpname_len(ncid, len)
+    integer, intent(in) :: ncid
+    integer, intent(out) :: len
+    integer :: nf90_inq_grpname_len
+  end function nf90_inq_grpname_len
+
+
+~~~~
+
+
+`NCID`
+
+:   The group id for this operation.
+
+`LEN`
+
+:   An integer where the length will be placed.
+
+
+
+## Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad group id.
+
+`NF90_ENOTNC4`
+
+:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
+    operations can only be performed on files defined with a create mode
+    which includes flag HDF5. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_ESTRICTNC3`
+
+:   This file was created with the strict netcdf-3 flag, therefore
+    netcdf-4 operations are not allowed. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+## Example
+
+
+3.6 Find a Group’s Name: NF90_INQ_GRPNAME {#f90-find-a-groups-name-nf90_inq_grpname}
+=========================
+
+
+
+Given ncid, find relative name of group. (Root group is named "/").
+
+The name provided by this function is relative to the parent group. For
+a full path name for the group is, with all parent groups included,
+separated with a forward slash (as in Unix directory names) See section
+[Find a Group’s Full Name:
+NF90_INQ_GRPNAME_FULL](#f90-find-a-groups-full-name-nf90_inq_grpname_full).
+
+
+
+## Usage
+
+
+
+~~~~.fortran
+
+  function nf90_inq_grpname(ncid, name)
+    integer, intent(in) :: ncid
+    character (len = *), intent(out) :: name
+    integer :: nf90_inq_grpname
+
+
+~~~~
+
+
+`NCID`
+
+:   The group id for this operation.
+
+`NAME`
+
+:   The name of the group will be copied to this character array. The
+    name will be less than NF90\_MAX\_NAME in length.
+
+
+
+## Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad group id.
+
+`NF90_ENOTNC4`
+
+:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
+    operations can only be performed on files defined with a create mode
+    which includes flag HDF5. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_ESTRICTNC3`
+
+:   This file was created with the strict netcdf-3 flag, therefore
+    netcdf-4 operations are not allowed. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+## Example
+
+
+3.7 Find a Group’s Full Name: NF90_INQ_GRPNAME_FULL {#f90-find-a-groups-full-name-nf90_inq_grpname_full}
+=========================
+
+
+
+Given ncid, find complete name of group. (Root group is named "/").
+
+The name provided by this function is a full path name for the group is,
+with all parent groups included, separated with a forward slash (as in
+Unix directory names). For a name relative to the parent group See
+section [Find a Group’s Name:
+NF90_INQ_GRPNAME](#f90-find-a-groups-name-nf90_inq_grpname).
+
+## Usage
+
+
+~~~~.fortran
+
+
+  function nf90_inq_grpname_full(ncid, len, name)
+    integer, intent(in) :: ncid
+    integer, intent(out) :: len
+    character (len = *), intent(out) :: name
+    integer :: nf90_inq_grpname_full
+
+
+~~~~
+
+
+`NCID`
+
+:   The group id for this operation.
+
+`LEN`
+
+:   The length of the full group name will go here.
+
+`NAME`
+
+:   The name of the group will be copied to this character array.
+
+
+
+## Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad group id.
+
+`NF90_ENOTNC4`
+
+:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
+    operations can only be performed on files defined with a create mode
+    which includes flag HDF5. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_ESTRICTNC3`
+
+:   This file was created with the strict netcdf-3 flag, therefore
+    netcdf-4 operations are not allowed. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+## Example
+
+This example is from test program nf\_test/f90tst\_grps.f90.
+
+
+~~~~.fortran
+
+
+  call check(nf90_inq_grpname_full(grpid1, len, name_in))
+  if (name_in .ne. grp1_full_name) stop 62
+
+~~~~
+
+
+
+3.8 Find a Group’s Parent: NF90_INQ_GRP_PARENT {#f90-find-a-groups-parent-nf90_inq_grp_parent}
+=========================
+
+
+
+Given ncid, find the ncid of the parent group.
+
+When used with the root group, this function returns the NF90\_ENOGRP
+error (since the root group h has no parent.)
+
+
+
+## Usage
+
+~~~~.fortran
+
+
+
+  function nf90_inq_grp_parent(ncid, parent_ncid)
+    integer, intent(in) :: ncid
+    integer, intent(out) :: parent_ncid
+    integer :: nf90_inq_grp_parent
+
+
+~~~~
+
+
+`NCID`
+
+:   The group id.
+
+`PARENT_NCID`
+
+:   The ncid of the parent group will be copied here.
+
+
+
+## Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad group id.
+
+`NF90_ENOGRP`
+
+:   No parent group found (i.e. this is the root group).
+
+`NF90_ENOTNC4`
+
+:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
+    operations can only be performed on files defined with a create mode
+    which includes flag HDF5. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_ESTRICTNC3`
+
+:   This file was created with the strict netcdf-3 flag, therefore
+    netcdf-4 operations are not allowed. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+## Example
+
+3.9 Find a Group by Name: NF90_INQ_GRP_NCID {#f90-find-a-group-by-name-nf90_inq_grp_ncid}
+=========================
+
+Given a group name an an ncid, find the ncid of the group id.
+
+## Usage
+
+
+~~~~.fortran
+
+
+  function nf90_inq_grp_ncid(ncid, name, grpid)
+    integer, intent(in) :: ncid
+    character (len = *), intent(in) :: name
+    integer, intent(out) :: grpid
+    integer :: nf90_inq_grp_ncid
+
+    nf90_inq_grp_ncid = nf_inq_grp_ncid(ncid, name, grpid)
+  end function nf90_inq_grp_ncid
+
+~~~~
+
+
+
+`NCID`
+
+:   The group id to look in.
+
+`GRP_NAME`
+
+:   The name of the group that should be found.
+
+`GRP_NCID`
+
+:   This will get the group id, if it is found.
+
+
+
+## Return Codes
+
+
+The following return codes may be returned by this function.
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad group id.
+
+`NF90_EINVAL`
+
+:   No name provided or name longer than NF90\_MAX\_NAME.
+
+`NF90_ENOGRP`
+
+:   Named group not found.
+
+`NF90_ENOTNC4`
+
+:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
+    operations can only be performed on files defined with a create mode
+    which includes flag HDF5. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_ESTRICTNC3`
+
+:   This file was created with the strict netcdf-3 flag, therefore
+    netcdf-4 operations are not allowed. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+## Example
+
+This example is from test program nf\_test/f90tst\_grps.f90.
+
+
+~~~~.fortran
+
+
+  ! Get the group ids for the newly reopened file.
+  call check(nf90_inq_grp_ncid(ncid, GRP1_NAME, grpid1))
+  call check(nf90_inq_grp_ncid(grpid1, GRP2_NAME, grpid2))
+  call check(nf90_inq_grp_ncid(grpid2, GRP3_NAME, grpid3))
+  call check(nf90_inq_grp_ncid(grpid3, GRP4_NAME, grpid4))
+
+
+~~~~
+
+
+3.10 Find a Group by its Fully-qualified Name: NF90_INQ_GRP_FULL_NCID {#f90-find-a-group-by-its-fully-qualified-name-nf90_inq_grp_full_ncid}
+=========================
+Given a fully qualified group name an an ncid, find the ncid of the
+group id.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+
+  function nf90_inq_grpname_full(ncid, len, name)
+    integer, intent(in) :: ncid
+    integer, intent(out) :: len
+    character (len = *), intent(out) :: name
+    integer :: nf90_inq_grpname_full
+
+    nf90_inq_grpname_full = nf_inq_grpname_full(ncid, len, name)
+  end function nf90_inq_grpname_full
+
+
+~~~~
+
+
+`NCID`
+
+:   The group id to look in.
+
+`FULL_NAME`
+
+:   The fully-qualified group name.
+
+`GRP_NCID`
+
+:   This will get the group id, if it is found.
+
+
+
+## Return Codes
+
+The following return codes may be returned by this function.
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad group id.
+
+`NF90_EINVAL`
+
+:   No name provided or name longer than NF90\_MAX\_NAME.
+
+`NF90_ENOGRP`
+
+:   Named group not found.
+
+`NF90_ENOTNC4`
+
+:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
+    operations can only be performed on files defined with a create mode
+    which includes flag HDF5. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_ESTRICTNC3`
+
+:   This file was created with the strict netcdf-3 flag, therefore
+    netcdf-4 operations are not allowed. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+## Example
+
+This example is from test program nf\_test/tstf90\_grps.f90.
+
+
+~~~~.fortran
+
+
+  ! Check for the groups with full group names.
+  write(grp1_full_name, '(AA)') '/', GRP1_NAME
+  call check(nf90_inq_grp_full_ncid(ncid, grp1_full_name, grpid1))
+
+
+~~~~
+
+
+3.11 Create a New Group: NF90_DEF_GRP {#f90-create-a-new-group-nf90_def_grp}
+=========================
+
+
+
+Create a group. Its location id is returned in new\_ncid.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+
+  function nf90_def_grp(parent_ncid, name, new_ncid)
+    integer, intent(in) :: parent_ncid
+    character (len = *), intent(in) :: name
+    integer, intent(out) :: new_ncid
+    integer :: nf90_def_grp
+
+
+
+~~~~
+
+`PARENT_NCID`
+
+:   The group id of the parent group.
+
+`NAME`
+
+:   The name of the new group, which must be different from the name of
+    any variable within the same parent group.
+
+`NEW_NCID`
+
+:   The ncid of the new group will be placed there.
+
+
+
+## Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad group id.
+
+`NF90_ENAMEINUSE`
+
+:   That name is in use. Group names must be unique within a group.
+
+`NF90_EMAXNAME`
+
+:   Name exceed max length NF90\_MAX\_NAME.
+
+`NF90_EBADNAME`
+
+:   Name contains illegal characters.
+
+`NF90_ENOTNC4`
+
+:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
+    operations can only be performed on files defined with a create mode
+    which includes flag HDF5. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_ESTRICTNC3`
+
+:   This file was created with the strict netcdf-3 flag, therefore
+    netcdf-4 operations are not allowed. (see section
+    [NF90_OPEN](#NF90_005fOPEN)).
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+`NF90_EPERM`
+
+:   Attempt to write to a read-only file.
+
+`NF90_ENOTINDEFINE`
+
+:   Not in define mode.
+
+
+
+## Example
+
+
+~~~~.fortran
+
+
+C     Create the netCDF file.
+      retval = nf90_create(file_name, NF90_NETCDF4, ncid)
+      if (retval .ne. nf90_noerr) call handle_err(retval)
+
+C     Create a group and a subgroup.
+      retval = nf90_def_grp(ncid, group_name, grpid)
+      if (retval .ne. nf90_noerr) call handle_err(retval)
+      retval = nf90_def_grp(grpid, sub_group_name, sub_grpid)
+      if (retval .ne. nf90_noerr) call handle_err(retval)
+
+~~~~
diff --git a/docs/netcdf-f90-sec4-dimensions.md b/docs/netcdf-f90-sec4-dimensions.md
new file mode 100644
index 0000000..a345094
--- /dev/null
+++ b/docs/netcdf-f90-sec4-dimensions.md
@@ -0,0 +1,386 @@
+4 Dimensions {#f90_dimensions}
+============
+
+[TOC]
+
+4.1 Dimensions Introduction {#f90-dimensions-introduction}
+============
+
+Dimensions for a netCDF dataset are defined when it is created, while
+the netCDF dataset is in define mode. Additional dimensions may be added
+later by reentering define mode. A netCDF dimension has a name and a
+length. At most one dimension in a netCDF dataset can have the unlimited
+length, which means variables using this dimension can grow along this
+dimension.
+
+There is a suggested limit (512) to the number of dimensions that can be
+defined in a single netCDF dataset. The limit is the value of the
+constant NF90\_MAX\_DIMS. The purpose of the limit is to make writing
+generic applications simpler. They need only provide an array of
+NF90\_MAX\_DIMS dimensions to handle any netCDF dataset. The
+implementation of the netCDF library does not enforce this advisory
+maximum, so it is possible to use more dimensions, if necessary, but
+netCDF utilities that assume the advisory maximums may not be able to
+handle the resulting netCDF datasets.
+
+Ordinarily, the name and length of a dimension are fixed when the
+dimension is first defined. The name may be changed later, but the
+length of a dimension (other than the unlimited dimension) cannot be
+changed without copying all the data to a new netCDF dataset with a
+redefined dimension length.
+
+A netCDF dimension in an open netCDF dataset is referred to by a small
+integer called a dimension ID. In the Fortran 90 interface, dimension
+IDs are 1, 2, 3, ..., in the order in which the dimensions were defined.
+
+Operations supported on dimensions are:
+
+-   Create a dimension, given its name and length.
+-   Get a dimension ID from its name.
+-   Get a dimension’s name and length from its ID.
+-   Rename a dimension.
+
+4.2 NF90_DEF_DIM {#f90-nf90_def_dim}
+============
+
+
+
+The function NF90\_DEF\_DIM adds a new dimension to an open netCDF
+dataset in define mode. It returns (as an argument) a dimension ID,
+given the netCDF ID, the dimension name, and the dimension length. At
+most one unlimited length dimension, called the record dimension, may be
+defined for each netCDF dataset.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+ function nf90_def_dim(ncid, name, len, dimid)
+   integer,             intent( in) :: ncid
+   character (len = *), intent( in) :: name
+   integer,             intent( in) :: len
+   integer,             intent(out) :: dimid
+   integer                          :: nf90_def_dim
+
+~~~~
+
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`name`
+
+:   Dimension name.
+
+`len`
+
+:   Length of dimension; that is, number of values for this dimension as
+    an index to variables that use it. This should be either a positive
+    integer or the predefined constant NF90\_UNLIMITED.
+
+`dimid`
+
+:   Returned dimension ID.
+
+
+
+## Errors
+
+NF90\_DEF\_DIM returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The netCDF dataset is not in definition mode.
+-   The specified dimension name is the name of another
+    existing dimension.
+-   The specified length is not greater than zero.
+-   The specified length is unlimited, but there is already an unlimited
+    length dimension defined for this netCDF dataset.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+
+
+
+## Example
+
+Here is an example using NF90\_DEF\_DIM to create a dimension named lat
+of length 18 and a unlimited dimension named rec in a new netCDF dataset
+named foo.nc:
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer :: ncid, status, LatDimID, RecordDimID
+ ...
+ status = nf90_create("foo.nc", nf90_noclobber, ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...
+ status = nf90_def_dim(ncid, "Lat", 18, LatDimID)
+ if (status /= nf90_noerr) call handle_err(status)
+ status = nf90_def_dim(ncid, "Record", nf90_unlimited, RecordDimID)
+ if (status /= nf90_noerr) call handle_err(status)
+
+~~~~
+
+
+
+4.3 NF90_INQ_DIMID {#f90-nf90_inq_dimid}
+============
+
+
+
+The function NF90\_INQ\_DIMID returns (as an argument) the ID of a
+netCDF dimension, given the name of the dimension. If ndims is the
+number of dimensions defined for a netCDF dataset, each dimension has an
+ID between 1 and ndims.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+ function nf90_inq_dimid(ncid, name, dimid)
+   integer,             intent( in) :: ncid
+   character (len = *), intent( in) :: name
+   integer,             intent(out) :: dimid
+   integer                          :: nf90_inq_dimid
+
+~~~~
+
+
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`name`
+
+:   Dimension name.
+
+`dimid`
+
+:   Returned dimension ID.
+
+
+
+## Errors
+
+NF90\_INQ\_DIMID returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The name that was specified is not the name of a dimension in the
+    netCDF dataset.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+
+
+
+## Example
+
+Here is an example using NF90\_INQ\_DIMID to determine the dimension ID
+of a dimension named lat, assumed to have been defined previously in an
+existing netCDF dataset named foo.nc:
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer :: ncid, status, LatDimID
+ ...
+ status = nf90_open("foo.nc", nf90_nowrite, ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...
+ status = nf90_inq_dimid(ncid, "Lat", LatDimID)
+ if (status /= nf90_noerr) call handle_err(status)
+
+~~~~
+
+
+4.4 NF90_INQUIRE_DIMENSION {#f90-nf90_inquire_dimension}
+============
+
+
+
+This function information about a netCDF dimension. Information about a
+dimension includes its name and its length. The length for the unlimited
+dimension, if any, is the number of records written so far.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+ function nf90_inquire_dimension(ncid, dimid, name, len)
+   integer,                       intent( in) :: ncid, dimid
+   character (len = *), optional, intent(out) :: name
+   integer,             optional, intent(out) :: len
+   integer                                    :: nf90_inquire_dimension
+
+~~~~
+
+
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`dimid`
+
+:   Dimension ID, from a previous call to NF90\_INQ\_DIMID
+    or NF90\_DEF\_DIM.
+
+`name`
+
+:   Returned dimension name. The caller must allocate space for the
+    returned name. The maximum possible length, in characters, of a
+    dimension name is given by the predefined constant NF90\_MAX\_NAME.
+
+`len`
+
+:   Returned length of dimension. For the unlimited dimension, this is
+    the current maximum value used for writing any variables with this
+    dimension, that is the maximum record number.
+
+
+
+## Errors
+
+These functions return the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The dimension ID is invalid for the specified netCDF dataset.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+
+
+
+## Example
+
+Here is an example using NF90\_INQ\_DIM to determine the length of a
+dimension named lat, and the name and current maximum length of the
+unlimited dimension for an existing netCDF dataset named foo.nc:
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer :: ncid, status, LatDimID, RecordDimID
+ integer :: nLats, nRecords
+ character(len = nf90_max_name) :: RecordDimName
+ ...
+ status = nf90_open("foo.nc", nf90_nowrite, ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ! Get ID of unlimited dimension
+ status = nf90_inquire(ncid, unlimitedDimId = RecordDimID)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...
+ status = nf90_inq_dimid(ncid, "Lat", LatDimID)
+ if (status /= nf90_noerr) call handle_err(status)
+ ! How many values of "lat" are there?
+ status = nf90_inquire_dimension(ncid, LatDimID, len = nLats)
+ if (status /= nf90_noerr) call handle_err(status)
+ ! What is the name of the unlimited dimension, how many records are there?
+ status = nf90_inquire_dimension(ncid, RecordDimID, &
+                                 name = RecordDimName, len = Records)
+ if (status /= nf90_noerr) call handle_err(status)
+
+~~~~
+
+
+
+4.5 NF90_RENAME_DIM {#f90-nf90_rename_dim}
+============
+
+
+
+The function NF90\_RENAME\_DIM renames an existing dimension in a netCDF
+dataset open for writing. If the new name is longer than the old name,
+the netCDF dataset must be in define mode. You cannot rename a dimension
+to have the same name as another dimension.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+ function nf90_rename_dim(ncid, dimid, name)
+   integer,             intent( in) :: ncid
+   character (len = *), intent( in) :: name
+   integer,             intent( in) :: dimid
+   integer                          :: nf90_rename_dim
+
+~~~~
+
+
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`dimid`
+
+:   Dimension ID, from a previous call to NF90\_INQ\_DIMID
+    or NF90\_DEF\_DIM.
+
+`name`
+
+:   New dimension name.
+
+
+
+## Errors
+
+NF90\_RENAME\_DIM returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The new name is the name of another dimension.
+-   The dimension ID is invalid for the specified netCDF dataset.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+-   The new name is longer than the old name and the netCDF dataset is
+    not in define mode.
+
+
+
+## Example
+
+Here is an example using NF90\_RENAME\_DIM to rename the dimension lat
+to latitude in an existing netCDF dataset named foo.nc:
+
+
+~~~~~~.fortran
+
+use netcdf
+implicit none
+integer :: ncid, status, LatDimID
+...
+status = nf90_open("foo.nc", nf90_write, ncid)
+if (status /= nf90_noerr) call handle_err(status)
+...
+! Put in define mode so we can rename the dimension
+status = nf90_redef(ncid)
+if (status /= nf90_noerr) call handle_err(status)
+! Get the dimension ID for "Lat"...
+status = nf90_inq_dimid(ncid, "Lat", LatDimID)
+if (status /= nf90_noerr) call handle_err(status)
+! ... and change the name to "Latitude".
+status = nf90_rename_dim(ncid, LatDimID, "Latitude")
+if (status /= nf90_noerr) call handle_err(status)
+! Leave define mode
+status = nf90_enddef(ncid)
+if (status /= nf90_noerr) call handle_err(status)
+
+~~~~~~
diff --git a/docs/netcdf-f90-sec5-user_defined_types.md b/docs/netcdf-f90-sec5-user_defined_types.md
new file mode 100644
index 0000000..22053bd
--- /dev/null
+++ b/docs/netcdf-f90-sec5-user_defined_types.md
@@ -0,0 +1,1882 @@
+5 User Defined Data Types {#f90-user-defined-data-types}
+=========================
+
+5.1 User Defined Types Introduction {#f90-user-defined-types-introduction}
+=========================
+
+[TOC]
+
+NetCDF-4 has added support for four different user defined data types.
+
+`compound type`
+
+:   Like a C struct, a compound type is a collection of types, including
+    other user defined types, in one package.
+
+`variable length array type`
+
+:   The variable length array may be used to store ragged arrays.
+
+`opaque type`
+
+:   This type has only a size per element, and no other
+    type information.
+
+`enum type`
+
+:   Like an enumeration in C, this type lets you assign text values to
+    integer values, and store the integer values.
+
+Users may construct user defined type with the various NF90\_DEF\_\*
+functions described in this section. They may learn about user defined
+types by using the NF90\_INQ\_ functions defined in this section.
+
+Once types are constructed, define variables of the new type with
+NF90\_DEF\_VAR (see section [Create a Variable: `NF90_DEF_VAR`](#NF90_005fDEF_005fVAR)). Write to them with
+NF90\_PUT\_VAR (see section [Writing Data Values: `NF90_PUT_VAR`](#NF90_005fPUT_005fVAR)). Read data of user-defined type
+with NF90\_GET\_VAR (see section [Reading Data Values: `NF90_GET_VAR`](#NF90_005fGET_005fVAR)).
+
+Create attributes of the new type with NF90\_PUT\_ATT (see section
+[Create an Attribute: NF90\_PUT\_ATT](#NF90_005fPUT_005fATT)). Read
+attributes of the new type with NF90\_GET\_ATT (see section [Get
+Attribute’s Values: NF90\_GET\_ATT](#NF90_005fGET_005fATT)).
+
+
+5.2 Learn the IDs of All Types in Group: NF90_INQ_TYPEIDS {#f90-learn-the-ids-of-all-types-in-group-nf90_inq_typeids}
+=========================
+
+
+
+Learn the number of types defined in a group, and their IDs.
+
+
+
+## Usage
+
+
+
+~~~~.fortran
+
+  function nf90_inq_typeids(ncid, ntypes, typeids)
+    integer, intent(in) :: ncid
+    integer, intent(out) :: ntypes
+    integer, intent(out) :: typeids
+    integer :: nf90_inq_typeids
+
+
+
+~~~~
+
+`NCID`
+
+:   The group id.
+
+`NTYPES`
+
+:   A pointer to int which will get the number of types defined in
+    the group. If NULL, ignored.
+
+`TYPEIDS`
+
+:   A pointer to an int array which will get the typeids. If
+    NULL, ignored.
+
+
+
+## Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_BADID`
+
+:   Bad ncid.
+
+
+
+## Example
+
+
+5.3 Find a Typeid from Group and Name: nf90_inq_typeid {#f90-find-a-typeid-from-group-and-name-nf90_inq_typeid}
+=========================
+
+
+
+Given a group ID and a type name, find the ID of the type. If the type
+is not found in the group, then the parents are searched. If still not
+found, the entire file is searched.
+
+
+
+## Usage
+
+
+
+
+~~~~.fortran
+int nf90_inq_typeid(int ncid, char *name, nf90_type *typeidp);
+
+
+~~~~
+
+
+`ncid`
+
+:   The group id.
+
+`name`
+
+:   The name of a type.
+
+`typeidp`
+
+:   The typeid, if found.
+
+
+
+### Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad ncid.
+
+`NF90_EBADTYPE`
+
+:   Can’t find type.
+
+
+
+## Example
+
+
+5.4 Learn About a User Defined Type: NF90_INQ_TYPE {#f90-learn-about-a-user-defined-type-nf90_inq_type}
+=========================
+
+
+Given an ncid and a typeid, get the information about a type. This
+function will work on any type, including atomic and any user defined
+type, whether compound, opaque, enumeration, or variable length array.
+
+For even more information about a user defined type [Learn About a User
+Defined Type: NF90\_INQ\_USER\_TYPE](#NF90_005fINQ_005fUSER_005fTYPE).
+
+
+
+## Usage
+
+~~~~.fortran
+
+
+
+  function nf90_inq_type(ncid, xtype, name, size)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    character (len = *), intent(out) :: name
+    integer, intent(out) :: size
+    integer :: nf90_inq_type
+
+
+
+~~~~
+
+`NCID`
+
+:   The ncid for the group containing the type (ignored for
+    atomic types).
+
+`XTYPE`
+
+:   The typeid for this type, as returned by NF90\_DEF\_COMPOUND,
+    NF90\_DEF\_OPAQUE, NF90\_DEF\_ENUM, NF90\_DEF\_VLEN, or
+    NF90\_INQ\_VAR, or as found in netcdf.inc in the list of atomic
+    types (NF90\_CHAR, NF90\_INT, etc.).
+
+`NAME`
+
+:   The name of the user defined type will be copied here. It will be
+    NF90\_MAX\_NAME bytes or less. For atomic types, the type name from
+    CDL will be given.
+
+`SIZEP`
+
+:   The (in-memory) size of the type (in bytes) will be copied here.
+    VLEN type size is the size of one element of the VLEN. String size
+    is returned as the size of one char.
+
+
+
+## Return Codes
+
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADTYPEID`
+
+:   Bad typeid.
+
+`NF90_ENOTNC4`
+
+:   Seeking a user-defined type in a netCDF-3 file.
+
+`NF90_ESTRICTNC3`
+
+:   Seeking a user-defined type in a netCDF-4 file for which classic
+    model has been turned on.
+
+`NF90_EBADGRPID`
+
+:   Bad group ID in ncid.
+
+`NF90_EBADID`
+
+:   Type ID not found.
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+## Example
+
+
+5.5 Learn About a User Defined Type: NF90_INQ_USER_TYPE {#f90-learn-about-a-user-defined-type-nf90_inq_user_type}
+=========================
+
+Given an ncid and a typeid, get the information about a user defined
+type. This function will work on any user defined type, whether
+compound, opaque, enumeration, or variable length array.
+
+
+
+## Usage
+
+
+
+~~~~.fortran
+
+  function nf90_inq_user_type(ncid, xtype, name, size, base_typeid, nfields, class)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    character (len = *), intent(out) :: name
+    integer, intent(out) :: size
+    integer, intent(out) :: base_typeid
+    integer, intent(out) :: nfields
+    integer, intent(out) :: class
+    integer :: nf90_inq_user_type
+~~~~
+
+`NCID`
+
+:   The ncid for the group containing the user defined type.
+
+`XTYPE`
+
+:   The typeid for this type, as returned by NF90\_DEF\_COMPOUND,
+    NF90\_DEF\_OPAQUE, NF90\_DEF\_ENUM, NF90\_DEF\_VLEN,
+    or NF90\_INQ\_VAR.
+
+`NAME`
+
+:   The name of the user defined type will be copied here. It will be
+    NF90\_MAX\_NAME bytes or less.
+
+`SIZE`
+
+:   The (in-memory) size of the user defined type will be copied here.
+
+`BASE_NF90_TYPE`
+
+:   The base typeid will be copied here for vlen and enum types.
+
+`NFIELDS`
+
+:   The number of fields will be copied here for enum and
+    compound types.
+
+`CLASS`
+
+:   The class of the user defined type, NF90\_VLEN, NF90\_OPAQUE,
+    NF90\_ENUM, or NF90\_COMPOUND, will be copied here.
+
+
+
+## Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADTYPEID`
+
+:   Bad typeid.
+
+`NF90_EBADFIELDID`
+
+:   Bad fieldid.
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+## Example
+
+## 5.5.1 Set a Variable Length Array with NF90_PUT_VLEN_ELEMENT {#f90-set-a-variable-length-array-with-nf90_put_vlen_element}
+
+
+
+Use this to set the element of the (potentially) n-dimensional array of
+VLEN. That is, this sets the data in one variable length array.
+
+
+
+### Usage
+
+
+~~~~.fortran
+
+
+INTEGER FUNCTION NF90_PUT_VLEN_ELEMENT(INTEGER NCID, INTEGER XTYPE,
+        CHARACTER*(*) VLEN_ELEMENT, INTEGER LEN, DATA)
+
+
+
+~~~~
+
+`NCID`
+
+:   The ncid of the file that contains the VLEN type.
+
+`XTYPE`
+
+:   The type of the VLEN.
+
+`VLEN_ELEMENT`
+
+:   The VLEN element to be set.
+
+`LEN`
+
+:   The number of entries in this array.
+
+`DATA`
+
+:   The data to be stored. Must match the base type of this VLEN.
+
+
+
+### Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADTYPE`
+
+:   Can’t find the typeid.
+
+`NF90_EBADID`
+
+:   ncid invalid.
+
+`NF90_EBADGRPID`
+
+:   Group ID part of ncid was invalid.
+
+
+
+### Example
+
+This example is from nf90\_test/ftst\_vars4.F.
+
+
+
+~~~~.fortran
+
+C     Set up the vlen with this helper function, since F90 can't deal
+C     with pointers.
+      retval = nf90_put_vlen_element(ncid, vlen_typeid, vlen,
+     &     vlen_len, data1)
+      if (retval .ne. nf90_noerr) call handle_err(retval)
+
+
+
+~~~~
+
+
+## 5.5.2 Set a Variable Length Array with NF90_GET_VLEN_ELEMENT {#f90-set-a-variable-length-array-with-nf90_get_vlen_element}
+
+
+
+Use this to set the element of the (potentially) n-dimensional array of
+VLEN. That is, this sets the data in one variable length array.
+
+
+
+### Usage
+
+
+
+~~~~.fortran
+
+INTEGER FUNCTION NF90_GET_VLEN_ELEMENT(INTEGER NCID, INTEGER XTYPE,
+        CHARACTER*(*) VLEN_ELEMENT, INTEGER LEN, DATA)
+
+
+~~~~
+
+
+`NCID`
+
+:   The ncid of the file that contains the VLEN type.
+
+`XTYPE`
+
+:   The type of the VLEN.
+
+`VLEN_ELEMENT`
+
+:   The VLEN element to be set.
+
+`LEN`
+
+:   This will be set to the number of entries in this array.
+
+`DATA`
+
+:   The data will be copied here. Sufficient storage must be available
+    or bad things will happen to you.
+
+
+
+### Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADTYPE`
+
+:   Can’t find the typeid.
+
+`NF90_EBADID`
+
+:   ncid invalid.
+
+`NF90_EBADGRPID`
+
+:   Group ID part of ncid was invalid.
+
+
+
+### Example
+
+
+5.6 Compound Types Introduction {#f90-compound-types-introduction}
+=========================
+
+
+
+NetCDF-4 added support for compound types, which allow users to
+construct a new type - a combination of other types, like a C struct.
+
+Compound types are not supported in classic or 64-bit offset format
+files.
+
+To write data in a compound type, first use nf90\_def\_compound to
+create the type, multiple calls to nf90\_insert\_compound to add to the
+compound type, and then write data with the appropriate nf90\_put\_var1,
+nf90\_put\_vara, nf90\_put\_vars, or nf90\_put\_varm call.
+
+To read data written in a compound type, you must know its structure.
+Use the NF90\_INQ\_COMPOUND functions to learn about the compound type.
+
+In Fortran a character buffer must be used for the compound data. The
+user must read the data from within that buffer in the same way that the
+C compiler which compiled netCDF would store the structure.
+
+The use of compound types introduces challenges and portability issues
+for Fortran users.
+
+## 5.6.1 Creating a Compound Type: NF90_DEF_COMPOUND {#f90-creating-a-compound-type-nf90_def_compound}
+
+
+
+Create a compound type. Provide an ncid, a name, and a total size (in
+bytes) of one element of the completed compound type.
+
+After calling this function, fill out the type with repeated calls to
+NF90\_INSERT\_COMPOUND (see section [Inserting a Field into a Compound
+Type: NF90\_INSERT\_COMPOUND](#NF90_005fINSERT_005fCOMPOUND)). Call
+NF90\_INSERT\_COMPOUND once for each field you wish to insert into the
+compound type.
+
+Note that there does not seem to be a fully portable way to read such
+types into structures in Fortran 90 (and there are no structures in
+Fortran 77). Dozens of top-notch programmers are swarming over this
+problem in a sub-basement of Unidata’s giant underground bunker in
+Wyoming.
+
+Fortran users may use character buffers to read and write compound
+types. User are invited to try classic Fortran features such as the
+equivilence and the common block statment.
+
+### Usage
+
+
+
+~~~~.fortran
+
+  function nf90_def_compound(ncid, size, name, typeid)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: size
+    character (len = *), intent(in) :: name
+    integer, intent(out) :: typeid
+    integer :: nf90_def_compound
+
+~~~~
+
+
+
+`NCID`
+
+:   The groupid where this compound type will be created.
+
+`SIZE`
+
+:   The size, in bytes, of the compound type.
+
+`NAME`
+
+:   The name of the new compound type.
+
+`TYPEIDP`
+
+:   The typeid of the new type will be placed here.
+
+
+
+### Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad group id.
+
+`NF90_ENAMEINUSE`
+
+:   That name is in use. Compound type names must be unique in the
+    data file.
+
+`NF90_EMAXNAME`
+
+:   Name exceeds max length NF90\_MAX\_NAME.
+
+`NF90_EBADNAME`
+
+:   Name contains illegal characters.
+
+`NF90_ENOTNC4`
+
+:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
+    operations can only be performed on files defined with a create mode
+    which includes flag NF90\_NETCDF4. (see section
+    [NF90\_OPEN](#NF90_005fOPEN)).
+
+`NF90_ESTRICTNC3`
+
+:   This file was created with the strict netcdf-3 flag, therefore
+    netcdf-4 operations are not allowed. (see section
+    [NF90\_OPEN](#NF90_005fOPEN)).
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+`NF90_EPERM`
+
+:   Attempt to write to a read-only file.
+
+`NF90_ENOTINDEFINE`
+
+:   Not in define mode.
+
+
+
+### Example
+
+## 5.6.2 Inserting a Field into a Compound Type: NF90_INSERT_COMPOUND {#f90-inserting-a-field-into-a-compound-type-nf90_insert_compound}
+
+
+
+Insert a named field into a compound type.
+
+
+
+### Usage
+
+
+
+~~~~.fortran
+
+  function nf90_insert_compound(ncid, xtype, name, offset, field_typeid)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    character (len = *), intent(in) :: name
+    integer, intent(in) :: offset
+    integer, intent(in) :: field_typeid
+    integer :: nf90_insert_compound
+
+
+~~~~
+
+
+`TYPEID`
+
+:   The typeid for this compound type, as returned by
+    NF90\_DEF\_COMPOUND, or NF90\_INQ\_VAR.
+
+`NAME`
+
+:   The name of the new field.
+
+`OFFSET`
+
+:   Offset in byte from the beginning of the compound type for
+    this field.
+
+`FIELD_TYPEID`
+
+:   The type of the field to be inserted.
+
+
+
+### Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad group id.
+
+`NF90_ENAMEINUSE`
+
+:   That name is in use. Field names must be unique within a
+    compound type.
+
+`NF90_EMAXNAME`
+
+:   Name exceed max length NF90\_MAX\_NAME.
+
+`NF90_EBADNAME`
+
+:   Name contains illegal characters.
+
+`NF90_ENOTNC4`
+
+:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
+    operations can only be performed on files defined with a create mode
+    which includes flag NF90\_NETCDF4. (see section
+    [NF90\_OPEN](#NF90_005fOPEN)).
+
+`NF90_ESTRICTNC3`
+
+:   This file was created with the strict netcdf-3 flag, therefore
+    netcdf-4 operations are not allowed. (see section
+    [NF90\_OPEN](#NF90_005fOPEN)).
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+`NF90_ENOTINDEFINE`
+
+:   Not in define mode.
+
+
+
+### Example
+
+
+
+
+
+## 5.6.3 Inserting an Array Field into a Compound Type: NF90_INSERT_ARRAY_COMPOUND {#f90-inserting-an-array-field-into-a-compound-type-nf90_insert_array_compound}
+
+
+
+Insert a named array field into a compound type.
+
+
+
+### Usage
+
+
+
+~~~~.fortran
+
+  function nf90_insert_array_compound(ncid, xtype, name, offset, field_typeid, &
+       ndims, dim_sizes)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    character (len = *), intent(in) :: name
+    integer, intent(in) :: offset
+    integer, intent(in) :: field_typeid
+    integer, intent(in) :: ndims
+    integer, intent(in) :: dim_sizes
+    integer :: nf90_insert_array_compound
+
+
+
+~~~~
+
+`NCID`
+
+:   The ID of the file that contains the array type and the
+    compound type.
+
+`XTYPE`
+
+:   The typeid for this compound type, as returned by
+    nf90\_def\_compound, or nf90\_inq\_var.
+
+`NAME`
+
+:   The name of the new field.
+
+`OFFSET`
+
+:   Offset in byte from the beginning of the compound type for
+    this field.
+
+`FIELD_TYPEID`
+
+:   The base type of the array to be inserted.
+
+`NDIMS`
+
+:   The number of dimensions for the array to be inserted.
+
+`DIM_SIZES`
+
+:   An array containing the sizes of each dimension.
+
+
+
+### Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad group id.
+
+`NF90_ENAMEINUSE`
+
+:   That name is in use. Field names must be unique within a
+    compound type.
+
+`NF90_EMAXNAME`
+
+:   Name exceed max length NF90\_MAX\_NAME.
+
+`NF90_EBADNAME`
+
+:   Name contains illegal characters.
+
+`NF90_ENOTNC4`
+
+:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
+    operations can only be performed on files defined with a create mode
+    which includes flag NF90\_NETCDF4. (see section
+    [NF90\_OPEN](#NF90_005fOPEN)).
+
+`NF90_ESTRICTNC3`
+
+:   This file was created with the strict netcdf-3 flag, therefore
+    netcdf-4 operations are not allowed. (see section
+    [NF90\_OPEN](#NF90_005fOPEN)).
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+`NF90_ENOTINDEFINE`
+
+:   Not in define mode.
+
+`NF90_ETYPEDEFINED`
+
+:   Attempt to change type that has already been committed. The first
+    time the file leaves define mode, all defined types are committed,
+    and can’t be changed. If you wish to add an array to a compound
+    type, you must do so before the compound type is committed.
+
+
+
+### Example
+
+## 5.6.4 Learn About a Compound Type: NF90_INQ_COMPOUND {#f90-learn-about-a-compound-type-nf90_inq_compound}
+
+
+
+Get the number of fields, length in bytes, and name of a compound type.
+
+In addtion to the NF90\_INQ\_COMPOUND function, three additional
+functions are provided which get only the name, size, and number of
+fields.
+
+
+
+### Usage
+
+
+~~~~.fortran
+
+
+  function nf90_inq_compound(ncid, xtype, name, size, nfields)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    character (len = *), intent(out) :: name
+    integer, intent(out) :: size
+    integer, intent(out) :: nfields
+    integer :: nf90_inq_compound
+
+  function nf90_inq_compound_name(ncid, xtype, name)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    character (len = *), intent(out) :: name
+    integer :: nf90_inq_compound_name
+
+  function nf90_inq_compound_size(ncid, xtype, size)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    integer, intent(out) :: size
+    integer :: nf90_inq_compound_size
+
+  function nf90_inq_compound_nfields(ncid, xtype, nfields)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    integer, intent(out) :: nfields
+    integer :: nf90_inq_compound_nfields
+
+
+
+~~~~
+
+`NCID`
+
+:   The ID of any group in the file that contains the compound type.
+
+`XTYPE`
+
+:   The typeid for this compound type, as returned by
+    NF90\_DEF\_COMPOUND, or NF90\_INQ\_VAR.
+
+`NAME`
+
+:   Character array which will get the name of the compound type. It
+    will have a maximum length of NF90\_MAX\_NAME.
+
+`SIZEP`
+
+:   The size of the compound type in bytes will be put here.
+
+`NFIELDSP`
+
+:   The number of fields in the compound type will be placed here.
+
+
+
+### Return Codes
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Couldn’t find this ncid.
+
+`NF90_ENOTNC4`
+
+:   Not a netCDF-4/HDF5 file.
+
+`NF90_ESTRICTNC3`
+
+:   A netCDF-4/HDF5 file, but with CLASSIC\_MODEL. No user defined types
+    are allowed in the classic model.
+
+`NF90_EBADTYPE`
+
+:   This type not a compound type.
+
+`NF90_EBADTYPEID`
+
+:   Bad type id.
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+### Example
+
+## 5.6.5 Learn About a Field of a Compound Type: NF90_INQ_COMPOUND_FIELD {#f90-learn-about-a-field-of-a-compound-type-nf90_inq_compound_field}
+
+
+
+Get information about one of the fields of a compound type.
+
+
+
+### Usage
+
+
+~~~~.fortran
+
+
+  function nf90_inq_compound_field(ncid, xtype, fieldid, name, offset, &
+       field_typeid, ndims, dim_sizes)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    integer, intent(in) :: fieldid
+    character (len = *), intent(out) :: name
+    integer, intent(out) :: offset
+    integer, intent(out) :: field_typeid
+    integer, intent(out) :: ndims
+    integer, intent(out) :: dim_sizes
+    integer :: nf90_inq_compound_field
+
+  function nf90_inq_compound_fieldname(ncid, xtype, fieldid, name)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    integer, intent(in) :: fieldid
+    character (len = *), intent(out) :: name
+    integer :: nf90_inq_compound_fieldname
+
+  function nf90_inq_compound_fieldindex(ncid, xtype, name, fieldid)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    character (len = *), intent(in) :: name
+    integer, intent(out) :: fieldid
+    integer :: nf90_inq_compound_fieldindex
+
+  function nf90_inq_compound_fieldoffset(ncid, xtype, fieldid, offset)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    integer, intent(in) :: fieldid
+    integer, intent(out) :: offset
+    integer :: nf90_inq_compound_fieldoffset
+
+  function nf90_inq_compound_fieldtype(ncid, xtype, fieldid, field_typeid)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    integer, intent(in) :: fieldid
+    integer, intent(out) :: field_typeid
+    integer :: nf90_inq_compound_fieldtype
+
+  function nf90_inq_compound_fieldndims(ncid, xtype, fieldid, ndims)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    integer, intent(in) :: fieldid
+    integer, intent(out) :: ndims
+    integer :: nf90_inq_compound_fieldndims
+
+  function nf90_inq_cmp_fielddim_sizes(ncid, xtype, fieldid, dim_sizes)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    integer, intent(in) :: fieldid
+    integer, intent(out) :: dim_sizes
+    integer :: nf90_inq_cmp_fielddim_sizes
+
+
+~~~~
+
+
+`NCID`
+
+:   The groupid where this compound type exists.
+
+`XTYPE`
+
+:   The typeid for this compound type, as returned by
+    NF90\_DEF\_COMPOUND, or NF90\_INQ\_VAR.
+
+`FIELDID`
+
+:   A one-based index number specifying a field in the compound type.
+
+`NAME`
+
+:   A character array which will get the name of the field. The name
+    will be NF90\_MAX\_NAME characters, at most.
+
+`OFFSETP`
+
+:   An integer which will get the offset of the field.
+
+`FIELD_TYPEID`
+
+:   An integer which will get the typeid of the field.
+
+`NDIMSP`
+
+:   An integer which will get the number of dimensions of the field.
+
+`DIM_SIZESP`
+
+:   An integer array which will get the dimension sizes of the field.
+
+
+
+### Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADTYPEID`
+
+:   Bad type id.
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+### Example
+
+5.7 Variable Length Array Introduction {#f90-variable-length-array-introduction}
+=========================
+
+
+
+NetCDF-4 added support for a variable length array type. This is not
+supported in classic or 64-bit offset files, or in netCDF-4 files which
+were created with the NF90\_CLASSIC\_MODEL flag.
+
+A variable length array is represented in C as a structure from HDF5,
+the nf90\_vlen\_t structure. It contains a len member, which contains
+the length of that array, and a pointer to the array.
+
+So an array of VLEN in C is an array of nc\_vlen\_t structures. The only
+way to handle this in Fortran is with a character buffer sized correctly
+for the platform.
+
+VLEN arrays are handled differently with respect to allocation of
+memory. Generally, when reading data, it is up to the user to malloc
+(and subsequently free) the memory needed to hold the data. It is up to
+the user to ensure that enough memory is allocated.
+
+With VLENs, this is impossible. The user cannot know the size of an
+array of VLEN until after reading the array. Therefore when reading VLEN
+arrays, the netCDF library will allocate the memory for the data within
+each VLEN.
+
+It is up to the user, however, to eventually free this memory. This is
+not just a matter of one call to free, with the pointer to the array of
+VLENs; each VLEN contains a pointer which must be freed.
+
+Compression is permitted but may not be effective for VLEN data, because
+the compression is applied to the nc\_vlen\_t structures, rather than
+the actual data.
+
+## 5.7.1 Define a Variable Length Array (VLEN): NF90_DEF_VLEN {#f90-define-a-variable-length-array-vlen-nf90_def_vlen}
+
+
+
+Use this function to define a variable length array type.
+
+
+
+### Usage
+
+
+~~~~.fortran
+
+
+  function nf90_def_vlen(ncid, name, base_typeid, xtypeid)
+    integer, intent(in) :: ncid
+    character (len = *), intent(in) :: name
+    integer, intent(in) :: base_typeid
+    integer, intent(out) :: xtypeid
+    integer :: nf90_def_vlen
+
+
+~~~~
+
+
+`NCID`
+
+:   The ncid of the file to create the VLEN type in.
+
+`NAME`
+
+:   A name for the VLEN type.
+
+`BASE_TYPEID`
+
+:   The typeid of the base type of the VLEN. For example, for a VLEN of
+    shorts, the base type is NF90\_SHORT. This can be a user
+    defined type.
+
+`XTYPEP`
+
+:   The typeid of the new VLEN type will be set here.
+
+
+
+### Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EMAXNAME`
+
+:   NF90\_MAX\_NAME exceeded.
+
+`NF90_ENAMEINUSE`
+
+:   Name is already in use.
+
+`NF90_EBADNAME`
+
+:   Attribute or variable name contains illegal characters.
+
+`NF90_EBADID`
+
+:   ncid invalid.
+
+`NF90_EBADGRPID`
+
+:   Group ID part of ncid was invalid.
+
+`NF90_EINVAL`
+
+:   Size is invalid.
+
+`NF90_ENOMEM`
+
+:   Out of memory.
+
+
+
+### Example
+
+## 5.7.2 Learning about a Variable Length Array (VLEN) Type: NF90_INQ_VLEN {#f90-learning-about-a-variable-length-array-vlen-type-nf90_inq_vlen}
+
+
+
+Use this type to learn about a vlen.
+
+
+
+### Usage
+
+
+~~~~.fortran
+
+
+  function nf90_inq_vlen(ncid, xtype, name, datum_size, base_nc_type)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    character (len = *), intent(out) :: name
+    integer, intent(out) :: datum_size
+    integer, intent(out) :: base_nc_type
+    integer :: nf90_inq_vlen
+
+
+~~~~
+
+
+`NCID`
+
+:   The ncid of the file that contains the VLEN type.
+
+`XTYPE`
+
+:   The type of the VLEN to inquire about.
+
+`NAME`
+
+:   The name of the VLEN type. The name will be NF90\_MAX\_NAME
+    characters or less.
+
+`DATUM_SIZEP`
+
+:   A pointer to a size\_t, this will get the size of one element of
+    this vlen.
+
+`BASE_NF90_TYPEP`
+
+:   An integer that will get the type of the VLEN base type. (In other
+    words, what type is this a VLEN of?)
+
+
+
+#### Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADTYPE`
+
+:   Can’t find the typeid.
+
+`NF90_EBADID`
+
+:   ncid invalid.
+
+`NF90_EBADGRPID`
+
+:   Group ID part of ncid was invalid.
+
+
+
+### Example
+
+
+## 5.7.3 Releasing Memory for a Variable Length Array (VLEN) Type: NF90_FREE_VLEN {#f90-releasing-memory-for-a-variable-length-array-vlen-type-nf90_free_vlen}
+
+
+
+When a VLEN is read into user memory from the file, the HDF5 library
+performs memory allocations for each of the variable length arrays
+contained within the VLEN structure. This memory must be freed by the
+user to avoid memory leaks.
+
+This violates the normal netCDF expectation that the user is responsible
+for all memory allocation. But, with VLEN arrays, the underlying HDF5
+library allocates the memory for the user, and the user is responsible
+for deallocating that memory.
+
+
+
+### Usage
+
+
+~~~~.fortran
+
+
+  function nf90_free_vlen(vl)
+    character (len = *), intent(in) :: vlen
+    integer :: nf90_free_vlen
+  end function nf90_free_vlen
+
+
+~~~~
+
+
+`VL`
+
+:   The variable length array structure which is to be freed.
+
+
+
+### Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADTYPE`
+
+:   Can’t find the typeid.
+
+
+
+### Example
+
+
+5.8 Opaque Type Introduction {#f90-opaque-type-introduction}
+=========================
+
+
+
+NetCDF-4 added support for the opaque type. This is not supported in
+classic or 64-bit offset files.
+
+The opaque type is a type which is a collection of objects of a known
+size. (And each object is the same size). Nothing is known to netCDF
+about the contents of these blobs of data, except their size in bytes,
+and the name of the type.
+
+To use an opaque type, first define it with [Creating Opaque Types:
+NF90\_DEF\_OPAQUE](#NF90_005fDEF_005fOPAQUE). If encountering an enum
+type in a new data file, use [Learn About an Opaque Type:
+NF90\_INQ\_OPAQUE](#NF90_005fINQ_005fOPAQUE) to learn its name and size.
+
+## 5.8.1 Creating Opaque Types: NF90_DEF_OPAQUE {#f90-creating-opaque-types-nf90_def_opaque}
+
+
+
+Create an opaque type. Provide a size and a name.
+
+
+
+### Usage
+
+
+
+~~~~.fortran
+
+  function nf90_def_opaque(ncid, size, name, xtype)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: size
+    character (len = *), intent(in) :: name
+    integer, intent(out) :: xtype
+    integer :: nf90_def_opaque
+
+
+~~~~
+
+
+`NCID`
+
+:   The groupid where the type will be created. The type may be used
+    anywhere in the file, no matter what group it is in.
+
+`NAME`
+
+:   The name for this type. Must be shorter than NF90\_MAX\_NAME.
+
+`SIZE`
+
+:   The size of each opaque object.
+
+`TYPEIDP`
+
+:   Pointer where the new typeid for this type is returned. Use this
+    typeid when defining variables of this type with [Create a Variable:
+    `NF90_DEF_VAR`](#NF90_005fDEF_005fVAR).
+
+
+
+### Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADTYPEID`
+
+:   Bad typeid.
+
+`NF90_EBADFIELDID`
+
+:   Bad fieldid.
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+### Example
+
+## 5.8.2 Learn About an Opaque Type: NF90_INQ_OPAQUE {#f90-learn-about-an-opaque-type-nf90_inq_opaque}
+
+
+
+Given a typeid, get the information about an opaque type.
+
+
+
+### Usage
+
+
+
+~~~~.fortran
+
+  function nf90_inq_opaque(ncid, xtype, name, size)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    character (len = *), intent(out) :: name
+    integer, intent(out) :: size
+    integer :: nf90_inq_opaque
+
+
+
+~~~~
+
+`NCID`
+
+:   The ncid for the group containing the opaque type.
+
+`XTYPE`
+
+:   The typeid for this opaque type, as returned by NF90\_DEF\_COMPOUND,
+    or NF90\_INQ\_VAR.
+
+`NAME`
+
+:   The name of the opaque type will be copied here. It will be
+    NF90\_MAX\_NAME bytes or less.
+
+`SIZEP`
+
+:   The size of the opaque type will be copied here.
+
+
+
+### Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADTYPEID`
+
+:   Bad typeid.
+
+`NF90_EBADFIELDID`
+
+:   Bad fieldid.
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+### Example
+
+5.9 Enum Type Introduction {#f90-enum-type-introduction}
+=========================
+
+
+
+NetCDF-4 added support for the enum type. This is not supported in
+classic or 64-bit offset files.
+
+
+## 5.9.1 Creating a Enum Type: NF90_DEF_ENUM {#f90-creating-a-enum-type-nf90_def_enum}
+
+
+
+Create an enum type. Provide an ncid, a name, and a base integer type.
+
+After calling this function, fill out the type with repeated calls to
+NF90\_INSERT\_ENUM (see section [Inserting a Field into a Enum Type:
+NF90\_INSERT\_ENUM](#NF90_005fINSERT_005fENUM)). Call NF90\_INSERT\_ENUM
+once for each value you wish to make part of the enumeration.
+
+
+
+### Usage
+
+
+
+~~~~.fortran
+
+  function nf90_def_enum(ncid, base_typeid, name, typeid)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: base_typeid
+    character (len = *), intent(in) :: name
+    integer, intent(out) :: typeid
+    integer :: nf90_def_enum
+
+
+~~~~
+
+
+`NCID`
+
+:   The groupid where this compound type will be created.
+
+`BASE_TYPEID`
+
+:   The base integer type for this enum. Must be one of: NF90\_BYTE,
+    NF90\_UBYTE, NF90\_SHORT, NF90\_USHORT, NF90\_INT, NF90\_UINT,
+    NF90\_INT64, NF90\_UINT64.
+
+`NAME`
+
+:   The name of the new enum type.
+
+`TYPEIDP`
+
+:   The typeid of the new type will be placed here.
+
+
+
+### Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad group id.
+
+`NF90_ENAMEINUSE`
+
+:   That name is in use. Compound type names must be unique in the
+    data file.
+
+`NF90_EMAXNAME`
+
+:   Name exceeds max length NF90\_MAX\_NAME.
+
+`NF90_EBADNAME`
+
+:   Name contains illegal characters.
+
+`NF90_ENOTNC4`
+
+:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
+    operations can only be performed on files defined with a create mode
+    which includes flag NF90\_NETCDF4. (see section
+    [NF90\_OPEN](#NF90_005fOPEN)).
+
+`NF90_ESTRICTNC3`
+
+:   This file was created with the strict netcdf-3 flag, therefore
+    netcdf-4 operations are not allowed. (see section
+    [NF90\_OPEN](#NF90_005fOPEN)).
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+`NF90_EPERM`
+
+:   Attempt to write to a read-only file.
+
+`NF90_ENOTINDEFINE`
+
+:   Not in define mode.
+
+
+
+### Example
+
+
+
+## 5.9.2 Inserting a Field into a Enum Type: NF90_INSERT_ENUM {#f90-inserting-a-field-into-a-enum-type-nf90_insert_enum}
+
+
+
+Insert a named member into a enum type.
+
+
+
+### Usage
+
+
+
+~~~~.fortran
+
+  function nf90_insert_enum(ncid, xtype, name, value)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    character (len = *), intent(in) :: name
+    integer, intent(in) :: value
+    integer :: nf90_insert_enum
+
+
+~~~~
+
+
+`NCID`
+
+:   The ncid of the group which contains the type.
+
+`TYPEID`
+
+:   The typeid for this enum type, as returned by nf90\_def\_enum,
+    or nf90\_inq\_var.
+
+`IDENTIFIER`
+
+:   The identifier of the new member.
+
+`VALUE`
+
+:   The value that is to be associated with this member.
+
+
+
+### Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADID`
+
+:   Bad group id.
+
+`NF90_ENAMEINUSE`
+
+:   That name is in use. Field names must be unique within a enum type.
+
+`NF90_EMAXNAME`
+
+:   Name exceed max length NF90\_MAX\_NAME.
+
+`NF90_EBADNAME`
+
+:   Name contains illegal characters.
+
+`NF90_ENOTNC4`
+
+:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
+    operations can only be performed on files defined with a create mode
+    which includes flag NF90\_NETCDF4. (see section
+    [NF90\_OPEN](#NF90_005fOPEN)).
+
+`NF90_ESTRICTNC3`
+
+:   This file was created with the strict netcdf-3 flag, therefore
+    netcdf-4 operations are not allowed. (see section
+    [NF90\_OPEN](#NF90_005fOPEN)).
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+`NF90_ENOTINDEFINE`
+
+:   Not in define mode.
+
+
+
+### Example
+
+## 5.9.3 Learn About a Enum Type: NF90_INQ_ENUM {#f90-learn-about-a-enum-type-nf90_inq_enum}
+
+
+
+Get information about a user-defined enumeration type.
+
+
+
+### Usage
+
+
+~~~~.fortran
+
+
+  function nf90_inq_enum(ncid, xtype, name, base_nc_type, base_size, num_members)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    character (len = *), intent(out) :: name
+    integer, intent(out) :: base_nc_type
+    integer, intent(out) :: base_size
+    integer, intent(out) :: num_members
+    integer :: nf90_inq_enum
+
+
+
+~~~~
+
+`NCID`
+
+:   The group ID of the group which holds the enum type.
+
+`XTYPE`
+
+:   The typeid for this enum type, as returned by NF90\_DEF\_ENUM,
+    or NF90\_INQ\_VAR.
+
+`NAME`
+
+:   Character array which will get the name. It will have a maximum
+    length of NF90\_MAX\_NAME.
+
+`BASE_NF90_TYPE`
+
+:   An integer which will get the base integer type of this enum.
+
+`BASE_SIZE`
+
+:   An integer which will get the size (in bytes) of the base integer
+    type of this enum.
+
+`NUM_MEMBERS`
+
+:   An integer which will get the number of members defined for this
+    enumeration type.
+
+
+
+### Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADTYPEID`
+
+:   Bad type id.
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+### Example
+
+
+## 5.9.4 Learn the Name of a Enum Type: nf90_inq_enum_member {#f90-learn-the-name-of-a-enum-type-nf90_inq_enum_member}
+
+
+
+Get information about a member of an enum type.
+
+
+
+### Usage
+
+
+
+
+~~~~.fortran
+  function nf90_inq_enum_member(ncid, xtype, idx, name, value)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    integer, intent(in) :: idx
+    character (len = *), intent(out) :: name
+    integer, intent(in) :: value
+    integer :: nf90_inq_enum_member
+
+~~~~
+
+
+
+`NCID`
+
+:   The groupid where this enum type exists.
+
+`XTYPE`
+
+:   The typeid for this enum type.
+
+`IDX`
+
+:   The one-based index number for the member of interest.
+
+`NAME`
+
+:   A character array which will get the name of the member. It will
+    have a maximum length of NF90\_MAX\_NAME.
+
+`VALUE`
+
+:   An integer that will get the value associated with this member.
+
+
+
+### Errors
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADTYPEID`
+
+:   Bad type id.
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+
+
+### Example
+
+
+
+## 5.9.5 Learn the Name of a Enum Type: NF90_INQ_ENUM_IDENT {#f90-learn-the-name-of-a-enum-type-nf90_inq_enum_ident}
+
+
+
+Get the name which is associated with an enum member value.
+
+This is similar to NF90\_INQ\_ENUM\_MEMBER, but instead of using the
+index of the member, you use the value of the member.
+
+
+
+### Usage
+
+
+
+~~~~.fortran
+
+  function nf90_inq_enum_ident(ncid, xtype, value, idx)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: xtype
+    integer, intent(in) :: value
+    integer, intent(out) :: idx
+    integer :: nf90_inq_enum_ident
+
+
+~~~~
+
+
+`NCID`
+
+:   The groupid where this enum type exists.
+
+`XTYPE`
+
+:   The typeid for this enum type.
+
+`VALUE`
+
+:   The value for which an identifier is sought.
+
+`IDENTIFIER`
+
+:   A character array that will get the identifier. It will have a
+    maximum length of NF90\_MAX\_NAME.
+
+
+
+### Return Code
+
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_EBADTYPEID`
+
+:   Bad type id, or not an enum type.
+
+`NF90_EHDFERR`
+
+:   An error was reported by the HDF5 layer.
+
+`NF90_EINVAL`
+
+:   The value was not found in the enum.
+
+
+
+### Example
diff --git a/docs/netcdf-f90-sec6-variables.md b/docs/netcdf-f90-sec6-variables.md
new file mode 100644
index 0000000..9f51036
--- /dev/null
+++ b/docs/netcdf-f90-sec6-variables.md
@@ -0,0 +1,1790 @@
+6 Variables {#f90-variables}
+===========
+
+[TOC]
+
+6.1 Variables Introduction {#f90-variables-introduction}
+===========
+
+Variables for a netCDF dataset are defined when the dataset is created,
+while the netCDF dataset is in define mode. Other variables may be added
+later by reentering define mode. A netCDF variable has a name, a type,
+and a shape, which are specified when it is defined. A variable may also
+have values, which are established later in data mode.
+
+Ordinarily, the name, type, and shape are fixed when the variable is
+first defined. The name may be changed, but the type and shape of a
+variable cannot be changed. However, a variable defined in terms of the
+unlimited dimension can grow without bound in that dimension.
+
+A netCDF variable in an open netCDF dataset is referred to by a small
+integer called a variable ID.
+
+Variable IDs reflect the order in which variables were defined within a
+netCDF dataset. Variable IDs are 1, 2, 3,..., in the order in which the
+variables were defined. A function is available for getting the variable
+ID from the variable name and vice-versa.
+
+Attributes (see [Attributes](#Attributes)) may be associated with a
+variable to specify such properties as units.
+
+Operations supported on variables are:
+
+-   Create a variable, given its name, data type, and shape.
+-   Get a variable ID from its name.
+-   Get a variable’s name, data type, shape, and number of attributes
+    from its ID.
+-   Put a data value into a variable, given variable ID, indices,
+    and value.
+-   Put an array of values into a variable, given variable ID, corner
+    indices, edge lengths, and a block of values.
+-   Put a subsampled or mapped array-section of values into a variable,
+    given variable ID, corner indices, edge lengths, stride vector,
+    index mapping vector, and a block of values.
+-   Get a data value from a variable, given variable ID and indices.
+-   Get an array of values from a variable, given variable ID, corner
+    indices, and edge lengths.
+-   Get a subsampled or mapped array-section of values from a variable,
+    given variable ID, corner indices, edge lengths, stride vector, and
+    index mapping vector.
+-   Rename a variable.
+
+
+6.2 Language Types Corresponding to netCDF external data types {#f90-language-types-corresponding-to-netcdf-external-data-types}
+===========
+
+The following table gives the netCDF external data types and the
+corresponding type constants for defining variables in the FORTRAN
+interface:
+
+Type   |  FORTRAN API Mnemonic |  Bits
+-------| ----------------------| ------
+byte   |  NF90_BYTE           |  8
+char   |  NF90_CHAR           |  8
+short  |  NF90_SHORT          |  16
+int    |  NF90_INT            |  32
+float  |  NF90_FLOAT          |  32
+double |  NF90_DOUBLE         |  64
+
+
+The first column gives the netCDF external data type, which is the same
+as the CDL data type. The next column gives the corresponding Fortran 90
+parameter for use in netCDF functions (the parameters are defined in the
+netCDF Fortran 90 module netcdf.f90). The last column gives the number
+of bits used in the external representation of values of the
+corresponding type.
+
+Note that there are no netCDF types corresponding to 64-bit integers or
+to characters wider than 8 bits in the current version of the netCDF
+library.
+
+
+6.3 Create a Variable: `NF90_DEF_VAR` {#f90-create-a-variable-nf90_def_var}
+===========
+
+
+
+The function NF90\_DEF\_VAR adds a new variable to an open netCDF
+dataset in define mode. It returns (as an argument) a variable ID, given
+the netCDF ID, the variable name, the variable type, the number of
+dimensions, and a list of the dimension IDs.
+
+Optional arguments allow additional settings for variables in
+netCDF-4/HDF5 files. These parameters allow data compression and control
+of the layout of the data on disk for performance tuning. These
+parameters may also be used to set the chunk sizes to get chunked
+storage, or to set the contiguous flag to get contiguous storage.
+
+Variables that make use of one or more unlimited dimensions,
+compression, or checksums must use chunking. Such variables are created
+with default chunk sizes of 1 for each unlimited dimension and the
+dimension length for other dimensions, except that if the resulting
+chunks are too large, the default chunk sizes for non-record dimensions
+are reduced.
+
+All parameters after the varid are optional, and only supported if
+netCDF was built with netCDF-4 features enabled, and if the variable is
+in a netCDF-4/HDF5 file.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+
+ function nf90_def_var(ncid, name, xtype, dimids, varid, contiguous, &
+       chunksizes, deflate_level, shuffle, fletcher32, endianness, &
+       cache_size, cache_nelems, cache_preemption)
+   integer, intent(in) :: ncid
+   character (len = *), intent(in) :: name
+   integer, intent( in) :: xtype
+   integer, scalar or dimension(:), intent(in), optional :: dimids
+   integer, intent(out) :: varid
+   logical, optional, intent(in) :: contiguous
+   integer, optional, dimension(:), intent(in) :: chunksizes
+   integer, optional, intent(in) :: deflate_level
+   logical, optional, intent(in) :: shuffle, fletcher32
+   integer, optional, intent(in) :: endianness
+    integer, optional, intent(in) :: cache_size, cache_nelems, cache_preemption
+   integer                                      :: nf90_def_var
+
+
+
+~~~~
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`name`
+
+:   Variable name.
+
+`xtype`
+
+:   One of the set of predefined netCDF external data types. The type of
+    this parameter, NF90\_TYPE, is defined in the netCDF header file.
+    The valid netCDF external data types are NF90\_BYTE, NF90\_CHAR,
+    NF90\_SHORT, NF90\_INT, NF90\_FLOAT, and NF90\_DOUBLE. If the file
+    is a NetCDF-4/HDF5 file, the additional types NF90\_UBYTE,
+    NF90\_USHORT, NF90\_UINT, NF90\_INT64, NF90\_UINT64, and
+    NF90\_STRING may be used, as well as a user defined type ID.
+
+`dimids`
+
+:   Scalar or vector of dimension IDs corresponding to the
+    variable dimensions. For example, a vector of 2 dimension IDs
+    specifies a 2-dimensional matrix.
+
+    If an integer is passed for this parameter, a 1-D variable
+    is created.
+
+    If this parameter is not passed (or is a 1D array of size zero) it
+    means the variable is a scalar with no dimensions.
+
+    For classic data model files, if the ID of the unlimited dimension
+    is included, it must be first. In expanded model netCDF4/HDF5 files,
+    there may be any number of unlimited dimensions, and they may be
+    used in any element of the dimids array.
+
+    This argument is optional, and if absent specifies a scalar with
+    no dimensions.
+
+`varid`
+
+:   Returned variable ID.
+
+`storage`
+
+:   If NF90\_CONTIGUOUS, then contiguous storage is used for
+    this variable. Variables that use deflation, shuffle filter, or
+    checksums, or that have one or more unlimited dimensions cannot use
+    contiguous storage.
+
+    If NF90\_CHUNKED, then chunked storage is used for this variable.
+    Chunk sizes may be specified with the chunksizes parameter. Default
+    sizes will be used if chunking is required and this function is
+    not called.
+
+    By default contiguous storage is used for fix-sized variables when
+    conpression, chunking, shuffle, and checksums are not used.
+
+`chunksizes`
+
+:   An array of chunk number of elements. This array has the number of
+    elements along each dimension of the data chunk. The array must have
+    the one chunksize for each dimension in the variable.
+
+    The total size of a chunk must be less than 4 GiB. That is, the
+    product of all chunksizes and the size of the data (or the size of
+    nc\_vlen\_t for VLEN types) must be less than 4 GiB. (This is a very
+    large chunk size in any case.)
+
+    If not provided, but chunked data are needed, then default
+    chunksizes will be chosen. For more information see [{No value for
+    ‘n-man’}](netcdf.html#Chunking) in {No value for ‘n-man’}.
+
+`shuffle`
+
+:   If non-zero, turn on the shuffle filter.
+
+`deflate_level`
+
+:   If the deflate parameter is non-zero, set the deflate level to
+    this value. Must be between 1 and 9.
+
+`fletcher32`
+
+:   Set to true to turn on fletcher32 checksums for this variable.
+
+`endianness`
+
+:   Set to NF90\_ENDIAN\_LITTLE for little-endian format,
+    NF90\_ENDIAN\_BIG for big-endian format, and NF90\_ENDIAN\_NATIVE
+    (the default) for the native endianness of the platform.
+
+`cache_size`
+
+:   The size of the per-variable cache in MegaBytes.
+
+`cache_nelems`
+
+:   The number slots in the per-variable chunk cache (should be a prime
+    number larger than the number of chunks in the cache).
+
+`cache_preemption`
+
+:   The preemtion value must be between 0 and 100 inclusive and
+    indicates how much chunks that have been fully read are favored
+    for preemption. A value of zero means fully read chunks are treated
+    no differently than other chunks (the preemption is strictly LRU)
+    while a value of 100 means fully read chunks are always preempted
+    before other chunks.
+
+
+
+## Return Codes
+
+NF90\_DEF\_VAR returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error.
+
+-   NF90\_EBADNAME The specified variable name is the name of another
+    existing variable.
+-   NF90\_EBADTYPE The specified type is not a valid netCDF type.
+-   NF90\_EMAXDIMS The specified number of dimensions is negative or
+    more than the constant NF90\_MAX\_VAR\_DIMS, the maximum number of
+    dimensions permitted for a netCDF variable. (Does not apply to
+    netCDF-4/HDF5 files unless they were created with the
+    CLASSIC\_MODE flag.)
+-   NF90\_EBADDIM One or more of the dimension IDs in the list of
+    dimensions is not a valid dimension ID for the netCDF dataset.
+-   NF90\_EMAXVARS The number of variables would exceed the constant
+    NF90\_MAX\_VARS, the maximum number of variables permitted in a
+    classic netCDF dataset. (Does not apply to netCDF-4/HDF5 files
+    unless they were created with the CLASSIC\_MODE flag.)
+-   NF90\_BADID The specified netCDF ID does not refer to an open
+    netCDF dataset.
+-   NF90\_ENOTNC4 NetCDF-4 operation attempted on a files that is not a
+    netCDF-4/HDF5 file. Only variables in NetCDF-4/HDF5 files may use
+    compression, chunking, and endianness control.
+-   NF90\_ENOTVAR Can’t find this variable.
+-   NF90\_EINVAL Invalid input. This may be because contiguous storage
+    is requested for a variable that has compression, checksums,
+    chunking, or one or more unlimited dimensions.
+-   NF90\_ELATEDEF This variable has already been the subject of a
+    NF90\_ENDDEF call. Once enddef has been called, it is impossible to
+    set the chunking for a variable. (In netCDF-4/HDF5 files
+    NF90\_ENDDEF will be called automatically for any data read
+    or write.)
+-   NF90\_ENOTINDEFINE Not in define mode. This is returned for netCDF
+    classic or 64-bit offset files, or for netCDF-4 files, when they
+    were been created with NF90\_STRICT\_NC3 flag. (see section
+    [NF90\_CREATE](#NF90_005fCREATE)).
+-   NF90\_ESTRICTNC3 Trying to create a var some place other than the
+    root group in a netCDF file with NF90\_STRICT\_NC3 turned on.
+
+
+
+### Example
+
+Here is an example using NF90\_DEF\_VAR to create a variable named rh of
+type double with three dimensions, time, lat, and lon in a new netCDF
+dataset named foo.nc:
+
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer :: status, ncid
+ integer :: LonDimId, LatDimId, TimeDimId
+ integer :: RhVarId
+ ...
+ status = nf90_create("foo.nc", nf90_NoClobber, ncid)
+ if(status /= nf90_NoErr) call handle_error(status)
+ ...
+ ! Define the dimensions
+ status = nf90_def_dim(ncid, "lat", 5, LatDimId)
+ if(status /= nf90_NoErr) call handle_error(status)
+ status = nf90_def_dim(ncid, "lon", 10, LonDimId)
+ if(status /= nf90_NoErr) call handle_error(status)
+ status = nf90_def_dim(ncid, "time", nf90_unlimited, TimeDimId)
+ if(status /= nf90_NoErr) call handle_error(status)
+ ...
+ ! Define the variable
+ status = nf90_def_var(ncid, "rh", nf90_double, &
+                       (/ LonDimId, LatDimID, TimeDimID /), RhVarId)
+ if(status /= nf90_NoErr) call handle_error(status)
+
+
+~~~~
+
+
+In the following example, from nf\_test/f90tst\_vars2.f90, chunking,
+checksums, and endianness control are all used in a netCDF-4/HDF5 file.
+
+
+~~~~.fortran
+
+
+  ! Create the netCDF file.
+  call check(nf90_create(FILE_NAME, nf90_netcdf4, ncid, cache_nelems = CACHE_NELEMS, &
+       cache_size = CACHE_SIZE))
+
+  ! Define the dimensions.
+  call check(nf90_def_dim(ncid, "x", NX, x_dimid))
+  call check(nf90_def_dim(ncid, "y", NY, y_dimid))
+  dimids =  (/ y_dimid, x_dimid /)
+
+  ! Define some variables.
+  chunksizes = (/ NY, NX /)
+  call check(nf90_def_var(ncid, VAR1_NAME, NF90_INT, dimids, varid1, chunksizes = chunksizes, &
+       shuffle = .TRUE., fletcher32 = .TRUE., endianness = nf90_endian_big, deflate_level = DEFLATE_LEVEL))
+  call check(nf90_def_var(ncid, VAR2_NAME, NF90_INT, dimids, varid2, contiguous = .TRUE.))
+  call check(nf90_def_var(ncid, VAR3_NAME, NF90_INT64, varid3))
+  call check(nf90_def_var(ncid, VAR4_NAME, NF90_INT, x_dimid, varid4, contiguous = .TRUE.))
+
+
+~~~~
+
+
+6.4 Define Fill Parameters for a Variable: `nf90_def_var_fill` {#f90-define-fill-parameters-for-a-variable-nf90_def_var_fill}
+===========
+
+
+
+The function NF90\_DEF\_VAR\_FILL sets the fill parameters for a
+variable in a netCDF-4 file.
+
+This function must be called after the variable is defined, but before
+NF90\_ENDDEF is called.
+
+
+
+## Usage
+
+
+
+~~~~.fortran
+
+NF90_DEF_VAR_FILL(INTEGER NCID, INTEGER VARID, INTEGER NO_FILL, FILL_VALUE);
+
+~~~~
+
+
+
+`NCID`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`VARID`
+
+:   Variable ID.
+
+`NO_FILL`
+
+:   Set to non-zero value to set no\_fill mode on a variable. When this
+    mode is on, fill values will not be written for the variable. This
+    is helpful in high performance applications. For netCDF-4/HDF5 files
+    (whether classic model or not), this may only be changed after the
+    variable is defined, but before it is committed to disk (i.e. before
+    the first NF90\_ENDDEF after the NF90\_DEF\_VAR.) For classic and
+    64-bit offset file, the no\_fill mode may be turned on and off at
+    any time.
+
+`FILL_VALUE`
+
+:   A value which will be used as the fill value for the variable. Must
+    be the same type as the variable. This will be written to a
+    \_FillValue attribute, created for this purpose. If NULL, this
+    argument will be ignored.
+
+
+
+## Return Codes
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_BADID`
+
+:   Bad ncid.
+
+`NF90_ENOTNC4`
+
+:   Not a netCDF-4 file.
+
+`NF90_ENOTVAR`
+
+:   Can’t find this variable.
+
+`NF90_ELATEDEF`
+
+:   This variable has already been the subject of a NF90\_ENDDEF call.
+    In netCDF-4 files NF90\_ENDDEF will be called automatically for any
+    data read or write. Once enddef has been called, it is impossible to
+    set the fill for a variable.
+
+`NF90_ENOTINDEFINE`
+
+:   Not in define mode. This is returned for netCDF classic or 64-bit
+    offset files, or for netCDF-4 files, when they were been created
+    with NF90\_STRICT\_NC3 flag. (see section
+    [NF90\_CREATE](#NF90_005fCREATE)).
+
+`NF90_EPERM`
+
+:   Attempt to create object in read-only file.
+
+
+
+## Example
+
+
+6.5 Learn About Fill Parameters for a Variable: `NF90_INQ_VAR_FILL` {#f90-learn-about-fill-parameters-for-a-variable-nf90_inq_var_fill}
+===========
+
+
+
+The function NF90\_INQ\_VAR\_FILL returns the fill settings for a
+variable in a netCDF-4 file.
+
+
+
+## Usage
+
+
+
+~~~~.fortran
+
+NF90_INQ_VAR_FILL(INTEGER NCID, INTEGER VARID, INTEGER NO_FILL, FILL_VALUE)
+
+~~~~
+
+
+
+`NCID`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`VARID`
+
+:   Variable ID.
+
+`NO_FILL`
+
+:   An integer which will get a 1 if no\_fill mode is set for this
+    variable, and a zero if it is not set
+
+`FILL_VALUE`
+
+:   This will get the fill value for this variable. This parameter will
+    be ignored if it is NULL.
+
+
+
+## Return Codes
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_BADID`
+
+:   Bad ncid.
+
+`NF90_ENOTNC4`
+
+:   Not a netCDF-4 file.
+
+`NF90_ENOTVAR`
+
+:   Can’t find this variable.
+
+
+
+## Example
+
+6.6 Get Information about a Variable from Its ID: NF90_INQUIRE_VARIABLE {#f90-get-information-about-a-variable-from-its-id-nf90_inquire_variable}
+===========
+
+NF90\_INQUIRE\_VARIABLE returns information about a netCDF variable
+given its ID. Information about a variable includes its name, type,
+number of dimensions, a list of dimension IDs describing the shape of
+the variable, and the number of variable attributes that have been
+assigned to the variable.
+
+All parameters after nAtts are optional, and only supported if netCDF
+was built with netCDF-4 features enabled, and if the variable is in a
+netCDF-4/HDF5 file.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+
+  function nf90_inquire_variable(ncid, varid, name, xtype, ndims, dimids, nAtts, &
+       contiguous, chunksizes, deflate_level, shuffle, fletcher32, endianness)
+    integer, intent(in) :: ncid, varid
+    character (len = *), optional, intent(out) :: name
+    integer, optional, intent(out) :: xtype, ndims
+    integer, dimension(:), optional, intent(out) :: dimids
+    integer, optional, intent(out) :: nAtts
+    logical, optional, intent(out) :: contiguous
+    integer, optional, dimension(:), intent(out) :: chunksizes
+    integer, optional, intent(out) :: deflate_level
+    logical, optional, intent(out) :: shuffle, fletcher32
+    integer, optional, intent(out) :: endianness
+    integer :: nf90_inquire_variable
+
+
+
+~~~~
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`varid`
+
+:   Variable ID.
+
+`name`
+
+:   Returned variable name. The caller must allocate space for the
+    returned name. The maximum possible length, in characters, of a
+    variable name is given by the predefined constant NF90\_MAX\_NAME.
+
+`xtype`
+
+:   Returned variable type, one of the set of predefined netCDF external
+    data types. The valid netCDF external data types are NF90\_BYTE,
+    NF90\_CHAR, NF90\_SHORT, NF90\_INT, NF90\_FLOAT, AND NF90\_DOUBLE.
+
+`ndims`
+
+:   Returned number of dimensions the variable was defined as using. For
+    example, 2 indicates a matrix, 1 indicates a vector, and 0 means the
+    variable is a scalar with no dimensions.
+
+`dimids`
+
+:   Returned vector of \*ndimsp dimension IDs corresponding to the
+    variable dimensions. The caller must allocate enough space for a
+    vector of at least \*ndimsp integers to be returned. The maximum
+    possible number of dimensions for a variable is given by the
+    predefined constant NF90\_MAX\_VAR\_DIMS.
+
+`natts`
+
+:   Returned number of variable attributes assigned to this variable.
+
+`contiguous`
+
+:   On return, set to NF90\_CONTIGUOUS if this variable uses contiguous
+    storage, NF90\_CHUNKED if it uses chunked storage.
+
+`chunksizes`
+
+:   An array of chunk sizes. The array must have the one element for
+    each dimension in the variable.
+
+`shuffle`
+
+:   True if the shuffle filter is turned on for this variable.
+
+`deflate_level`
+
+:   The deflate\_level from 0 to 9. A value of zero indicates no
+    deflation is in use.
+
+`fletcher32`
+
+:   Set to true if the fletcher32 checksum filter is turned on for
+    this variable.
+
+`endianness`
+
+:   Will be set to NF90\_ENDIAN\_LITTLE if this variable is stored in
+    little-endian format, NF90\_ENDIAN\_BIG if it is stored in
+    big-endian format, and NF90\_ENDIAN\_NATIVE if the endianness is not
+    set, and the variable is not created yet.
+
+These functions return the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The variable ID is invalid for the specified netCDF dataset.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+
+
+
+## Example
+
+Here is an example using NF90\_INQ\_VAR to find out about a variable
+named rh in an existing netCDF dataset named foo.nc:
+
+
+~~~~.fortran
+
+
+    use netcdf
+    implicit none
+    integer                            :: status, ncid, &
+                                          RhVarId       &
+                                          numDims, numAtts
+ integer, dimension(nf90_max_var_dims) :: rhDimIds
+ ...
+ status = nf90_open("foo.nc", nf90_NoWrite, ncid)
+ if(status /= nf90_NoErr) call handle_error(status)
+ ...
+ status = nf90_inq_varid(ncid, "rh", RhVarId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ status = nf90_inquire_variable(ncid, RhVarId, ndims = numDims, natts = numAtts)
+ if(status /= nf90_NoErr) call handle_err(status)
+ status = nf90_inquire_variable(ncid, RhVarId, dimids = rhDimIds(:numDims))
+ if(status /= nf90_NoErr) call handle_err(status)
+
+
+~~~~
+
+
+6.7 Get the ID of a variable from the name: NF90_INQ_VARID {#f90-get-the-id-of-a-variable-from-the-name-nf90_inq_varid}
+===========
+
+
+
+Given the name of a varaible, nf90\_inq\_varid finds the variable ID.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+
+  function nf90_inq_varid(ncid, name, varid)
+    integer, intent(in) :: ncid
+    character (len = *), intent( in) :: name
+    integer, intent(out) :: varid
+    integer :: nf90_inq_varid
+
+
+~~~~
+
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`name`
+
+:   The variable name. The maximum possible length, in characters, of a
+    variable name is given by the predefined constant NF90\_MAX\_NAME.
+
+`varid`
+
+:   Variable ID.
+
+These functions return the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   Variable not found.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+
+
+
+## Example
+
+Here is an example using NF90\_INQ\_VARID to find out about a variable
+named rh in an existing netCDF dataset named foo.nc:
+
+
+
+~~~~.fortran
+
+    use netcdf
+    implicit none
+    integer                            :: status, ncid, &
+                                          RhVarId       &
+                                          numDims, numAtts
+ integer, dimension(nf90_max_var_dims) :: rhDimIds
+ ...
+ status = nf90_open("foo.nc", nf90_NoWrite, ncid)
+ if(status /= nf90_NoErr) call handle_error(status)
+ ...
+ status = nf90_inq_varid(ncid, "rh", RhVarId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ status = nf90_inquire_variable(ncid, RhVarId, ndims = numDims, natts = numAtts)
+ if(status /= nf90_NoErr) call handle_err(status)
+ status = nf90_inquire_variable(ncid, RhVarId, dimids = rhDimIds(:numDims))
+ if(status /= nf90_NoErr) call handle_err(status)
+
+
+
+~~~~
+
+
+6.8 Writing Data Values: NF90_PUT_VAR {#f90-writing-data-values-nf90_put_var}
+===========
+
+
+
+The function NF90\_PUT\_VAR puts one or more data values into the
+variable of an open netCDF dataset that is in data mode. Required inputs
+are the netCDF ID, the variable ID, and one or more data values.
+Optional inputs may indicate the starting position of the data values in
+the netCDF variable (argument start), the sampling frequency with which
+data values are written into the netCDF variable (argument stride), and
+a mapping between the dimensions of the data array and the netCDF
+variable (argument map). The values to be written are associated with
+the netCDF variable by assuming that the first dimension of the netCDF
+variable varies fastest in the Fortran 90 interface. Data values are
+converted to the external type of the variable, if necessary.
+
+Take care when using the simplest forms of this interface with record
+variables (variables that use the NF90\_UNLIMITED dimension) when you
+don’t specify how many records are to be written. If you try to write
+all the values of a record variable into a netCDF file that has no
+record data yet (hence has 0 records), nothing will be written.
+Similarly, if you try to write all the values of a record variable from
+an array but there are more records in the file than you assume, more
+in-memory data will be accessed than you expect, which may cause a
+segmentation violation. To avoid such problems, it is better to specify
+start and count arguments for variables that use the NF90\_UNLIMITED
+dimension.
+
+
+
+### Usage
+
+
+
+~~~~.fortran
+
+ function nf90_put_var(ncid, varid, values, start, count, stride, map)
+   integer,                         intent( in) :: ncid, varid
+   any valid type, scalar or array of any rank, &
+                                    intent( in) :: values
+   integer, dimension(:), optional, intent( in) :: start, count, stride, map
+   integer                                      :: nf90_put_var
+
+
+~~~~
+
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`varid`
+
+:   Variable ID.
+
+`values`
+
+:   The data value(s) to be written. The data may be of any type, and
+    may be a scalar or an array of any rank. You cannot put CHARACTER
+    data into a numeric variable or numeric data into a text variable.
+    For numeric data, if the type of data differs from the netCDF
+    variable type, type conversion will occur. See [Type
+    Conversion](netcdf.html#Type-Conversion) in NetCDF Users Guide.
+
+`start`
+
+:   A vector of integers specifying the index in the variable where the
+    first (or only) of the data values will be written. The indices are
+    relative to 1, so for example, the first data value of a variable
+    would have index (1, 1, ..., 1). The elements of start correspond,
+    in order, to the variable’s dimensions. Hence, if the variable is a
+    record variable, the last index would correspond to the starting
+    record number for writing the data values.
+
+    By default, start(:) = 1.
+
+`count`
+
+:   A vector of integers specifying the number of indices selected along
+    each dimension. To write a single value, for example, specify count
+    as (1, 1, ..., 1). The elements of count correspond, in order, to
+    the variable’s dimensions. Hence, if the variable is a record
+    variable, the last element of count corresponds to a count of the
+    number of records to write.
+
+    By default, count(:numDims) = shape(values) and count(numDims + 1:)
+    = 1, where numDims = size(shape(values)).
+
+`stride`
+
+:   A vector of integers that specifies the sampling interval along each
+    dimension of the netCDF variable. The elements of the stride vector
+    correspond, in order, to the netCDF variable’s dimensions (stride(1)
+    gives the sampling interval along the most rapidly varying dimension
+    of the netCDF variable). Sampling intervals are specified in
+    type-independent units of elements (a value of 1 selects consecutive
+    elements of the netCDF variable along the corresponding dimension, a
+    value of 2 selects every other element, etc.).
+
+    By default, stride(:) = 1.
+
+`imap`
+
+:   A vector of integers that specifies the mapping between the
+    dimensions of a netCDF variable and the in-memory structure of the
+    internal data array. The elements of the index mapping vector
+    correspond, in order, to the netCDF variable’s dimensions (map(1)
+    gives the distance between elements of the internal array
+    corresponding to the most rapidly varying dimension of the
+    netCDF variable). Distances between elements are specified in units
+    of elements.
+
+    By default, edgeLengths = shape(values), and map = (/ 1,
+    (product(edgeLengths(:i)), i = 1, size(edgeLengths) - 1) /), that
+    is, there is no mapping.
+
+    Use of Fortran 90 intrinsic functions (including reshape, transpose,
+    and spread) may let you avoid using this argument.
+
+
+
+## Errors
+
+NF90\_PUT\_VAR1\_ type returns the value NF90\_NOERR if no errors
+occurred. Otherwise, the returned status indicates an error. Possible
+causes of errors include:
+
+-   The variable ID is invalid for the specified netCDF dataset.
+-   The specified indices were out of range for the rank of the
+    specified variable. For example, a negative index or an index that
+    is larger than the corresponding dimension length will cause
+    an error.
+-   The specified value is out of the range of values representable by
+    the external data type of the variable.
+-   The specified netCDF is in define mode rather than data mode.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+
+
+
+## Example
+
+Here is an example using NF90\_PUT\_VAR to set the (4,3,2) element of
+the variable named rh to 0.5 in an existing netCDF dataset named foo.nc.
+For simplicity in this example, we assume that we know that rh is
+dimensioned with lon, lat, and time, so we want to set the value of rh
+that corresponds to the fourth lon value, the third lat value, and the
+second time value:
+
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer :: ncId, rhVarId, status
+ ...
+ status = nf90_open("foo.nc", nf90_Write, ncid)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ status = nf90_inq_varid(ncid, "rh", rhVarId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ status = nf90_put_var(ncid, rhVarId, 0.5, start = (/ 4, 3, 2 /) )
+ if(status /= nf90_NoErr) call handle_err(status)
+
+
+~~~~
+
+
+In this example we use NF90\_PUT\_VAR to add or change all the values of
+the variable named rh to 0.5 in an existing netCDF dataset named foo.nc.
+We assume that we know that rh is dimensioned with lon, lat, and time.
+In this example we query the netCDF file to discover the lengths of the
+dimensions, then use the Fortran 90 intrinsic function reshape to create
+a temporary array of data values which is the same shape as the netCDF
+variable.
+
+
+~~~~.fortran
+
+
+ use netcdf
+ implicit none
+ integer                               :: ncId, rhVarId,status,          &
+                                          lonDimID, latDimId, timeDimId, &
+                                          numLons, numLats, numTimes,    &
+                                          i
+ integer, dimension(nf90_max_var_dims) :: dimIDs
+ ...
+ status = nf90_open("foo.nc", nf90_Write, ncid)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ status = nf90_inq_varid(ncid, "rh", rhVarId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ! How big is the netCDF variable, that is, what are the lengths of
+ !   its constituent dimensions?
+ status = nf90_inquire_variable(ncid, rhVarId, dimids = dimIDs)
+ if(status /= nf90_NoErr) call handle_err(status)
+ status = nf90_inquire_dimension(ncid, dimIDs(1), len = numLons)
+ if(status /= nf90_NoErr) call handle_err(status)
+ status = nf90_inquire_dimension(ncid, dimIDs(2), len = numLats)
+ if(status /= nf90_NoErr) call handle_err(status)
+ status = nf90_inquire_dimension(ncid, dimIDs(3), len = numTimes)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ ! Make a temporary array the same shape as the netCDF variable.
+ status = nf90_put_var(ncid, rhVarId, &
+                       reshape( &
+                         (/ (0.5, i = 1, numLons * numLats * numTimes) /) , &
+                        shape = (/ numLons, numLats, numTimes /) )
+ if(status /= nf90_NoErr) call handle_err(status)
+
+
+~~~~
+
+
+Here is an example using NF90\_PUT\_VAR to add or change a section of
+the variable named rh to 0.5 in an existing netCDF dataset named foo.nc.
+For simplicity in this example, we assume that we know that rh is
+dimensioned with lon, lat, and time, that there are ten lon values, five
+lat values, and three time values, and that we want to replace all the
+values at the last time.
+
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer            :: ncId, rhVarId, status
+ integer, parameter :: numLons = 10, numLats = 5, numTimes = 3
+ real, dimension(numLons, numLats) &
+                    :: rhValues
+ ...
+ status = nf90_open("foo.nc", nf90_Write, ncid)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ status = nf90_inq_varid(ncid, "rh", rhVarId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ! Fill in all values at the last time
+ rhValues(:, :) = 0.5
+ status = nf90_put_var(ncid, rhVarId,rhvalues,       &
+                       start = (/ 1, 1, numTimes /), &
+                       count = (/ numLats, numLons, 1 /))
+ if(status /= nf90_NoErr) call handle_err(status)
+
+
+~~~~
+
+
+Here is an example of using NF90\_PUT\_VAR to write every other point of
+a netCDF variable named rh having dimensions (6, 4).
+
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer            :: ncId, rhVarId, status
+ integer, parameter :: numLons = 6, numLats = 4
+ real, dimension(numLons, numLats) &
+                    :: rhValues = 0.5
+ ...
+ status = nf90_open("foo.nc", nf90_Write, ncid)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ status = nf90_inq_varid(ncid, "rh", rhVarId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ ! Fill in every other value using an array section
+ status = nf90_put_var(ncid, rhVarId, rhValues(::2, ::2), &
+                       stride = (/ 2, 2 /))
+ if(status /= nf90_NoErr) call handle_err(status)
+
+
+~~~~
+
+
+The following map vector shows the default mapping between a 2x3x4
+netCDF variable and an internal array of the same shape:
+
+
+~~~~.fortran
+
+
+ real,    dimension(2, 3, 4):: a  ! same shape as netCDF variable
+ integer, dimension(3)      :: map  = (/ 1, 2, 6 /)
+                     ! netCDF dimension inter-element distance
+                     ! ---------------- ----------------------
+                     ! most rapidly varying       1
+                     ! intermediate               2 (= map(1)*2)
+                     ! most slowly varying        6 (= map(2)*3)
+
+
+~~~~
+
+
+Using the map vector above obtains the same result as simply not passing
+a map vector at all.
+
+Here is an example of using nf90\_put\_var to write a netCDF variable
+named rh whose dimensions are the transpose of the Fortran 90 array:
+
+
+~~~~.fortran
+
+
+ use netcdf
+ implicit none
+ integer                           :: ncId, rhVarId, status
+ integer, parameter                :: numLons = 6, numLats = 4
+ real, dimension(numLons, numLats) :: rhValues
+ ! netCDF variable has dimensions (numLats, numLons)
+ ...
+ status = nf90_open("foo.nc", nf90_Write, ncid)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ status = nf90_inq_varid(ncid, "rh", rhVarId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ !Write transposed values: map vector would be (/ 1, numLats /) for
+ !   no transposition
+ status = nf90_put_var(ncid, rhVarId,rhValues, map = (/ numLons, 1 /))
+ if(status /= nf90_NoErr) call handle_err(status)
+
+
+~~~~
+
+
+The same effect can be obtained more simply using Fortran 90 intrinsic
+functions:
+
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer                           :: ncId, rhVarId, status
+ integer, parameter                :: numLons = 6, numLats = 4
+ real, dimension(numLons, numLats) :: rhValues
+ ! netCDF variable has dimensions (numLats, numLons)
+ ...
+ status = nf90_open("foo.nc", nf90_Write, ncid)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ status = nf90_inq_varid(ncid, "rh", rhVarId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ status = nf90_put_var(ncid, rhVarId, transpose(rhValues))
+ if(status /= nf90_NoErr) call handle_err(status)
+
+
+~~~~
+
+
+
+6.9 Reading Data Values: NF90_GET_VAR {#f90-reading-data-values-nf90_get_var}
+===========
+
+
+
+The function NF90\_GET\_VAR gets one or more data values from a netCDF
+variable of an open netCDF dataset that is in data mode. Required inputs
+are the netCDF ID, the variable ID, and a specification for the data
+values into which the data will be read. Optional inputs may indicate
+the starting position of the data values in the netCDF variable
+(argument start), the sampling frequency with which data values are read
+from the netCDF variable (argument stride), and a mapping between the
+dimensions of the data array and the netCDF variable (argument map). The
+values to be read are associated with the netCDF variable by assuming
+that the first dimension of the netCDF variable varies fastest in the
+Fortran 90 interface. Data values are converted from the external type
+of the variable, if necessary.
+
+Take care when using the simplest forms of this interface with record
+variables (variables that use the NF90\_UNLIMITED dimension) when you
+don’t specify how many records are to be read. If you try to read all
+the values of a record variable into an array but there are more records
+in the file than you assume, more data will be read than you expect,
+which may cause a segmentation violation. To avoid such problems, it is
+better to specify the optional start and count arguments for variables
+that use the NF90\_UNLIMITED dimension.
+
+In netCDF classic model the maximum integer size is NF90\_INT, the
+4-byte signed integer. Reading variables into an eight-byte integer
+array from a classic model file will read from an NF90\_INT. Reading
+variables into an eight-byte integer in a netCDF-4/HDF5 (without classic
+model flag) will read from an NF90\_INT64
+
+
+
+## Usage
+
+
+
+~~~~.fortran
+
+ function nf90_get_var(ncid, varid, values, start, count, stride, map)
+   integer,                         intent( in) :: ncid, varid
+   any valid type, scalar or array of any rank, &
+                                    intent(out) :: values
+   integer, dimension(:), optional, intent( in) :: start, count, stride, map
+   integer                                      :: nf90_get_var
+
+
+~~~~
+
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`varid`
+
+:   Variable ID.
+
+`values`
+
+:   The data value(s) to be read. The data may be of any type, and may
+    be a scalar or an array of any rank. You cannot read CHARACTER data
+    from a numeric variable or numeric data from a text variable. For
+    numeric data, if the type of data differs from the netCDF variable
+    type, type conversion will occur. See [Type
+    Conversion](netcdf.html#Type-Conversion) in NetCDF Users Guide.
+
+`start`
+
+:   A vector of integers specifying the index in the variable from which
+    the first (or only) of the data values will be read. The indices are
+    relative to 1, so for example, the first data value of a variable
+    would have index (1, 1, ..., 1). The elements of start correspond,
+    in order, to the variable’s dimensions. Hence, if the variable is a
+    record variable, the last index would correspond to the starting
+    record number for writing the data values.
+
+    By default, start(:) = 1.
+
+`count`
+
+:   A vector of integers specifying the number of indices selected along
+    each dimension. To read a single value, for example, specify count
+    as (1, 1, ..., 1). The elements of count correspond, in order, to
+    the variable’s dimensions. Hence, if the variable is a record
+    variable, the last element of count corresponds to a count of the
+    number of records to read.
+
+    By default, count(:numDims) = shape(values) and count(numDims + 1:)
+    = 1, where numDims = size(shape(values)).
+
+`stride`
+
+:   A vector of integers that specifies the sampling interval along each
+    dimension of the netCDF variable. The elements of the stride vector
+    correspond, in order, to the netCDF variable’s dimensions (stride(1)
+    gives the sampling interval along the most rapidly varying dimension
+    of the netCDF variable). Sampling intervals are specified in
+    type-independent units of elements (a value of 1 selects consecutive
+    elements of the netCDF variable along the corresponding dimension, a
+    value of 2 selects every other element, etc.).
+
+    By default, stride(:) = 1.
+
+`map`
+
+:   A vector of integers that specifies the mapping between the
+    dimensions of a netCDF variable and the in-memory structure of the
+    internal data array. The elements of the index mapping vector
+    correspond, in order, to the netCDF variable’s dimensions (map(1)
+    gives the distance between elements of the internal array
+    corresponding to the most rapidly varying dimension of the
+    netCDF variable). Distances between elements are specified in units
+    of elements.
+
+    By default, edgeLengths = shape(values), and map = (/ 1,
+    (product(edgeLengths(:i)), i = 1, size(edgeLengths) - 1) /), that
+    is, there is no mapping.
+
+    Use of Fortran 90 intrinsic functions (including reshape, transpose,
+    and spread) may let you avoid using this argument.
+
+
+
+## Errors
+
+NF90\_GET\_VAR returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The variable ID is invalid for the specified netCDF dataset.
+-   The assumed or specified start, count, and stride generate an index
+    which is out of range. Note that no error checking is possible on
+    the map vector.
+-   One or more of the specified values are out of the range of values
+    representable by the desired type.
+-   The specified netCDF is in define mode rather than data mode.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+
+(As noted above, another possible source of error is using this
+interface to read all the values of a record variable without specifying
+the number of records. If there are more records in the file than you
+assume, more data will be read than you expect!)
+
+
+
+## Example
+
+Here is an example using NF90\_GET\_VAR to read the (4,3,2) element of
+the variable named rh from an existing netCDF dataset named foo.nc. For
+simplicity in this example, we assume that we know that rh is
+dimensioned with lon, lat, and time, so we want to read the value of rh
+that corresponds to the fourth lon value, the third lat value, and the
+second time value:
+
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer :: ncId, rhVarId, status
+ real    :: rhValue
+ ...
+ status = nf90_open("foo.nc", nf90_NoWrite, ncid)
+ if(status /= nf90_NoErr) call handle_err(status)
+ -
+ status = nf90_inq_varid(ncid, "rh", rhVarId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ status = nf90_get_var(ncid, rhVarId, rhValue, start = (/ 4, 3, 2 /) )
+ if(status /= nf90_NoErr) call handle_err(status)
+
+
+~~~~
+
+
+In this example we use NF90\_GET\_VAR to read all the values of the
+variable named rh from an existing netCDF dataset named foo.nc. We
+assume that we know that rh is dimensioned with lon, lat, and time. In
+this example we query the netCDF file to discover the lengths of the
+dimensions, then allocate a Fortran 90 array the same shape as the
+netCDF variable.
+
+
+
+
+ use netcdf
+ implicit none
+ integer                               :: ncId, rhVarId, &
+                                          lonDimID, latDimId, timeDimId, &
+                                          numLons, numLats, numTimes,    &
+                                          status
+ integer, dimension(nf90_max_var_dims) :: dimIDs
+ real, dimension(:, :, :), allocatable :: rhValues
+ ...
+ status = nf90_open("foo.nc", nf90_NoWrite, ncid)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ status = nf90_inq_varid(ncid, "rh", rhVarId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ! How big is the netCDF variable, that is, what are the lengths of
+ !   its constituent dimensions?
+ status = nf90_inquire_variable(ncid, rhVarId, dimids = dimIDs)
+ if(status /= nf90_NoErr) call handle_err(status)
+ status = nf90_inquire_dimension(ncid, dimIDs(1), len = numLons)
+ if(status /= nf90_NoErr) call handle_err(status)
+ status = nf90_inquire_dimension(ncid, dimIDs(2), len = numLats)
+ if(status /= nf90_NoErr) call handle_err(status)
+ status = nf90_inquire_dimension(ncid, dimIDs(3), len = numTimes)
+ if(status /= nf90_NoErr) call handle_err(status)
+ allocate(rhValues(numLons, numLats, numTimes))
+ ...
+ status = nf90_get_var(ncid, rhVarId, rhValues)
+ if(status /= nf90_NoErr) call handle_err(status)
+
+
+
+
+Here is an example using NF90\_GET\_VAR to read a section of the
+variable named rh from an existing netCDF dataset named foo.nc. For
+simplicity in this example, we assume that we know that rh is
+dimensioned with lon, lat, and time, that there are ten lon values, five
+lat values, and three time values, and that we want to replace all the
+values at the last time.
+
+
+~~~~.fortran
+
+
+ use netcdf
+ implicit none
+ integer            :: ncId, rhVarId, status
+ integer, parameter :: numLons = 10, numLats = 5, numTimes = 3
+ real, dimension(numLons, numLats, numTimes) &
+                    :: rhValues
+ ...
+ status = nf90_open("foo.nc", nf90_NoWrite, ncid)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ status = nf90_inq_varid(ncid, "rh", rhVarId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ !Read the values at the last time by passing an array section
+ status = nf90_get_var(ncid, rhVarId, rhValues(:, :, 3), &
+                       start = (/ 1, 1, numTimes /),     &
+                       count = (/ numLons, numLats, 1 /))
+ if(status /= nf90_NoErr) call handle_err(status)
+
+
+~~~~
+
+
+Here is an example of using NF90\_GET\_VAR to read every other point of
+a netCDF variable named rh having dimensions (6, 4).
+
+
+~~~~.fortran
+
+
+ use netcdf
+ implicit none
+ integer            :: ncId, rhVarId, status
+ integer, parameter :: numLons = 6, numLats = 4
+ real, dimension(numLons, numLats) &
+                    :: rhValues
+ ...
+ status = nf90_open("foo.nc", nf90_NoWrite, ncid)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ status = nf90_inq_varid(ncid, "rh", rhVarId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ ! Read every other value into an array section
+ status = nf90_get_var(ncid, rhVarId, rhValues(::2, ::2) &
+                       stride = (/ 2, 2 /))
+ if(status /= nf90_NoErr) call handle_err(status)
+
+
+
+~~~~
+
+The following map vector shows the default mapping between a 2x3x4
+netCDF variable and an internal array of the same shape:
+
+
+~~~~.fortran
+
+
+ real,    dimension(2, 3, 4):: a  ! same shape as netCDF variable
+ integer, dimension(3)      :: map  = (/ 1, 2, 6 /)
+                     ! netCDF dimension inter-element distance
+                     ! ---------------- ----------------------
+                     ! most rapidly varying       1
+                     ! intermediate               2 (= map(1)*2)
+                     ! most slowly varying        6 (= map(2)*3)
+
+
+
+
+~~~~
+
+Using the map vector above obtains the same result as simply not passing
+a map vector at all.
+
+Here is an example of using nf90\_get\_var to read a netCDF variable
+named rh whose dimensions are the transpose of the Fortran 90 array:
+
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer                           :: ncId, rhVarId, status
+ integer, parameter                :: numLons = 6, numLats = 4
+ real, dimension(numLons, numLats) :: rhValues
+ ! netCDF variable has dimensions (numLats, numLons)
+ ...
+ status = nf90_open("foo.nc", nf90_NoWrite, ncid)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ status = nf90_inq_varid(ncid, "rh", rhVarId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ ! Read transposed values: map vector would be (/ 1, numLats /) for
+ !   no transposition
+ status = nf90_get_var(ncid, rhVarId,rhValues, map = (/ numLons, 1 /))
+ if(status /= nf90_NoErr) call handle_err(status)
+
+
+~~~~
+
+
+The same effect can be obtained more simply, though using more memory,
+using Fortran 90 intrinsic functions:
+
+
+~~~~.fortran
+
+
+ use netcdf
+ implicit none
+ integer                           :: ncId, rhVarId, status
+ integer, parameter                :: numLons = 6, numLats = 4
+ real, dimension(numLons, numLats) :: rhValues
+ ! netCDF variable has dimensions (numLats, numLons)
+ real, dimension(numLons, numLats) :: tempValues
+ ...
+ status = nf90_open("foo.nc", nf90_NoWrite, ncid)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ status = nf90_inq_varid(ncid, "rh", rhVarId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ status = nf90_get_var(ncid, rhVarId, tempValues))
+ if(status /= nf90_NoErr) call handle_err(status)
+ rhValues(:, :) = transpose(tempValues)
+
+
+~~~~
+
+
+
+
+6.10 Reading and Writing Character String Values {#f90-reading-and-writing-character-string-values}
+===========
+
+Character strings are not a primitive netCDF external data type under
+the classic netCDF data model, in part because FORTRAN does not support
+the abstraction of variable-length character strings (the FORTRAN LEN
+function returns the static length of a character string, not its
+dynamic length). As a result, a character string cannot be written or
+read as a single object in the netCDF interface. Instead, a character
+string must be treated as an array of characters, and array access must
+be used to read and write character strings as variable data in netCDF
+datasets. Furthermore, variable-length strings are not supported by the
+netCDF classic interface except by convention; for example, you may
+treat a zero byte as terminating a character string, but you must
+explicitly specify the length of strings to be read from and written to
+netCDF variables.
+
+Character strings as attribute values are easier to use, since the
+strings are treated as a single unit for access. However, the value of a
+character-string attribute in the classic netCDF interface is still an
+array of characters with an explicit length that must be specified when
+the attribute is defined.
+
+When you define a variable that will have character-string values, use a
+character-position dimension as the most quickly varying dimension for
+the variable (the first dimension for the variable in Fortran 90). The
+length of the character-position dimension will be the maximum string
+length of any value to be stored in the character-string variable. Space
+for maximum-length strings will be allocated in the disk representation
+of character-string variables whether you use the space or not. If two
+or more variables have the same maximum length, the same
+character-position dimension may be used in defining the variable
+shapes.
+
+To write a character-string value into a character-string variable, use
+either entire variable access or array access. The latter requires that
+you specify both a corner and a vector of edge lengths. The
+character-position dimension at the corner should be one for Fortran 90.
+If the length of the string to be written is n, then the vector of edge
+lengths will specify n in the character-position dimension, and one for
+all the other dimensions: (n, 1, 1, ..., 1).
+
+In Fortran 90, fixed-length strings may be written to a netCDF dataset
+without a terminating character, to save space. Variable-length strings
+should follow the C convention of writing strings with a terminating
+zero byte so that the intended length of the string can be determined
+when it is later read by either C or Fortran 90 programs. It is the
+users responsibility to provide such null termination.
+
+If you are writing data in the default prefill mode (see next section),
+you can ensure that simple strings represented as 1-dimensional
+character arrays are null terminated in the netCDF file by writing fewer
+characters than the length declared when the variable was defined. That
+way, the extra unwritten characters will be filled with the default
+character fill value, which is a null byte. The Fortran intrinsic TRIM
+function can be used to trim trailing blanks from the character string
+argument to NF90\_PUT\_VAR to make the argument shorter than the
+declared length. If prefill is not on, the data writer must explicitly
+provide a null terminating byte.
+
+Here is an example illustrating this way of writing strings to character
+array variables:
+
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer status
+ integer                           :: ncid, oceanStrLenID, oceanId
+ integer, parameter                :: MaxOceanNameLen = 20
+ character, (len = MaxOceanNameLen):: ocean
+ ...
+ status = nf90_create("foo.nc", nf90_NoClobber, ncid)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ status = nf90_def_dim(ncid, "oceanStrLen", MaxOceanNameLen, oceanStrLenId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ status = nf90_def_var(ncid, "ocean", nf90_char, (/ oceanStrLenId /), oceanId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ ! Leave define mode, which prefills netCDF variables with fill values
+ status = nf90_enddef(ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...
+ ! Note that this assignment adds blank fill
+ ocean = "Pacific"
+ ! Using trim removes trailing blanks, prefill provides null
+ ! termination, so C programs can later get intended string.
+ status = nf90_put_var(ncid, oceanId, trim(ocean))
+ if(status /= nf90_NoErr) call handle_err(status)
+
+
+~~~~
+
+
+6.11 Fill Values {#f90-fill-values}
+===========
+
+What happens when you try to read a value that was never written in an
+open netCDF dataset? You might expect that this should always be an
+error, and that you should get an error message or an error status
+returned. You do get an error if you try to read data from a netCDF
+dataset that is not open for reading, if the variable ID is invalid for
+the specified netCDF dataset, or if the specified indices are not
+properly within the range defined by the dimension lengths of the
+specified variable. Otherwise, reading a value that was not written
+returns a special fill value used to fill in any undefined values when a
+netCDF variable is first written.
+
+You may ignore fill values and use the entire range of a netCDF external
+data type, but in this case you should make sure you write all data
+values before reading them. If you know you will be writing all the data
+before reading it, you can specify that no prefilling of variables with
+fill values will occur by calling writing. This may provide a
+significant performance gain for netCDF writes.
+
+The variable attribute \_FillValue may be used to specify the fill value
+for a variable. There are default fill values for each type, defined in
+module netcdf: NF90\_FILL\_CHAR, NF90\_FILL\_INT1 (same as
+NF90\_FILL\_BYTE), NF90\_FILL\_INT2 (same as NF90\_FILL\_SHORT),
+NF90\_FILL\_INT, NF90\_FILL\_REAL (same as NF90\_FILL\_FLOAT), and
+NF90\_FILL\_DOUBLE
+
+The netCDF byte and character types have different default fill values.
+The default fill value for characters is the zero byte, a useful value
+for detecting the end of variable-length C character strings. If you
+need a fill value for a byte variable, it is recommended that you
+explicitly define an appropriate \_FillValue attribute, as generic
+utilities such as ncdump will not assume a default fill value for byte
+variables.
+
+Type conversion for fill values is identical to type conversion for
+other values: attempting to convert a value from one type to another
+type that can’t represent the value results in a range error. Such
+errors may occur on writing or reading values from a larger type (such
+as double) to a smaller type (such as float), if the fill value for the
+larger type cannot be represented in the smaller type.
+
+
+6.12 NF90_RENAME_VAR {#f90-nf90_rename_var}
+===========
+
+
+
+The function NF90\_RENAME\_VAR changes the name of a netCDF variable in
+an open netCDF dataset. If the new name is longer than the old name, the
+netCDF dataset must be in define mode. You cannot rename a variable to
+have the name of any existing variable.
+
+
+
+## Usage
+
+
+
+~~~~.fortran
+
+ function nf90_rename_var(ncid, varid, newname)
+   integer,             intent( in) :: ncid, varid
+   character (len = *), intent( in) :: newname
+   integer                          :: nf90_rename_var
+
+~~~~
+
+
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`varid`
+
+:   Variable ID.
+
+`newname`
+
+:   New name for the specified variable.
+
+
+
+## Errors
+
+NF90\_RENAME\_VAR returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The new name is in use as the name of another variable.
+-   The variable ID is invalid for the specified netCDF dataset.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+
+
+
+## Example
+
+Here is an example using NF90\_RENAME\_VAR to rename the variable rh to
+rel\_hum in an existing netCDF dataset named foo.nc:
+
+
+~~~~.fortran
+
+
+ use netcdf
+ implicit none
+ integer :: ncId, rhVarId, status
+ ...
+ status = nf90_open("foo.nc", nf90_Write, ncid)
+ if(status /= nf90_NoErr) call handle_err(status)
+ ...
+ status = nf90_inq_varid(ncid, "rh", rhVarId)
+ if(status /= nf90_NoErr) call handle_err(status)
+ status = nf90_redef(ncid)  ! Enter define mode to change variable name
+ if(status /= nf90_NoErr) call handle_err(status)
+ status = nf90_rename_var(ncid, rhVarId, "rel_hum")
+ if(status /= nf90_NoErr) call handle_err(status)
+ status = nf90_enddef(ncid) ! Leave define mode
+ if(status /= nf90_NoErr) call handle_err(status)
+
+
+
+~~~~
+
+
+6.13 Change between Collective and Independent Parallel Access: NF90_VAR_PAR_ACCESS {#f90-change-between-collective-and-independent-parallel-access-nf90_var_par_access}
+===========
+
+
+
+The function NF90\_VAR\_PAR\_ACCESS changes whether read/write
+operations on a parallel file system are performed collectively or
+independently (the default) on the variable. This function can only be
+called if the file was created (see [NF90\_CREATE](#NF90_005fCREATE)) or
+opened (see [NF90\_OPEN](#NF90_005fOPEN)) for parallel I/O.
+
+This function is only available if the netCDF library was built with
+parallel I/O enabled.
+
+Calling this function affects only the open file - information about
+whether a variable is to be accessed collectively or independently is
+not written to the data file. Every time you open a file on a parallel
+file system, all variables default to independent operations. The change
+of a variable to collective access lasts only as long as that file is
+open.
+
+The variable can be changed from collective to independent, and back, as
+often as desired.
+
+Classic and 64-bit offset files, when opened for parallel access, use
+the parallel-netcdf (a.k.a. pnetcdf) library, which does not allow
+per-variable changes of access mode - the entire file must be access
+independently or collectively. For classic and 64-bit offset files, the
+nf90\_var\_par\_access function changes the access for all variables in
+the file.
+
+
+
+## Usage
+
+
+
+~~~~.fortran
+
+  function nf90_var_par_access(ncid, varid, access)
+    integer, intent(in) :: ncid
+    integer, intent(in) :: varid
+    integer, intent(in) :: access
+    integer :: nf90_var_par_access
+  end function nf90_var_par_access
+
+~~~~
+
+
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN (see
+    [NF90\_OPEN](#NF90_005fOPEN)) or NF90\_CREATE (see
+    [NF90\_CREATE](#NF90_005fCREATE)).
+
+`varid`
+
+:   Variable ID.
+
+`access`
+
+:   NF90\_INDEPENDENT to set this variable to independent operations.
+    NF90\_COLLECTIVE to set it to collective operations.
+
+
+
+## Return Values
+
+`NF90_NOERR`
+
+:   No error.
+
+`NF90_ENOTVAR`
+
+:   No variable found.
+
+`NF90_NOPAR`
+
+:   File not opened for parallel access.
+
+
+
+## Example
+
+This example comes from test program nf\_test/f90tst\_parallel.f90. For
+this test to be run, netCDF must have been built with a parallel-enabled
+HDF5, and –enable-parallel-tests must have been used when configuring
+netcdf.
+
+
+
+~~~~.fortran
+
+  ! Reopen the file.
+  call handle_err(nf90_open(FILE_NAME, nf90_nowrite, ncid, comm = MPI_COMM_WORLD, &
+       info = MPI_INFO_NULL))
+
+  ! Set collective access on this variable. This will cause all
+  ! reads/writes to happen together on every processor.
+  call handle_err(nf90_var_par_access(ncid, varid, nf90_collective))
+
+  ! Read this processor's data.
+  call handle_err(nf90_get_var(ncid, varid, data_in, start = start, count = count))
+
+~~~~
diff --git a/docs/netcdf-f90-sec7-attributes.md b/docs/netcdf-f90-sec7-attributes.md
new file mode 100644
index 0000000..e66de58
--- /dev/null
+++ b/docs/netcdf-f90-sec7-attributes.md
@@ -0,0 +1,717 @@
+7 Attributes {#f90-attributes}
+============
+
+[TOC]
+
+7.1 Attributes Introduction {#f90-attributes-introduction}
+============
+
+Attributes may be associated with each netCDF variable to specify such
+properties as units, special values, maximum and minimum valid values,
+scaling factors, and offsets. Attributes for a netCDF dataset are
+defined when the dataset is first created, while the netCDF dataset is
+in define mode. Additional attributes may be added later by reentering
+define mode. A netCDF attribute has a netCDF variable to which it is
+assigned, a name, a type, a length, and a sequence of one or more
+values. An attribute is designated by its variable ID and name. When an
+attribute name is not known, it may be designated by its variable ID and
+number in order to determine its name, using the function
+NF90\_INQ\_ATTNAME.
+
+The attributes associated with a variable are typically defined
+immediately after the variable is created, while still in define mode.
+The data type, length, and value of an attribute may be changed even
+when in data mode, as long as the changed attribute requires no more
+space than the attribute as originally defined.
+
+It is also possible to have attributes that are not associated with any
+variable. These are called global attributes and are identified by using
+NF90\_GLOBAL as a variable pseudo-ID. Global attributes are usually
+related to the netCDF dataset as a whole and may be used for purposes
+such as providing a title or processing history for a netCDF dataset.
+
+Attributes are much more useful when they follow established community
+conventions. See [Attribute
+Conventions](netcdf.html#Attribute-Conventions) in {No value for
+‘n-man’}.
+
+Operations supported on attributes are:
+
+-   Create an attribute, given its variable ID, name, data type, length,
+    and value.
+-   Get attribute’s data type and length from its variable ID and name.
+-   Get attribute’s value from its variable ID and name.
+-   Copy attribute from one netCDF variable to another.
+-   Get name of attribute from its number.
+-   Rename an attribute.
+-   Delete an attribute.
+
+
+
+7.2 Create an Attribute: NF90_PUT_ATT {#f90-create-an-attribute-nf90_put_att}
+============
+
+
+
+The function NF90\_PUT\_ATTadds or changes a variable attribute or
+global attribute of an open netCDF dataset. If this attribute is new, or
+if the space required to store the attribute is greater than before, the
+netCDF dataset must be in define mode.
+
+
+
+## Usage
+
+Although it’s possible to create attributes of all types, text and
+double attributes are adequate for most purposes.
+
+
+~~~~.fortran
+
+
+ function nf90_put_att(ncid, varid, name, values)
+   integer,            intent( in) :: ncid, varid
+   character(len = *), intent( in) :: name
+   scalar character string or any numeric type, scalar, or array of rank 1, &
+                       intent( in) :: values
+   integer                         :: nf90_put_att
+
+
+~~~~
+
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`varid`
+
+:   Variable ID of the variable to which the attribute will be assigned
+    or NF90\_GLOBAL for a global attribute.
+
+`name`
+
+:   Attribute name. Attribute name conventions are assumed by some
+    netCDF generic applications, e.g., ‘units’ as the name for a string
+    attribute that gives the units for a netCDF variable. See [Attribute
+    Conventions](netcdf.html#Attribute-Conventions) in {No value
+    for ‘n-man’}.
+
+`values`
+
+:   A numeric rank 1 array of attribute values or a scalar. The external
+    data type of the attribute is set to match the internal
+    representation of the argument, that is if values is a two byte
+    integer array, the attribute will be of type NF90\_INT2. Fortran 90
+    intrinsic functions can be used to convert attributes to the
+    desired type.
+
+
+
+## Errors
+
+NF90\_PUT\_ATT returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The variable ID is invalid for the specified netCDF dataset.
+-   The specified netCDF type is invalid.
+-   The specified length is negative.
+-   The specified open netCDF dataset is in data mode and the specified
+    attribute would expand.
+-   The specified open netCDF dataset is in data mode and the specified
+    attribute does not already exist.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+-   The number of attributes for this variable exceeds NF90\_MAX\_ATTRS.
+
+
+
+## Example
+
+Here is an example using NF90\_PUT\_ATT to add a variable attribute
+named valid\_range for a netCDF variable named rh and a global attribute
+named title to an existing netCDF dataset named foo.nc:
+
+
+~~~~.fortran
+
+
+ use netcdf
+ implicit none
+ integer :: ncid, status, RHVarID
+ ...
+ status = nf90_open("foo.nc", nf90_write, ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...
+ ! Enter define mode so we can add the attribute
+ status = nf90_redef(ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ! Get the variable ID for "rh"...
+ status = nf90_inq_varid(ncid, "rh", RHVarID)
+ if (status /= nf90_noerr) call handle_err(status)
+ ! ...  put the range attribute, setting it to eight byte reals...
+ status = nf90_put_att(ncid, RHVarID, "valid_range", real((/ 0, 100 /))
+ ! ... and the title attribute.
+ if (status /= nf90_noerr) call handle_err(status)
+ status = nf90_put_att(ncid, RHVarID, "title", "example netCDF dataset") )
+ if (status /= nf90_noerr) call handle_err(status)
+ ! Leave define mode
+ status = nf90_enddef(ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+
+
+
+~~~~
+
+
+7.3 Get Information about an Attribute: NF90_INQUIRE_ATTRIBUTE and NF90_INQ_ATTNAME {#f90-get-information-about-an-attribute-nf90_inquire_attribute-and-nf90_inq_attname}
+============
+
+
+
+The function NF90\_INQUIRE\_ATTRIBUTE returns information about a netCDF
+attribute given the variable ID and attribute name. Information about an
+attribute includes its type, length, name, and number. See
+NF90\_GET\_ATT for getting attribute values.
+
+The function NF90\_INQ\_ATTNAME gets the name of an attribute, given its
+variable ID and number. This function is useful in generic applications
+that need to get the names of all the attributes associated with a
+variable, since attributes are accessed by name rather than number in
+all other attribute functions. The number of an attribute is more
+volatile than the name, since it can change when other attributes of the
+same variable are deleted. This is why an attribute number is not called
+an attribute ID.
+
+
+
+## Usage
+
+
+
+~~~~.fortran
+
+ function nf90_inquire_attribute(ncid, varid, name, xtype, len, attnum)
+   integer,             intent( in)           :: ncid, varid
+   character (len = *), intent( in)           :: name
+   integer,             intent(out), optional :: xtype, len, attnum
+   integer                                    :: nf90_inquire_attribute
+ function nf90_inq_attname(ncid, varid, attnum, name)
+   integer,             intent( in) :: ncid, varid, attnum
+   character (len = *), intent(out) :: name
+   integer                          :: nf90_inq_attname
+
+
+~~~~
+
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`varid`
+
+:   Variable ID of the attribute’s variable, or NF90\_GLOBAL for a
+    global attribute.
+
+`name`
+
+:   Attribute name. For NF90\_INQ\_ATTNAME, this is a pointer to the
+    location for the returned attribute name.
+
+`xtype`
+
+:   Returned attribute type, one of the set of predefined netCDF
+    external data types. The valid netCDF external data types are
+    NF90\_BYTE, NF90\_CHAR, NF90\_SHORT, NF90\_INT, NF90\_FLOAT,
+    and NF90\_DOUBLE.
+
+`len`
+
+:   Returned number of values currently stored in the attribute. For a
+    string-valued attribute, this is the number of characters in
+    the string.
+
+`attnum`
+
+:   For NF90\_INQ\_ATTNAME, the input attribute number; for
+    NF90\_INQ\_ATTID, the returned attribute number. The attributes for
+    each variable are numbered from 1 (the first attribute) to NATTS,
+    where NATTS is the number of attributes for the variable, as
+    returned from a call to NF90\_INQ\_VARNATTS.
+
+    (If you already know an attribute name, knowing its number is not
+    very useful, because accessing information about an attribute
+    requires its name.)
+
+
+
+## Errors
+
+Each function returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The variable ID is invalid for the specified netCDF dataset.
+-   The specified attribute does not exist.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+-   For NF90\_INQ\_ATTNAME, the specified attribute number is negative
+    or more than the number of attributes defined for the
+    specified variable.
+
+
+
+## Example
+
+Here is an example using NF90\_INQUIRE\_ATTRIBUTE to inquire about the
+lengths of an attribute named valid\_range for a netCDF variable named
+rh and a global attribute named title in an existing netCDF dataset
+named foo.nc:
+
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer :: ncid, status
+ integer :: RHVarID                       ! Variable ID
+ integer :: validRangeLength, titleLength ! Attribute lengths
+ ...
+ status = nf90_open("foo.nc", nf90_nowrite, ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...
+ ! Get the variable ID for "rh"...
+ status = nf90_inq_varid(ncid, "rh", RHVarID)
+ if (status /= nf90_noerr) call handle_err(status)
+ ! ...  get the length of the "valid_range" attribute...
+ status = nf90_inquire_attribute(ncid, RHVarID, "valid_range", &
+                           len = validRangeLength)
+ if (status /= nf90_noerr) call handle_err(status)
+ ! ... and the global title attribute.
+ status = nf90_inquire_attribute(ncid, nf90_global, "title", len = titleLength)
+ if (status /= nf90_noerr) call handle_err(status)
+
+
+
+~~~~
+
+7.4 Get Attribute’s Values: NF90_GET_ATT {#f90-get-attributes-values-nf90_get_att}
+============
+
+
+
+Function nf90\_get\_att gets the value(s) of a netCDF attribute, given
+its variable ID and name.
+
+
+
+## Usage
+
+
+
+~~~~.fortran
+
+ function nf90_get_att(ncid, varid, name, values)
+   integer,            intent( in) :: ncid, varid
+   character(len = *), intent( in) :: name
+   any valid type, scalar or array of rank 1, &
+                       intent(out) :: values
+   integer                         :: nf90_get_att
+
+
+
+~~~~
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`varid`
+
+:   Variable ID of the attribute’s variable, or NF90\_GLOBAL for a
+    global attribute.
+
+`name`
+
+:   Attribute name.
+
+`values`
+
+:   Returned attribute values. All elements of the vector of attribute
+    values are returned, so you must provide enough space to hold them.
+    If you don’t know how much space to reserve, call
+    NF90\_INQUIRE\_ATTRIBUTE first to find out the length of
+    the attribute. If there is only a single attribute values may be
+    a scalar. If the attribute is of type character values should be a
+    varble of type character with the len Fortran 90 attribute set to
+    an appropriate value (i.e. character (len = 80) :: values). You
+    cannot read character data from a numeric variable or numeric data
+    from a text variable. For numeric data, if the type of data differs
+    from the netCDF variable type, type conversion will occur. See [Type
+    Conversion](netcdf.html#Type-Conversion) in NetCDF Users Guide.
+
+
+
+## Errors
+
+~~~~.fortran
+
+NF90\_GET\_ATT\_ type returns the value NF90\_NOERR if no errors
+occurred. Otherwise, the returned status indicates an error. Possible
+causes of errors include:
+
+-   The variable ID is invalid for the specified netCDF dataset.
+-   The specified attribute does not exist.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+-   One or more of the attribute values are out of the range of values
+    representable by the desired type.
+
+~~~~
+
+
+## Example
+
+Here is an example using NF90\_GET\_ATT to determine the values of an
+attribute named valid\_range for a netCDF variable named rh and a global
+attribute named title in an existing netCDF dataset named foo.nc. In
+this example, it is assumed that we don’t know how many values will be
+returned, so we first inquire about the length of the attributes to make
+sure we have enough space to store them:
+
+
+~~~~.fortran
+
+
+ use netcdf
+ implicit none
+ integer              :: ncid, status
+ integer              :: RHVarID                       ! Variable ID
+ integer              :: validRangeLength, titleLength ! Attribute lengths
+ real, dimension(:), allocatable, &
+                      :: validRange
+ character (len = 80) :: title
+ ...
+ status = nf90_open("foo.nc", nf90_nowrite, ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...
+ ! Find the lengths of the attributes
+ status = nf90_inq_varid(ncid, "rh", RHVarID)
+ if (status /= nf90_noerr) call handle_err(status)
+ status = nf90_inquire_attribute(ncid, RHVarID, "valid_range", &
+                           len = validRangeLength)
+ if (status /= nf90_noerr) call handle_err(status)
+ status = nf90_inquire_attribute(ncid, nf90_global, "title", len = titleLength)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...
+ !Allocate space to hold attribute values, check string lengths
+ allocate(validRange(validRangeLength), stat = status)
+ if(status /= 0 .or. len(title) < titleLength)
+   print *, "Not enough space to put attribute values."
+   exit
+ end if
+ ! Read the attributes.
+ status = nf90_get_att(ncid, RHVarID, "valid_range", validRange)
+ if (status /= nf90_noerr) call handle_err(status)
+ status = nf90_get_att(ncid, nf90_global, "title", title)
+ if (status /= nf90_noerr) call handle_err(status)
+
+
+~~~~
+
+
+
+7.5 Copy Attribute from One NetCDF to Another: NF90_COPY_ATT {#f90-copy-attribute-from-one-netcdf-to-another-nf90_copy_att}
+============
+
+
+
+The function NF90\_COPY\_ATT copies an attribute from one open netCDF
+dataset to another. It can also be used to copy an attribute from one
+variable to another within the same netCDF dataset.
+
+If used to copy an attribute of user-defined type, then that
+user-defined type must already be defined in the target file. In the
+case of user-defined attributes, enddef/redef is called for ncid\_in and
+ncid\_out if they are in define mode. (This is the ensure that all
+user-defined types are committed to the file(s) before the copy is
+attempted.)
+
+
+
+## Usage
+
+~~~~.fortran
+
+ function nf90_copy_att(ncid_in, varid_in, name, ncid_out, varid_out)
+   integer,             intent( in) :: ncid_in,  varid_in
+   character (len = *), intent( in) :: name
+   integer,             intent( in) :: ncid_out, varid_out
+   integer                          :: nf90_copy_att
+
+
+
+
+~~~~
+
+`ncid_in`
+
+:   The netCDF ID of an input netCDF dataset from which the attribute
+    will be copied, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`varid_in`
+
+:   ID of the variable in the input netCDF dataset from which the
+    attribute will be copied, or NF90\_GLOBAL for a global attribute.
+
+`name`
+
+:   Name of the attribute in the input netCDF dataset to be copied.
+
+`ncid_out`
+
+:   The netCDF ID of the output netCDF dataset to which the attribute
+    will be copied, from a previous call to NF90\_OPEN or NF90\_CREATE.
+    It is permissible for the input and output netCDF IDs to be
+    the same. The output netCDF dataset should be in define mode if the
+    attribute to be copied does not already exist for the target
+    variable, or if it would cause an existing target attribute to grow.
+
+`varid_out`
+
+:   ID of the variable in the output netCDF dataset to which the
+    attribute will be copied, or NF90\_GLOBAL to copy to a
+    global attribute.
+
+
+
+## Errors
+
+NF90\_COPY\_ATT returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The input or output variable ID is invalid for the specified
+    netCDF dataset.
+-   The specified attribute does not exist.
+-   The output netCDF is not in define mode and the attribute is new for
+    the output dataset is larger than the existing attribute.
+-   The input or output netCDF ID does not refer to an open
+    netCDF dataset.
+
+
+
+## Example
+
+Here is an example using NF90\_COPY\_ATT to copy the variable attribute
+units from the variable rh in an existing netCDF dataset named foo.nc to
+the variable avgrh in another existing netCDF dataset named bar.nc,
+assuming that the variable avgrh already exists, but does not yet have a
+units attribute:
+
+
+~~~~.fortran
+
+
+ use netcdf
+ implicit none
+ integer :: ncid1, ncid2, status
+ integer :: RHVarID, avgRHVarID    ! Variable ID
+ ...
+ status = nf90_open("foo.nc", nf90_nowrite, ncid1)
+ if (status /= nf90_noerr) call handle_err(status)
+ status = nf90_open("bar.nc", nf90_write, ncid2)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...
+ ! Find the IDs of the variables
+ status = nf90_inq_varid(ncid1, "rh", RHVarID)
+ if (status /= nf90_noerr) call handle_err(status)
+ status = nf90_inq_varid(ncid1, "avgrh", avgRHVarID)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...
+ status = nf90_redef(ncid2)   ! Enter define mode
+ if (status /= nf90_noerr) call handle_err(status)
+ ! Copy variable attribute from "rh" in file 1 to "avgrh" in file 1
+ status = nf90_copy_att(ncid1, RHVarID, "units", ncid2, avgRHVarID)
+ if (status /= nf90_noerr) call handle_err(status)
+ status = nf90_enddef(ncid2)
+ if (status /= nf90_noerr) call handle_err(status)
+
+
+
+~~~~
+
+7.6 Rename an Attribute: NF90_RENAME_ATT {#f90-rename-an-attribute-nf90_rename_att}
+============
+
+
+
+The function NF90\_RENAME\_ATT changes the name of an attribute. If the
+new name is longer than the original name, the netCDF dataset must be in
+define mode. You cannot rename an attribute to have the same name as
+another attribute of the same variable.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+
+ function nf90_rename_att(ncid, varid, curname, newname)
+   integer,             intent( in) :: ncid,  varid
+   character (len = *), intent( in) :: curname, newname
+   integer                          :: nf90_rename_att
+
+
+
+
+~~~~
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE
+
+`varid`
+
+:   ID of the attribute’s variable, or NF90\_GLOBAL for a global
+    attribute
+
+`curname`
+
+:   The current attribute name.
+
+`newname`
+
+:   The new name to be assigned to the specified attribute. If the new
+    name is longer than the current name, the netCDF dataset must be in
+    define mode.
+
+
+
+## Errors
+
+NF90\_RENAME\_ATT returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The specified variable ID is not valid.
+-   The new attribute name is already in use for another attribute of
+    the specified variable.
+-   The specified netCDF dataset is in data mode and the new name is
+    longer than the old name.
+-   The specified attribute does not exist.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+
+
+
+## Example
+
+Here is an example using NF90\_RENAME\_ATT to rename the variable
+attribute units to Units for a variable rh in an existing netCDF dataset
+named foo.nc:
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer :: ncid1, status
+ integer :: RHVarID         ! Variable ID
+ ...
+ status = nf90_open("foo.nc", nf90_nowrite, ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...
+ ! Find the IDs of the variables
+ status = nf90_inq_varid(ncid, "rh", RHVarID)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...
+ status = nf90_rename_att(ncid, RHVarID, "units", "Units")
+ if (status /= nf90_noerr) call handle_err(status)
+
+
+~~~~
+
+
+7.7 NF90_DEL_ATT {#f90-nf90_del_att}
+============
+
+
+
+The function NF90\_DEL\_ATT deletes a netCDF attribute from an open
+netCDF dataset. The netCDF dataset must be in define mode.
+
+
+
+## Usage
+
+
+~~~~.fortran
+
+
+ function nf90_del_att(ncid, varid, name)
+   integer,             intent( in) :: ncid, varid
+   character (len = *), intent( in) :: name
+   integer                          :: nf90_del_att
+
+~~~~
+
+
+
+`ncid`
+
+:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
+
+`varid`
+
+:   ID of the attribute’s variable, or NF90\_GLOBAL for a
+    global attribute.
+
+`name`
+
+:   The name of the attribute to be deleted.
+
+
+
+## Errors
+
+NF90\_DEL\_ATT returns the value NF90\_NOERR if no errors occurred.
+Otherwise, the returned status indicates an error. Possible causes of
+errors include:
+
+-   The specified variable ID is not valid.
+-   The specified netCDF dataset is in data mode.
+-   The specified attribute does not exist.
+-   The specified netCDF ID does not refer to an open netCDF dataset.
+
+
+
+## Example
+
+Here is an example using NF90\_DEL\_ATT to delete the variable attribute
+Units for a variable rh in an existing netCDF dataset named foo.nc:
+
+
+
+~~~~.fortran
+
+ use netcdf
+ implicit none
+ integer :: ncid1, status
+ integer :: RHVarID         ! Variable ID
+ ...
+ status = nf90_open("foo.nc", nf90_nowrite, ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...
+ ! Find the IDs of the variables
+ status = nf90_inq_varid(ncid, "rh", RHVarID)
+ if (status /= nf90_noerr) call handle_err(status)
+ ...
+ status = nf90_redef(ncid)   ! Enter define mode
+ if (status /= nf90_noerr) call handle_err(status)
+ status = nf90_del_att(ncid, RHVarID, "Units")
+ if (status /= nf90_noerr) call handle_err(status)
+ status = nf90_enddef(ncid)
+ if (status /= nf90_noerr) call handle_err(status)
+
+~~~~
diff --git a/docs/netcdf-f90.md b/docs/netcdf-f90.md
index 8b31e4f..67ffc88 100644
--- a/docs/netcdf-f90.md
+++ b/docs/netcdf-f90.md
@@ -1,10024 +1,25 @@
-The NetCDF Fortran 90 Interface Guide {#nc_f90_interface_guide}
-=====================================
+The NetCDF Fortran 90 Interface Guide {#f90_The-NetCDF-Fortran-90-Interface-Guide}
+========================
 
-This document describes the Fortran 90 interface to the netCDF library.
-It applies to netCDF version No value for VERSION. This document was
-last updated in No value for UPDATED.
-
-For a complete description of the netCDF format and utilities see the netCDF User's Guide.
-
- 
-
-``` {.menu-comment}
- — The Detailed Node Listing —
-
-Use of the NetCDF Library
-```
-
-[1.1 Creating a NetCDF Dataset](#Creating-a-NetCDF-Dataset)
-
-  
-
-[1.2 Reading a NetCDF Dataset with Known
-Names](#Reading-a-NetCDF-Dataset-with-Known-Names)
-
-  
-
-[1.3 Reading a netCDF Dataset with Unknown
-Names](#Reading-a-netCDF-Dataset-with-Unknown-Names)
-
-  
-
-[1.4 Writing Data in an Existing NetCDF
-Dataset](#Writing-Data-in-an-Existing-NetCDF-Dataset)
-
-  
-
-[1.5 Adding New Dimensions, Variables,
-Attributes](#Adding-New-Dimensions)
-
-  
-
-[1.6 Error Handling](#Error-Handling)
-
-  
-
-[1.7 Compiling and Linking with the NetCDF
-Library](#Compiling-and-Linking-with-the-NetCDF-Library)
-
-  
-
-``` {.menu-comment}
-Datasets
-```
-
-[2.1 Datasets Introduction](#Datasets-Introduction)
-
-  
-
-[2.2 NetCDF Library Interface
-Descriptions](#NetCDF-Library-Interface-Descriptions)
-
-  
-
-[2.3 NF90\_STRERROR](#NF90_005fSTRERROR)
-
-  
-
-[2.4 Get netCDF library version:
-NF90\_INQ\_LIBVERS](#NF90_005fINQ_005fLIBVERS)
-
-  
-
-[2.5 NF90\_CREATE](#NF90_005fCREATE)
-
-  
-
-[2.6 NF90\_OPEN](#NF90_005fOPEN)
-
-  
-
-[2.7 NF90\_REDEF](#NF90_005fREDEF)
-
-  
-
-[2.8 NF90\_ENDDEF](#NF90_005fENDDEF)
-
-  
-
-[2.9 NF90\_CLOSE](#NF90_005fCLOSE)
-
-  
-
-[2.10 NF90\_INQUIRE Family](#NF90_005fINQUIRE-Family)
-
-  
-
-[2.11 NF90\_SYNC](#NF90_005fSYNC)
-
-  
-
-[2.12 NF90\_ABORT](#NF90_005fABORT)
-
-  
-
-[2.13 NF90\_SET\_FILL](#NF90_005fSET_005fFILL)
-
-  
-
-``` {.menu-comment}
-Groups
-```
-
-[3.1 Find a Group ID: NF90\_INQ\_NCID](#NF90_005fINQ_005fNCID)
-
-  
-
-[3.2 Get a List of Groups in a Group:
-NF90\_INQ\_GRPS](#NF90_005fINQ_005fGRPS)
-
-  
-
-[3.3 Find all the Variables in a Group:
-NF90\_INQ\_VARIDS](#NF90_005fINQ_005fVARIDS)
-
-  
-
-[3.4 Find all Dimensions Visible in a Group:
-NF90\_INQ\_DIMIDS](#NF90_005fINQ_005fDIMIDS)
-
-  
-
-[3.5 Find the Length of a Group’s Full Name:
-NF90\_INQ\_GRPNAME\_LEN](#NF90_005fINQ_005fGRPNAME_005fLEN)
-
-  
-
-[3.6 Find a Group’s Name: NF90\_INQ\_GRPNAME](#NF90_005fINQ_005fGRPNAME)
-
-  
-
-[3.7 Find a Group’s Full Name:
-NF90\_INQ\_GRPNAME\_FULL](#NF90_005fINQ_005fGRPNAME_005fFULL)
-
-  
-
-[3.8 Find a Group’s Parent:
-NF90\_INQ\_GRP\_PARENT](#NF90_005fINQ_005fGRP_005fPARENT)
-
-  
-
-[3.9 Find a Group by Name:
-NF90\_INQ\_GRP\_NCID](#NF90_005fINQ_005fGRP_005fNCID)
-
-  
-
-[3.10 Find a Group by its Fully-qualified Name:
-NF90\_INQ\_GRP\_FULL\_NCID](#NF90_005fINQ_005fGRP_005fFULL_005fNCID)
-
-  
-
-[3.11 Create a New Group: NF90\_DEF\_GRP](#NF90_005fDEF_005fGRP)
-
-  
-
-``` {.menu-comment}
-Dimensions
-```
-
-[4.1 Dimensions Introduction](#Dimensions-Introduction)
-
-  
-
-[4.2 NF90\_DEF\_DIM](#NF90_005fDEF_005fDIM)
-
-  
-
-[4.3 NF90\_INQ\_DIMID](#NF90_005fINQ_005fDIMID)
-
-  
-
-[4.4 NF90\_INQUIRE\_DIMENSION](#NF90_005fINQUIRE_005fDIMENSION)
-
-  
-
-[4.5 NF90\_RENAME\_DIM](#NF90_005fRENAME_005fDIM)
-
-  
-
-``` {.menu-comment}
-User Defined Data Types
-```
-
-[5.1 User Defined Types Introduction](#User-Defined-Types)
-
-  
-
-[5.2 Learn the IDs of All Types in Group:
-NF90\_INQ\_TYPEIDS](#NF90_005fINQ_005fTYPEIDS)
-
-  
-
-[5.3 Find a Typeid from Group and Name:
-nf90\_inq\_typeid](#nf90_005finq_005ftypeid)
-
-  
-
-[5.4 Learn About a User Defined Type:
-NF90\_INQ\_TYPE](#NF90_005fINQ_005fTYPE)
-
-  
-
-[5.5 Learn About a User Defined Type:
-NF90\_INQ\_USER\_TYPE](#NF90_005fINQ_005fUSER_005fTYPE)
-
-  
-
-[5.6 Compound Types Introduction](#Compound-Types)
-
-  
-
-[5.7 Variable Length Array Introduction](#Variable-Length-Array)
-
-  
-
-[5.8 Opaque Type Introduction](#Opaque-Type)
-
-  
-
-[5.9 Enum Type Introduction](#Enum-Type)
-
-  
-
-``` {.menu-comment}
-Example
-```
-
-[5.5.1 Set a Variable Length Array with
-NF90\_PUT\_VLEN\_ELEMENT](#NF90_005fPUT_005fVLEN_005fELEMENT)
-
-  
-
-[5.5.2 Set a Variable Length Array with
-NF90\_GET\_VLEN\_ELEMENT](#NF90_005fGET_005fVLEN_005fELEMENT)
-
-  
-
-``` {.menu-comment}
-Compound Types Introduction
-```
-
-[5.6.1 Creating a Compound Type:
-NF90\_DEF\_COMPOUND](#NF90_005fDEF_005fCOMPOUND)
-
-  
-
-[5.6.2 Inserting a Field into a Compound Type:
-NF90\_INSERT\_COMPOUND](#NF90_005fINSERT_005fCOMPOUND)
-
-  
-
-[5.6.3 Inserting an Array Field into a Compound Type:
-NF90\_INSERT\_ARRAY\_COMPOUND](#NF90_005fINSERT_005fARRAY_005fCOMPOUND)
-
-  
-
-[5.6.4 Learn About a Compound Type:
-NF90\_INQ\_COMPOUND](#NF90_005fINQ_005fCOMPOUND)
-
-  
-
-[5.6.5 Learn About a Field of a Compound Type:
-NF90\_INQ\_COMPOUND\_FIELD](#NF90_005fINQ_005fCOMPOUND_005fFIELD)
-
-  
-
-``` {.menu-comment}
-Variable Length Array Introduction
-```
-
-[5.7.1 Define a Variable Length Array (VLEN):
-NF90\_DEF\_VLEN](#NF90_005fDEF_005fVLEN)
-
-  
-
-[5.7.2 Learning about a Variable Length Array (VLEN) Type:
-NF90\_INQ\_VLEN](#NF90_005fINQ_005fVLEN)
-
-  
-
-[5.7.3 Releasing Memory for a Variable Length Array (VLEN) Type:
-NF90\_FREE\_VLEN](#NF90_005fFREE_005fVLEN)
-
-  
-
-``` {.menu-comment}
-Opaque Type Introduction
-```
-
-[5.8.1 Creating Opaque Types:
-NF90\_DEF\_OPAQUE](#NF90_005fDEF_005fOPAQUE)
-
-  
-
-[5.8.2 Learn About an Opaque Type:
-NF90\_INQ\_OPAQUE](#NF90_005fINQ_005fOPAQUE)
-
-  
-
-``` {.menu-comment}
-Example
-```
+[TOC]
 
-[5.8.2 Learn About an Opaque Type:
-NF90\_INQ\_OPAQUE](#NF90_005fINQ_005fOPAQUE)
-
-  
-
-``` {.menu-comment}
-Enum Type Introduction
-```
-
-[5.9.1 Creating a Enum Type: NF90\_DEF\_ENUM](#NF90_005fDEF_005fENUM)
-
-  
-
-[5.9.2 Inserting a Field into a Enum Type:
-NF90\_INSERT\_ENUM](#NF90_005fINSERT_005fENUM)
-
-  
-
-[5.9.3 Learn About a Enum Type: NF90\_INQ\_ENUM](#NF90_005fINQ_005fENUM)
-
-  
-
-[5.9.4 Learn the Name of a Enum Type:
-nf90\_inq\_enum\_member](#NF90_005fINQ_005fENUM_005fMEMBER)
-
-  
-
-[5.9.5 Learn the Name of a Enum Type:
-NF90\_INQ\_ENUM\_IDENT](#NF90_005fINQ_005fENUM_005fIDENT)
-
-  
-
-``` {.menu-comment}
-Variables
-```
-
-[6.1 Variables Introduction](#Variables-Introduction)
-
-  
-
-[6.2 Language Types Corresponding to netCDF external data
-types](#Language_002dTypes)
-
-  
-
-[6.3 Create a Variable: `NF90_DEF_VAR`](#NF90_005fDEF_005fVAR)
-
-  
-
-Create a Variable
-
-[6.4 Define Fill Parameters for a Variable:
-`nf90_def_var_fill`](#NF90_005fDEF_005fVAR_005fFILL)
-
-  
-
-[6.5 Learn About Fill Parameters for a Variable:
-`NF90_INQ_VAR_FILL`](#NF90_005fINQ_005fVAR_005fFILL)
-
-  
-
-[6.6 Get Information about a Variable from Its ID:
-NF90\_INQUIRE\_VARIABLE](#NF90_005fINQUIRE_005fVARIABLE)
-
-  
-
-Get Var Metadata
-
-[6.7 Get the ID of a variable from the name:
-NF90\_INQ\_VARID](#NF90_005fINQ_005fVARID)
-
-  
-
-[6.8 Writing Data Values: NF90\_PUT\_VAR](#NF90_005fPUT_005fVAR)
-
-  
-
-Write data
-
-[6.9 Reading Data Values: NF90\_GET\_VAR](#NF90_005fGET_005fVAR)
-
-  
-
-Read data
-
-[6.10 Reading and Writing Character String
-Values](#Reading-and-Writing-Character-String-Values)
-
-  
-
-[6.11 Fill Values](#Fill-Values)
-
-  
-
-What’s Written Where there’s No Data?
-
-[6.12 NF90\_RENAME\_VAR](#NF90_005fRENAME_005fVAR)
-
-  
-
-[6.13 Change between Collective and Independent Parallel Access:
-NF90\_VAR\_PAR\_ACCESS](#NF90_005fVAR_005fPAR_005fACCESS)
-
-  
-
-``` {.menu-comment}
-Attributes
-```
-
-[7.1 Attributes Introduction](#Attributes-Introduction)
-
-  
-
-[7.2 Create an Attribute: NF90\_PUT\_ATT](#NF90_005fPUT_005fATT)
-
-  
-
-[7.3 Get Information about an Attribute: NF90\_INQUIRE\_ATTRIBUTE and
-NF90\_INQ\_ATTNAME](#NF90_005fINQUIRE_005fATTRIBUTE)
-
-  
-
-[7.4 Get Attribute’s Values: NF90\_GET\_ATT](#NF90_005fGET_005fATT)
-
-  
-
-[7.5 Copy Attribute from One NetCDF to Another:
-NF90\_COPY\_ATT](#NF90_005fCOPY_005fATT)
-
-  
-
-[7.6 Rename an Attribute: NF90\_RENAME\_ATT](#NF90_005fRENAME_005fATT)
-
-  
-
-[7.7 NF90\_DEL\_ATT](#NF90_005fDEL_005fATT)
-
-  
-
-``` {.menu-comment}
-```
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------ ------------------------------------------------------------------------ --- ---------------------------------------------------------------------- ----------------------------- ------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Top "Previous section in reading order")\]   \[[>](#Creating-a-NetCDF-Dataset "Next section in reading order")\]       \[[<<](#Top "Beginning of this chapter or previous chapter")\]   \[[Up](#Top "Up section")\]   \[[>>](#Datasets "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------ ------------------------------------------------------------------------ --- ---------------------------------------------------------------------- ----------------------------- ------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-1. Use of the NetCDF Library {.chapter}
-============================
+This document describes the Fortran 90 interface to the netCDF library.
 
 You can use the netCDF library without knowing about all of the netCDF
 interface. If you are creating a netCDF dataset, only a handful of
 routines are required to define the necessary dimensions, variables, and
-attributes, and to write the data to the netCDF dataset. (Even less are
-needed if you use the ncgen utility to create the dataset before running
-a program using netCDF library calls to write data. See
-[(netcdf)ncgen](netcdf.html#ncgen) section ‘ncgen’ in NetCDF Users
-Guide.) Similarly, if you are writing software to access data stored in
-a particular netCDF object, only a small subset of the netCDF library is
-required to open the netCDF dataset and access the data. Authors of
-generic applications that access arbitrary netCDF datasets need to be
-familiar with more of the netCDF library.
-
-In this chapter we provide templates of common sequences of netCDF calls
-needed for common uses. For clarity we present only the names of
-routines; omit declarations and error checking; omit the type-specific
-suffixes of routine names for variables and attributes; indent
-statements that are typically invoked multiple times; and use ... to
-represent arbitrary sequences of other statements. Full parameter lists
-are described in later chapters.
-
-  ------------------------ ------------------------ ------------------------
-  [1.1 Creating a NetCDF                            
-  Dataset](#Creating-a-Net                          
-  CDF-Dataset)                                      
-
-  [1.2 Reading a NetCDF                             
-  Dataset with Known                                
-  Names](#Reading-a-NetCDF                          
-  -Dataset-with-Known-Name                          
-  s)                                                
-
-  [1.3 Reading a netCDF                             
-  Dataset with Unknown                              
-  Names](#Reading-a-netCDF                          
-  -Dataset-with-Unknown-Na                          
-  mes)                                              
-
-  [1.4 Writing Data in an                           
-  Existing NetCDF                                   
-  Dataset](#Writing-Data-i                          
-  n-an-Existing-NetCDF-Dat                          
-  aset)                                             
-
-  [1.5 Adding New                                   
-  Dimensions, Variables,                            
-  Attributes](#Adding-New-                          
-  Dimensions)                                       
-
-  [1.6 Error                                        
-  Handling](#Error-Handlin                          
-  g)                                                
-
-  [1.7 Compiling and                                
-  Linking with the NetCDF                           
-  Library](#Compiling-and-                          
-  Linking-with-the-NetCDF-                          
-  Library)                                          
-  ------------------------ ------------------------ ------------------------
-
-------------------------------------------------------------------------
-
-  ---------------------------------------------------------------------------- ---------------------------------------------------------------------------------------- --- -------------------------------------------------------------------------------------------- --------------------------------------------------- ------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------ [...]
-  \[[<](#Use-of-the-NetCDF-Library "Previous section in reading order")\]   \[[>](#Reading-a-NetCDF-Dataset-with-Known-Names "Next section in reading order")\]       \[[<<](#Use-of-the-NetCDF-Library "Beginning of this chapter or previous chapter")\]   \[[Up](#Use-of-the-NetCDF-Library "Up section")\]   \[[>>](#Datasets "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About " [...]
-  ---------------------------------------------------------------------------- ---------------------------------------------------------------------------------------- --- -------------------------------------------------------------------------------------------- --------------------------------------------------- ------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------ [...]
-
-1.1 Creating a NetCDF Dataset {.section}
------------------------------
-
-Here is a typical sequence of netCDF calls used to create a new netCDF
-dataset:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |      NF90_CREATE           ! create  |
-|                                      | netCDF dataset: enter define mode    |
-|                                      |           ...                        |
-|                                      |         NF90_DEF_DIM       ! define  |
-|                                      | dimensions: from name and length     |
-|                                      |           ...                        |
-|                                      |         NF90_DEF_VAR       ! define  |
-|                                      | variables: from name, type, dims     |
-|                                      |           ...                        |
-|                                      |         NF90_PUT_ATT       ! assign  |
-|                                      | attribute values                     |
-|                                      |           ...                        |
-|                                      |      NF90_ENDDEF           ! end def |
-|                                      | initions: leave define mode          |
-|                                      |           ...                        |
-|                                      |         NF90_PUT_VAR       ! provide |
-|                                      |  values for variable                 |
-|                                      |           ...                        |
-|                                      |      NF90_CLOSE            ! close:  |
-|                                      | save new netCDF dataset              |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-Only one call is needed to create a netCDF dataset, at which point you
-will be in the first of two netCDF modes. When accessing an open netCDF
-dataset, it is either in define mode or data mode. In define mode, you
-can create dimensions, variables, and new attributes, but you cannot
-read or write variable data. In data mode, you can access data and
-change existing attributes, but you are not permitted to create new
-dimensions, variables, or attributes.
-
-One call to NF90\_DEF\_DIM is needed for each dimension created.
-Similarly, one call to NF90\_DEF\_VAR is needed for each variable
-creation, and one call to a member of the NF90\_PUT\_ATT family is
-needed for each attribute defined and assigned a value. To leave define
-mode and enter data mode, call NF90\_ENDDEF.
-
-Once in data mode, you can add new data to variables, change old values,
-and change values of existing attributes (so long as the attribute
-changes do not require more storage space). Data of all types is written
-to a netCDF variable using the NF90\_PUT\_VAR subroutine. Single values,
-arrays, or array sections may be supplied to NF90\_PUT\_VAR; optional
-arguments allow the writing of subsampled or mapped portions of the
-variable. (Subsampled and mapped access are general forms of data access
-that are explained later.)
-
-Finally, you should explicitly close all netCDF datasets that have been
-opened for writing by calling NF90\_CLOSE. By default, access to the
-file system is buffered by the netCDF library. If a program terminates
-abnormally with netCDF datasets open for writing, your most recent
-modifications may be lost. This default buffering of data is disabled by
-setting the NF90\_SHARE flag when opening the dataset. But even if this
-flag is set, changes to attribute values or changes made in define mode
-are not written out until NF90\_SYNC or NF90\_CLOSE is called.
-
-------------------------------------------------------------------------
-
-  ---------------------------------------------------------------------------- ------------------------------------------------------------------------------------------ --- -------------------------------------------------------------------------------------------- --------------------------------------------------- ------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ---------------- [...]
-  \[[<](#Creating-a-NetCDF-Dataset "Previous section in reading order")\]   \[[>](#Reading-a-netCDF-Dataset-with-Unknown-Names "Next section in reading order")\]       \[[<<](#Use-of-the-NetCDF-Library "Beginning of this chapter or previous chapter")\]   \[[Up](#Use-of-the-NetCDF-Library "Up section")\]   \[[>>](#Datasets "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About [...]
-  ---------------------------------------------------------------------------- ------------------------------------------------------------------------------------------ --- -------------------------------------------------------------------------------------------- --------------------------------------------------- ------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ---------------- [...]
-
-1.2 Reading a NetCDF Dataset with Known Names {.section}
----------------------------------------------
-
-Here we consider the case where you know the names of not only the
-netCDF datasets, but also the names of their dimensions, variables, and
-attributes. (Otherwise you would have to do "inquire" calls.) The order
-of typical C calls to read data from those variables in a netCDF dataset
-is:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |      NF90_OPEN               ! open  |
-|                                      | existing netCDF dataset              |
-|                                      |           ...                        |
-|                                      |         NF90_INQ_DIMID       ! get d |
-|                                      | imension IDs                         |
-|                                      |           ...                        |
-|                                      |         NF90_INQ_VARID       ! get v |
-|                                      | ariable IDs                          |
-|                                      |           ...                        |
-|                                      |         NF90_GET_ATT         ! get a |
-|                                      | ttribute values                      |
-|                                      |           ...                        |
-|                                      |         NF90_GET_VAR         ! get v |
-|                                      | alues of variables                   |
-|                                      |           ...                        |
-|                                      |      NF90_CLOSE              ! close |
-|                                      |  netCDF dataset                      |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-First, a single call opens the netCDF dataset, given the dataset name,
-and returns a netCDF ID that is used to refer to the open netCDF dataset
-in all subsequent calls.
-
-Next, a call to NF90\_INQ\_DIMID for each dimension of interest gets the
-dimension ID from the dimension name. Similarly, each required variable
-ID is determined from its name by a call to NF90\_INQ\_VARID. Once
-variable IDs are known, variable attribute values can be retrieved using
-the netCDF ID, the variable ID, and the desired attribute name as input
-to NF90\_GET\_ATT for each desired attribute. Variable data values can
-be directly accessed from the netCDF dataset with calls to
-NF90\_GET\_VAR.
-
-Finally, the netCDF dataset is closed with NF90\_CLOSE. There is no need
-to close a dataset open only for reading.
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------- --- -------------------------------------------------------------------------------------------- --------------------------------------------------- ------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- - [...]
-  \[[<](#Reading-a-NetCDF-Dataset-with-Known-Names "Previous section in reading order")\]   \[[>](#Writing-Data-in-an-Existing-NetCDF-Dataset "Next section in reading order")\]       \[[<<](#Use-of-the-NetCDF-Library "Beginning of this chapter or previous chapter")\]   \[[Up](#Use-of-the-NetCDF-Library "Up section")\]   \[[>>](#Datasets "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \ [...]
-  -------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------- --- -------------------------------------------------------------------------------------------- --------------------------------------------------- ------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- - [...]
-
-1.3 Reading a netCDF Dataset with Unknown Names {.section}
------------------------------------------------
-
-It is possible to write programs (e.g., generic software) which do such
-things as processing every variable, without needing to know in advance
-the names of these variables. Similarly, the names of dimensions and
-attributes may be unknown.
-
-Names and other information about netCDF objects may be obtained from
-netCDF datasets by calling inquire functions. These return information
-about a whole netCDF dataset, a dimension, a variable, or an attribute.
-The following template illustrates how they are used:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |      NF90_OPEN                 ! ope |
-|                                      | n existing netCDF dataset            |
-|                                      |        ...                           |
-|                                      |      NF90_INQUIRE              ! fin |
-|                                      | d out what is in it                  |
-|                                      |           ...                        |
-|                                      |         NF90_INQUIRE_DIMENSION ! get |
-|                                      |  dimension names, lengths            |
-|                                      |           ...                        |
-|                                      |         NF90_INQUIRE_VARIABLE  ! get |
-|                                      |  variable names, types, shapes       |
-|                                      |              ...                     |
-|                                      |            NF90_INQ_ATTNAME    ! get |
-|                                      |  attribute names                     |
-|                                      |              ...                     |
-|                                      |            NF90_INQUIRE_ATTRIBUTE !  |
-|                                      | get other attribute information      |
-|                                      |              ...                     |
-|                                      |            NF90_GET_ATT        ! get |
-|                                      |  attribute values                    |
-|                                      |              ...                     |
-|                                      |         NF90_GET_VAR           ! get |
-|                                      |  values of variables                 |
-|                                      |           ...                        |
-|                                      |      NF90_CLOSE                ! clo |
-|                                      | se netCDF dataset                    |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-As in the previous example, a single call opens the existing netCDF
-dataset, returning a netCDF ID. This netCDF ID is given to the
-NF90\_INQUIRE routine, which returns the number of dimensions, the
-number of variables, the number of global attributes, and the ID of the
-unlimited dimension, if there is one.
-
-All the inquire functions are inexpensive to use and require no I/O,
-since the information they provide is stored in memory when a netCDF
-dataset is first opened.
-
-Dimension IDs use consecutive integers, beginning at 1. Also dimensions,
-once created, cannot be deleted. Therefore, knowing the number of
-dimension IDs in a netCDF dataset means knowing all the dimension IDs:
-they are the integers 1, 2, 3, ...up to the number of dimensions. For
-each dimension ID, a call to the inquire function
-NF90\_INQUIRE\_DIMENSION returns the dimension name and length.
-
-Variable IDs are also assigned from consecutive integers 1, 2, 3, ... up
-to the number of variables. These can be used in NF90\_INQUIRE\_VARIABLE
-calls to find out the names, types, shapes, and the number of attributes
-assigned to each variable.
-
-Once the number of attributes for a variable is known, successive calls
-to NF90\_INQ\_ATTNAME return the name for each attribute given the
-netCDF ID, variable ID, and attribute number. Armed with the attribute
-name, a call to NF90\_INQUIRE\_ATTRIBUTE returns its type and length.
-Given the type and length, you can allocate enough space to hold the
-attribute values. Then a call to NF90\_GET\_ATT returns the attribute
-values.
-
-Once the IDs and shapes of netCDF variables are known, data values can
-be accessed by calling NF90\_GET\_VAR.
-
-------------------------------------------------------------------------
-
-  ---------------------------------------------------------------------------------------------- -------------------------------------------------------------------- --- -------------------------------------------------------------------------------------------- --------------------------------------------------- ------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- -------------------- [...]
-  \[[<](#Reading-a-netCDF-Dataset-with-Unknown-Names "Previous section in reading order")\]   \[[>](#Adding-New-Dimensions "Next section in reading order")\]       \[[<<](#Use-of-the-NetCDF-Library "Beginning of this chapter or previous chapter")\]   \[[Up](#Use-of-the-NetCDF-Library "Up section")\]   \[[>>](#Datasets "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "Ab [...]
-  ---------------------------------------------------------------------------------------------- -------------------------------------------------------------------- --- -------------------------------------------------------------------------------------------- --------------------------------------------------- ------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- -------------------- [...]
-
-1.4 Writing Data in an Existing NetCDF Dataset {.section}
-----------------------------------------------
-
-With write access to an existing netCDF dataset, you can overwrite data
-values in existing variables or append more data to record variables
-along the unlimited (record) dimension. To append more data to
-non-record variables requires changing the shape of such variables,
-which means creating a new netCDF dataset, defining new variables with
-the desired shape, and copying data. The netCDF data model was not
-designed to make such "schema changes" efficient or easy, so it is best
-to specify the shapes of variables correctly when you create a netCDF
-dataset, and to anticipate which variables will later grow by using the
-unlimited dimension in their definition.
-
-The following code template lists a typical sequence of calls to
-overwrite some existing values and add some new records to record
-variables in an existing netCDF dataset with known variable names:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |      NF90_OPEN             ! open ex |
-|                                      | isting netCDF dataset                |
-|                                      |        ...                           |
-|                                      |        NF90_INQ_VARID      ! get var |
-|                                      | iable IDs                            |
-|                                      |        ...                           |
-|                                      |        NF90_PUT_VAR        ! provide |
-|                                      |  new values for variables, if any    |
-|                                      |        ...                           |
-|                                      |        NF90_PUT_ATT        ! provide |
-|                                      |  new values for attributes, if any   |
-|                                      |          ...                         |
-|                                      |      NF90_CLOSE            ! close n |
-|                                      | etCDF dataset                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-A netCDF dataset is first opened by the NF90\_OPEN call. This call puts
-the open dataset in data mode, which means existing data values can be
-accessed and changed, existing attributes can be changed, but no new
-dimensions, variables, or attributes can be added.
-
-Next, calls to NF90\_INQ\_VARID get the variable ID from the name, for
-each variable you want to write. Then each call to NF90\_PUT\_VAR writes
-data into a specified variable, either a single value at a time, or a
-whole set of values at a time, depending on which variant of the
-interface is used. The calls used to overwrite values of non-record
-variables are the same as are used to overwrite values of record
-variables or append new data to record variables. The difference is
-that, with record variables, the record dimension is extended by writing
-values that don’t yet exist in the dataset. This extends all record
-variables at once, writing "fill values" for record variables for which
-the data has not yet been written (but see section [Fill
-Values](#Fill-Values) to specify different behavior).
-
-Calls to NF90\_PUT\_ATT may be used to change the values of existing
-attributes, although data that changes after a file is created is
-typically stored in variables rather than attributes.
-
-Finally, you should explicitly close any netCDF datasets into which data
-has been written by calling NF90\_CLOSE before program termination.
-Otherwise, modifications to the dataset may be lost.
-
-------------------------------------------------------------------------
-
-  --------------------------------------------------------------------------------------------- ------------------------------------------------------------- --- -------------------------------------------------------------------------------------------- --------------------------------------------------- ------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ---------------------------- [...]
-  \[[<](#Writing-Data-in-an-Existing-NetCDF-Dataset "Previous section in reading order")\]   \[[>](#Error-Handling "Next section in reading order")\]       \[[<<](#Use-of-the-NetCDF-Library "Beginning of this chapter or previous chapter")\]   \[[Up](#Use-of-the-NetCDF-Library "Up section")\]   \[[>>](#Datasets "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  --------------------------------------------------------------------------------------------- ------------------------------------------------------------- --- -------------------------------------------------------------------------------------------- --------------------------------------------------- ------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ---------------------------- [...]
-
-1.5 Adding New Dimensions, Variables, Attributes {.section}
-------------------------------------------------
-
-An existing netCDF dataset can be extensively altered. New dimensions,
-variables, and attributes can be added or existing ones renamed, and
-existing attributes can be deleted. Existing dimensions, variables, and
-attributes can be renamed. The following code template lists a typical
-sequence of calls to add new netCDF components to an existing dataset:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |      NF90_OPEN             ! open ex |
-|                                      | isting netCDF dataset                |
-|                                      |        ...                           |
-|                                      |      NF90_REDEF            ! put it  |
-|                                      | into define mode                     |
-|                                      |          ...                         |
-|                                      |        NF90_DEF_DIM        ! define  |
-|                                      | additional dimensions (if any)       |
-|                                      |          ...                         |
-|                                      |        NF90_DEF_VAR        ! define  |
-|                                      | additional variables (if any)        |
-|                                      |          ...                         |
-|                                      |        NF90_PUT_ATT        ! define  |
-|                                      | other attributes (if any)            |
-|                                      |          ...                         |
-|                                      |      NF90_ENDDEF           ! check d |
-|                                      | efinitions, leave define mode        |
-|                                      |          ...                         |
-|                                      |        NF90_PUT_VAR        ! provide |
-|                                      |  new variable values                 |
-|                                      |          ...                         |
-|                                      |      NF90_CLOSE            ! close n |
-|                                      | etCDF dataset                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-A netCDF dataset is first opened by the NF90\_OPEN call. This call puts
-the open dataset in data mode, which means existing data values can be
-accessed and changed, existing attributes can be changed (so long as
-they do not grow), but nothing can be added. To add new netCDF
-dimensions, variables, or attributes you must enter define mode, by
-calling NF90\_REDEF. In define mode, call NF90\_DEF\_DIM to define new
-dimensions, NF90\_DEF\_VAR to define new variables, and NF90\_PUT\_ATT
-to assign new attributes to variables or enlarge old attributes.
-
-You can leave define mode and reenter data mode, checking all the new
-definitions for consistency and committing the changes to disk, by
-calling NF90\_ENDDEF. If you do not wish to reenter data mode, just call
-NF90\_CLOSE, which will have the effect of first calling NF90\_ENDDEF.
-
-Until the NF90\_ENDDEF call, you may back out of all the redefinitions
-made in define mode and restore the previous state of the netCDF dataset
-by calling NF90\_ABORT. You may also use the NF90\_ABORT call to restore
-the netCDF dataset to a consistent state if the call to NF90\_ENDDEF
-fails. If you have called NF90\_CLOSE from definition mode and the
-implied call to NF90\_ENDDEF fails, NF90\_ABORT will automatically be
-called to close the netCDF dataset and leave it in its previous
-consistent state (before you entered define mode).
-
-At most one process should have a netCDF dataset open for writing at one
-time. The library is designed to provide limited support for multiple
-concurrent readers with one writer, via disciplined use of the
-NF90\_SYNC function and the NF90\_SHARE flag. If a writer makes changes
-in define mode, such as the addition of new variables, dimensions, or
-attributes, some means external to the library is necessary to prevent
-readers from making concurrent accesses and to inform readers to call
-NF90\_SYNC before the next access.
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------ -------------------------------------------------------------------------------------------- --- -------------------------------------------------------------------------------------------- --------------------------------------------------- ------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------ [...]
-  \[[<](#Adding-New-Dimensions "Previous section in reading order")\]   \[[>](#Compiling-and-Linking-with-the-NetCDF-Library "Next section in reading order")\]       \[[<<](#Use-of-the-NetCDF-Library "Beginning of this chapter or previous chapter")\]   \[[Up](#Use-of-the-NetCDF-Library "Up section")\]   \[[>>](#Datasets "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About " [...]
-  ------------------------------------------------------------------------ -------------------------------------------------------------------------------------------- --- -------------------------------------------------------------------------------------------- --------------------------------------------------- ------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------ [...]
-
-1.6 Error Handling {.section}
-------------------
-
-The netCDF library provides the facilities needed to handle errors in a
-flexible way. Each netCDF function returns an integer status value. If
-the returned status value indicates an error, you may handle it in any
-way desired, from printing an associated error message and exiting to
-ignoring the error indication and proceeding (not recommended!). For
-simplicity, the examples in this guide check the error status and call a
-separate function to handle any errors.
-
-The NF90\_STRERROR function is available to convert a returned integer
-error status into an error message string.
-
-Occasionally, low-level I/O errors may occur in a layer below the netCDF
-library. For example, if a write operation causes you to exceed disk
-quotas or to attempt to write to a device that is no longer available,
-you may get an error from a layer below the netCDF library, but the
-resulting write error will still be reflected in the returned status
-value.
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------- ------------------------------------------------------- --- -------------------------------------------------------------------------------------------- --------------------------------------------------- ------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Error-Handling "Previous section in reading order")\]   \[[>](#Datasets "Next section in reading order")\]       \[[<<](#Use-of-the-NetCDF-Library "Beginning of this chapter or previous chapter")\]   \[[Up](#Use-of-the-NetCDF-Library "Up section")\]   \[[>>](#Datasets "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------------- ------------------------------------------------------- --- -------------------------------------------------------------------------------------------- --------------------------------------------------- ------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-1.7 Compiling and Linking with the NetCDF Library {.section}
--------------------------------------------------
-
-Details of how to compile and link a program that uses the netCDF C or
-Fortran interfaces differ, depending on the operating system, the
-available compilers, and where the netCDF library and include files are
-installed. Nevertheless, we provide here examples of how to compile and
-link a program that uses the netCDF library on a Unix platform, so that
-you can adjust these examples to fit your installation.
-
-Every Fortran 90 procedure or module which references netCDF constants
-or procedures must have access to the module information created when
-the netCDF module was compiled. The suffix for this file is “MOD” (or
-sometimes “mod”).
-
-Most F90 compilers allow the user to specify the location of .MOD files,
-usually with the -I flag.
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      | f90 -c -I/usr/local/include mymodule |
-|                                      | .f90                                 |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-Starting with version 3.6.2, another method of building the netCDF
-fortran libraries became available. With the –enable-separate-fortran
-option to configure, the user can specify that the C library should not
-contain the fortran functions. In these cases an additional library,
-libnetcdff.a (note the extra “f”) will be built. This library contains
-the Fortran functions. Since verion 4.1.3, the netCDF Fortran software
-and library is always distinct from the netCDF C library, but depends on
-it. If it is installed as a shared library, you need only use
-‘-lnetcdff’ to specify the Fortran library for linking.
-
-For more information about configure options, See
-[(netcdf-install)Specifying the Environment for
-Building](netcdf-install.html#Specifying-the-Environment-for-Building)
-section ‘Specifying the Environment for Building’ in The NetCDF
-Installation and Porting Guide.
-
-If installed as a shared library, link, using something like:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      | f90 -o myprogram myprogram.o -L/usr/ |
-|                                      | local/lib -lnetcdff                  |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-If installed as a static library, you will at least need to mention the
-netCDF C library and perhaps other libraries, such as hdf5 or curl,
-depending on how the C library was built. For example:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      | f90 -o myprogram myprogram.o -L/usr/ |
-|                                      | local/lib -lnetcdff -lnetcdf         |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-Use of the nf-config utility program, installed as part of the
-netcdf-fortran software, provides an easier way to compile and link,
-without needing to know the details of where the library has been
-installed, or whether it is installed as a shared or static library.
-
-To see all the options for ‘nf-config’, invoke it with the ‘–help’
-argument.
-
-Here’s an example of how you could use ‘nf-config’ to compile and link a
-Fortran program in one step:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      | f90 myprogram.f90 -o myprogram `nf-c |
-|                                      | onfig --fflags --flibs`              |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-If it is installed on your system, you could also use the ‘pkg-config’
-utility to compile and link Fortran programs with the netCDF libraries.
-This is especially useful in Makefiles, to insulate them from changes to
-library versions and dependencies. Here is an example of how you could
-compile and link a Fortran program with netCDF libraries using
-pkg-config:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      | export PKG_CONFIG_PATH=/usr/local/li |
-|                                      | b/pkgconfig                          |
-|                                      | f90 myprogram.f90 -o myprogram `pkg- |
-|                                      | config --cflags --libs netcdf-fortra |
-|                                      | n`                                   |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-where here ‘–cflags’ means compiler flags and ‘libs’ requests that the
-approriate libraries be linked in.
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------------------------------ -------------------------------------------------------------------- --- -------------------------------------------------------------------------------------------- ----------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Compiling-and-Linking-with-the-NetCDF-Library "Previous section in reading order")\]   \[[>](#Datasets-Introduction "Next section in reading order")\]       \[[<<](#Use-of-the-NetCDF-Library "Beginning of this chapter or previous chapter")\]   \[[Up](#Top "Up section")\]   \[[>>](#Groups "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------------------------------ -------------------------------------------------------------------- --- -------------------------------------------------------------------------------------------- ----------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-2. Datasets {.chapter}
-===========
-
-  ------------------------ ------------------------ ------------------------
-  [2.1 Datasets                                     
-  Introduction](#Datasets-                          
-  Introduction)                                     
-
-  [2.2 NetCDF Library                               
-  Interface                                         
-  Descriptions](#NetCDF-Li                          
-  brary-Interface-Descript                          
-  ions)                                             
-
-  [2.3                                              
-  NF90\_STRERROR](#NF90_00                          
-  5fSTRERROR)                                       
-
-  [2.4 Get netCDF library                           
-  version:                                          
-  NF90\_INQ\_LIBVERS](#NF9                          
-  0_005fINQ_005fLIBVERS)                            
-
-  [2.5                                              
-  NF90\_CREATE](#NF90_005f                          
-  CREATE)                                           
-
-  [2.6                                              
-  NF90\_OPEN](#NF90_005fOP                          
-  EN)                                               
-
-  [2.7                                              
-  NF90\_REDEF](#NF90_005fR                          
-  EDEF)                                             
-
-  [2.8                                              
-  NF90\_ENDDEF](#NF90_005f                          
-  ENDDEF)                                           
-
-  [2.9                                              
-  NF90\_CLOSE](#NF90_005fC                          
-  LOSE)                                             
-
-  [2.10 NF90\_INQUIRE                               
-  Family](#NF90_005fINQUIR                          
-  E-Family)                                         
-
-  [2.11                                             
-  NF90\_SYNC](#NF90_005fSY                          
-  NC)                                               
-
-  [2.12                                             
-  NF90\_ABORT](#NF90_005fA                          
-  BORT)                                             
-
-  [2.13                                             
-  NF90\_SET\_FILL](#NF90_0                          
-  05fSET_005fFILL)                                  
-  ------------------------ ------------------------ ------------------------
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------- ------------------------------------------------------------------------------------ --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Datasets "Previous section in reading order")\]   \[[>](#NetCDF-Library-Interface-Descriptions "Next section in reading order")\]       \[[<<](#Datasets "Beginning of this chapter or previous chapter")\]   \[[Up](#Datasets "Up section")\]   \[[>>](#Groups "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------- ------------------------------------------------------------------------------------ --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-2.1 Datasets Introduction {.section}
--------------------------
-
-This chapter presents the interfaces of the netCDF functions that deal
-with a netCDF dataset or the whole netCDF library.
-
-A netCDF dataset that has not yet been opened can only be referred to by
-its dataset name. Once a netCDF dataset is opened, it is referred to by
-a netCDF ID, which is a small nonnegative integer returned when you
-create or open the dataset. A netCDF ID is much like a file descriptor
-in C or a logical unit number in FORTRAN. In any single program, the
-netCDF IDs of distinct open netCDF datasets are distinct. A single
-netCDF dataset may be opened multiple times and will then have multiple
-distinct netCDF IDs; however at most one of the open instances of a
-single netCDF dataset should permit writing. When an open netCDF dataset
-is closed, the ID is no longer associated with a netCDF dataset.
-
-Functions that deal with the netCDF library include:
-
--   Get version of library.
--   Get error message corresponding to a returned error code.
-
-The operations supported on a netCDF dataset as a single object are:
-
--   Create, given dataset name and whether to overwrite or not.
--   Open for access, given dataset name and read or write intent.
--   Put into define mode, to add dimensions, variables, or attributes.
--   Take out of define mode, checking consistency of additions.
--   Close, writing to disk if required.
--   Inquire about the number of dimensions, number of variables, number
-    of global attributes, and ID of the unlimited dimension, if any.
--   Synchronize to disk to make sure it is current.
--   Set and unset nofill mode for optimized sequential writes.
--   After a summary of conventions used in describing the netCDF
-    interfaces, the rest of this chapter presents a detailed description
-    of the interfaces for these operations.
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------ ---------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Datasets-Introduction "Previous section in reading order")\]   \[[>](#NF90_005fSTRERROR "Next section in reading order")\]       \[[<<](#Datasets "Beginning of this chapter or previous chapter")\]   \[[Up](#Datasets "Up section")\]   \[[>>](#Groups "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------ ---------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-2.2 NetCDF Library Interface Descriptions {.section}
------------------------------------------
-
-Each interface description for a particular netCDF function in this and
-later chapters contains:
-
--   a description of the purpose of the function;
--   a Fortran 90 interface block that presents the type and order of the
-    formal parameters to the function;
--   a description of each formal parameter in the C interface;
--   a list of possible error conditions; and
--   an example of a Fortran 90 program fragment calling the netCDF
-    function (and perhaps other netCDF functions).
-
-The examples follow a simple convention for error handling, always
-checking the error status returned from each netCDF function call and
-calling a handle\_error function in case an error was detected. For an
-example of such a function, see Section 5.2 "Get error message
-corresponding to error status: nf90\_strerror".
-
-------------------------------------------------------------------------
-
-  ---------------------------------------------------------------------------------------- ----------------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NetCDF-Library-Interface-Descriptions "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fLIBVERS "Next section in reading order")\]       \[[<<](#Datasets "Beginning of this chapter or previous chapter")\]   \[[Up](#Datasets "Up section")\]   \[[>>](#Groups "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ---------------------------------------------------------------------------------------- ----------------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-2.3 NF90\_STRERROR {.section}
-------------------
-
-The function NF90\_STRERROR returns a static reference to an error
-message string corresponding to an integer netCDF error status or to a
-system error number, presumably returned by a previous call to some
-other netCDF function. The list of netCDF error status codes is
-available in the appropriate include file for each language binding.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_strerror(ncerr)       |
-|                                      |    integer, intent( in) :: ncerr     |
-|                                      |    character(len = 80)  :: nf90_stre |
-|                                      | rror                                 |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCERR`
-
-:   An error status that might have been returned from a previous call
-    to some netCDF function.
-
-Errors {.heading}
-------
-
-If you provide an invalid integer error status that does not correspond
-to any netCDF error message or or to any system error message (as
-understood by the system strerror function), NF90\_STRERROR returns a
-string indicating that there is no such error status.
-
-Example {.heading}
--------
-
-Here is an example of a simple error handling function that uses
-NF90\_STRERROR to print the error message corresponding to the netCDF
-error status returned from any netCDF function call and then exit:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  subroutine handle_err(status)       |
-|                                      |    integer, intent ( in) :: status   |
-|                                      |                                      |
-|                                      |    if(status /= nf90_noerr) then     |
-|                                      |      print *, trim(nf90_strerror(sta |
-|                                      | tus))                                |
-|                                      |      stop "Stopped"                  |
-|                                      |    end if                            |
-|                                      |  end subroutine handle_err           |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------- -------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fSTRERROR "Previous section in reading order")\]   \[[>](#NF90_005fCREATE "Next section in reading order")\]       \[[<<](#Datasets "Beginning of this chapter or previous chapter")\]   \[[Up](#Datasets "Up section")\]   \[[>>](#Groups "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------- -------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-2.4 Get netCDF library version: NF90\_INQ\_LIBVERS {.section}
---------------------------------------------------
-
-The function NF90\_INQ\_LIBVERS returns a string identifying the version
-of the netCDF library, and when it was built.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_inq_libvers()         |
-|                                      |    character(len = 80) :: nf90_inq_l |
-|                                      | ibvers                               |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-Errors {.heading}
-------
-
-This function takes no arguments, and returns no error status.
-
-Example {.heading}
--------
-
-Here is an example using nf90\_inq\_libvers to print the version of the
-netCDF library with which the program is linked:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  print *, trim(nf90_inq_libvers())   |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  --------------------------------------------------------------------------- ------------------------------------------------------------ --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fLIBVERS "Previous section in reading order")\]   \[[>](#NF90_005fOPEN "Next section in reading order")\]       \[[<<](#Datasets "Beginning of this chapter or previous chapter")\]   \[[Up](#Datasets "Up section")\]   \[[>>](#Groups "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  --------------------------------------------------------------------------- ------------------------------------------------------------ --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-2.5 NF90\_CREATE {.section}
-----------------
-
-This function creates a new netCDF dataset, returning a netCDF ID that
-can subsequently be used to refer to the netCDF dataset in other netCDF
-function calls. The new netCDF dataset opened for write access and
-placed in define mode, ready for you to add dimensions, variables, and
-attributes.
-
-A creation mode flag specifies whether to overwrite any existing dataset
-with the same name and whether access to the dataset is shared.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_create(path, cmode,  |
-|                                      | ncid, initialsize, bufrsize, cache_s |
-|                                      | ize, &                               |
-|                                      |        cache_nelems, cache_preemptio |
-|                                      | n, comm, info)                       |
-|                                      |     implicit none                    |
-|                                      |     character (len = *), intent(in)  |
-|                                      | :: path                              |
-|                                      |     integer, intent(in) :: cmode     |
-|                                      |     integer, intent(out) :: ncid     |
-|                                      |     integer, optional, intent(in) :: |
-|                                      |  initialsize                         |
-|                                      |     integer, optional, intent(inout) |
-|                                      |  :: bufrsize                         |
-|                                      |     integer, optional, intent(in) :: |
-|                                      |  cache_size, cache_nelems            |
-|                                      |     real, optional, intent(in) :: ca |
-|                                      | che_preemption                       |
-|                                      |     integer, optional, intent(in) :: |
-|                                      |  comm, info                          |
-|                                      |     integer :: nf90_create           |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `path`
-
-:   The file name of the new netCDF dataset.
-
- `cmode`
-
-:   The creation mode flag. The following flags are available:
-    NF90\_CLOBBER, NF90\_NOCLOBBER, NF90\_SHARE, NF90\_64BIT\_OFFSET,
-    NF90\_NETCDF4, and NF90\_CLASSIC\_MODEL. (NF90\_HDF5 is deprecated,
-    use NF90\_NETCDF4 instead).
-
-    A zero value (defined for convenience as NF90\_CLOBBER) specifies:
-    overwrite any existing dataset with the same file name, and buffer
-    and cache accesses for efficiency. The dataset will be in netCDF
-    classic format. See [(netcdf)NetCDF Classic Format
-    Limitations](netcdf.html#NetCDF-Classic-Format-Limitations) section
-    ‘NetCDF Classic Format Limitations’ in NetCDF Users’ Guide.
-
-    Setting NF90\_NOCLOBBER means you do not want to clobber (overwrite)
-    an existing dataset; an error (NF90\_EEXIST) is returned if the
-    specified dataset already exists.
-
-    The NF90\_SHARE flag is appropriate when one process may be writing
-    the dataset and one or more other processes reading the dataset
-    concurrently; it means that dataset accesses are not buffered and
-    caching is limited. Since the buffering scheme is optimized for
-    sequential access, programs that do not access data sequentially may
-    see some performance improvement by setting the NF90\_SHARE flag.
-    (This only applies to netCDF-3 classic or 64-bit offset files.)
-
-    Setting NF90\_64BIT\_OFFSET causes netCDF to create a 64-bit offset
-    format file, instead of a netCDF classic format file. The 64-bit
-    offset format imposes far fewer restrictions on very large (i.e.
-    over 2 GB) data files. See [(netcdf)Large File
-    Support](netcdf.html#Large-File-Support) section ‘Large File
-    Support’ in NetCDF Users’ Guide.
-
-    Setting the NF90\_NETCDF4 flag causes netCDF to create a
-    netCDF-4/HDF5 format output file.
-
-    Oring the NF90\_CLASSIC\_MODEL flag with the NF90\_NETCDF4 flag
-    causes the resulting netCDF-4/HDF5 file to restrict itself to the
-    classic model - none of the new netCDF-4 data model features, such
-    as groups or user-defined types, are allowed in such a file.
-
- `ncid`
-
-:   Returned netCDF ID.
-
-The following optional arguments allow additional performance tuning.
-
- `initialsize`
-
-:   The initial size of the file (in bytes) at creation time. A value of
-    0 causes the file size to be computed when nf90\_enddef is called.
-    This is ignored for NetCDF-4/HDF5 files.
-
- `bufrsize`
-
-:   Controls a space versus time trade-off, memory allocated in the
-    netcdf library versus number of system calls. Because of internal
-    requirements, the value may not be set to exactly the
-    value requested. The actual value chosen is returned.
-
-    The library chooses a system-dependent default value if
-    NF90\_SIZEHINT\_DEFAULT is supplied as input. If the "preferred I/O
-    block size" is available from the stat() system call as member
-    st\_blksize this value is used. Lacking that, twice the system
-    pagesize is used. Lacking a call to discover the system pagesize,
-    the default bufrsize is set to 8192 bytes.
-
-    The bufrsize is a property of a given open netcdf descriptor ncid,
-    it is not a persistent property of the netcdf dataset.
-
-    This is ignored for NetCDF-4/HDF5 files.
-
- `cache_size`
-
-:   If the cache\_size is provided when creating a netCDF-4/HDF5 file,
-    it will be used instead of the default (32000000) as the size, in
-    bytes, of the HDF5 chunk cache.
-
- `cache_nelems`
-
-:   If cache\_nelems is provided when creating a netCDF-4/HDF5 file, it
-    will be used instead of the default (1000) as the maximum number of
-    elements in the HDF5 chunk cache.
-
- `cache_premtion`
-
-:   If cache\_preemption is provided when creating a netCDF-4/HDF5 file,
-    it will be used instead of the default (0.75) as the preemption
-    value for the HDF5 chunk cache.
-
- `comm`
-
-:   If the comm and info parameters are provided the file is created and
-    opened for parallel I/O. Set the comm parameter to the MPI
-    communicator (of type MPI\_Comm). If this parameter is provided the
-    info parameter must also be provided.
-
- `info`
-
-:   If the comm and info parameters are provided the file is created and
-    opened for parallel I/O. Set the comm parameter to the MPI
-    information value (of type MPI\_Info). If this parameter is provided
-    the comm parameter must also be provided.
-
-Errors {.heading}
-------
-
-NF90\_CREATE returns the value NF90\_NOERR if no errors occurred.
-Possible causes of errors include:
-
--   Passing a dataset name that includes a directory that does
-    not exist.
--   Specifying a dataset name of a file that exists and also
-    specifying NF90\_NOCLOBBER.
--   Specifying a meaningless value for the creation mode.
--   Attempting to create a netCDF dataset in a directory where you don’t
-    have permission to create files.
-
-Example {.heading}
--------
-
-In this example we create a netCDF dataset named foo.nc; we want the
-dataset to be created in the current directory only if a dataset with
-that name does not already exist:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid, status             |
-|                                      |  ...                                 |
-|                                      |  status = nf90_create(path = "foo.nc |
-|                                      | ", cmode = nf90_noclobber, ncid = nc |
-|                                      | id)                                  |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------ ------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fCREATE "Previous section in reading order")\]   \[[>](#NF90_005fREDEF "Next section in reading order")\]       \[[<<](#Datasets "Beginning of this chapter or previous chapter")\]   \[[Up](#Datasets "Up section")\]   \[[>>](#Groups "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------ ------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-2.6 NF90\_OPEN {.section}
---------------
-
-The function NF90\_OPEN opens an existing netCDF dataset for access.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_open(path, mode, nci |
-|                                      | d, bufrsize, cache_size, cache_nelem |
-|                                      | s, &                                 |
-|                                      |                      cache_preemptio |
-|                                      | n, comm, info)                       |
-|                                      |     implicit none                    |
-|                                      |     character (len = *), intent(in)  |
-|                                      | :: path                              |
-|                                      |     integer, intent(in) :: mode      |
-|                                      |     integer, intent(out) :: ncid     |
-|                                      |     integer, optional, intent(inout) |
-|                                      |  :: bufrsize                         |
-|                                      |     integer, optional, intent(in) :: |
-|                                      |  cache_size, cache_nelems            |
-|                                      |     real, optional, intent(in) :: ca |
-|                                      | che_preemption                       |
-|                                      |     integer, optional, intent(in) :: |
-|                                      |  comm, info                          |
-|                                      |     integer :: nf90_open             |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `path`
-
-:   File name for netCDF dataset to be opened. This may be an OPeNDAP
-    URL if DAP support is enabled.
-
- `mode`
-
-:   A zero value (or NF90\_NOWRITE) specifies: open the dataset with
-    read-only access, buffering and caching accesses for efficiency
-
-    Otherwise, the open mode is NF90\_WRITE, NF90\_SHARE,
-    or NF90\_WRITE|NF90\_SHARE. Setting the NF90\_WRITE flag opens the
-    dataset with read-write access. ("Writing" means any kind of change
-    to the dataset, including appending or changing data, adding or
-    renaming dimensions, variables, and attributes, or
-    deleting attributes.) The NF90\_SHARE flag is appropriate when one
-    process may be writing the dataset and one or more other processes
-    reading the dataset concurrently (note that this is not the same as
-    parallel I/O); it means that dataset accesses are not buffered and
-    caching is limited. Since the buffering scheme is optimized for
-    sequential access, programs that do not access data sequentially may
-    see some performance improvement by setting the NF90\_SHARE flag.
-
- `ncid`
-
-:   Returned netCDF ID.
-
-The following optional argument allows additional performance tuning.
-
- `bufrsize`
-
-:   This parameter applies only when opening classic format or 64-bit
-    offset files. It is ignored for netCDF-4/HDF5 files.
-
-    It Controls a space versus time trade-off, memory allocated in the
-    netcdf library versus number of system calls. Because of internal
-    requirements, the value may not be set to exactly the
-    value requested. The actual value chosen is returned.
-
-    The library chooses a system-dependent default value if
-    NF90\_SIZEHINT\_DEFAULT is supplied as input. If the "preferred I/O
-    block size" is available from the stat() system call as member
-    st\_blksize this value is used. Lacking that, twice the system
-    pagesize is used. Lacking a call to discover the system pagesize,
-    the default bufrsize is set to 8192 bytes.
-
-    The bufrsize is a property of a given open netcdf descriptor ncid,
-    it is not a persistent property of the netcdf dataset.
-
- `cache_size`
-
-:   If the cache\_size is provided when opening a netCDF-4/HDF5 file, it
-    will be used instead of the default (32000000) as the size, in
-    bytes, of the HDF5 chunk cache.
-
- `cache_nelems`
-
-:   If cache\_nelems is provided when opening a netCDF-4/HDF5 file, it
-    will be used instead of the default (1000) as the maximum number of
-    elements in the HDF5 chunk cache.
-
- `cache_premtion`
-
-:   If cache\_preemption is provided when opening a netCDF-4/HDF5 file,
-    it will be used instead of the default (0.75) as the preemption
-    value for the HDF5 chunk cache.
-
- `comm`
-
-:   If the comm and info parameters are provided the file is opened for
-    parallel I/O. Set the comm parameter to the MPI communicator (of
-    type MPI\_Comm). If this parameter is provided the info parameter
-    must also be provided.
-
- `info`
-
-:   If the comm and info parameters are provided the file is opened for
-    parallel I/O. Set the comm parameter to the MPI information value
-    (of type MPI\_Info). If this parameter is provided the comm
-    parameter must also be provided.
-
-Errors {.heading}
-------
-
-NF90\_OPEN returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The specified netCDF dataset does not exist.
--   A meaningless mode was specified.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_OPEN to open an existing netCDF dataset
-named foo.nc for read-only, non-shared access:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid, status             |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open(path = "foo.nc", |
-|                                      |  mode = nf90_nowrite, ncid = ncid)   |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-Example {.heading}
--------
-
-Here is an example using NF90\_OPEN to open an existing netCDF dataset
-for parallel I/O access. (Note the use of the comm and info parameters).
-This example is from test program nf\_test/f90tst\_parallel.f90.
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid, status             |
-|                                      |  ...                                 |
-|                                      |   ! Reopen the file.                 |
-|                                      |   call handle_err(nf90_open(FILE_NAM |
-|                                      | E, nf90_nowrite, ncid, comm = MPI_CO |
-|                                      | MM_WORLD, &                          |
-|                                      |        info = MPI_INFO_NULL))        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ---------------------------------------------------------------- -------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fOPEN "Previous section in reading order")\]   \[[>](#NF90_005fENDDEF "Next section in reading order")\]       \[[<<](#Datasets "Beginning of this chapter or previous chapter")\]   \[[Up](#Datasets "Up section")\]   \[[>>](#Groups "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ---------------------------------------------------------------- -------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-2.7 NF90\_REDEF {.section}
----------------
-
-The function NF90\_REDEF puts an open netCDF dataset into define mode,
-so dimensions, variables, and attributes can be added or renamed and
-attributes can be deleted.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_redef(ncid)           |
-|                                      |    integer, intent( in) :: ncid      |
-|                                      |    integer              :: nf90_rede |
-|                                      | f                                    |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   netCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
-Errors {.heading}
-------
-
-NF90\_REDEF returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The specified netCDF dataset is already in define mode.
--   The specified netCDF dataset was opened for read-only.
--   The specified netCDF ID does not refer to an open netCDF dataset.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_REDEF to open an existing netCDF dataset
-named foo.nc and put it into define mode:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid, status             |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_w |
-|                                      | rite, ncid) ! Open dataset           |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  status = nf90_redef(ncid)           |
-|                                      |              ! Put the file in defin |
-|                                      | e mode                               |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------- ------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fREDEF "Previous section in reading order")\]   \[[>](#NF90_005fCLOSE "Next section in reading order")\]       \[[<<](#Datasets "Beginning of this chapter or previous chapter")\]   \[[Up](#Datasets "Up section")\]   \[[>>](#Groups "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------------- ------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-2.8 NF90\_ENDDEF {.section}
-----------------
-
-The function NF90\_ENDDEF takes an open netCDF dataset out of define
-mode. The changes made to the netCDF dataset while it was in define mode
-are checked and committed to disk if no problems occurred. Non-record
-variables may be initialized to a "fill value" as well (see section
-[NF90\_SET\_FILL](#NF90_005fSET_005fFILL)). The netCDF dataset is then
-placed in data mode, so variable data can be read or written.
-
-This call may involve copying data under some circumstances. For a more
-extensive discussion See [(netcdf)File Structure and
-Performance](netcdf.html#File-Structure-and-Performance) section ‘File
-Structure and Performance’ in NetCDF Users Guide.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_enddef(ncid, h_minfre |
-|                                      | e, v_align, v_minfree, r_align)      |
-|                                      |    integer,           intent( in) :: |
-|                                      |  ncid                                |
-|                                      |    integer, optional, intent( in) :: |
-|                                      |  h_minfree, v_align, v_minfree, r_al |
-|                                      | ign                                  |
-|                                      |    integer                        :: |
-|                                      |  nf90_enddef                         |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
-The following arguments allow additional performance tuning. Note: these
-arguments expose internals of the netcdf version 1 file format, and may
-not be available in future netcdf implementations.
-
-The current netcdf file format has three sections: the "header" section,
-the data section for fixed size variables, and the data section for
-variables which have an unlimited dimension (record variables). The
-header begins at the beginning of the file. The index (offset) of the
-beginning of the other two sections is contained in the header.
-Typically, there is no space between the sections. This causes copying
-overhead to accrue if one wishes to change the size of the sections, as
-may happen when changing the names of things, text attribute values,
-adding attributes or adding variables. Also, for buffered i/o, there may
-be advantages to aligning sections in certain ways.
-
-The minfree parameters allow one to control costs of future calls to
-nf90\_redef or nf90\_enddef by requesting that some space be available
-at the end of the section. The default value for both h\_minfree and
-v\_minfree is 0.
-
-The align parameters allow one to set the alignment of the beginning of
-the corresponding sections. The beginning of the section is rounded up
-to an index which is a multiple of the align parameter. The flag value
-NF90\_ALIGN\_CHUNK tells the library to use the bufrsize (see above) as
-the align parameter. The default value for both v\_align and r\_align is
-4 bytes.
-
- `h_minfree`
-
-:   Size of the pad (in bytes) at the end of the "header" section.
-
- `v_minfree`
-
-:   Size of the pad (in bytes) at the end of the data section for fixed
-    size variables.
-
- `v_align`
-
-:   The alignment of the beginning of the data section for fixed
-    size variables.
-
- `r_align`
-
-:   The alignment of the beginning of the data section for variables
-    which have an unlimited dimension (record variables).
-
-Errors {.heading}
-------
-
-NF90\_ENDDEF returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The specified netCDF dataset is not in define mode.
--   The specified netCDF ID does not refer to an open netCDF dataset.
--   The size of one or more variables exceed the size constraints for
-    whichever variant of the file format is in use). See [(netcdf)Large
-    File Support](netcdf.html#Large-File-Support) section ‘Large File
-    Support’ in The NetCDF Users Guide.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_ENDDEF to finish the definitions of a new
-netCDF dataset named foo.nc and put it into data mode:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid, status             |
-|                                      |  ...                                 |
-|                                      |  status = nf90_create("foo.nc", nf90 |
-|                                      | _noclobber, ncid)                    |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...  !  create dimensions, variable |
-|                                      | s, attributes                        |
-|                                      |  status = nf90_enddef(ncid)          |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------ ---------------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fENDDEF "Previous section in reading order")\]   \[[>](#NF90_005fINQUIRE-Family "Next section in reading order")\]       \[[<<](#Datasets "Beginning of this chapter or previous chapter")\]   \[[Up](#Datasets "Up section")\]   \[[>>](#Groups "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------ ---------------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-2.9 NF90\_CLOSE {.section}
----------------
-
-The function NF90\_CLOSE closes an open netCDF dataset. If the dataset
-is in define mode, NF90\_ENDDEF will be called before closing. (In this
-case, if NF90\_ENDDEF returns an error, NF90\_ABORT will automatically
-be called to restore the dataset to the consistent state before define
-mode was last entered.) After an open netCDF dataset is closed, its
-netCDF ID may be reassigned to the next netCDF dataset that is opened or
-created.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_close(ncid)           |
-|                                      |    integer, intent( in) :: ncid      |
-|                                      |    integer              :: nf90_clos |
-|                                      | e                                    |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
-Errors {.heading}
-------
-
-NF90\_CLOSE returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   Define mode was entered and the automatic call made to
-    NF90\_ENDDEF failed.
--   The specified netCDF ID does not refer to an open netCDF dataset.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_CLOSE to finish the definitions of a new
-netCDF dataset named foo.nc and release its netCDF ID:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid, status             |
-|                                      |  ...                                 |
-|                                      |  status = nf90_create("foo.nc", nf90 |
-|                                      | _noclobber, ncid)                    |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...  !  create dimensions, variable |
-|                                      | s, attributes                        |
-|                                      |  status = nf90_close(ncid)           |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------- ------------------------------------------------------------ --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fCLOSE "Previous section in reading order")\]   \[[>](#NF90_005fSYNC "Next section in reading order")\]       \[[<<](#Datasets "Beginning of this chapter or previous chapter")\]   \[[Up](#Datasets "Up section")\]   \[[>>](#Groups "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------------- ------------------------------------------------------------ --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-2.10 NF90\_INQUIRE Family {.section}
--------------------------
-
-The NF90\_INQUIRE subroutine returns information about an open netCDF
-dataset, given its netCDF ID. The subroutine can be called from either
-define mode or data mode, and returns values for any or all of the
-following: the number of dimensions, the number of variables, the number
-of global attributes, and the dimension ID of the dimension defined with
-unlimited length, if any. An additional function, NF90\_INQ\_FORMAT,
-returns the (rarely needed) format version.
-
-No I/O is performed when NF90\_INQUIRE is called, since the required
-information is available in memory for each open netCDF dataset.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_inquire(ncid, nDimens |
-|                                      | ions, nVariables, nAttributes, &     |
-|                                      |                        unlimitedDimI |
-|                                      | d, formatNum)                        |
-|                                      |    integer,           intent( in) :: |
-|                                      |  ncid                                |
-|                                      |    integer, optional, intent(out) :: |
-|                                      |  nDimensions, nVariables, &          |
-|                                      |                                      |
-|                                      |  nAttributes, unlimitedDimId, &      |
-|                                      |                                      |
-|                                      |  formatNum                           |
-|                                      |    integer                        :: |
-|                                      |  nf90_inquire                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `nDimensions`
-
-:   Returned number of dimensions defined for this netCDF dataset.
-
- `nVariables`
-
-:   Returned number of variables defined for this netCDF dataset.
-
- `nAttributes`
-
-:   Returned number of global attributes defined for this
-    netCDF dataset.
-
- `unlimitedDimID`
-
-:   Returned ID of the unlimited dimension, if there is one for this
-    netCDF dataset. If no unlimited length dimension has been defined,
-    -1 is returned.
-
- `format`
-
-:   Returned integer indicating format version for this dataset, one of
-    nf90\_format\_classic, nf90\_format\_64bit, nf90\_format\_netcdf4,
-    or nf90\_format\_netcdf4\_classic. These are rarely needed by users
-    or applications, since thhe library recognizes the format of a file
-    it is accessing and handles it accordingly.
-
-Errors {.heading}
-------
-
-Function NF90\_INQUIRE returns the value NF90\_NOERR if no errors
-occurred. Otherwise, the returned status indicates an error. Possible
-causes of errors include:
-
--   The specified netCDF ID does not refer to an open netCDF dataset.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_INQUIRE to find out about a netCDF
-dataset named foo.nc:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid, status, nDims, nVa |
-|                                      | rs, nGlobalAtts, unlimDimID          |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_n |
-|                                      | owrite, ncid)                        |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inquire(ncid, nDims,  |
-|                                      | nVars, nGlobalAtts, unlimdimid)      |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  status = nf90_inquire(ncid, nDimens |
-|                                      | ions = nDims, &                      |
-|                                      |                        unlimitedDimI |
-|                                      | D = unlimdimid)                      |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------- ------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQUIRE-Family "Previous section in reading order")\]   \[[>](#NF90_005fABORT "Next section in reading order")\]       \[[<<](#Datasets "Beginning of this chapter or previous chapter")\]   \[[Up](#Datasets "Up section")\]   \[[>>](#Groups "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------- ------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-2.11 NF90\_SYNC {.section}
----------------
-
-The function NF90\_SYNC offers a way to synchronize the disk copy of a
-netCDF dataset with in-memory buffers. There are two reasons you might
-want to synchronize after writes:
-
--   To minimize data loss in case of abnormal termination, or
--   To make data available to other processes for reading immediately
-    after it is written. But note that a process that already had the
-    dataset open for reading would not see the number of records
-    increase when the writing process calls NF90\_SYNC; to accomplish
-    this, the reading process must call NF90\_SYNC.
-
-This function is backward-compatible with previous versions of the
-netCDF library. The intent was to allow sharing of a netCDF dataset
-among multiple readers and one writer, by having the writer call
-NF90\_SYNC after writing and the readers call NF90\_SYNC before each
-read. For a writer, this flushes buffers to disk. For a reader, it makes
-sure that the next read will be from disk rather than from previously
-cached buffers, so that the reader will see changes made by the writing
-process (e.g., the number of records written) without having to close
-and reopen the dataset. If you are only accessing a small amount of
-data, it can be expensive in computer resources to always synchronize to
-disk after every write, since you are giving up the benefits of
-buffering.
-
-An easier way to accomplish sharing (and what is now recommended) is to
-have the writer and readers open the dataset with the NF90\_SHARE flag,
-and then it will not be necessary to call NF90\_SYNC at all. However,
-the NF90\_SYNC function still provides finer granularity than the
-NF90\_SHARE flag, if only a few netCDF accesses need to be synchronized
-among processes.
-
-It is important to note that changes to the ancillary data, such as
-attribute values, are not propagated automatically by use of the
-NF90\_SHARE flag. Use of the NF90\_SYNC function is still required for
-this purpose.
-
-Sharing datasets when the writer enters define mode to change the data
-schema requires extra care. In previous releases, after the writer left
-define mode, the readers were left looking at an old copy of the
-dataset, since the changes were made to a new copy. The only way readers
-could see the changes was by closing and reopening the dataset. Now the
-changes are made in place, but readers have no knowledge that their
-internal tables are now inconsistent with the new dataset schema. If
-netCDF datasets are shared across redefinition, some mechanism external
-to the netCDF library must be provided that prevents access by readers
-during redefinition and causes the readers to call NF90\_SYNC before any
-subsequent access.
-
-When calling NF90\_SYNC, the netCDF dataset must be in data mode. A
-netCDF dataset in define mode is synchronized to disk only when
-NF90\_ENDDEF is called. A process that is reading a netCDF dataset that
-another process is writing may call NF90\_SYNC to get updated with the
-changes made to the data by the writing process (e.g., the number of
-records written), without having to close and reopen the dataset.
-
-Data is automatically synchronized to disk when a netCDF dataset is
-closed, or whenever you leave define mode.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_sync(ncid)            |
-|                                      |    integer, intent( in) :: ncid      |
-|                                      |    integer              :: nf90_sync |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
-Errors {.heading}
-------
-
-NF90\_SYNC returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The netCDF dataset is in define mode.
--   The specified netCDF ID does not refer to an open netCDF dataset.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_SYNC to synchronize the disk writes of a
-netCDF dataset named foo.nc:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid, status             |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_w |
-|                                      | rite, ncid)                          |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  ! write data or change attributes   |
-|                                      |  ...                                 |
-|                                      |  status = NF90_SYNC(ncid)            |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ---------------------------------------------------------------- -------------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fSYNC "Previous section in reading order")\]   \[[>](#NF90_005fSET_005fFILL "Next section in reading order")\]       \[[<<](#Datasets "Beginning of this chapter or previous chapter")\]   \[[Up](#Datasets "Up section")\]   \[[>>](#Groups "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ---------------------------------------------------------------- -------------------------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-2.12 NF90\_ABORT {.section}
-----------------
-
-You no longer need to call this function, since it is called
-automatically by NF90\_CLOSE in case the dataset is in define mode and
-something goes wrong with committing the changes. The function
-NF90\_ABORT just closes the netCDF dataset, if not in define mode. If
-the dataset is being created and is still in define mode, the dataset is
-deleted. If define mode was entered by a call to NF90\_REDEF, the netCDF
-dataset is restored to its state before definition mode was entered and
-the dataset is closed.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_abort(ncid)           |
-|                                      |    integer, intent( in) :: ncid      |
-|                                      |    integer              :: nf90_abor |
-|                                      | t                                    |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
-Errors {.heading}
-------
-
-NF90\_ABORT returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   When called from define mode while creating a netCDF dataset,
-    deletion of the dataset failed.
--   The specified netCDF ID does not refer to an open netCDF dataset.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_ABORT to back out of redefinitions of a
-dataset named foo.nc:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid, status, LatDimID   |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_w |
-|                                      | rite, ncid)                          |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  status = nf90_redef(ncid)           |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  status = nf90_def_dim(ncid, "Lat",  |
-|                                      | 18, LatDimID)                        |
-|                                      |  if (status /= nf90_noerr) then ! Di |
-|                                      | mension definition failed            |
-|                                      |    call handle_err(status)           |
-|                                      |    status = nf90_abort(ncid) ! Abort |
-|                                      |  redefinitions                       |
-|                                      |    if (status /= nf90_noerr) call ha |
-|                                      | ndle_err(status)                     |
-|                                      |  end if                              |
-|                                      | ...                                  |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------- ----------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fABORT "Previous section in reading order")\]   \[[>](#Groups "Next section in reading order")\]       \[[<<](#Datasets "Beginning of this chapter or previous chapter")\]   \[[Up](#Datasets "Up section")\]   \[[>>](#Groups "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------------- ----------------------------------------------------- --- --------------------------------------------------------------------------- ---------------------------------- ---------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-2.13 NF90\_SET\_FILL {.section}
---------------------
-
-This function is intended for advanced usage, to optimize writes under
-some circumstances described below. The function NF90\_SET\_FILL sets
-the fill mode for a netCDF dataset open for writing and returns the
-current fill mode in a return parameter. The fill mode can be specified
-as either NF90\_FILL or NF90\_NOFILL. The default behavior corresponding
-to NF90\_FILL is that data is pre-filled with fill values, that is fill
-values are written when you create non-record variables or when you
-write a value beyond data that has not yet been written. This makes it
-possible to detect attempts to read data before it was written. See
-section [Fill Values](#Fill-Values), for more information on the use of
-fill values. See [(netcdf)Attribute
-Conventions](netcdf.html#Attribute-Conventions) section ‘Attribute
-Conventions’ in The NetCDF Users Guide, for information about how to
-define your own fill values.
-
-The behavior corresponding to NF90\_NOFILL overrides the default
-behavior of prefilling data with fill values. This can be used to
-enhance performance, because it avoids the duplicate writes that occur
-when the netCDF library writes fill values that are later overwritten
-with data.
-
-A value indicating which mode the netCDF dataset was already in is
-returned. You can use this value to temporarily change the fill mode of
-an open netCDF dataset and then restore it to the previous mode.
-
-After you turn on NF90\_NOFILL mode for an open netCDF dataset, you must
-be certain to write valid data in all the positions that will later be
-read. Note that nofill mode is only a transient property of a netCDF
-dataset open for writing: if you close and reopen the dataset, it will
-revert to the default behavior. You can also revert to the default
-behavior by calling NF90\_SET\_FILL again to explicitly set the fill
-mode to NF90\_FILL.
-
-There are three situations where it is advantageous to set nofill mode:
-
-1.  Creating and initializing a netCDF dataset. In this case, you should
-    set nofill mode before calling NF90\_ENDDEF and then write
-    completely all non-record variables and the initial records of all
-    the record variables you want to initialize.
-2.  Extending an existing record-oriented netCDF dataset. Set nofill
-    mode after opening the dataset for writing, then append the
-    additional records to the dataset completely, leaving no intervening
-    unwritten records.
-3.  Adding new variables that you are going to initialize to an existing
-    netCDF dataset. Set nofill mode before calling NF90\_ENDDEF then
-    write all the new variables completely.
-
-If the netCDF dataset has an unlimited dimension and the last record was
-written while in nofill mode, then the dataset may be shorter than if
-nofill mode was not set, but this will be completely transparent if you
-access the data only through the netCDF interfaces.
-
-The use of this feature may not be available (or even needed) in future
-releases. Programmers are cautioned against heavy reliance upon this
-feature.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_set_fill(ncid, fillmo |
-|                                      | de, old_mode)                        |
-|                                      |    integer, intent( in) :: ncid, fil |
-|                                      | lmode                                |
-|                                      |    integer, intent(out) :: old_mode  |
-|                                      |    integer              :: nf90_set_ |
-|                                      | fill                                 |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `fillmode`
-
-:   Desired fill mode for the dataset, either NF90\_NOFILL
-    or NF90\_FILL.
-
- `old_mode`
-
-:   Returned current fill mode of the dataset before this call, either
-    NF90\_NOFILL or NF90\_FILL.
-
-Errors {.heading}
-------
-
-NF90\_SET\_FILL returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The specified netCDF ID does not refer to an open netCDF dataset.
--   The specified netCDF ID refers to a dataset open for
-    read-only access.
--   The fill mode argument is neither NF90\_NOFILL nor NF90\_FILL..
-
-Example {.heading}
--------
-
-Here is an example using NF90\_SET\_FILL to set nofill mode for
-subsequent writes of a netCDF dataset named foo.nc:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid, status, oldMode    |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_w |
-|                                      | rite, ncid)                          |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  ! Write data with prefilling behavi |
-|                                      | or                                   |
-|                                      |  ...                                 |
-|                                      |  status = nf90_set_fill(ncid, nf90_n |
-|                                      | ofill, oldMode)                      |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  !  Write data with no prefilling    |
-|                                      |  ...                                 |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------ -------------------------------------------------------------------- --- --------------------------------------------------------------------------- ----------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fSET_005fFILL "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fNCID "Next section in reading order")\]       \[[<<](#Datasets "Beginning of this chapter or previous chapter")\]   \[[Up](#Top "Up section")\]   \[[>>](#Dimensions "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------ -------------------------------------------------------------------- --- --------------------------------------------------------------------------- ----------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-3. Groups {.chapter}
-=========
-
-NetCDF-4 added support for hierarchical groups within netCDF datasets.
-
-Groups are identified with a ncid, which identifies both the open file,
-and the group within that file. When a file is opened with NF90\_OPEN or
-NF90\_CREATE, the ncid for the root group of that file is provided.
-Using that as a starting point, users can add new groups, or list and
-navigate existing groups.
-
-All netCDF calls take a ncid which determines where the call will take
-its action. For example, the NF90\_DEF\_VAR function takes a ncid as its
-first parameter. It will create a variable in whichever group its ncid
-refers to. Use the root ncid provided by NF90\_CREATE or NF90\_OPEN to
-create a variable in the root group. Or use NF90\_DEF\_GRP to create a
-group and use its ncid to define a variable in the new group.
-
-Variable are only visible in the group in which they are defined. The
-same applies to attributes. “Global” attributes are defined in whichever
-group is refered to by the ncid.
-
-Dimensions are visible in their groups, and all child groups.
-
-Group operations are only permitted on netCDF-4 files - that is, files
-created with the HDF5 flag in nf90\_create. (see section
-[NF90\_CREATE](#NF90_005fCREATE)). Groups are not compatible with the
-netCDF classic data model, so files created with the
-NF90\_CLASSIC\_MODEL file cannot contain groups (except the root group).
-
-  ------------------------ ------------------------ ------------------------
-  [3.1 Find a Group ID:                             
-  NF90\_INQ\_NCID](#NF90_0                          
-  05fINQ_005fNCID)                                  
-
-  [3.2 Get a List of                                
-  Groups in a Group:                                
-  NF90\_INQ\_GRPS](#NF90_0                          
-  05fINQ_005fGRPS)                                  
-
-  [3.3 Find all the                                 
-  Variables in a Group:                             
-  NF90\_INQ\_VARIDS](#NF90                          
-  _005fINQ_005fVARIDS)                              
-
-  [3.4 Find all Dimensions                          
-  Visible in a Group:                               
-  NF90\_INQ\_DIMIDS](#NF90                          
-  _005fINQ_005fDIMIDS)                              
-
-  [3.5 Find the Length of                           
-  a Group’s Full Name:                              
-  NF90\_INQ\_GRPNAME\_LEN]                          
-  (#NF90_005fINQ_005fGRPNA                          
-  ME_005fLEN)                                       
-
-  [3.6 Find a Group’s                               
-  Name:                                             
-  NF90\_INQ\_GRPNAME](#NF9                          
-  0_005fINQ_005fGRPNAME)                            
-
-  [3.7 Find a Group’s Full                          
-  Name:                                             
-  NF90\_INQ\_GRPNAME\_FULL                          
-  ](#NF90_005fINQ_005fGRPN                          
-  AME_005fFULL)                                     
-
-  [3.8 Find a Group’s                               
-  Parent:                                           
-  NF90\_INQ\_GRP\_PARENT](                          
-  #NF90_005fINQ_005fGRP_00                          
-  5fPARENT)                                         
-
-  [3.9 Find a Group by                              
-  Name:                                             
-  NF90\_INQ\_GRP\_NCID](#N                          
-  F90_005fINQ_005fGRP_005f                          
-  NCID)                                             
-
-  [3.10 Find a Group by                             
-  its Fully-qualified                               
-  Name:                                             
-  NF90\_INQ\_GRP\_FULL\_NC                          
-  ID](#NF90_005fINQ_005fGR                          
-  P_005fFULL_005fNCID)                              
-
-  [3.11 Create a New                                
-  Group:                                            
-  NF90\_DEF\_GRP](#NF90_00                          
-  5fDEF_005fGRP)                                    
-  ------------------------ ------------------------ ------------------------
-
-------------------------------------------------------------------------
-
-  --------------------------------------------------------- -------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Groups "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fGRPS "Next section in reading order")\]       \[[<<](#Groups "Beginning of this chapter or previous chapter")\]   \[[Up](#Groups "Up section")\]   \[[>>](#Dimensions "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  --------------------------------------------------------- -------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-3.1 Find a Group ID: NF90\_INQ\_NCID {.section}
-------------------------------------
-
-Given an ncid and group name (NULL or "" gets root group), return ncid
-of the named group.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_ncid(ncid, name, |
-|                                      |  grp_ncid)                           |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     character (len = *), intent(in)  |
-|                                      | :: name                              |
-|                                      |     integer, intent(out) :: grp_ncid |
-|                                      |     integer :: nf90_inq_ncid         |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The group id for this operation.
-
- `NAME`
-
-:   A character array that holds the name of the desired group. Must be
-    less then NF90\_MAX\_NAME.
-
- `GRPID`
-
-:   The ID of the group will go here.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad group id.
-
- `NF90_ENOTNC4`
-
-:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
-    operations can only be performed on files defined with a create mode
-    which includes flag HDF5. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_ESTRICTNC3`
-
-:   This file was created with the strict netcdf-3 flag, therefore
-    netcdf-4 operations are not allowed. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-This example is from nf90\_test/ftst\_groups.F.
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------ ---------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fNCID "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fVARIDS "Next section in reading order")\]       \[[<<](#Groups "Beginning of this chapter or previous chapter")\]   \[[Up](#Groups "Up section")\]   \[[>>](#Dimensions "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------ ---------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-3.2 Get a List of Groups in a Group: NF90\_INQ\_GRPS {.section}
-----------------------------------------------------
-
-Given a location id, return the number of groups it contains, and an
-array of their ncids.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_grps(ncid, numgr |
-|                                      | ps, ncids)                           |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(out) :: numgrps  |
-|                                      |     integer, intent(out) :: ncids    |
-|                                      |     integer :: nf90_inq_grps         |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The group id for this operation.
-
- `NUMGRPS`
-
-:   An integer which will get number of groups in this group.
-
- `NCIDS`
-
-:   An array of ints which will receive the IDs of all the groups in
-    this group.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad group id.
-
- `NF90_ENOTNC4`
-
-:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
-    operations can only be performed on files defined with a create mode
-    which includes flag HDF5. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_ESTRICTNC3`
-
-:   This file was created with the strict netcdf-3 flag, therefore
-    netcdf-4 operations are not allowed. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------ ---------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fGRPS "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fDIMIDS "Next section in reading order")\]       \[[<<](#Groups "Beginning of this chapter or previous chapter")\]   \[[Up](#Groups "Up section")\]   \[[>>](#Dimensions "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------ ---------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-3.3 Find all the Variables in a Group: NF90\_INQ\_VARIDS {.section}
---------------------------------------------------------
-
-Find all varids for a location.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_varids(ncid, nva |
-|                                      | rs, varids)                          |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(out) :: nvars    |
-|                                      |     integer, intent(out) :: varids   |
-|                                      |     integer :: nf90_inq_varids       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The group id for this operation.
-
- `VARIDS`
-
-:   An already allocated array to store the list of varids. Use
-    nf90\_inq\_nvars to find out how many variables there are. (see
-    section [Get Information about a Variable from Its ID:
-    NF90\_INQUIRE\_VARIABLE](#NF90_005fINQUIRE_005fVARIABLE)).
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad group id.
-
- `NF90_ENOTNC4`
-
-:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
-    operations can only be performed on files defined with a create mode
-    which includes flag HDF5. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_ESTRICTNC3`
-
-:   This file was created with the strict netcdf-3 flag, therefore
-    netcdf-4 operations are not allowed. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------- ------------------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fVARIDS "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fGRPNAME_005fLEN "Next section in reading order")\]       \[[<<](#Groups "Beginning of this chapter or previous chapter")\]   \[[Up](#Groups "Up section")\]   \[[>>](#Dimensions "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------- ------------------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-3.4 Find all Dimensions Visible in a Group: NF90\_INQ\_DIMIDS {.section}
--------------------------------------------------------------
-
-Find all dimids for a location. This finds all dimensions in a group, or
-any of its parents.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_dimids(ncid, ndi |
-|                                      | ms, dimids, include_parents)         |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(out) :: ndims    |
-|                                      |     integer, intent(out) :: dimids   |
-|                                      |     integer, intent(out) :: include_ |
-|                                      | parents                              |
-|                                      |     integer :: nf90_inq_dimids       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The group id for this operation.
-
- `NDIMS`
-
-:   Returned number of dimensions for this location. If include\_parents
-    is non-zero, number of dimensions visible from this group, which
-    includes dimensions in parent groups.
-
- `DIMIDS`
-
-:   An array of ints when the dimids of the visible dimensions will
-    be stashed. Use nf90\_inq\_ndims to find out how many dims are
-    visible from this group. (see section [Get Information about a
-    Variable from Its ID:
-    NF90\_INQUIRE\_VARIABLE](#NF90_005fINQUIRE_005fVARIABLE)).
-
- `INCLUDE_PARENTS`
-
-:   If zero, only the group specified by NCID will be searched
-    for dimensions. Otherwise parent groups will be searched too.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad group id.
-
- `NF90_ENOTNC4`
-
-:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
-    operations can only be performed on files defined with a create mode
-    which includes flag HDF5. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_ESTRICTNC3`
-
-:   This file was created with the strict netcdf-3 flag, therefore
-    netcdf-4 operations are not allowed. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------- ----------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fDIMIDS "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fGRPNAME "Next section in reading order")\]       \[[<<](#Groups "Beginning of this chapter or previous chapter")\]   \[[Up](#Groups "Up section")\]   \[[>>](#Dimensions "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------- ----------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-3.5 Find the Length of a Group’s Full Name: NF90\_INQ\_GRPNAME\_LEN {.section}
--------------------------------------------------------------------
-
-Given ncid, find length of the full name. (Root group is named "/", with
-length 1.)
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_grpname_len(ncid |
-|                                      | , len)                               |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(out) :: len      |
-|                                      |     integer :: nf90_inq_grpname_len  |
-|                                      |   end function nf90_inq_grpname_len  |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The group id for this operation.
-
- `LEN`
-
-:   An integer where the length will be placed.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad group id.
-
- `NF90_ENOTNC4`
-
-:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
-    operations can only be performed on files defined with a create mode
-    which includes flag HDF5. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_ESTRICTNC3`
-
-:   This file was created with the strict netcdf-3 flag, therefore
-    netcdf-4 operations are not allowed. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fGRPNAME_005fLEN "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fGRPNAME_005fFULL "Next section in reading order")\]       \[[<<](#Groups "Beginning of this chapter or previous chapter")\]   \[[Up](#Groups "Up section")\]   \[[>>](#Dimensions "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-3.6 Find a Group’s Name: NF90\_INQ\_GRPNAME {.section}
--------------------------------------------
-
-Given ncid, find relative name of group. (Root group is named "/").
-
-The name provided by this function is relative to the parent group. For
-a full path name for the group is, with all parent groups included,
-separated with a forward slash (as in Unix directory names) See section
-[Find a Group’s Full Name:
-NF90\_INQ\_GRPNAME\_FULL](#NF90_005fINQ_005fGRPNAME_005fFULL).
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_grpname(ncid, na |
-|                                      | me)                                  |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     character (len = *), intent(out) |
-|                                      |  :: name                             |
-|                                      |     integer :: nf90_inq_grpname      |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The group id for this operation.
-
- `NAME`
-
-:   The name of the group will be copied to this character array. The
-    name will be less than NF90\_MAX\_NAME in length.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad group id.
-
- `NF90_ENOTNC4`
-
-:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
-    operations can only be performed on files defined with a create mode
-    which includes flag HDF5. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_ESTRICTNC3`
-
-:   This file was created with the strict netcdf-3 flag, therefore
-    netcdf-4 operations are not allowed. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  --------------------------------------------------------------------------- ------------------------------------------------------------------------------ --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fGRPNAME "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fGRP_005fPARENT "Next section in reading order")\]       \[[<<](#Groups "Beginning of this chapter or previous chapter")\]   \[[Up](#Groups "Up section")\]   \[[>>](#Dimensions "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  --------------------------------------------------------------------------- ------------------------------------------------------------------------------ --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-3.7 Find a Group’s Full Name: NF90\_INQ\_GRPNAME\_FULL {.section}
-------------------------------------------------------
-
-Given ncid, find complete name of group. (Root group is named "/").
-
-The name provided by this function is a full path name for the group is,
-with all parent groups included, separated with a forward slash (as in
-Unix directory names). For a name relative to the parent group See
-section [Find a Group’s Name:
-NF90\_INQ\_GRPNAME](#NF90_005fINQ_005fGRPNAME).
-
-To find the length of the full name See section [Find the Length of a
-Group’s Full Name:
-NF90\_INQ\_GRPNAME\_LEN](#NF90_005fINQ_005fGRPNAME_005fLEN).
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_grpname_full(nci |
-|                                      | d, len, name)                        |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(out) :: len      |
-|                                      |     character (len = *), intent(out) |
-|                                      |  :: name                             |
-|                                      |     integer :: nf90_inq_grpname_full |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The group id for this operation.
-
- `LEN`
-
-:   The length of the full group name will go here.
-
- `NAME`
-
-:   The name of the group will be copied to this character array.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad group id.
-
- `NF90_ENOTNC4`
-
-:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
-    operations can only be performed on files defined with a create mode
-    which includes flag HDF5. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_ESTRICTNC3`
-
-:   This file was created with the strict netcdf-3 flag, therefore
-    netcdf-4 operations are not allowed. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-This example is from test program nf\_test/f90tst\_grps.f90.
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   call check(nf90_inq_grpname_full(g |
-|                                      | rpid1, len, name_in))                |
-|                                      |   if (name_in .ne. grp1_full_name) s |
-|                                      | top 62                               |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------------------ ---------------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fGRPNAME_005fFULL "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fGRP_005fNCID "Next section in reading order")\]       \[[<<](#Groups "Beginning of this chapter or previous chapter")\]   \[[Up](#Groups "Up section")\]   \[[>>](#Dimensions "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------------------ ---------------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-3.8 Find a Group’s Parent: NF90\_INQ\_GRP\_PARENT {.section}
--------------------------------------------------
-
-Given ncid, find the ncid of the parent group.
-
-When used with the root group, this function returns the NF90\_ENOGRP
-error (since the root group has no parent.)
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_grp_parent(ncid, |
-|                                      |  parent_ncid)                        |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(out) :: parent_n |
-|                                      | cid                                  |
-|                                      |     integer :: nf90_inq_grp_parent   |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The group id.
-
- `PARENT_NCID`
-
-:   The ncid of the parent group will be copied here.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad group id.
-
- `NF90_ENOGRP`
-
-:   No parent group found (i.e. this is the root group).
-
- `NF90_ENOTNC4`
-
-:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
-    operations can only be performed on files defined with a create mode
-    which includes flag HDF5. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_ESTRICTNC3`
-
-:   This file was created with the strict netcdf-3 flag, therefore
-    netcdf-4 operations are not allowed. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  ---------------------------------------------------------------------------------- ------------------------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fGRP_005fPARENT "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fGRP_005fFULL_005fNCID "Next section in reading order")\]       \[[<<](#Groups "Beginning of this chapter or previous chapter")\]   \[[Up](#Groups "Up section")\]   \[[>>](#Dimensions "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ---------------------------------------------------------------------------------- ------------------------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-3.9 Find a Group by Name: NF90\_INQ\_GRP\_NCID {.section}
-----------------------------------------------
-
-Given a group name an an ncid, find the ncid of the group id.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_grp_ncid(ncid, n |
-|                                      | ame, grpid)                          |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     character (len = *), intent(in)  |
-|                                      | :: name                              |
-|                                      |     integer, intent(out) :: grpid    |
-|                                      |     integer :: nf90_inq_grp_ncid     |
-|                                      |                                      |
-|                                      |     nf90_inq_grp_ncid = nf_inq_grp_n |
-|                                      | cid(ncid, name, grpid)               |
-|                                      |   end function nf90_inq_grp_ncid     |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The group id to look in.
-
- `GRP_NAME`
-
-:   The name of the group that should be found.
-
- `GRP_NCID`
-
-:   This will get the group id, if it is found.
-
-Return Codes {.heading}
-------------
-
-The following return codes may be returned by this function.
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad group id.
-
- `NF90_EINVAL`
-
-:   No name provided or name longer than NF90\_MAX\_NAME.
-
- `NF90_ENOGRP`
-
-:   Named group not found.
-
- `NF90_ENOTNC4`
-
-:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
-    operations can only be performed on files defined with a create mode
-    which includes flag HDF5. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_ESTRICTNC3`
-
-:   This file was created with the strict netcdf-3 flag, therefore
-    netcdf-4 operations are not allowed. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-This example is from test program nf\_test/f90tst\_grps.f90.
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   ! Get the group ids for the newly  |
-|                                      | reopened file.                       |
-|                                      |   call check(nf90_inq_grp_ncid(ncid, |
-|                                      |  GRP1_NAME, grpid1))                 |
-|                                      |   call check(nf90_inq_grp_ncid(grpid |
-|                                      | 1, GRP2_NAME, grpid2))               |
-|                                      |   call check(nf90_inq_grp_ncid(grpid |
-|                                      | 2, GRP3_NAME, grpid3))               |
-|                                      |   call check(nf90_inq_grp_ncid(grpid |
-|                                      | 3, GRP4_NAME, grpid4))               |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------------- ------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fGRP_005fNCID "Previous section in reading order")\]   \[[>](#NF90_005fDEF_005fGRP "Next section in reading order")\]       \[[<<](#Groups "Beginning of this chapter or previous chapter")\]   \[[Up](#Groups "Up section")\]   \[[>>](#Dimensions "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------------- ------------------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-3.10 Find a Group by its Fully-qualified Name: NF90\_INQ\_GRP\_FULL\_NCID {.section}
--------------------------------------------------------------------------
-
-Given a fully qualified group name an an ncid, find the ncid of the
-group id.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_grpname_full(nci |
-|                                      | d, len, name)                        |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(out) :: len      |
-|                                      |     character (len = *), intent(out) |
-|                                      |  :: name                             |
-|                                      |     integer :: nf90_inq_grpname_full |
-|                                      |                                      |
-|                                      |     nf90_inq_grpname_full = nf_inq_g |
-|                                      | rpname_full(ncid, len, name)         |
-|                                      |   end function nf90_inq_grpname_full |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The group id to look in.
-
- `FULL_NAME`
-
-:   The fully-qualified group name.
-
- `GRP_NCID`
-
-:   This will get the group id, if it is found.
-
-Return Codes {.heading}
-------------
-
-The following return codes may be returned by this function.
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad group id.
-
- `NF90_EINVAL`
-
-:   No name provided or name longer than NF90\_MAX\_NAME.
-
- `NF90_ENOGRP`
-
-:   Named group not found.
-
- `NF90_ENOTNC4`
-
-:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
-    operations can only be performed on files defined with a create mode
-    which includes flag HDF5. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_ESTRICTNC3`
-
-:   This file was created with the strict netcdf-3 flag, therefore
-    netcdf-4 operations are not allowed. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-This example is from test program nf\_test/tstf90\_grps.f90.
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   ! Check for the groups with full g |
-|                                      | roup names.                          |
-|                                      |   write(grp1_full_name, '(AA)') '/', |
-|                                      |  GRP1_NAME                           |
-|                                      |   call check(nf90_inq_grp_full_ncid( |
-|                                      | ncid, grp1_full_name, grpid1))       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------------------------------- --------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fGRP_005fFULL_005fNCID "Previous section in reading order")\]   \[[>](#Dimensions "Next section in reading order")\]       \[[<<](#Groups "Beginning of this chapter or previous chapter")\]   \[[Up](#Groups "Up section")\]   \[[>>](#Dimensions "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------------------------------------- --------------------------------------------------------- --- ------------------------------------------------------------------------- -------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-3.11 Create a New Group: NF90\_DEF\_GRP {.section}
----------------------------------------
-
-Create a group. Its location id is returned in new\_ncid.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_def_grp(parent_ncid, |
-|                                      |  name, new_ncid)                     |
-|                                      |     integer, intent(in) :: parent_nc |
-|                                      | id                                   |
-|                                      |     character (len = *), intent(in)  |
-|                                      | :: name                              |
-|                                      |     integer, intent(out) :: new_ncid |
-|                                      |     integer :: nf90_def_grp          |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `PARENT_NCID`
-
-:   The group id of the parent group.
-
- `NAME`
-
-:   The name of the new group, which must be different from the name of
-    any variable within the same parent group.
-
- `NEW_NCID`
-
-:   The ncid of the new group will be placed there.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad group id.
-
- `NF90_ENAMEINUSE`
-
-:   That name is in use. Group names must be unique within a group.
-
- `NF90_EMAXNAME`
-
-:   Name exceed max length NF90\_MAX\_NAME.
-
- `NF90_EBADNAME`
-
-:   Name contains illegal characters.
-
- `NF90_ENOTNC4`
-
-:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
-    operations can only be performed on files defined with a create mode
-    which includes flag HDF5. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_ESTRICTNC3`
-
-:   This file was created with the strict netcdf-3 flag, therefore
-    netcdf-4 operations are not allowed. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
- `NF90_EPERM`
-
-:   Attempt to write to a read-only file.
-
- `NF90_ENOTINDEFINE`
-
-:   Not in define mode.
-
-Example {.heading}
--------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      | C     Create the netCDF file.        |
-|                                      |       retval = nf90_create(file_name |
-|                                      | , NF90_NETCDF4, ncid)                |
-|                                      |       if (retval .ne. nf90_noerr) ca |
-|                                      | ll handle_err(retval)                |
-|                                      |                                      |
-|                                      | C     Create a group and a subgroup. |
-|                                      |       retval = nf90_def_grp(ncid, gr |
-|                                      | oup_name, grpid)                     |
-|                                      |       if (retval .ne. nf90_noerr) ca |
-|                                      | ll handle_err(retval)                |
-|                                      |       retval = nf90_def_grp(grpid, s |
-|                                      | ub_group_name, sub_grpid)            |
-|                                      |       if (retval .ne. nf90_noerr) ca |
-|                                      | ll handle_err(retval)                |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------------- ---------------------------------------------------------------------- --- ------------------------------------------------------------------------- ----------------------------- --------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fDEF_005fGRP "Previous section in reading order")\]   \[[>](#Dimensions-Introduction "Next section in reading order")\]       \[[<<](#Groups "Beginning of this chapter or previous chapter")\]   \[[Up](#Top "Up section")\]   \[[>>](#User-Defined-Data-Types "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------------------- ---------------------------------------------------------------------- --- ------------------------------------------------------------------------- ----------------------------- --------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-4. Dimensions {.chapter}
-=============
-
-  ------------------------ ------------------------ ------------------------
-  [4.1 Dimensions                                   
-  Introduction](#Dimension                          
-  s-Introduction)                                   
-
-  [4.2                                              
-  NF90\_DEF\_DIM](#NF90_00                          
-  5fDEF_005fDIM)                                    
-
-  [4.3                                              
-  NF90\_INQ\_DIMID](#NF90_                          
-  005fINQ_005fDIMID)                                
-
-  [4.4                                              
-  NF90\_INQUIRE\_DIMENSION                          
-  ](#NF90_005fINQUIRE_005f                          
-  DIMENSION)                                        
-
-  [4.5                                              
-  NF90\_RENAME\_DIM](#NF90                          
-  _005fRENAME_005fDIM)                              
-  ------------------------ ------------------------ ------------------------
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------- ------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ --------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Dimensions "Previous section in reading order")\]   \[[>](#NF90_005fDEF_005fDIM "Next section in reading order")\]       \[[<<](#Dimensions "Beginning of this chapter or previous chapter")\]   \[[Up](#Dimensions "Up section")\]   \[[>>](#User-Defined-Data-Types "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------- ------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ --------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-4.1 Dimensions Introduction {.section}
----------------------------
-
-Dimensions for a netCDF dataset are defined when it is created, while
-the netCDF dataset is in define mode. Additional dimensions may be added
-later by reentering define mode. A netCDF dimension has a name and a
-length. At most one dimension in a netCDF dataset can have the unlimited
-length, which means variables using this dimension can grow along this
-dimension.
-
-There is a suggested limit (512) to the number of dimensions that can be
-defined in a single netCDF dataset. The limit is the value of the
-constant NF90\_MAX\_DIMS. The purpose of the limit is to make writing
-generic applications simpler. They need only provide an array of
-NF90\_MAX\_DIMS dimensions to handle any netCDF dataset. The
-implementation of the netCDF library does not enforce this advisory
-maximum, so it is possible to use more dimensions, if necessary, but
-netCDF utilities that assume the advisory maximums may not be able to
-handle the resulting netCDF datasets.
-
-Ordinarily, the name and length of a dimension are fixed when the
-dimension is first defined. The name may be changed later, but the
-length of a dimension (other than the unlimited dimension) cannot be
-changed without copying all the data to a new netCDF dataset with a
-redefined dimension length.
-
-A netCDF dimension in an open netCDF dataset is referred to by a small
-integer called a dimension ID. In the Fortran 90 interface, dimension
-IDs are 1, 2, 3, ..., in the order in which the dimensions were defined.
-
-Operations supported on dimensions are:
-
--   Create a dimension, given its name and length.
--   Get a dimension ID from its name.
--   Get a dimension’s name and length from its ID.
--   Rename a dimension.
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------- --------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ --------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Dimensions-Introduction "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fDIMID "Next section in reading order")\]       \[[<<](#Dimensions "Beginning of this chapter or previous chapter")\]   \[[Up](#Dimensions "Up section")\]   \[[>>](#User-Defined-Data-Types "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------- --------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ --------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-4.2 NF90\_DEF\_DIM {.section}
-------------------
-
-The function NF90\_DEF\_DIM adds a new dimension to an open netCDF
-dataset in define mode. It returns (as an argument) a dimension ID,
-given the netCDF ID, the dimension name, and the dimension length. At
-most one unlimited length dimension, called the record dimension, may be
-defined for each netCDF dataset.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_def_dim(ncid, name, l |
-|                                      | en, dimid)                           |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid                              |
-|                                      |    character (len = *), intent( in)  |
-|                                      | :: name                              |
-|                                      |    integer,             intent( in)  |
-|                                      | :: len                               |
-|                                      |    integer,             intent(out)  |
-|                                      | :: dimid                             |
-|                                      |    integer                           |
-|                                      | :: nf90_def_dim                      |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `name`
-
-:   Dimension name.
-
- `len`
-
-:   Length of dimension; that is, number of values for this dimension as
-    an index to variables that use it. This should be either a positive
-    integer or the predefined constant NF90\_UNLIMITED.
-
- `dimid`
-
-:   Returned dimension ID.
-
-Errors {.heading}
-------
-
-NF90\_DEF\_DIM returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The netCDF dataset is not in definition mode.
--   The specified dimension name is the name of another
-    existing dimension.
--   The specified length is not greater than zero.
--   The specified length is unlimited, but there is already an unlimited
-    length dimension defined for this netCDF dataset.
--   The specified netCDF ID does not refer to an open netCDF dataset.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_DEF\_DIM to create a dimension named lat
-of length 18 and a unlimited dimension named rec in a new netCDF dataset
-named foo.nc:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid, status, LatDimID,  |
-|                                      | RecordDimID                          |
-|                                      |  ...                                 |
-|                                      |  status = nf90_create("foo.nc", nf90 |
-|                                      | _noclobber, ncid)                    |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  status = nf90_def_dim(ncid, "Lat",  |
-|                                      | 18, LatDimID)                        |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  status = nf90_def_dim(ncid, "Record |
-|                                      | ", nf90_unlimited, RecordDimID)      |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------------- ----------------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ --------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fDEF_005fDIM "Previous section in reading order")\]   \[[>](#NF90_005fINQUIRE_005fDIMENSION "Next section in reading order")\]       \[[<<](#Dimensions "Beginning of this chapter or previous chapter")\]   \[[Up](#Dimensions "Up section")\]   \[[>>](#User-Defined-Data-Types "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------------------- ----------------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ --------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-4.3 NF90\_INQ\_DIMID {.section}
---------------------
-
-The function NF90\_INQ\_DIMID returns (as an argument) the ID of a
-netCDF dimension, given the name of the dimension. If ndims is the
-number of dimensions defined for a netCDF dataset, each dimension has an
-ID between 1 and ndims.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_inq_dimid(ncid, name, |
-|                                      |  dimid)                              |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid                              |
-|                                      |    character (len = *), intent( in)  |
-|                                      | :: name                              |
-|                                      |    integer,             intent(out)  |
-|                                      | :: dimid                             |
-|                                      |    integer                           |
-|                                      | :: nf90_inq_dimid                    |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `name`
-
-:   Dimension name.
-
- `dimid`
-
-:   Returned dimension ID.
-
-Errors {.heading}
-------
-
-NF90\_INQ\_DIMID returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The name that was specified is not the name of a dimension in the
-    netCDF dataset.
--   The specified netCDF ID does not refer to an open netCDF dataset.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_INQ\_DIMID to determine the dimension ID
-of a dimension named lat, assumed to have been defined previously in an
-existing netCDF dataset named foo.nc:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid, status, LatDimID   |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_n |
-|                                      | owrite, ncid)                        |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inq_dimid(ncid, "Lat" |
-|                                      | , LatDimID)                          |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------- ---------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ --------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fDIMID "Previous section in reading order")\]   \[[>](#NF90_005fRENAME_005fDIM "Next section in reading order")\]       \[[<<](#Dimensions "Beginning of this chapter or previous chapter")\]   \[[Up](#Dimensions "Up section")\]   \[[>>](#User-Defined-Data-Types "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------- ---------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ --------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-4.4 NF90\_INQUIRE\_DIMENSION {.section}
-----------------------------
-
-This function information about a netCDF dimension. Information about a
-dimension includes its name and its length. The length for the unlimited
-dimension, if any, is the number of records written so far.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_inquire_dimension(nci |
-|                                      | d, dimid, name, len)                 |
-|                                      |    integer,                       in |
-|                                      | tent( in) :: ncid, dimid             |
-|                                      |    character (len = *), optional, in |
-|                                      | tent(out) :: name                    |
-|                                      |    integer,             optional, in |
-|                                      | tent(out) :: len                     |
-|                                      |    integer                           |
-|                                      |           :: nf90_inquire_dimension  |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `dimid`
-
-:   Dimension ID, from a previous call to NF90\_INQ\_DIMID
-    or NF90\_DEF\_DIM.
-
- `name`
-
-:   Returned dimension name. The caller must allocate space for the
-    returned name. The maximum possible length, in characters, of a
-    dimension name is given by the predefined constant NF90\_MAX\_NAME.
-
- `len`
-
-:   Returned length of dimension. For the unlimited dimension, this is
-    the current maximum value used for writing any variables with this
-    dimension, that is the maximum record number.
-
-Errors {.heading}
-------
-
-These functions return the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The dimension ID is invalid for the specified netCDF dataset.
--   The specified netCDF ID does not refer to an open netCDF dataset.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_INQ\_DIM to determine the length of a
-dimension named lat, and the name and current maximum length of the
-unlimited dimension for an existing netCDF dataset named foo.nc:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid, status, LatDimID,  |
-|                                      | RecordDimID                          |
-|                                      |  integer :: nLats, nRecords          |
-|                                      |  character(len = nf90_max_name) :: R |
-|                                      | ecordDimName                         |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_n |
-|                                      | owrite, ncid)                        |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ! Get ID of unlimited dimension     |
-|                                      |  status = nf90_inquire(ncid, unlimit |
-|                                      | edDimId = RecordDimID)               |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inq_dimid(ncid, "Lat" |
-|                                      | , LatDimID)                          |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ! How many values of "lat" are ther |
-|                                      | e?                                   |
-|                                      |  status = nf90_inquire_dimension(nci |
-|                                      | d, LatDimID, len = nLats)            |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ! What is the name of the unlimited |
-|                                      |  dimension, how many records are the |
-|                                      | re?                                  |
-|                                      |  status = nf90_inquire_dimension(nci |
-|                                      | d, RecordDimID, &                    |
-|                                      |                                  nam |
-|                                      | e = RecordDimName, len = Records)    |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  --------------------------------------------------------------------------------- ---------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ --------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQUIRE_005fDIMENSION "Previous section in reading order")\]   \[[>](#User-Defined-Data-Types "Next section in reading order")\]       \[[<<](#Dimensions "Beginning of this chapter or previous chapter")\]   \[[Up](#Dimensions "Up section")\]   \[[>>](#User-Defined-Data-Types "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  --------------------------------------------------------------------------------- ---------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ --------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-4.5 NF90\_RENAME\_DIM {.section}
----------------------
-
-The function NF90\_RENAME\_DIM renames an existing dimension in a netCDF
-dataset open for writing. If the new name is longer than the old name,
-the netCDF dataset must be in define mode. You cannot rename a dimension
-to have the same name as another dimension.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_rename_dim(ncid, dimi |
-|                                      | d, name)                             |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid                              |
-|                                      |    character (len = *), intent( in)  |
-|                                      | :: name                              |
-|                                      |    integer,             intent( in)  |
-|                                      | :: dimid                             |
-|                                      |    integer                           |
-|                                      | :: nf90_rename_dim                   |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `dimid`
-
-:   Dimension ID, from a previous call to NF90\_INQ\_DIMID
-    or NF90\_DEF\_DIM.
-
- `name`
-
-:   New dimension name.
-
-Errors {.heading}
-------
-
-NF90\_RENAME\_DIM returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The new name is the name of another dimension.
--   The dimension ID is invalid for the specified netCDF dataset.
--   The specified netCDF ID does not refer to an open netCDF dataset.
--   The new name is longer than the old name and the netCDF dataset is
-    not in define mode.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_RENAME\_DIM to rename the dimension lat
-to latitude in an existing netCDF dataset named foo.nc:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid, status, LatDimID   |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_w |
-|                                      | rite, ncid)                          |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  ! Put in define mode so we can rena |
-|                                      | me the dimension                     |
-|                                      |  status = nf90_redef(ncid)           |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ! Get the dimension ID for "Lat"... |
-|                                      |  status = nf90_inq_dimid(ncid, "Lat" |
-|                                      | , LatDimID)                          |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ! ... and change the name to "Latit |
-|                                      | ude".                                |
-|                                      |  status = nf90_rename_dim(ncid, LatD |
-|                                      | imID, "Latitude")                    |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ! Leave define mode                 |
-|                                      |  status = nf90_enddef(ncid)          |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------- ----------------------------------------------------------------- --- ----------------------------------------------------------------------------- ----------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fRENAME_005fDIM "Previous section in reading order")\]   \[[>](#User-Defined-Types "Next section in reading order")\]       \[[<<](#Dimensions "Beginning of this chapter or previous chapter")\]   \[[Up](#Top "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------- ----------------------------------------------------------------- --- ----------------------------------------------------------------------------- ----------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-5. User Defined Data Types {.chapter}
-==========================
-
-  ------------------------ ------------------------ ------------------------
-  [5.1 User Defined Types                           
-  Introduction](#User-Defi                          
-  ned-Types)                                        
-
-  [5.2 Learn the IDs of                             
-  All Types in Group:                               
-  NF90\_INQ\_TYPEIDS](#NF9                          
-  0_005fINQ_005fTYPEIDS)                            
-
-  [5.3 Find a Typeid from                           
-  Group and Name:                                   
-  nf90\_inq\_typeid](#nf90                          
-  _005finq_005ftypeid)                              
-
-  [5.4 Learn About a User                           
-  Defined Type:                                     
-  NF90\_INQ\_TYPE](#NF90_0                          
-  05fINQ_005fTYPE)                                  
-
-  [5.5 Learn About a User                           
-  Defined Type:                                     
-  NF90\_INQ\_USER\_TYPE](#                          
-  NF90_005fINQ_005fUSER_00                          
-  5fTYPE)                                           
-
-  [5.6 Compound Types                               
-  Introduction](#Compound-                          
-  Types)                                            
-
-  [5.7 Variable Length                              
-  Array                                             
-  Introduction](#Variable-                          
-  Length-Array)                                     
-
-  [5.8 Opaque Type                                  
-  Introduction](#Opaque-Ty                          
-  pe)                                               
-
-  [5.9 Enum Type                                    
-  Introduction](#Enum-Type                          
-  )                                                 
-  ------------------------ ------------------------ ------------------------
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------- ----------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#User-Defined-Data-Types "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fTYPEIDS "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#User-Defined-Data-Types "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------- ----------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-5.1 User Defined Types Introduction {.section}
------------------------------------
-
-NetCDF-4 has added support for four different user defined data types.
-
- `compound type`
-
-:   Like a C struct, a compound type is a collection of types, including
-    other user defined types, in one package.
-
- `variable length array type`
-
-:   The variable length array may be used to store ragged arrays.
-
- `opaque type`
-
-:   This type has only a size per element, and no other
-    type information.
-
- `enum type`
-
-:   Like an enumeration in C, this type lets you assign text values to
-    integer values, and store the integer values.
-
-Users may construct user defined type with the various NF90\_DEF\_\*
-functions described in this section. They may learn about user defined
-types by using the NF90\_INQ\_ functions defined in this section.
-
-Once types are constructed, define variables of the new type with
-NF90\_DEF\_VAR (see section [Create a Variable:
-`NF90_DEF_VAR`](#NF90_005fDEF_005fVAR)). Write to them with
-NF90\_PUT\_VAR (see section [Writing Data Values:
-NF90\_PUT\_VAR](#NF90_005fPUT_005fVAR)). Read data of user-defined type
-with NF90\_GET\_VAR (see section [Reading Data Values:
-NF90\_GET\_VAR](#NF90_005fGET_005fVAR)).
-
-Create attributes of the new type with NF90\_PUT\_ATT (see section
-[Create an Attribute: NF90\_PUT\_ATT](#NF90_005fPUT_005fATT)). Read
-attributes of the new type with NF90\_GET\_ATT (see section [Get
-Attribute’s Values: NF90\_GET\_ATT](#NF90_005fGET_005fATT)).
-
-------------------------------------------------------------------------
-
-  --------------------------------------------------------------------- ---------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#User-Defined-Types "Previous section in reading order")\]   \[[>](#nf90_005finq_005ftypeid "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#User-Defined-Data-Types "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  --------------------------------------------------------------------- ---------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-5.2 Learn the IDs of All Types in Group: NF90\_INQ\_TYPEIDS {.section}
------------------------------------------------------------
-
-Learn the number of types defined in a group, and their IDs.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_typeids(ncid, nt |
-|                                      | ypes, typeids)                       |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(out) :: ntypes   |
-|                                      |     integer, intent(out) :: typeids  |
-|                                      |     integer :: nf90_inq_typeids      |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The group id.
-
- `NTYPES`
-
-:   A pointer to int which will get the number of types defined in
-    the group. If NULL, ignored.
-
- `TYPEIDS`
-
-:   A pointer to an int array which will get the typeids. If
-    NULL, ignored.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_BADID`
-
-:   Bad ncid.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  --------------------------------------------------------------------------- -------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fTYPEIDS "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fTYPE "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#User-Defined-Data-Types "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  --------------------------------------------------------------------------- -------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-5.3 Find a Typeid from Group and Name: nf90\_inq\_typeid {.section}
---------------------------------------------------------
-
-Given a group ID and a type name, find the ID of the type. If the type
-is not found in the group, then the parents are searched. If still not
-found, the entire file is searched.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      | int nf90_inq_typeid(int ncid, char * |
-|                                      | name, nf90_type *typeidp);           |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   The group id.
-
- `name`
-
-:   The name of a type.
-
- `typeidp`
-
-:   The typeid, if found.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad ncid.
-
- `NF90_EBADTYPE`
-
-:   Can’t find type.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------- ----------------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#nf90_005finq_005ftypeid "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fUSER_005fTYPE "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#User-Defined-Data-Types "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------- ----------------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-5.4 Learn About a User Defined Type: NF90\_INQ\_TYPE {.section}
-----------------------------------------------------
-
-Given an ncid and a typeid, get the information about a type. This
-function will work on any type, including atomic and any user defined
-type, whether compound, opaque, enumeration, or variable length array.
-
-For even more information about a user defined type [Learn About a User
-Defined Type: NF90\_INQ\_USER\_TYPE](#NF90_005fINQ_005fUSER_005fTYPE).
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_type(ncid, xtype |
-|                                      | , name, size)                        |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     character (len = *), intent(out) |
-|                                      |  :: name                             |
-|                                      |     integer, intent(out) :: size     |
-|                                      |     integer :: nf90_inq_type         |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The ncid for the group containing the type (ignored for
-    atomic types).
-
- `XTYPE`
-
-:   The typeid for this type, as returned by NF90\_DEF\_COMPOUND,
-    NF90\_DEF\_OPAQUE, NF90\_DEF\_ENUM, NF90\_DEF\_VLEN, or
-    NF90\_INQ\_VAR, or as found in netcdf.inc in the list of atomic
-    types (NF90\_CHAR, NF90\_INT, etc.).
-
- `NAME`
-
-:   The name of the user defined type will be copied here. It will be
-    NF90\_MAX\_NAME bytes or less. For atomic types, the type name from
-    CDL will be given.
-
- `SIZEP`
-
-:   The (in-memory) size of the type (in bytes) will be copied here.
-    VLEN type size is the size of one element of the VLEN. String size
-    is returned as the size of one char.
-
-Return Codes {.heading}
-------------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADTYPEID`
-
-:   Bad typeid.
-
- `NF90_ENOTNC4`
-
-:   Seeking a user-defined type in a netCDF-3 file.
-
- `NF90_ESTRICTNC3`
-
-:   Seeking a user-defined type in a netCDF-4 file for which classic
-    model has been turned on.
-
- `NF90_EBADGRPID`
-
-:   Bad group ID in ncid.
-
- `NF90_EBADID`
-
-:   Type ID not found.
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------ -------------------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fTYPE "Previous section in reading order")\]   \[[>](#NF90_005fPUT_005fVLEN_005fELEMENT "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#User-Defined-Data-Types "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------ -------------------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-5.5 Learn About a User Defined Type: NF90\_INQ\_USER\_TYPE {.section}
-----------------------------------------------------------
-
-Given an ncid and a typeid, get the information about a user defined
-type. This function will work on any user defined type, whether
-compound, opaque, enumeration, or variable length array.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_user_type(ncid,  |
-|                                      | xtype, name, size, base_typeid, nfie |
-|                                      | lds, class)                          |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     character (len = *), intent(out) |
-|                                      |  :: name                             |
-|                                      |     integer, intent(out) :: size     |
-|                                      |     integer, intent(out) :: base_typ |
-|                                      | eid                                  |
-|                                      |     integer, intent(out) :: nfields  |
-|                                      |     integer, intent(out) :: class    |
-|                                      |     integer :: nf90_inq_user_type    |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The ncid for the group containing the user defined type.
-
- `XTYPE`
-
-:   The typeid for this type, as returned by NF90\_DEF\_COMPOUND,
-    NF90\_DEF\_OPAQUE, NF90\_DEF\_ENUM, NF90\_DEF\_VLEN,
-    or NF90\_INQ\_VAR.
-
- `NAME`
-
-:   The name of the user defined type will be copied here. It will be
-    NF90\_MAX\_NAME bytes or less.
-
- `SIZE`
-
-:   The (in-memory) size of the user defined type will be copied here.
-
- `BASE_NF90_TYPE`
-
-:   The base typeid will be copied here for vlen and enum types.
-
- `NFIELDS`
-
-:   The number of fields will be copied here for enum and
-    compound types.
-
- `CLASS`
-
-:   The class of the user defined type, NF90\_VLEN, NF90\_OPAQUE,
-    NF90\_ENUM, or NF90\_COMPOUND, will be copied here.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADTYPEID`
-
-:   Bad typeid.
-
- `NF90_EBADFIELDID`
-
-:   Bad fieldid.
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-  ------------------------ ------------------------ ------------------------
-  [5.5.1 Set a Variable                             
-  Length Array with                                 
-  NF90\_PUT\_VLEN\_ELEMENT                          
-  ](#NF90_005fPUT_005fVLEN                          
-  _005fELEMENT)                                     
-
-  [5.5.2 Set a Variable                             
-  Length Array with                                 
-  NF90\_GET\_VLEN\_ELEMENT                          
-  ](#NF90_005fGET_005fVLEN                          
-  _005fELEMENT)                                     
-  ------------------------ ------------------------ ------------------------
-
-------------------------------------------------------------------------
-
-  --------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ -------------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ----------------- [...]
-  \[[<](#NF90_005fINQ_005fUSER_005fTYPE "Previous section in reading order")\]   \[[>](#NF90_005fGET_005fVLEN_005fELEMENT "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#NF90_005fINQ_005fUSER_005fTYPE "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About  [...]
-  --------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ -------------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ----------------- [...]
-
-### 5.5.1 Set a Variable Length Array with NF90\_PUT\_VLEN\_ELEMENT {.subsection}
-
-Use this to set the element of the (potentially) n-dimensional array of
-VLEN. That is, this sets the data in one variable length array.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      | INTEGER FUNCTION NF90_PUT_VLEN_ELEME |
-|                                      | NT(INTEGER NCID, INTEGER XTYPE,      |
-|                                      |         CHARACTER*(*) VLEN_ELEMENT,  |
-|                                      | INTEGER LEN, DATA)                   |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The ncid of the file that contains the VLEN type.
-
- `XTYPE`
-
-:   The type of the VLEN.
-
- `VLEN_ELEMENT`
-
-:   The VLEN element to be set.
-
- `LEN`
-
-:   The number of entries in this array.
-
- `DATA`
-
-:   The data to be stored. Must match the base type of this VLEN.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADTYPE`
-
-:   Can’t find the typeid.
-
- `NF90_EBADID`
-
-:   ncid invalid.
-
- `NF90_EBADGRPID`
-
-:   Group ID part of ncid was invalid.
-
-Example {.heading}
--------
-
-This example is from nf90\_test/ftst\_vars4.F.
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      | C     Set up the vlen with this help |
-|                                      | er function, since F90 can't deal    |
-|                                      | C     with pointers.                 |
-|                                      |       retval = nf90_put_vlen_element |
-|                                      | (ncid, vlen_typeid, vlen,            |
-|                                      |      &     vlen_len, data1)          |
-|                                      |       if (retval .ne. nf90_noerr) ca |
-|                                      | ll handle_err(retval)                |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------------------ ------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ -------------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fPUT_005fVLEN_005fELEMENT "Previous section in reading order")\]   \[[>](#Compound-Types "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#NF90_005fINQ_005fUSER_005fTYPE "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------------------ ------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ -------------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-### 5.5.2 Set a Variable Length Array with NF90\_GET\_VLEN\_ELEMENT {.subsection}
-
-Use this to set the element of the (potentially) n-dimensional array of
-VLEN. That is, this sets the data in one variable length array.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      | INTEGER FUNCTION NF90_GET_VLEN_ELEME |
-|                                      | NT(INTEGER NCID, INTEGER XTYPE,      |
-|                                      |         CHARACTER*(*) VLEN_ELEMENT,  |
-|                                      | INTEGER LEN, DATA)                   |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The ncid of the file that contains the VLEN type.
-
- `XTYPE`
-
-:   The type of the VLEN.
-
- `VLEN_ELEMENT`
-
-:   The VLEN element to be set.
-
- `LEN`
-
-:   This will be set to the number of entries in this array.
-
- `DATA`
-
-:   The data will be copied here. Sufficient storage must be available
-    or bad things will happen to you.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADTYPE`
-
-:   Can’t find the typeid.
-
- `NF90_EBADID`
-
-:   ncid invalid.
-
- `NF90_EBADGRPID`
-
-:   Group ID part of ncid was invalid.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------------------ ------------------------------------------------------------------------ --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fGET_005fVLEN_005fELEMENT "Previous section in reading order")\]   \[[>](#NF90_005fDEF_005fCOMPOUND "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#User-Defined-Data-Types "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------------------ ------------------------------------------------------------------------ --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-5.6 Compound Types Introduction {.section}
--------------------------------
-
-NetCDF-4 added support for compound types, which allow users to
-construct a new type - a combination of other types, like a C struct.
-
-Compound types are not supported in classic or 64-bit offset format
-files.
-
-To write data in a compound type, first use nf90\_def\_compound to
-create the type, multiple calls to nf90\_insert\_compound to add to the
-compound type, and then write data with the appropriate nf90\_put\_var1,
-nf90\_put\_vara, nf90\_put\_vars, or nf90\_put\_varm call.
-
-To read data written in a compound type, you must know its structure.
-Use the NF90\_INQ\_COMPOUND functions to learn about the compound type.
-
-In Fortran a character buffer must be used for the compound data. The
-user must read the data from within that buffer in the same way that the
-C compiler which compiled netCDF would store the structure.
-
-The use of compound types introduces challenges and portability issues
-for Fortran users.
-
-  ------------------------ ------------------------ ------------------------
-  [5.6.1 Creating a                                 
-  Compound Type:                                    
-  NF90\_DEF\_COMPOUND](#NF                          
-  90_005fDEF_005fCOMPOUND)                          
-
-  [5.6.2 Inserting a Field                          
-  into a Compound Type:                             
-  NF90\_INSERT\_COMPOUND](                          
-  #NF90_005fINSERT_005fCOM                          
-  POUND)                                            
-
-  [5.6.3 Inserting an                               
-  Array Field into a                                
-  Compound Type:                                    
-  NF90\_INSERT\_ARRAY\_COM                          
-  POUND](#NF90_005fINSERT_                          
-  005fARRAY_005fCOMPOUND)                           
-
-  [5.6.4 Learn About a                              
-  Compound Type:                                    
-  NF90\_INQ\_COMPOUND](#NF                          
-  90_005fINQ_005fCOMPOUND)                          
-
-  [5.6.5 Learn About a                              
-  Field of a Compound                               
-  Type:                                             
-  NF90\_INQ\_COMPOUND\_FIE                          
-  LD](#NF90_005fINQ_005fCO                          
-  MPOUND_005fFIELD)                                 
-  ------------------------ ------------------------ ------------------------
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------- --------------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ---------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Compound-Types "Previous section in reading order")\]   \[[>](#NF90_005fINSERT_005fCOMPOUND "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#Compound-Types "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------------- --------------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ---------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-### 5.6.1 Creating a Compound Type: NF90\_DEF\_COMPOUND {.subsection}
-
-Create a compound type. Provide an ncid, a name, and a total size (in
-bytes) of one element of the completed compound type.
-
-After calling this function, fill out the type with repeated calls to
-NF90\_INSERT\_COMPOUND (see section [Inserting a Field into a Compound
-Type: NF90\_INSERT\_COMPOUND](#NF90_005fINSERT_005fCOMPOUND)). Call
-NF90\_INSERT\_COMPOUND once for each field you wish to insert into the
-compound type.
-
-Note that there does not seem to be a fully portable way to read such
-types into structures in Fortran 90 (and there are no structures in
-Fortran 77). Dozens of top-notch programmers are swarming over this
-problem in a sub-basement of Unidata’s giant underground bunker in
-Wyoming.
-
-Fortran users may use character buffers to read and write compound
-types. User are invited to try classic Fortran features such as the
-equivilence and the common block statment.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_def_compound(ncid, s |
-|                                      | ize, name, typeid)                   |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: size      |
-|                                      |     character (len = *), intent(in)  |
-|                                      | :: name                              |
-|                                      |     integer, intent(out) :: typeid   |
-|                                      |     integer :: nf90_def_compound     |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The groupid where this compound type will be created.
-
- `SIZE`
-
-:   The size, in bytes, of the compound type.
-
- `NAME`
-
-:   The name of the new compound type.
-
- `TYPEIDP`
-
-:   The typeid of the new type will be placed here.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad group id.
-
- `NF90_ENAMEINUSE`
-
-:   That name is in use. Compound type names must be unique in the
-    data file.
-
- `NF90_EMAXNAME`
-
-:   Name exceeds max length NF90\_MAX\_NAME.
-
- `NF90_EBADNAME`
-
-:   Name contains illegal characters.
-
- `NF90_ENOTNC4`
-
-:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
-    operations can only be performed on files defined with a create mode
-    which includes flag NF90\_NETCDF4. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_ESTRICTNC3`
-
-:   This file was created with the strict netcdf-3 flag, therefore
-    netcdf-4 operations are not allowed. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
- `NF90_EPERM`
-
-:   Attempt to write to a read-only file.
-
- `NF90_ENOTINDEFINE`
-
-:   Not in define mode.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  ---------------------------------------------------------------------------- ------------------------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ---------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fDEF_005fCOMPOUND "Previous section in reading order")\]   \[[>](#NF90_005fINSERT_005fARRAY_005fCOMPOUND "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#Compound-Types "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ---------------------------------------------------------------------------- ------------------------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ---------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-### 5.6.2 Inserting a Field into a Compound Type: NF90\_INSERT\_COMPOUND {.subsection}
-
-Insert a named field into a compound type.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_insert_compound(ncid |
-|                                      | , xtype, name, offset, field_typeid) |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     character (len = *), intent(in)  |
-|                                      | :: name                              |
-|                                      |     integer, intent(in) :: offset    |
-|                                      |     integer, intent(in) :: field_typ |
-|                                      | eid                                  |
-|                                      |     integer :: nf90_insert_compound  |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `TYPEID`
-
-:   The typeid for this compound type, as returned by
-    NF90\_DEF\_COMPOUND, or NF90\_INQ\_VAR.
-
- `NAME`
-
-:   The name of the new field.
-
- `OFFSET`
-
-:   Offset in byte from the beginning of the compound type for
-    this field.
-
- `FIELD_TYPEID`
-
-:   The type of the field to be inserted.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad group id.
-
- `NF90_ENAMEINUSE`
-
-:   That name is in use. Field names must be unique within a
-    compound type.
-
- `NF90_EMAXNAME`
-
-:   Name exceed max length NF90\_MAX\_NAME.
-
- `NF90_EBADNAME`
-
-:   Name contains illegal characters.
-
- `NF90_ENOTNC4`
-
-:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
-    operations can only be performed on files defined with a create mode
-    which includes flag NF90\_NETCDF4. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_ESTRICTNC3`
-
-:   This file was created with the strict netcdf-3 flag, therefore
-    netcdf-4 operations are not allowed. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
- `NF90_ENOTINDEFINE`
-
-:   Not in define mode.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------------- ------------------------------------------------------------------------ --- ------------------------------------------------------------------------------------------ ---------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINSERT_005fCOMPOUND "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fCOMPOUND "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#Compound-Types "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------------- ------------------------------------------------------------------------ --- ------------------------------------------------------------------------------------------ ---------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-### 5.6.3 Inserting an Array Field into a Compound Type: NF90\_INSERT\_ARRAY\_COMPOUND {.subsection}
-
-Insert a named array field into a compound type.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_insert_array_compoun |
-|                                      | d(ncid, xtype, name, offset, field_t |
-|                                      | ypeid, &                             |
-|                                      |        ndims, dim_sizes)             |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     character (len = *), intent(in)  |
-|                                      | :: name                              |
-|                                      |     integer, intent(in) :: offset    |
-|                                      |     integer, intent(in) :: field_typ |
-|                                      | eid                                  |
-|                                      |     integer, intent(in) :: ndims     |
-|                                      |     integer, intent(in) :: dim_sizes |
-|                                      |     integer :: nf90_insert_array_com |
-|                                      | pound                                |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The ID of the file that contains the array type and the
-    compound type.
-
- `XTYPE`
-
-:   The typeid for this compound type, as returned by
-    nf90\_def\_compound, or nf90\_inq\_var.
-
- `NAME`
-
-:   The name of the new field.
-
- `OFFSET`
-
-:   Offset in byte from the beginning of the compound type for
-    this field.
-
- `FIELD_TYPEID`
-
-:   The base type of the array to be inserted.
-
- `NDIMS`
-
-:   The number of dimensions for the array to be inserted.
-
- `DIM_SIZES`
-
-:   An array containing the sizes of each dimension.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad group id.
-
- `NF90_ENAMEINUSE`
-
-:   That name is in use. Field names must be unique within a
-    compound type.
-
- `NF90_EMAXNAME`
-
-:   Name exceed max length NF90\_MAX\_NAME.
-
- `NF90_EBADNAME`
-
-:   Name contains illegal characters.
-
- `NF90_ENOTNC4`
-
-:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
-    operations can only be performed on files defined with a create mode
-    which includes flag NF90\_NETCDF4. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_ESTRICTNC3`
-
-:   This file was created with the strict netcdf-3 flag, therefore
-    netcdf-4 operations are not allowed. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
- `NF90_ENOTINDEFINE`
-
-:   Not in define mode.
-
- `NF90_ETYPEDEFINED`
-
-:   Attempt to change type that has already been committed. The first
-    time the file leaves define mode, all defined types are committed,
-    and can’t be changed. If you wish to add an array to a compound
-    type, you must do so before the compound type is committed.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ---------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ----------------------- [...]
-  \[[<](#NF90_005fINSERT_005fARRAY_005fCOMPOUND "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fCOMPOUND_005fFIELD "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#Compound-Types "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About [...]
-  ----------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ---------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ----------------------- [...]
-
-### 5.6.4 Learn About a Compound Type: NF90\_INQ\_COMPOUND {.subsection}
-
-Get the number of fields, length in bytes, and name of a compound type.
-
-In addtion to the NF90\_INQ\_COMPOUND function, three additional
-functions are provided which get only the name, size, and number of
-fields.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_compound(ncid, x |
-|                                      | type, name, size, nfields)           |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     character (len = *), intent(out) |
-|                                      |  :: name                             |
-|                                      |     integer, intent(out) :: size     |
-|                                      |     integer, intent(out) :: nfields  |
-|                                      |     integer :: nf90_inq_compound     |
-|                                      |                                      |
-|                                      |   function nf90_inq_compound_name(nc |
-|                                      | id, xtype, name)                     |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     character (len = *), intent(out) |
-|                                      |  :: name                             |
-|                                      |     integer :: nf90_inq_compound_nam |
-|                                      | e                                    |
-|                                      |                                      |
-|                                      |   function nf90_inq_compound_size(nc |
-|                                      | id, xtype, size)                     |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     integer, intent(out) :: size     |
-|                                      |     integer :: nf90_inq_compound_siz |
-|                                      | e                                    |
-|                                      |                                      |
-|                                      |   function nf90_inq_compound_nfields |
-|                                      | (ncid, xtype, nfields)               |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     integer, intent(out) :: nfields  |
-|                                      |     integer :: nf90_inq_compound_nfi |
-|                                      | elds                                 |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The ID of any group in the file that contains the compound type.
-
- `XTYPE`
-
-:   The typeid for this compound type, as returned by
-    NF90\_DEF\_COMPOUND, or NF90\_INQ\_VAR.
-
- `NAME`
-
-:   Character array which will get the name of the compound type. It
-    will have a maximum length of NF90\_MAX\_NAME.
-
- `SIZEP`
-
-:   The size of the compound type in bytes will be put here.
-
- `NFIELDSP`
-
-:   The number of fields in the compound type will be placed here.
-
-Return Codes {.heading}
-------------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Couldn’t find this ncid.
-
- `NF90_ENOTNC4`
-
-:   Not a netCDF-4/HDF5 file.
-
- `NF90_ESTRICTNC3`
-
-:   A netCDF-4/HDF5 file, but with CLASSIC\_MODEL. No user defined types
-    are allowed in the classic model.
-
- `NF90_EBADTYPE`
-
-:   This type not a compound type.
-
- `NF90_EBADTYPEID`
-
-:   Bad type id.
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  ---------------------------------------------------------------------------- -------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ---------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fCOMPOUND "Previous section in reading order")\]   \[[>](#Variable-Length-Array "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#Compound-Types "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ---------------------------------------------------------------------------- -------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ---------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-### 5.6.5 Learn About a Field of a Compound Type: NF90\_INQ\_COMPOUND\_FIELD {.subsection}
-
-Get information about one of the fields of a compound type.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_compound_field(n |
-|                                      | cid, xtype, fieldid, name, offset, & |
-|                                      |        field_typeid, ndims, dim_size |
-|                                      | s)                                   |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     integer, intent(in) :: fieldid   |
-|                                      |     character (len = *), intent(out) |
-|                                      |  :: name                             |
-|                                      |     integer, intent(out) :: offset   |
-|                                      |     integer, intent(out) :: field_ty |
-|                                      | peid                                 |
-|                                      |     integer, intent(out) :: ndims    |
-|                                      |     integer, intent(out) :: dim_size |
-|                                      | s                                    |
-|                                      |     integer :: nf90_inq_compound_fie |
-|                                      | ld                                   |
-|                                      |                                      |
-|                                      |   function nf90_inq_compound_fieldna |
-|                                      | me(ncid, xtype, fieldid, name)       |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     integer, intent(in) :: fieldid   |
-|                                      |     character (len = *), intent(out) |
-|                                      |  :: name                             |
-|                                      |     integer :: nf90_inq_compound_fie |
-|                                      | ldname                               |
-|                                      |                                      |
-|                                      |   function nf90_inq_compound_fieldin |
-|                                      | dex(ncid, xtype, name, fieldid)      |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     character (len = *), intent(in)  |
-|                                      | :: name                              |
-|                                      |     integer, intent(out) :: fieldid  |
-|                                      |     integer :: nf90_inq_compound_fie |
-|                                      | ldindex                              |
-|                                      |                                      |
-|                                      |   function nf90_inq_compound_fieldof |
-|                                      | fset(ncid, xtype, fieldid, offset)   |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     integer, intent(in) :: fieldid   |
-|                                      |     integer, intent(out) :: offset   |
-|                                      |     integer :: nf90_inq_compound_fie |
-|                                      | ldoffset                             |
-|                                      |                                      |
-|                                      |   function nf90_inq_compound_fieldty |
-|                                      | pe(ncid, xtype, fieldid, field_typei |
-|                                      | d)                                   |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     integer, intent(in) :: fieldid   |
-|                                      |     integer, intent(out) :: field_ty |
-|                                      | peid                                 |
-|                                      |     integer :: nf90_inq_compound_fie |
-|                                      | ldtype                               |
-|                                      |                                      |
-|                                      |   function nf90_inq_compound_fieldnd |
-|                                      | ims(ncid, xtype, fieldid, ndims)     |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     integer, intent(in) :: fieldid   |
-|                                      |     integer, intent(out) :: ndims    |
-|                                      |     integer :: nf90_inq_compound_fie |
-|                                      | ldndims                              |
-|                                      |                                      |
-|                                      |   function nf90_inq_cmp_fielddim_siz |
-|                                      | es(ncid, xtype, fieldid, dim_sizes)  |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     integer, intent(in) :: fieldid   |
-|                                      |     integer, intent(out) :: dim_size |
-|                                      | s                                    |
-|                                      |     integer :: nf90_inq_cmp_fielddim |
-|                                      | _sizes                               |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The groupid where this compound type exists.
-
- `XTYPE`
-
-:   The typeid for this compound type, as returned by
-    NF90\_DEF\_COMPOUND, or NF90\_INQ\_VAR.
-
- `FIELDID`
-
-:   A one-based index number specifying a field in the compound type.
-
- `NAME`
-
-:   A character array which will get the name of the field. The name
-    will be NF90\_MAX\_NAME characters, at most.
-
- `OFFSETP`
-
-:   An integer which will get the offset of the field.
-
- `FIELD_TYPEID`
-
-:   An integer which will get the typeid of the field.
-
- `NDIMSP`
-
-:   An integer which will get the number of dimensions of the field.
-
- `DIM_SIZESP`
-
-:   An integer array which will get the dimension sizes of the field.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADTYPEID`
-
-:   Bad type id.
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------------------- -------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fCOMPOUND_005fFIELD "Previous section in reading order")\]   \[[>](#NF90_005fDEF_005fVLEN "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#User-Defined-Data-Types "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------------------- -------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-5.7 Variable Length Array Introduction {.section}
---------------------------------------
-
-NetCDF-4 added support for a variable length array type. This is not
-supported in classic or 64-bit offset files, or in netCDF-4 files which
-were created with the NF90\_CLASSIC\_MODEL flag.
-
-A variable length array is represented in C as a structure from HDF5,
-the nf90\_vlen\_t structure. It contains a len member, which contains
-the length of that array, and a pointer to the array.
-
-So an array of VLEN in C is an array of nc\_vlen\_t structures. The only
-way to handle this in Fortran is with a character buffer sized correctly
-for the platform.
-
-VLEN arrays are handled differently with respect to allocation of
-memory. Generally, when reading data, it is up to the user to malloc
-(and subsequently free) the memory needed to hold the data. It is up to
-the user to ensure that enough memory is allocated.
-
-With VLENs, this is impossible. The user cannot know the size of an
-array of VLEN until after reading the array. Therefore when reading VLEN
-arrays, the netCDF library will allocate the memory for the data within
-each VLEN.
-
-It is up to the user, however, to eventually free this memory. This is
-not just a matter of one call to free, with the pointer to the array of
-VLENs; each VLEN contains a pointer which must be freed.
-
-Compression is permitted but may not be effective for VLEN data, because
-the compression is applied to the nc\_vlen\_t structures, rather than
-the actual data.
-
-  ------------------------ ------------------------ ------------------------
-  [5.7.1 Define a Variable                          
-  Length Array (VLEN):                              
-  NF90\_DEF\_VLEN](#NF90_0                          
-  05fDEF_005fVLEN)                                  
-
-  [5.7.2 Learning about a                           
-  Variable Length Array                             
-  (VLEN) Type:                                      
-  NF90\_INQ\_VLEN](#NF90_0                          
-  05fINQ_005fVLEN)                                  
-
-  [5.7.3 Releasing Memory                           
-  for a Variable Length                             
-  Array (VLEN) Type:                                
-  NF90\_FREE\_VLEN](#NF90_                          
-  005fFREE_005fVLEN)                                
-  ------------------------ ------------------------ ------------------------
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------ -------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ----------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Variable-Length-Array "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fVLEN "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#Variable-Length-Array "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------ -------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ----------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-### 5.7.1 Define a Variable Length Array (VLEN): NF90\_DEF\_VLEN {.subsection}
-
-Use this function to define a variable length array type.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_def_vlen(ncid, name, |
-|                                      |  base_typeid, xtypeid)               |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     character (len = *), intent(in)  |
-|                                      | :: name                              |
-|                                      |     integer, intent(in) :: base_type |
-|                                      | id                                   |
-|                                      |     integer, intent(out) :: xtypeid  |
-|                                      |     integer :: nf90_def_vlen         |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The ncid of the file to create the VLEN type in.
-
- `NAME` 
-
-:   A name for the VLEN type.
-
- `BASE_TYPEID`
-
-:   The typeid of the base type of the VLEN. For example, for a VLEN of
-    shorts, the base type is NF90\_SHORT. This can be a user
-    defined type.
-
- `XTYPEP`
-
-:   The typeid of the new VLEN type will be set here.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EMAXNAME`
-
-:   NF90\_MAX\_NAME exceeded.
-
- `NF90_ENAMEINUSE`
-
-:   Name is already in use.
-
- `NF90_EBADNAME`
-
-:   Attribute or variable name contains illegal characters.
-
- `NF90_EBADID`
-
-:   ncid invalid.
-
- `NF90_EBADGRPID`
-
-:   Group ID part of ncid was invalid.
-
- `NF90_EINVAL`
-
-:   Size is invalid.
-
- `NF90_ENOMEM`
-
-:   Out of memory.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------ --------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ----------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fDEF_005fVLEN "Previous section in reading order")\]   \[[>](#NF90_005fFREE_005fVLEN "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#Variable-Length-Array "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------ --------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ----------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-### 5.7.2 Learning about a Variable Length Array (VLEN) Type: NF90\_INQ\_VLEN {.subsection}
-
-Use this type to learn about a vlen.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_vlen(ncid, xtype |
-|                                      | , name, datum_size, base_nc_type)    |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     character (len = *), intent(out) |
-|                                      |  :: name                             |
-|                                      |     integer, intent(out) :: datum_si |
-|                                      | ze                                   |
-|                                      |     integer, intent(out) :: base_nc_ |
-|                                      | type                                 |
-|                                      |     integer :: nf90_inq_vlen         |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The ncid of the file that contains the VLEN type.
-
- `XTYPE`
-
-:   The type of the VLEN to inquire about.
-
- `NAME`
-
-:   The name of the VLEN type. The name will be NF90\_MAX\_NAME
-    characters or less.
-
- `DATUM_SIZEP`
-
-:   A pointer to a size\_t, this will get the size of one element of
-    this vlen.
-
- `BASE_NF90_TYPEP`
-
-:   An integer that will get the type of the VLEN base type. (In other
-    words, what type is this a VLEN of?)
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADTYPE`
-
-:   Can’t find the typeid.
-
- `NF90_EBADID`
-
-:   ncid invalid.
-
- `NF90_EBADGRPID`
-
-:   Group ID part of ncid was invalid.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------ ---------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ----------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fVLEN "Previous section in reading order")\]   \[[>](#Opaque-Type "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#Variable-Length-Array "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------ ---------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ----------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-### 5.7.3 Releasing Memory for a Variable Length Array (VLEN) Type: NF90\_FREE\_VLEN {.subsection}
-
-When a VLEN is read into user memory from the file, the HDF5 library
-performs memory allocations for each of the variable length arrays
-contained within the VLEN structure. This memory must be freed by the
-user to avoid memory leaks.
-
-This violates the normal netCDF expectation that the user is responsible
-for all memory allocation. But, with VLEN arrays, the underlying HDF5
-library allocates the memory for the user, and the user is responsible
-for deallocating that memory.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_free_vlen(vl)        |
-|                                      |     character (len = *), intent(in)  |
-|                                      | :: vlen                              |
-|                                      |     integer :: nf90_free_vlen        |
-|                                      |   end function nf90_free_vlen        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `VL`
-
-:   The variable length array structure which is to be freed.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADTYPE`
-
-:   Can’t find the typeid.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------- ---------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fFREE_005fVLEN "Previous section in reading order")\]   \[[>](#NF90_005fDEF_005fOPAQUE "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#User-Defined-Data-Types "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------- ---------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-5.8 Opaque Type Introduction {.section}
-----------------------------
-
-NetCDF-4 added support for the opaque type. This is not supported in
-classic or 64-bit offset files.
-
-The opaque type is a type which is a collection of objects of a known
-size. (And each object is the same size). Nothing is known to netCDF
-about the contents of these blobs of data, except their size in bytes,
-and the name of the type.
-
-To use an opaque type, first define it with [Creating Opaque Types:
-NF90\_DEF\_OPAQUE](#NF90_005fDEF_005fOPAQUE). If encountering an enum
-type in a new data file, use [Learn About an Opaque Type:
-NF90\_INQ\_OPAQUE](#NF90_005fINQ_005fOPAQUE) to learn its name and size.
-
-  ------------------------ ------------------------ ------------------------
-  [5.8.1 Creating Opaque                            
-  Types:                                            
-  NF90\_DEF\_OPAQUE](#NF90                          
-  _005fDEF_005fOPAQUE)                              
-
-  [5.8.2 Learn About an                             
-  Opaque Type:                                      
-  NF90\_INQ\_OPAQUE](#NF90                          
-  _005fINQ_005fOPAQUE)                              
-  ------------------------ ------------------------ ------------------------
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------- ---------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Opaque-Type "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fOPAQUE "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#Opaque-Type "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------- ---------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-### 5.8.1 Creating Opaque Types: NF90\_DEF\_OPAQUE {.subsection}
-
-Create an opaque type. Provide a size and a name.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_def_opaque(ncid, siz |
-|                                      | e, name, xtype)                      |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: size      |
-|                                      |     character (len = *), intent(in)  |
-|                                      | :: name                              |
-|                                      |     integer, intent(out) :: xtype    |
-|                                      |     integer :: nf90_def_opaque       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The groupid where the type will be created. The type may be used
-    anywhere in the file, no matter what group it is in.
-
- `NAME`
-
-:   The name for this type. Must be shorter than NF90\_MAX\_NAME.
-
- `SIZE`
-
-:   The size of each opaque object.
-
- `TYPEIDP`
-
-:   Pointer where the new typeid for this type is returned. Use this
-    typeid when defining variables of this type with [Create a Variable:
-    `NF90_DEF_VAR`](#NF90_005fDEF_005fVAR).
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADTYPEID`
-
-:   Bad typeid.
-
- `NF90_EBADFIELDID`
-
-:   Bad fieldid.
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-  ------------------------ ------------------------ ------------------------
-  [5.8.2 Learn About an                             
-  Opaque Type:                                      
-  NF90\_INQ\_OPAQUE](#NF90                          
-  _005fINQ_005fOPAQUE)                              
-  ------------------------ ------------------------ ------------------------
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------- -------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fDEF_005fOPAQUE "Previous section in reading order")\]   \[[>](#Enum-Type "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#Opaque-Type "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------- -------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-### 5.8.2 Learn About an Opaque Type: NF90\_INQ\_OPAQUE {.subsection}
-
-Given a typeid, get the information about an opaque type.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_opaque(ncid, xty |
-|                                      | pe, name, size)                      |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     character (len = *), intent(out) |
-|                                      |  :: name                             |
-|                                      |     integer, intent(out) :: size     |
-|                                      |     integer :: nf90_inq_opaque       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The ncid for the group containing the opaque type.
-
- `XTYPE`
-
-:   The typeid for this opaque type, as returned by NF90\_DEF\_COMPOUND,
-    or NF90\_INQ\_VAR.
-
- `NAME`
-
-:   The name of the opaque type will be copied here. It will be
-    NF90\_MAX\_NAME bytes or less.
-
- `SIZEP`
-
-:   The size of the opaque type will be copied here.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADTYPEID`
-
-:   Bad typeid.
-
- `NF90_EBADFIELDID`
-
-:   Bad fieldid.
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------- -------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fOPAQUE "Previous section in reading order")\]   \[[>](#NF90_005fDEF_005fENUM "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#User-Defined-Data-Types "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------- -------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ------------------------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-5.9 Enum Type Introduction {.section}
---------------------------
-
-NetCDF-4 added support for the enum type. This is not supported in
-classic or 64-bit offset files.
-
-  ------------------------ ------------------------ ------------------------
-  [5.9.1 Creating a Enum                            
-  Type:                                             
-  NF90\_DEF\_ENUM](#NF90_0                          
-  05fDEF_005fENUM)                                  
-
-  [5.9.2 Inserting a Field                          
-  into a Enum Type:                                 
-  NF90\_INSERT\_ENUM](#NF9                          
-  0_005fINSERT_005fENUM)                            
-
-  [5.9.3 Learn About a                              
-  Enum Type:                                        
-  NF90\_INQ\_ENUM](#NF90_0                          
-  05fINQ_005fENUM)                                  
-
-  [5.9.4 Learn the Name of                          
-  a Enum Type:                                      
-  nf90\_inq\_enum\_member]                          
-  (#NF90_005fINQ_005fENUM_                          
-  005fMEMBER)                                       
-
-  [5.9.5 Learn the Name of                          
-  a Enum Type:                                      
-  NF90\_INQ\_ENUM\_IDENT](                          
-  #NF90_005fINQ_005fENUM_0                          
-  05fIDENT)                                         
-  ------------------------ ------------------------ ------------------------
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------ ----------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ----------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Enum-Type "Previous section in reading order")\]   \[[>](#NF90_005fINSERT_005fENUM "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#Enum-Type "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------ ----------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ----------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-### 5.9.1 Creating a Enum Type: NF90\_DEF\_ENUM {.subsection}
-
-Create an enum type. Provide an ncid, a name, and a base integer type.
-
-After calling this function, fill out the type with repeated calls to
-NF90\_INSERT\_ENUM (see section [Inserting a Field into a Enum Type:
-NF90\_INSERT\_ENUM](#NF90_005fINSERT_005fENUM)). Call NF90\_INSERT\_ENUM
-once for each value you wish to make part of the enumeration.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_def_enum(ncid, base_ |
-|                                      | typeid, name, typeid)                |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: base_type |
-|                                      | id                                   |
-|                                      |     character (len = *), intent(in)  |
-|                                      | :: name                              |
-|                                      |     integer, intent(out) :: typeid   |
-|                                      |     integer :: nf90_def_enum         |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The groupid where this compound type will be created.
-
- `BASE_TYPEID`
-
-:   The base integer type for this enum. Must be one of: NF90\_BYTE,
-    NF90\_UBYTE, NF90\_SHORT, NF90\_USHORT, NF90\_INT, NF90\_UINT,
-    NF90\_INT64, NF90\_UINT64.
-
- `NAME`
-
-:   The name of the new enum type.
-
- `TYPEIDP`
-
-:   The typeid of the new type will be placed here.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad group id.
-
- `NF90_ENAMEINUSE`
-
-:   That name is in use. Compound type names must be unique in the
-    data file.
-
- `NF90_EMAXNAME`
-
-:   Name exceeds max length NF90\_MAX\_NAME.
-
- `NF90_EBADNAME`
-
-:   Name contains illegal characters.
-
- `NF90_ENOTNC4`
-
-:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
-    operations can only be performed on files defined with a create mode
-    which includes flag NF90\_NETCDF4. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_ESTRICTNC3`
-
-:   This file was created with the strict netcdf-3 flag, therefore
-    netcdf-4 operations are not allowed. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
- `NF90_EPERM`
-
-:   Attempt to write to a read-only file.
-
- `NF90_ENOTINDEFINE`
-
-:   Not in define mode.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------ -------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ----------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fDEF_005fENUM "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fENUM "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#Enum-Type "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------ -------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ----------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-### 5.9.2 Inserting a Field into a Enum Type: NF90\_INSERT\_ENUM {.subsection}
-
-Insert a named member into a enum type.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_insert_enum(ncid, xt |
-|                                      | ype, name, value)                    |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     character (len = *), intent(in)  |
-|                                      | :: name                              |
-|                                      |     integer, intent(in) :: value     |
-|                                      |     integer :: nf90_insert_enum      |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The ncid of the group which contains the type.
-
- `TYPEID`
-
-:   The typeid for this enum type, as returned by nf90\_def\_enum,
-    or nf90\_inq\_var.
-
- `IDENTIFIER`
-
-:   The identifier of the new member.
-
- `VALUE`
-
-:   The value that is to be associated with this member.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADID`
-
-:   Bad group id.
-
- `NF90_ENAMEINUSE`
-
-:   That name is in use. Field names must be unique within a enum type.
-
- `NF90_EMAXNAME`
-
-:   Name exceed max length NF90\_MAX\_NAME.
-
- `NF90_EBADNAME`
-
-:   Name contains illegal characters.
-
- `NF90_ENOTNC4`
-
-:   Attempting a netCDF-4 operation on a netCDF-3 file. NetCDF-4
-    operations can only be performed on files defined with a create mode
-    which includes flag NF90\_NETCDF4. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_ESTRICTNC3`
-
-:   This file was created with the strict netcdf-3 flag, therefore
-    netcdf-4 operations are not allowed. (see section
-    [NF90\_OPEN](#NF90_005fOPEN)).
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
- `NF90_ENOTINDEFINE`
-
-:   Not in define mode.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  --------------------------------------------------------------------------- ------------------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ----------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINSERT_005fENUM "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fENUM_005fMEMBER "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#Enum-Type "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  --------------------------------------------------------------------------- ------------------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ----------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-### 5.9.3 Learn About a Enum Type: NF90\_INQ\_ENUM {.subsection}
-
-Get information about a user-defined enumeration type.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_enum(ncid, xtype |
-|                                      | , name, base_nc_type, base_size, num |
-|                                      | _members)                            |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     character (len = *), intent(out) |
-|                                      |  :: name                             |
-|                                      |     integer, intent(out) :: base_nc_ |
-|                                      | type                                 |
-|                                      |     integer, intent(out) :: base_siz |
-|                                      | e                                    |
-|                                      |     integer, intent(out) :: num_memb |
-|                                      | ers                                  |
-|                                      |     integer :: nf90_inq_enum         |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The group ID of the group which holds the enum type.
-
- `XTYPE`
-
-:   The typeid for this enum type, as returned by NF90\_DEF\_ENUM,
-    or NF90\_INQ\_VAR.
-
- `NAME`
-
-:   Character array which will get the name. It will have a maximum
-    length of NF90\_MAX\_NAME.
-
- `BASE_NF90_TYPE`
-
-:   An integer which will get the base integer type of this enum.
-
- `BASE_SIZE`
-
-:   An integer which will get the size (in bytes) of the base integer
-    type of this enum.
-
- `NUM_MEMBERS`
-
-:   An integer which will get the number of members defined for this
-    enumeration type.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADTYPEID`
-
-:   Bad type id.
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------ ------------------------------------------------------------------------------ --- ------------------------------------------------------------------------------------------ ----------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fENUM "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fENUM_005fIDENT "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#Enum-Type "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------ ------------------------------------------------------------------------------ --- ------------------------------------------------------------------------------------------ ----------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-### 5.9.4 Learn the Name of a Enum Type: nf90\_inq\_enum\_member {.subsection}
-
-Get information about a member of an enum type.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_enum_member(ncid |
-|                                      | , xtype, idx, name, value)           |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     integer, intent(in) :: idx       |
-|                                      |     character (len = *), intent(out) |
-|                                      |  :: name                             |
-|                                      |     integer, intent(in) :: value     |
-|                                      |     integer :: nf90_inq_enum_member  |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The groupid where this enum type exists.
-
- `XTYPE`
-
-:   The typeid for this enum type.
-
- `IDX`
-
-:   The one-based index number for the member of interest.
-
- `NAME`
-
-:   A character array which will get the name of the member. It will
-    have a maximum length of NF90\_MAX\_NAME.
-
- `VALUE`
-
-:   An integer that will get the value associated with this member.
-
-Errors {.heading}
-------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADTYPEID`
-
-:   Bad type id.
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------------------------- -------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ----------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fENUM_005fMEMBER "Previous section in reading order")\]   \[[>](#Variables "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#Enum-Type "Up section")\]   \[[>>](#Variables "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------------------------------- -------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ----------------------------------- ------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-### 5.9.5 Learn the Name of a Enum Type: NF90\_INQ\_ENUM\_IDENT {.subsection}
-
-Get the name which is associated with an enum member value.
-
-This is similar to NF90\_INQ\_ENUM\_MEMBER, but instead of using the
-index of the member, you use the value of the member.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_enum_ident(ncid, |
-|                                      |  xtype, value, idx)                  |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: xtype     |
-|                                      |     integer, intent(in) :: value     |
-|                                      |     integer, intent(out) :: idx      |
-|                                      |     integer :: nf90_inq_enum_ident   |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   The groupid where this enum type exists.
-
- `XTYPE`
-
-:   The typeid for this enum type.
-
- `VALUE`
-
-:   The value for which an identifier is sought.
-
- `IDENTIFIER`
-
-:   A character array that will get the identifier. It will have a
-    maximum length of NF90\_MAX\_NAME.
-
-Return Code {.heading}
------------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_EBADTYPEID`
-
-:   Bad type id, or not an enum type.
-
- `NF90_EHDFERR`
-
-:   An error was reported by the HDF5 layer.
-
- `NF90_EINVAL`
-
-:   The value was not found in the enum.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  ---------------------------------------------------------------------------------- --------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ----------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fENUM_005fIDENT "Previous section in reading order")\]   \[[>](#Variables-Introduction "Next section in reading order")\]       \[[<<](#User-Defined-Data-Types "Beginning of this chapter or previous chapter")\]   \[[Up](#Top "Up section")\]   \[[>>](#Attributes "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ---------------------------------------------------------------------------------- --------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------ ----------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-6. Variables {.chapter}
-============
-
-  ------------------------ ------------------------ ------------------------
-  [6.1 Variables                                    
-  Introduction](#Variables                          
-  -Introduction)                                    
-
-  [6.2 Language Types                               
-  Corresponding to netCDF                           
-  external data                                     
-  types](#Language_002dTyp                          
-  es)                                               
-
-  [6.3 Create a Variable:                           Create a Variable
-  `NF90_DEF_VAR`](#NF90_00                          
-  5fDEF_005fVAR)                                    
-
-  [6.4 Define Fill                                  
-  Parameters for a                                  
-  Variable:                                         
-  `nf90_def_var_fill`](#NF                          
-  90_005fDEF_005fVAR_005fF                          
-  ILL)                                              
-
-  [6.5 Learn About Fill                             
-  Parameters for a                                  
-  Variable:                                         
-  `NF90_INQ_VAR_FILL`](#NF                          
-  90_005fINQ_005fVAR_005fF                          
-  ILL)                                              
-
-  [6.6 Get Information                              Get Var Metadata
-  about a Variable from                             
-  Its ID:                                           
-  NF90\_INQUIRE\_VARIABLE]                          
-  (#NF90_005fINQUIRE_005fV                          
-  ARIABLE)                                          
-
-  [6.7 Get the ID of a                              
-  variable from the name:                           
-  NF90\_INQ\_VARID](#NF90_                          
-  005fINQ_005fVARID)                                
-
-  [6.8 Writing Data                                 Write data
-  Values:                                           
-  NF90\_PUT\_VAR](#NF90_00                          
-  5fPUT_005fVAR)                                    
-
-  [6.9 Reading Data                                 Read data
-  Values:                                           
-  NF90\_GET\_VAR](#NF90_00                          
-  5fGET_005fVAR)                                    
-
-  [6.10 Reading and                                 
-  Writing Character String                          
-  Values](#Reading-and-Wri                          
-  ting-Character-String-Va                          
-  lues)                                             
-
-  [6.11 Fill                                        What’s Written Where
-  Values](#Fill-Values)                             there’s No Data?
-
-  [6.12                                             
-  NF90\_RENAME\_VAR](#NF90                          
-  _005fRENAME_005fVAR)                              
-
-  [6.13 Change between                              
-  Collective and                                    
-  Independent Parallel                              
-  Access:                                           
-  NF90\_VAR\_PAR\_ACCESS](                          
-  #NF90_005fVAR_005fPAR_00                          
-  5fACCESS)                                         
-  ------------------------ ------------------------ ------------------------
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------ ----------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Variables "Previous section in reading order")\]   \[[>](#Language_002dTypes "Next section in reading order")\]       \[[<<](#Variables "Beginning of this chapter or previous chapter")\]   \[[Up](#Variables "Up section")\]   \[[>>](#Attributes "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------ ----------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-6.1 Variables Introduction {.section}
---------------------------
-
-Variables for a netCDF dataset are defined when the dataset is created,
-while the netCDF dataset is in define mode. Other variables may be added
-later by reentering define mode. A netCDF variable has a name, a type,
-and a shape, which are specified when it is defined. A variable may also
-have values, which are established later in data mode.
-
-Ordinarily, the name, type, and shape are fixed when the variable is
-first defined. The name may be changed, but the type and shape of a
-variable cannot be changed. However, a variable defined in terms of the
-unlimited dimension can grow without bound in that dimension.
-
-A netCDF variable in an open netCDF dataset is referred to by a small
-integer called a variable ID.
-
-Variable IDs reflect the order in which variables were defined within a
-netCDF dataset. Variable IDs are 1, 2, 3,..., in the order in which the
-variables were defined. A function is available for getting the variable
-ID from the variable name and vice-versa.
-
-Attributes (see [Attributes](#Attributes)) may be associated with a
-variable to specify such properties as units.
-
-Operations supported on variables are:
-
--   Create a variable, given its name, data type, and shape.
--   Get a variable ID from its name.
--   Get a variable’s name, data type, shape, and number of attributes
-    from its ID.
--   Put a data value into a variable, given variable ID, indices,
-    and value.
--   Put an array of values into a variable, given variable ID, corner
-    indices, edge lengths, and a block of values.
--   Put a subsampled or mapped array-section of values into a variable,
-    given variable ID, corner indices, edge lengths, stride vector,
-    index mapping vector, and a block of values.
--   Get a data value from a variable, given variable ID and indices.
--   Get an array of values from a variable, given variable ID, corner
-    indices, and edge lengths.
--   Get a subsampled or mapped array-section of values from a variable,
-    given variable ID, corner indices, edge lengths, stride vector, and
-    index mapping vector.
--   Rename a variable.
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------- ------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Variables-Introduction "Previous section in reading order")\]   \[[>](#NF90_005fDEF_005fVAR "Next section in reading order")\]       \[[<<](#Variables "Beginning of this chapter or previous chapter")\]   \[[Up](#Variables "Up section")\]   \[[>>](#Attributes "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------- ------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-6.2 Language Types Corresponding to netCDF external data types {.section}
---------------------------------------------------------------
-
-The following table gives the netCDF external data types and the
-corresponding type constants for defining variables in the FORTRAN
-interface:
-
-  -------- ---------------------- ------
-  Type     FORTRAN API Mnemonic   Bits
-  byte     NF90\_BYTE             8
-  char     NF90\_CHAR             8
-  short    NF90\_SHORT            16
-  int      NF90\_INT              32
-  float    NF90\_FLOAT            32
-  double   NF90\_DOUBLE           64
-  -------- ---------------------- ------
-
-The first column gives the netCDF external data type, which is the same
-as the CDL data type. The next column gives the corresponding Fortran 90
-parameter for use in netCDF functions (the parameters are defined in the
-netCDF Fortran 90 module netcdf.f90). The last column gives the number
-of bits used in the external representation of values of the
-corresponding type.
-
-Note that there are no netCDF types corresponding to 64-bit integers or
-to characters wider than 8 bits in the current version of the netCDF
-library.
-
-------------------------------------------------------------------------
-
-  --------------------------------------------------------------------- ---------------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Language_002dTypes "Previous section in reading order")\]   \[[>](#NF90_005fDEF_005fVAR_005fFILL "Next section in reading order")\]       \[[<<](#Variables "Beginning of this chapter or previous chapter")\]   \[[Up](#Variables "Up section")\]   \[[>>](#Attributes "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  --------------------------------------------------------------------- ---------------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-6.3 Create a Variable: `NF90_DEF_VAR` {.section}
--------------------------------------
-
-The function NF90\_DEF\_VAR adds a new variable to an open netCDF
-dataset in define mode. It returns (as an argument) a variable ID, given
-the netCDF ID, the variable name, the variable type, the number of
-dimensions, and a list of the dimension IDs.
-
-Optional arguments allow additional settings for variables in
-netCDF-4/HDF5 files. These parameters allow data compression and control
-of the layout of the data on disk for performance tuning. These
-parameters may also be used to set the chunk sizes to get chunked
-storage, or to set the contiguous flag to get contiguous storage.
-
-Variables that make use of one or more unlimited dimensions,
-compression, or checksums must use chunking. Such variables are created
-with default chunk sizes of 1 for each unlimited dimension and the
-dimension length for other dimensions, except that if the resulting
-chunks are too large, the default chunk sizes for non-record dimensions
-are reduced.
-
-All parameters after the varid are optional, and only supported if
-netCDF was built with netCDF-4 features enabled, and if the variable is
-in a netCDF-4/HDF5 file.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_def_var(ncid, name, x |
-|                                      | type, dimids, varid, contiguous, &   |
-|                                      |        chunksizes, deflate_level, sh |
-|                                      | uffle, fletcher32, endianness, &     |
-|                                      |        cache_size, cache_nelems, cac |
-|                                      | he_preemption)                       |
-|                                      |    integer, intent(in) :: ncid       |
-|                                      |    character (len = *), intent(in) : |
-|                                      | : name                               |
-|                                      |    integer, intent( in) :: xtype     |
-|                                      |    integer, scalar or dimension(:),  |
-|                                      | intent(in), optional :: dimids       |
-|                                      |    integer, intent(out) :: varid     |
-|                                      |    logical, optional, intent(in) ::  |
-|                                      | contiguous                           |
-|                                      |    integer, optional, dimension(:),  |
-|                                      | intent(in) :: chunksizes             |
-|                                      |    integer, optional, intent(in) ::  |
-|                                      | deflate_level                        |
-|                                      |    logical, optional, intent(in) ::  |
-|                                      | shuffle, fletcher32                  |
-|                                      |    integer, optional, intent(in) ::  |
-|                                      | endianness                           |
-|                                      |     integer, optional, intent(in) :: |
-|                                      |  cache_size, cache_nelems, cache_pre |
-|                                      | emption                              |
-|                                      |    integer                           |
-|                                      |             :: nf90_def_var          |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `name`
-
-:   Variable name.
-
- `xtype`
-
-:   One of the set of predefined netCDF external data types. The type of
-    this parameter, NF90\_TYPE, is defined in the netCDF header file.
-    The valid netCDF external data types are NF90\_BYTE, NF90\_CHAR,
-    NF90\_SHORT, NF90\_INT, NF90\_FLOAT, and NF90\_DOUBLE. If the file
-    is a NetCDF-4/HDF5 file, the additional types NF90\_UBYTE,
-    NF90\_USHORT, NF90\_UINT, NF90\_INT64, NF90\_UINT64, and
-    NF90\_STRING may be used, as well as a user defined type ID.
-
- `dimids`
-
-:   Scalar or vector of dimension IDs corresponding to the
-    variable dimensions. For example, a vector of 2 dimension IDs
-    specifies a 2-dimensional matrix.
-
-    If an integer is passed for this parameter, a 1-D variable
-    is created.
-
-    If this parameter is not passed (or is a 1D array of size zero) it
-    means the variable is a scalar with no dimensions.
-
-    For classic data model files, if the ID of the unlimited dimension
-    is included, it must be first. In expanded model netCDF4/HDF5 files,
-    there may be any number of unlimited dimensions, and they may be
-    used in any element of the dimids array.
-
-    This argument is optional, and if absent specifies a scalar with
-    no dimensions.
-
- `varid`
-
-:   Returned variable ID.
-
- `storage`
-
-:   If NF90\_CONTIGUOUS, then contiguous storage is used for
-    this variable. Variables that use deflation, shuffle filter, or
-    checksums, or that have one or more unlimited dimensions cannot use
-    contiguous storage.
-
-    If NF90\_CHUNKED, then chunked storage is used for this variable.
-    Chunk sizes may be specified with the chunksizes parameter. Default
-    sizes will be used if chunking is required and this function is
-    not called.
-
-    By default contiguous storage is used for fix-sized variables when
-    conpression, chunking, shuffle, and checksums are not used.
-
- `chunksizes`
-
-:   An array of chunk number of elements. This array has the number of
-    elements along each dimension of the data chunk. The array must have
-    the one chunksize for each dimension in the variable.
-
-    The total size of a chunk must be less than 4 GiB. That is, the
-    product of all chunksizes and the size of the data (or the size of
-    nc\_vlen\_t for VLEN types) must be less than 4 GiB. (This is a very
-    large chunk size in any case.)
-
-    If not provided, but chunked data are needed, then default
-    chunksizes will be chosen. For more information see [The NetCDF
-    Users Guide: (netcdf)Chunking](netcdf.html#Chunking) section
-    ‘Chunking’ in The NetCDF Users Guide.
-
- `shuffle`
-
-:   If non-zero, turn on the shuffle filter.
-
- `deflate_level`
-
-:   If the deflate parameter is non-zero, set the deflate level to
-    this value. Must be between 1 and 9.
-
- `fletcher32`
-
-:   Set to true to turn on fletcher32 checksums for this variable.
-
- `endianness`
-
-:   Set to NF90\_ENDIAN\_LITTLE for little-endian format,
-    NF90\_ENDIAN\_BIG for big-endian format, and NF90\_ENDIAN\_NATIVE
-    (the default) for the native endianness of the platform.
-
- `cache_size`
-
-:   The size of the per-variable cache in MegaBytes.
-
- `cache_nelems`
-
-:   The number slots in the per-variable chunk cache (should be a prime
-    number larger than the number of chunks in the cache).
-
- `cache_preemption`
-
-:   The preemtion value must be between 0 and 100 inclusive and
-    indicates how much chunks that have been fully read are favored
-    for preemption. A value of zero means fully read chunks are treated
-    no differently than other chunks (the preemption is strictly LRU)
-    while a value of 100 means fully read chunks are always preempted
-    before other chunks.
-
-Return Codes {.heading}
-------------
-
-NF90\_DEF\_VAR returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error.
-
--   NF90\_EBADNAME The specified variable name is the name of another
-    existing variable.
--   NF90\_EBADTYPE The specified type is not a valid netCDF type.
--   NF90\_EMAXDIMS The specified number of dimensions is negative or
-    more than the constant NF90\_MAX\_VAR\_DIMS, the maximum number of
-    dimensions permitted for a netCDF variable. (Does not apply to
-    netCDF-4/HDF5 files unless they were created with the
-    CLASSIC\_MODE flag.)
--   NF90\_EBADDIM One or more of the dimension IDs in the list of
-    dimensions is not a valid dimension ID for the netCDF dataset.
--   NF90\_EMAXVARS The number of variables would exceed the constant
-    NF90\_MAX\_VARS, the maximum number of variables permitted in a
-    classic netCDF dataset. (Does not apply to netCDF-4/HDF5 files
-    unless they were created with the CLASSIC\_MODE flag.)
--   NF90\_BADID The specified netCDF ID does not refer to an open
-    netCDF dataset.
--   NF90\_ENOTNC4 NetCDF-4 operation attempted on a files that is not a
-    netCDF-4/HDF5 file. Only variables in NetCDF-4/HDF5 files may use
-    compression, chunking, and endianness control.
--   NF90\_ENOTVAR Can’t find this variable.
--   NF90\_EINVAL Invalid input. This may be because contiguous storage
-    is requested for a variable that has compression, checksums,
-    chunking, or one or more unlimited dimensions.
--   NF90\_ELATEDEF This variable has already been the subject of a
-    NF90\_ENDDEF call. Once enddef has been called, it is impossible to
-    set the chunking for a variable. (In netCDF-4/HDF5 files
-    NF90\_ENDDEF will be called automatically for any data read
-    or write.)
--   NF90\_ENOTINDEFINE Not in define mode. This is returned for netCDF
-    classic or 64-bit offset files, or for netCDF-4 files, when they
-    were been created with NF90\_STRICT\_NC3 flag. (see section
-    [NF90\_CREATE](#NF90_005fCREATE)).
--   NF90\_ESTRICTNC3 Trying to create a var some place other than the
-    root group in a netCDF file with NF90\_STRICT\_NC3 turned on.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_DEF\_VAR to create a variable named rh of
-type double with three dimensions, time, lat, and lon in a new netCDF
-dataset named foo.nc:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: status, ncid             |
-|                                      |  integer :: LonDimId, LatDimId, Time |
-|                                      | DimId                                |
-|                                      |  integer :: RhVarId                  |
-|                                      |  ...                                 |
-|                                      |  status = nf90_create("foo.nc", nf90 |
-|                                      | _NoClobber, ncid)                    |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_error(status)                      |
-|                                      |  ...                                 |
-|                                      |  ! Define the dimensions             |
-|                                      |  status = nf90_def_dim(ncid, "lat",  |
-|                                      | 5, LatDimId)                         |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_error(status)                      |
-|                                      |  status = nf90_def_dim(ncid, "lon",  |
-|                                      | 10, LonDimId)                        |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_error(status)                      |
-|                                      |  status = nf90_def_dim(ncid, "time", |
-|                                      |  nf90_unlimited, TimeDimId)          |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_error(status)                      |
-|                                      |  ...                                 |
-|                                      |  ! Define the variable               |
-|                                      |  status = nf90_def_var(ncid, "rh", n |
-|                                      | f90_double, &                        |
-|                                      |                        (/ LonDimId,  |
-|                                      | LatDimID, TimeDimID /), RhVarId)     |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_error(status)                      |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-In the following example, from nf\_test/f90tst\_vars2.f90, chunking,
-checksums, and endianness control are all used in a netCDF-4/HDF5 file.
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   ! Create the netCDF file.          |
-|                                      |   call check(nf90_create(FILE_NAME,  |
-|                                      | nf90_netcdf4, ncid, cache_nelems = C |
-|                                      | ACHE_NELEMS, &                       |
-|                                      |        cache_size = CACHE_SIZE))     |
-|                                      |                                      |
-|                                      |   ! Define the dimensions.           |
-|                                      |   call check(nf90_def_dim(ncid, "x", |
-|                                      |  NX, x_dimid))                       |
-|                                      |   call check(nf90_def_dim(ncid, "y", |
-|                                      |  NY, y_dimid))                       |
-|                                      |   dimids =  (/ y_dimid, x_dimid /)   |
-|                                      |                                      |
-|                                      |   ! Define some variables.           |
-|                                      |   chunksizes = (/ NY, NX /)          |
-|                                      |   call check(nf90_def_var(ncid, VAR1 |
-|                                      | _NAME, NF90_INT, dimids, varid1, chu |
-|                                      | nksizes = chunksizes, &              |
-|                                      |        shuffle = .TRUE., fletcher32  |
-|                                      | = .TRUE., endianness = nf90_endian_b |
-|                                      | ig, deflate_level = DEFLATE_LEVEL))  |
-|                                      |   call check(nf90_def_var(ncid, VAR2 |
-|                                      | _NAME, NF90_INT, dimids, varid2, con |
-|                                      | tiguous = .TRUE.))                   |
-|                                      |   call check(nf90_def_var(ncid, VAR3 |
-|                                      | _NAME, NF90_INT64, varid3))          |
-|                                      |   call check(nf90_def_var(ncid, VAR4 |
-|                                      | _NAME, NF90_INT, x_dimid, varid4, co |
-|                                      | ntiguous = .TRUE.))                  |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------------- ---------------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fDEF_005fVAR "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fVAR_005fFILL "Next section in reading order")\]       \[[<<](#Variables "Beginning of this chapter or previous chapter")\]   \[[Up](#Variables "Up section")\]   \[[>>](#Attributes "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------------------- ---------------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-6.4 Define Fill Parameters for a Variable: `nf90_def_var_fill` {.section}
---------------------------------------------------------------
-
-The function NF90\_DEF\_VAR\_FILL sets the fill parameters for a
-variable in a netCDF-4 file.
-
-This function must be called after the variable is defined, but before
-NF90\_ENDDEF is called.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      | NF90_DEF_VAR_FILL(INTEGER NCID, INTE |
-|                                      | GER VARID, INTEGER NO_FILL, FILL_VAL |
-|                                      | UE);                                 |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `VARID`
-
-:   Variable ID.
-
- `NO_FILL`
-
-:   Set to non-zero value to set no\_fill mode on a variable. When this
-    mode is on, fill values will not be written for the variable. This
-    is helpful in high performance applications. For netCDF-4/HDF5 files
-    (whether classic model or not), this may only be changed after the
-    variable is defined, but before it is committed to disk (i.e. before
-    the first NF90\_ENDDEF after the NF90\_DEF\_VAR.) For classic and
-    64-bit offset file, the no\_fill mode may be turned on and off at
-    any time.
-
- `FILL_VALUE`
-
-:   A value which will be used as the fill value for the variable. Must
-    be the same type as the variable. This will be written to a
-    \_FillValue attribute, created for this purpose. If NULL, this
-    argument will be ignored.
-
-Return Codes {.heading}
-------------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_BADID`
-
-:   Bad ncid.
-
- `NF90_ENOTNC4`
-
-:   Not a netCDF-4 file.
-
- `NF90_ENOTVAR`
-
-:   Can’t find this variable.
-
- `NF90_ELATEDEF`
-
-:   This variable has already been the subject of a NF90\_ENDDEF call.
-    In netCDF-4 files NF90\_ENDDEF will be called automatically for any
-    data read or write. Once enddef has been called, it is impossible to
-    set the fill for a variable.
-
- `NF90_ENOTINDEFINE`
-
-:   Not in define mode. This is returned for netCDF classic or 64-bit
-    offset files, or for netCDF-4 files, when they were been created
-    with NF90\_STRICT\_NC3 flag. (see section
-    [NF90\_CREATE](#NF90_005fCREATE)).
-
- `NF90_EPERM`
-
-:   Attempt to create object in read-only file.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------------- ---------------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fDEF_005fVAR_005fFILL "Previous section in reading order")\]   \[[>](#NF90_005fINQUIRE_005fVARIABLE "Next section in reading order")\]       \[[<<](#Variables "Beginning of this chapter or previous chapter")\]   \[[Up](#Variables "Up section")\]   \[[>>](#Attributes "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------------- ---------------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-6.5 Learn About Fill Parameters for a Variable: `NF90_INQ_VAR_FILL` {.section}
--------------------------------------------------------------------
-
-The function NF90\_INQ\_VAR\_FILL returns the fill settings for a
-variable in a netCDF-4 file.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      | NF90_INQ_VAR_FILL(INTEGER NCID, INTE |
-|                                      | GER VARID, INTEGER NO_FILL, FILL_VAL |
-|                                      | UE)                                  |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `NCID`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `VARID`
-
-:   Variable ID.
-
- `NO_FILL`
-
-:   An integer which will get a 1 if no\_fill mode is set for this
-    variable, and a zero if it is not set
-
- `FILL_VALUE`
-
-:   This will get the fill value for this variable. This parameter will
-    be ignored if it is NULL.
-
-Return Codes {.heading}
-------------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_BADID`
-
-:   Bad ncid.
-
- `NF90_ENOTNC4`
-
-:   Not a netCDF-4 file.
-
- `NF90_ENOTVAR`
-
-:   Can’t find this variable.
-
-Example {.heading}
--------
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------------- --------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fVAR_005fFILL "Previous section in reading order")\]   \[[>](#NF90_005fINQ_005fVARID "Next section in reading order")\]       \[[<<](#Variables "Beginning of this chapter or previous chapter")\]   \[[Up](#Variables "Up section")\]   \[[>>](#Attributes "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------------- --------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-6.6 Get Information about a Variable from Its ID: NF90\_INQUIRE\_VARIABLE {.section}
--------------------------------------------------------------------------
-
-NF90\_INQUIRE\_VARIABLE returns information about a netCDF variable
-given its ID. Information about a variable includes its name, type,
-number of dimensions, a list of dimension IDs describing the shape of
-the variable, and the number of variable attributes that have been
-assigned to the variable.
-
-All parameters after nAtts are optional, and only supported if netCDF
-was built with netCDF-4 features enabled, and if the variable is in a
-netCDF-4/HDF5 file.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inquire_variable(nci |
-|                                      | d, varid, name, xtype, ndims, dimids |
-|                                      | , nAtts, &                           |
-|                                      |        contiguous, chunksizes, defla |
-|                                      | te_level, shuffle, fletcher32, endia |
-|                                      | nness)                               |
-|                                      |     integer, intent(in) :: ncid, var |
-|                                      | id                                   |
-|                                      |     character (len = *), optional, i |
-|                                      | ntent(out) :: name                   |
-|                                      |     integer, optional, intent(out) : |
-|                                      | : xtype, ndims                       |
-|                                      |     integer, dimension(:), optional, |
-|                                      |  intent(out) :: dimids               |
-|                                      |     integer, optional, intent(out) : |
-|                                      | : nAtts                              |
-|                                      |     logical, optional, intent(out) : |
-|                                      | : contiguous                         |
-|                                      |     integer, optional, dimension(:), |
-|                                      |  intent(out) :: chunksizes           |
-|                                      |     integer, optional, intent(out) : |
-|                                      | : deflate_level                      |
-|                                      |     logical, optional, intent(out) : |
-|                                      | : shuffle, fletcher32                |
-|                                      |     integer, optional, intent(out) : |
-|                                      | : endianness                         |
-|                                      |     integer :: nf90_inquire_variable |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `varid`
-
-:   Variable ID.
-
- `name`
-
-:   Returned variable name. The caller must allocate space for the
-    returned name. The maximum possible length, in characters, of a
-    variable name is given by the predefined constant NF90\_MAX\_NAME.
-
- `xtype`
-
-:   Returned variable type, one of the set of predefined netCDF external
-    data types. The valid netCDF external data types are NF90\_BYTE,
-    NF90\_CHAR, NF90\_SHORT, NF90\_INT, NF90\_FLOAT, AND NF90\_DOUBLE.
-
- `ndims`
-
-:   Returned number of dimensions the variable was defined as using. For
-    example, 2 indicates a matrix, 1 indicates a vector, and 0 means the
-    variable is a scalar with no dimensions.
-
- `dimids`
-
-:   Returned vector of \*ndimsp dimension IDs corresponding to the
-    variable dimensions. The caller must allocate enough space for a
-    vector of at least \*ndimsp integers to be returned. The maximum
-    possible number of dimensions for a variable is given by the
-    predefined constant NF90\_MAX\_VAR\_DIMS.
-
- `natts`
-
-:   Returned number of variable attributes assigned to this variable.
-
- `contiguous`
-
-:   On return, set to NF90\_CONTIGUOUS if this variable uses contiguous
-    storage, NF90\_CHUNKED if it uses chunked storage.
-
- `chunksizes`
-
-:   An array of chunk sizes. The array must have the one element for
-    each dimension in the variable.
-
- `shuffle`
-
-:   True if the shuffle filter is turned on for this variable.
-
- `deflate_level`
-
-:   The deflate\_level from 0 to 9. A value of zero indicates no
-    deflation is in use.
-
- `fletcher32`
-
-:   Set to true if the fletcher32 checksum filter is turned on for
-    this variable.
-
- `endianness`
-
-:   Will be set to NF90\_ENDIAN\_LITTLE if this variable is stored in
-    little-endian format, NF90\_ENDIAN\_BIG if it is stored in
-    big-endian format, and NF90\_ENDIAN\_NATIVE if the endianness is not
-    set, and the variable is not created yet.
-
-These functions return the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The variable ID is invalid for the specified netCDF dataset.
--   The specified netCDF ID does not refer to an open netCDF dataset.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_INQ\_VAR to find out about a variable
-named rh in an existing netCDF dataset named foo.nc:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |     use netcdf                       |
-|                                      |     implicit none                    |
-|                                      |     integer                          |
-|                                      |    :: status, ncid, &                |
-|                                      |                                      |
-|                                      |       RhVarId       &                |
-|                                      |                                      |
-|                                      |       numDims, numAtts               |
-|                                      |  integer, dimension(nf90_max_var_dim |
-|                                      | s) :: rhDimIds                       |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_N |
-|                                      | oWrite, ncid)                        |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_error(status)                      |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  RhVarId)                            |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  status = nf90_inquire_variable(ncid |
-|                                      | , RhVarId, ndims = numDims, natts =  |
-|                                      | numAtts)                             |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  status = nf90_inquire_variable(ncid |
-|                                      | , RhVarId, dimids = rhDimIds(:numDim |
-|                                      | s))                                  |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------------- ------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQUIRE_005fVARIABLE "Previous section in reading order")\]   \[[>](#NF90_005fPUT_005fVAR "Next section in reading order")\]       \[[<<](#Variables "Beginning of this chapter or previous chapter")\]   \[[Up](#Variables "Up section")\]   \[[>>](#Attributes "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------------- ------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-6.7 Get the ID of a variable from the name: NF90\_INQ\_VARID {.section}
-------------------------------------------------------------
-
-Given the name of a varaible, nf90\_inq\_varid finds the variable ID.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_inq_varid(ncid, name |
-|                                      | , varid)                             |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     character (len = *), intent( in) |
-|                                      |  :: name                             |
-|                                      |     integer, intent(out) :: varid    |
-|                                      |     integer :: nf90_inq_varid        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `name`
-
-:   The variable name. The maximum possible length, in characters, of a
-    variable name is given by the predefined constant NF90\_MAX\_NAME.
-
- `varid`
-
-:   Variable ID.
-
-These functions return the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   Variable not found.
--   The specified netCDF ID does not refer to an open netCDF dataset.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_INQ\_VARID to find out about a variable
-named rh in an existing netCDF dataset named foo.nc:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |     use netcdf                       |
-|                                      |     implicit none                    |
-|                                      |     integer                          |
-|                                      |    :: status, ncid, &                |
-|                                      |                                      |
-|                                      |       RhVarId       &                |
-|                                      |                                      |
-|                                      |       numDims, numAtts               |
-|                                      |  integer, dimension(nf90_max_var_dim |
-|                                      | s) :: rhDimIds                       |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_N |
-|                                      | oWrite, ncid)                        |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_error(status)                      |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  RhVarId)                            |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  status = nf90_inquire_variable(ncid |
-|                                      | , RhVarId, ndims = numDims, natts =  |
-|                                      | numAtts)                             |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  status = nf90_inquire_variable(ncid |
-|                                      | , RhVarId, dimids = rhDimIds(:numDim |
-|                                      | s))                                  |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------- ------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQ_005fVARID "Previous section in reading order")\]   \[[>](#NF90_005fGET_005fVAR "Next section in reading order")\]       \[[<<](#Variables "Beginning of this chapter or previous chapter")\]   \[[Up](#Variables "Up section")\]   \[[>>](#Attributes "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------- ------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-6.8 Writing Data Values: NF90\_PUT\_VAR {.section}
----------------------------------------
-
-The function NF90\_PUT\_VAR puts one or more data values into the
-variable of an open netCDF dataset that is in data mode. Required inputs
-are the netCDF ID, the variable ID, and one or more data values.
-Optional inputs may indicate the starting position of the data values in
-the netCDF variable (argument start), the sampling frequency with which
-data values are written into the netCDF variable (argument stride), and
-a mapping between the dimensions of the data array and the netCDF
-variable (argument map). The values to be written are associated with
-the netCDF variable by assuming that the first dimension of the netCDF
-variable varies fastest in the Fortran 90 interface. Data values are
-converted to the external type of the variable, if necessary.
-
-Take care when using the simplest forms of this interface with record
-variables (variables that use the NF90\_UNLIMITED dimension) when you
-don’t specify how many records are to be written. If you try to write
-all the values of a record variable into a netCDF file that has no
-record data yet (hence has 0 records), nothing will be written.
-Similarly, if you try to write all the values of a record variable from
-an array but there are more records in the file than you assume, more
-in-memory data will be accessed than you expect, which may cause a
-segmentation violation. To avoid such problems, it is better to specify
-start and count arguments for variables that use the NF90\_UNLIMITED
-dimension.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_put_var(ncid, varid,  |
-|                                      | values, start, count, stride, map)   |
-|                                      |    integer,                          |
-|                                      | intent( in) :: ncid, varid           |
-|                                      |    any valid type, scalar or array o |
-|                                      | f any rank, &                        |
-|                                      |                                      |
-|                                      | intent( in) :: values                |
-|                                      |    integer, dimension(:), optional,  |
-|                                      | intent( in) :: start, count, stride, |
-|                                      |  map                                 |
-|                                      |    integer                           |
-|                                      |             :: nf90_put_var          |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `varid`
-
-:   Variable ID.
-
- `values`
-
-:   The data value(s) to be written. The data may be of any type, and
-    may be a scalar or an array of any rank. You cannot put CHARACTER
-    data into a numeric variable or numeric data into a text variable.
-    For numeric data, if the type of data differs from the netCDF
-    variable type, type conversion will occur. See [(netcdf)Type
-    Conversion](netcdf.html#Type-Conversion) section ‘Type Conversion’
-    in NetCDF Users Guide.
-
- `start`
-
-:   A vector of integers specifying the index in the variable where the
-    first (or only) of the data values will be written. The indices are
-    relative to 1, so for example, the first data value of a variable
-    would have index (1, 1, ..., 1). The elements of start correspond,
-    in order, to the variable’s dimensions. Hence, if the variable is a
-    record variable, the last index would correspond to the starting
-    record number for writing the data values.
-
-    By default, start(:) = 1.
-
- `count`
-
-:   A vector of integers specifying the number of indices selected along
-    each dimension. To write a single value, for example, specify count
-    as (1, 1, ..., 1). The elements of count correspond, in order, to
-    the variable’s dimensions. Hence, if the variable is a record
-    variable, the last element of count corresponds to a count of the
-    number of records to write.
-
-    By default, count(:numDims) = shape(values) and count(numDims + 1:)
-    = 1, where numDims = size(shape(values)).
-
- `stride`
-
-:   A vector of integers that specifies the sampling interval along each
-    dimension of the netCDF variable. The elements of the stride vector
-    correspond, in order, to the netCDF variable’s dimensions (stride(1)
-    gives the sampling interval along the most rapidly varying dimension
-    of the netCDF variable). Sampling intervals are specified in
-    type-independent units of elements (a value of 1 selects consecutive
-    elements of the netCDF variable along the corresponding dimension, a
-    value of 2 selects every other element, etc.).
-
-    By default, stride(:) = 1.
-
- `imap`
-
-:   A vector of integers that specifies the mapping between the
-    dimensions of a netCDF variable and the in-memory structure of the
-    internal data array. The elements of the index mapping vector
-    correspond, in order, to the netCDF variable’s dimensions (map(1)
-    gives the distance between elements of the internal array
-    corresponding to the most rapidly varying dimension of the
-    netCDF variable). Distances between elements are specified in units
-    of elements.
-
-    By default, edgeLengths = shape(values), and map = (/ 1,
-    (product(edgeLengths(:i)), i = 1, size(edgeLengths) - 1) /), that
-    is, there is no mapping.
-
-    Use of Fortran 90 intrinsic functions (including reshape, transpose,
-    and spread) may let you avoid using this argument.
-
-Errors {.heading}
-------
-
-NF90\_PUT\_VAR1\_ type returns the value NF90\_NOERR if no errors
-occurred. Otherwise, the returned status indicates an error. Possible
-causes of errors include:
-
--   The variable ID is invalid for the specified netCDF dataset.
--   The specified indices were out of range for the rank of the
-    specified variable. For example, a negative index or an index that
-    is larger than the corresponding dimension length will cause
-    an error.
--   The specified value is out of the range of values representable by
-    the external data type of the variable.
--   The specified netCDF is in define mode rather than data mode.
--   The specified netCDF ID does not refer to an open netCDF dataset.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_PUT\_VAR to set the (4,3,2) element of
-the variable named rh to 0.5 in an existing netCDF dataset named foo.nc.
-For simplicity in this example, we assume that we know that rh is
-dimensioned with lon, lat, and time, so we want to set the value of rh
-that corresponds to the fourth lon value, the third lat value, and the
-second time value:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncId, rhVarId, status    |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_W |
-|                                      | rite, ncid)                          |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  rhVarId)                            |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  status = nf90_put_var(ncid, rhVarId |
-|                                      | , 0.5, start = (/ 4, 3, 2 /) )       |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-In this example we use NF90\_PUT\_VAR to add or change all the values of
-the variable named rh to 0.5 in an existing netCDF dataset named foo.nc.
-We assume that we know that rh is dimensioned with lon, lat, and time.
-In this example we query the netCDF file to discover the lengths of the
-dimensions, then use the Fortran 90 intrinsic function reshape to create
-a temporary array of data values which is the same shape as the netCDF
-variable.
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer                             |
-|                                      |    :: ncId, rhVarId,status,          |
-|                                      |  &                                   |
-|                                      |                                      |
-|                                      |       lonDimID, latDimId, timeDimId, |
-|                                      |  &                                   |
-|                                      |                                      |
-|                                      |       numLons, numLats, numTimes,    |
-|                                      |  &                                   |
-|                                      |                                      |
-|                                      |       i                              |
-|                                      |  integer, dimension(nf90_max_var_dim |
-|                                      | s) :: dimIDs                         |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_W |
-|                                      | rite, ncid)                          |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  rhVarId)                            |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ! How big is the netCDF variable, t |
-|                                      | hat is, what are the lengths of      |
-|                                      |  !   its constituent dimensions?     |
-|                                      |  status = nf90_inquire_variable(ncid |
-|                                      | , rhVarId, dimids = dimIDs)          |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  status = nf90_inquire_dimension(nci |
-|                                      | d, dimIDs(1), len = numLons)         |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  status = nf90_inquire_dimension(nci |
-|                                      | d, dimIDs(2), len = numLats)         |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  status = nf90_inquire_dimension(nci |
-|                                      | d, dimIDs(3), len = numTimes)        |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  ! Make a temporary array the same s |
-|                                      | hape as the netCDF variable.         |
-|                                      |  status = nf90_put_var(ncid, rhVarId |
-|                                      | , &                                  |
-|                                      |                        reshape( &    |
-|                                      |                          (/ (0.5, i  |
-|                                      | = 1, numLons * numLats * numTimes) / |
-|                                      | ) , &                                |
-|                                      |                         shape = (/ n |
-|                                      | umLons, numLats, numTimes /) )       |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-Here is an example using NF90\_PUT\_VAR to add or change a section of
-the variable named rh to 0.5 in an existing netCDF dataset named foo.nc.
-For simplicity in this example, we assume that we know that rh is
-dimensioned with lon, lat, and time, that there are ten lon values, five
-lat values, and three time values, and that we want to replace all the
-values at the last time.
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer            :: ncId, rhVarId |
-|                                      | , status                             |
-|                                      |  integer, parameter :: numLons = 10, |
-|                                      |  numLats = 5, numTimes = 3           |
-|                                      |  real, dimension(numLons, numLats) & |
-|                                      |                     :: rhValues      |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_W |
-|                                      | rite, ncid)                          |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  rhVarId)                            |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ! Fill in all values at the last ti |
-|                                      | me                                   |
-|                                      |  rhValues(:, :) = 0.5                |
-|                                      |  status = nf90_put_var(ncid, rhVarId |
-|                                      | ,rhvalues,       &                   |
-|                                      |                        start = (/ 1, |
-|                                      |  1, numTimes /), &                   |
-|                                      |                        count = (/ nu |
-|                                      | mLats, numLons, 1 /))                |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-Here is an example of using NF90\_PUT\_VAR to write every other point of
-a netCDF variable named rh having dimensions (6, 4).
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer            :: ncId, rhVarId |
-|                                      | , status                             |
-|                                      |  integer, parameter :: numLons = 6,  |
-|                                      | numLats = 4                          |
-|                                      |  real, dimension(numLons, numLats) & |
-|                                      |                     :: rhValues = 0. |
-|                                      | 5                                    |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_W |
-|                                      | rite, ncid)                          |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  rhVarId)                            |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  ! Fill in every other value using a |
-|                                      | n array section                      |
-|                                      |  status = nf90_put_var(ncid, rhVarId |
-|                                      | , rhValues(::2, ::2), &              |
-|                                      |                        stride = (/ 2 |
-|                                      | , 2 /))                              |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-The following map vector shows the default mapping between a 2x3x4
-netCDF variable and an internal array of the same shape:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  real,    dimension(2, 3, 4):: a  !  |
-|                                      | same shape as netCDF variable        |
-|                                      |  integer, dimension(3)      :: map   |
-|                                      | = (/ 1, 2, 6 /)                      |
-|                                      |                      ! netCDF dimens |
-|                                      | ion inter-element distance           |
-|                                      |                      ! ------------- |
-|                                      | --- ----------------------           |
-|                                      |                      ! most rapidly  |
-|                                      | varying       1                      |
-|                                      |                      ! intermediate  |
-|                                      |               2 (= map(1)*2)         |
-|                                      |                      ! most slowly v |
-|                                      | arying        6 (= map(2)*3)         |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-Using the map vector above obtains the same result as simply not passing
-a map vector at all.
-
-Here is an example of using nf90\_put\_var to write a netCDF variable
-named rh whose dimensions are the transpose of the Fortran 90 array:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer                           : |
-|                                      | : ncId, rhVarId, status              |
-|                                      |  integer, parameter                : |
-|                                      | : numLons = 6, numLats = 4           |
-|                                      |  real, dimension(numLons, numLats) : |
-|                                      | : rhValues                           |
-|                                      |  ! netCDF variable has dimensions (n |
-|                                      | umLats, numLons)                     |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_W |
-|                                      | rite, ncid)                          |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  rhVarId)                            |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  !Write transposed values: map vecto |
-|                                      | r would be (/ 1, numLats /) for      |
-|                                      |  !   no transposition                |
-|                                      |  status = nf90_put_var(ncid, rhVarId |
-|                                      | ,rhValues, map = (/ numLons, 1 /))   |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-The same effect can be obtained more simply using Fortran 90 intrinsic
-functions:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer                           : |
-|                                      | : ncId, rhVarId, status              |
-|                                      |  integer, parameter                : |
-|                                      | : numLons = 6, numLats = 4           |
-|                                      |  real, dimension(numLons, numLats) : |
-|                                      | : rhValues                           |
-|                                      |  ! netCDF variable has dimensions (n |
-|                                      | umLats, numLons)                     |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_W |
-|                                      | rite, ncid)                          |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  rhVarId)                            |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  status = nf90_put_var(ncid, rhVarId |
-|                                      | , transpose(rhValues))               |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------------- ------------------------------------------------------------------------------------------ --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fPUT_005fVAR "Previous section in reading order")\]   \[[>](#Reading-and-Writing-Character-String-Values "Next section in reading order")\]       \[[<<](#Variables "Beginning of this chapter or previous chapter")\]   \[[Up](#Variables "Up section")\]   \[[>>](#Attributes "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------------------- ------------------------------------------------------------------------------------------ --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-6.9 Reading Data Values: NF90\_GET\_VAR {.section}
----------------------------------------
-
-The function NF90\_GET\_VAR gets one or more data values from a netCDF
-variable of an open netCDF dataset that is in data mode. Required inputs
-are the netCDF ID, the variable ID, and a specification for the data
-values into which the data will be read. Optional inputs may indicate
-the starting position of the data values in the netCDF variable
-(argument start), the sampling frequency with which data values are read
-from the netCDF variable (argument stride), and a mapping between the
-dimensions of the data array and the netCDF variable (argument map). The
-values to be read are associated with the netCDF variable by assuming
-that the first dimension of the netCDF variable varies fastest in the
-Fortran 90 interface. Data values are converted from the external type
-of the variable, if necessary.
-
-Take care when using the simplest forms of this interface with record
-variables (variables that use the NF90\_UNLIMITED dimension) when you
-don’t specify how many records are to be read. If you try to read all
-the values of a record variable into an array but there are more records
-in the file than you assume, more data will be read than you expect,
-which may cause a segmentation violation. To avoid such problems, it is
-better to specify the optional start and count arguments for variables
-that use the NF90\_UNLIMITED dimension.
-
-In netCDF classic model the maximum integer size is NF90\_INT, the
-4-byte signed integer. Reading variables into an eight-byte integer
-array from a classic model file will read from an NF90\_INT. Reading
-variables into an eight-byte integer in a netCDF-4/HDF5 (without classic
-model flag) will read from an NF90\_INT64
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_get_var(ncid, varid,  |
-|                                      | values, start, count, stride, map)   |
-|                                      |    integer,                          |
-|                                      | intent( in) :: ncid, varid           |
-|                                      |    any valid type, scalar or array o |
-|                                      | f any rank, &                        |
-|                                      |                                      |
-|                                      | intent(out) :: values                |
-|                                      |    integer, dimension(:), optional,  |
-|                                      | intent( in) :: start, count, stride, |
-|                                      |  map                                 |
-|                                      |    integer                           |
-|                                      |             :: nf90_get_var          |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `varid`
-
-:   Variable ID.
-
- `values`
-
-:   The data value(s) to be read. The data may be of any type, and may
-    be a scalar or an array of any rank. You cannot read CHARACTER data
-    from a numeric variable or numeric data from a text variable. For
-    numeric data, if the type of data differs from the netCDF variable
-    type, type conversion will occur. See [(netcdf)Type
-    Conversion](netcdf.html#Type-Conversion) section ‘Type Conversion’
-    in NetCDF Users Guide.
-
- `start`
-
-:   A vector of integers specifying the index in the variable from which
-    the first (or only) of the data values will be read. The indices are
-    relative to 1, so for example, the first data value of a variable
-    would have index (1, 1, ..., 1). The elements of start correspond,
-    in order, to the variable’s dimensions. Hence, if the variable is a
-    record variable, the last index would correspond to the starting
-    record number for writing the data values.
-
-    By default, start(:) = 1.
-
- `count`
-
-:   A vector of integers specifying the number of indices selected along
-    each dimension. To read a single value, for example, specify count
-    as (1, 1, ..., 1). The elements of count correspond, in order, to
-    the variable’s dimensions. Hence, if the variable is a record
-    variable, the last element of count corresponds to a count of the
-    number of records to read.
-
-    By default, count(:numDims) = shape(values) and count(numDims + 1:)
-    = 1, where numDims = size(shape(values)).
-
- `stride`
-
-:   A vector of integers that specifies the sampling interval along each
-    dimension of the netCDF variable. The elements of the stride vector
-    correspond, in order, to the netCDF variable’s dimensions (stride(1)
-    gives the sampling interval along the most rapidly varying dimension
-    of the netCDF variable). Sampling intervals are specified in
-    type-independent units of elements (a value of 1 selects consecutive
-    elements of the netCDF variable along the corresponding dimension, a
-    value of 2 selects every other element, etc.).
-
-    By default, stride(:) = 1.
-
- `map`
-
-:   A vector of integers that specifies the mapping between the
-    dimensions of a netCDF variable and the in-memory structure of the
-    internal data array. The elements of the index mapping vector
-    correspond, in order, to the netCDF variable’s dimensions (map(1)
-    gives the distance between elements of the internal array
-    corresponding to the most rapidly varying dimension of the
-    netCDF variable). Distances between elements are specified in units
-    of elements.
-
-    By default, edgeLengths = shape(values), and map = (/ 1,
-    (product(edgeLengths(:i)), i = 1, size(edgeLengths) - 1) /), that
-    is, there is no mapping.
-
-    Use of Fortran 90 intrinsic functions (including reshape, transpose,
-    and spread) may let you avoid using this argument.
-
-Errors {.heading}
-------
-
-NF90\_GET\_VAR returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The variable ID is invalid for the specified netCDF dataset.
--   The assumed or specified start, count, and stride generate an index
-    which is out of range. Note that no error checking is possible on
-    the map vector.
--   One or more of the specified values are out of the range of values
-    representable by the desired type.
--   The specified netCDF is in define mode rather than data mode.
--   The specified netCDF ID does not refer to an open netCDF dataset.
-
-(As noted above, another possible source of error is using this
-interface to read all the values of a record variable without specifying
-the number of records. If there are more records in the file than you
-assume, more data will be read than you expect!)
-
-Example {.heading}
--------
-
-Here is an example using NF90\_GET\_VAR to read the (4,3,2) element of
-the variable named rh from an existing netCDF dataset named foo.nc. For
-simplicity in this example, we assume that we know that rh is
-dimensioned with lon, lat, and time, so we want to read the value of rh
-that corresponds to the fourth lon value, the third lat value, and the
-second time value:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncId, rhVarId, status    |
-|                                      |  real    :: rhValue                  |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_N |
-|                                      | oWrite, ncid)                        |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  -                                   |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  rhVarId)                            |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  status = nf90_get_var(ncid, rhVarId |
-|                                      | , rhValue, start = (/ 4, 3, 2 /) )   |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-In this example we use NF90\_GET\_VAR to read all the values of the
-variable named rh from an existing netCDF dataset named foo.nc. We
-assume that we know that rh is dimensioned with lon, lat, and time. In
-this example we query the netCDF file to discover the lengths of the
-dimensions, then allocate a Fortran 90 array the same shape as the
-netCDF variable.
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer                             |
-|                                      |    :: ncId, rhVarId, &               |
-|                                      |                                      |
-|                                      |       lonDimID, latDimId, timeDimId, |
-|                                      |  &                                   |
-|                                      |                                      |
-|                                      |       numLons, numLats, numTimes,    |
-|                                      |  &                                   |
-|                                      |                                      |
-|                                      |       status                         |
-|                                      |  integer, dimension(nf90_max_var_dim |
-|                                      | s) :: dimIDs                         |
-|                                      |  real, dimension(:, :, :), allocatab |
-|                                      | le :: rhValues                       |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_N |
-|                                      | oWrite, ncid)                        |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  rhVarId)                            |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ! How big is the netCDF variable, t |
-|                                      | hat is, what are the lengths of      |
-|                                      |  !   its constituent dimensions?     |
-|                                      |  status = nf90_inquire_variable(ncid |
-|                                      | , rhVarId, dimids = dimIDs)          |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  status = nf90_inquire_dimension(nci |
-|                                      | d, dimIDs(1), len = numLons)         |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  status = nf90_inquire_dimension(nci |
-|                                      | d, dimIDs(2), len = numLats)         |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  status = nf90_inquire_dimension(nci |
-|                                      | d, dimIDs(3), len = numTimes)        |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  allocate(rhValues(numLons, numLats, |
-|                                      |  numTimes))                          |
-|                                      |  ...                                 |
-|                                      |  status = nf90_get_var(ncid, rhVarId |
-|                                      | , rhValues)                          |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-Here is an example using NF90\_GET\_VAR to read a section of the
-variable named rh from an existing netCDF dataset named foo.nc. For
-simplicity in this example, we assume that we know that rh is
-dimensioned with lon, lat, and time, that there are ten lon values, five
-lat values, and three time values, and that we want to replace all the
-values at the last time.
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer            :: ncId, rhVarId |
-|                                      | , status                             |
-|                                      |  integer, parameter :: numLons = 10, |
-|                                      |  numLats = 5, numTimes = 3           |
-|                                      |  real, dimension(numLons, numLats, n |
-|                                      | umTimes) &                           |
-|                                      |                     :: rhValues      |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_N |
-|                                      | oWrite, ncid)                        |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  rhVarId)                            |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  !Read the values at the last time b |
-|                                      | y passing an array section           |
-|                                      |  status = nf90_get_var(ncid, rhVarId |
-|                                      | , rhValues(:, :, 3), &               |
-|                                      |                        start = (/ 1, |
-|                                      |  1, numTimes /),     &               |
-|                                      |                        count = (/ nu |
-|                                      | mLons, numLats, 1 /))                |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-Here is an example of using NF90\_GET\_VAR to read every other point of
-a netCDF variable named rh having dimensions (6, 4).
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer            :: ncId, rhVarId |
-|                                      | , status                             |
-|                                      |  integer, parameter :: numLons = 6,  |
-|                                      | numLats = 4                          |
-|                                      |  real, dimension(numLons, numLats) & |
-|                                      |                     :: rhValues      |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_N |
-|                                      | oWrite, ncid)                        |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  rhVarId)                            |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  ! Read every other value into an ar |
-|                                      | ray section                          |
-|                                      |  status = nf90_get_var(ncid, rhVarId |
-|                                      | , rhValues(::2, ::2) &               |
-|                                      |                        stride = (/ 2 |
-|                                      | , 2 /))                              |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-The following map vector shows the default mapping between a 2x3x4
-netCDF variable and an internal array of the same shape:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  real,    dimension(2, 3, 4):: a  !  |
-|                                      | same shape as netCDF variable        |
-|                                      |  integer, dimension(3)      :: map   |
-|                                      | = (/ 1, 2, 6 /)                      |
-|                                      |                      ! netCDF dimens |
-|                                      | ion inter-element distance           |
-|                                      |                      ! ------------- |
-|                                      | --- ----------------------           |
-|                                      |                      ! most rapidly  |
-|                                      | varying       1                      |
-|                                      |                      ! intermediate  |
-|                                      |               2 (= map(1)*2)         |
-|                                      |                      ! most slowly v |
-|                                      | arying        6 (= map(2)*3)         |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-Using the map vector above obtains the same result as simply not passing
-a map vector at all.
-
-Here is an example of using nf90\_get\_var to read a netCDF variable
-named rh whose dimensions are the transpose of the Fortran 90 array:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer                           : |
-|                                      | : ncId, rhVarId, status              |
-|                                      |  integer, parameter                : |
-|                                      | : numLons = 6, numLats = 4           |
-|                                      |  real, dimension(numLons, numLats) : |
-|                                      | : rhValues                           |
-|                                      |  ! netCDF variable has dimensions (n |
-|                                      | umLats, numLons)                     |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_N |
-|                                      | oWrite, ncid)                        |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  rhVarId)                            |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  ! Read transposed values: map vecto |
-|                                      | r would be (/ 1, numLats /) for      |
-|                                      |  !   no transposition                |
-|                                      |  status = nf90_get_var(ncid, rhVarId |
-|                                      | ,rhValues, map = (/ numLons, 1 /))   |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-The same effect can be obtained more simply, though using more memory,
-using Fortran 90 intrinsic functions:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer                           : |
-|                                      | : ncId, rhVarId, status              |
-|                                      |  integer, parameter                : |
-|                                      | : numLons = 6, numLats = 4           |
-|                                      |  real, dimension(numLons, numLats) : |
-|                                      | : rhValues                           |
-|                                      |  ! netCDF variable has dimensions (n |
-|                                      | umLats, numLons)                     |
-|                                      |  real, dimension(numLons, numLats) : |
-|                                      | : tempValues                         |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_N |
-|                                      | oWrite, ncid)                        |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  rhVarId)                            |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  status = nf90_get_var(ncid, rhVarId |
-|                                      | , tempValues))                       |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  rhValues(:, :) = transpose(tempValu |
-|                                      | es)                                  |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------------- ---------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fGET_005fVAR "Previous section in reading order")\]   \[[>](#Fill-Values "Next section in reading order")\]       \[[<<](#Variables "Beginning of this chapter or previous chapter")\]   \[[Up](#Variables "Up section")\]   \[[>>](#Attributes "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------------------- ---------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-6.10 Reading and Writing Character String Values {.section}
-------------------------------------------------
-
-Character strings are not a primitive netCDF external data type under
-the classic netCDF data model, in part because FORTRAN does not support
-the abstraction of variable-length character strings (the FORTRAN LEN
-function returns the static length of a character string, not its
-dynamic length). As a result, a character string cannot be written or
-read as a single object in the netCDF interface. Instead, a character
-string must be treated as an array of characters, and array access must
-be used to read and write character strings as variable data in netCDF
-datasets. Furthermore, variable-length strings are not supported by the
-netCDF classic interface except by convention; for example, you may
-treat a zero byte as terminating a character string, but you must
-explicitly specify the length of strings to be read from and written to
-netCDF variables.
-
-Character strings as attribute values are easier to use, since the
-strings are treated as a single unit for access. However, the value of a
-character-string attribute in the classic netCDF interface is still an
-array of characters with an explicit length that must be specified when
-the attribute is defined.
-
-When you define a variable that will have character-string values, use a
-character-position dimension as the most quickly varying dimension for
-the variable (the first dimension for the variable in Fortran 90). The
-length of the character-position dimension will be the maximum string
-length of any value to be stored in the character-string variable. Space
-for maximum-length strings will be allocated in the disk representation
-of character-string variables whether you use the space or not. If two
-or more variables have the same maximum length, the same
-character-position dimension may be used in defining the variable
-shapes.
-
-To write a character-string value into a character-string variable, use
-either entire variable access or array access. The latter requires that
-you specify both a corner and a vector of edge lengths. The
-character-position dimension at the corner should be one for Fortran 90.
-If the length of the string to be written is n, then the vector of edge
-lengths will specify n in the character-position dimension, and one for
-all the other dimensions: (n, 1, 1, ..., 1).
-
-In Fortran 90, fixed-length strings may be written to a netCDF dataset
-without a terminating character, to save space. Variable-length strings
-should follow the C convention of writing strings with a terminating
-zero byte so that the intended length of the string can be determined
-when it is later read by either C or Fortran 90 programs. It is the
-users responsibility to provide such null termination.
-
-If you are writing data in the default prefill mode (see next section),
-you can ensure that simple strings represented as 1-dimensional
-character arrays are null terminated in the netCDF file by writing fewer
-characters than the length declared when the variable was defined. That
-way, the extra unwritten characters will be filled with the default
-character fill value, which is a null byte. The Fortran intrinsic TRIM
-function can be used to trim trailing blanks from the character string
-argument to NF90\_PUT\_VAR to make the argument shorter than the
-declared length. If prefill is not on, the data writer must explicitly
-provide a null terminating byte.
-
-Here is an example illustrating this way of writing strings to character
-array variables:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer status                      |
-|                                      |  integer                           : |
-|                                      | : ncid, oceanStrLenID, oceanId       |
-|                                      |  integer, parameter                : |
-|                                      | : MaxOceanNameLen = 20               |
-|                                      |  character, (len = MaxOceanNameLen): |
-|                                      | : ocean                              |
-|                                      |  ...                                 |
-|                                      |  status = nf90_create("foo.nc", nf90 |
-|                                      | _NoClobber, ncid)                    |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  status = nf90_def_dim(ncid, "oceanS |
-|                                      | trLen", MaxOceanNameLen, oceanStrLen |
-|                                      | Id)                                  |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  status = nf90_def_var(ncid, "ocean" |
-|                                      | , nf90_char, (/ oceanStrLenId /), oc |
-|                                      | eanId)                               |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  ! Leave define mode, which prefills |
-|                                      |  netCDF variables with fill values   |
-|                                      |  status = nf90_enddef(ncid)          |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  ! Note that this assignment adds bl |
-|                                      | ank fill                             |
-|                                      |  ocean = "Pacific"                   |
-|                                      |  ! Using trim removes trailing blank |
-|                                      | s, prefill provides null             |
-|                                      |  ! termination, so C programs can la |
-|                                      | ter get intended string.             |
-|                                      |  status = nf90_put_var(ncid, oceanId |
-|                                      | , trim(ocean))                       |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ---------------------------------------------------------------------------------------------- ---------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Reading-and-Writing-Character-String-Values "Previous section in reading order")\]   \[[>](#NF90_005fRENAME_005fVAR "Next section in reading order")\]       \[[<<](#Variables "Beginning of this chapter or previous chapter")\]   \[[Up](#Variables "Up section")\]   \[[>>](#Attributes "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ---------------------------------------------------------------------------------------------- ---------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-6.11 Fill Values {.section}
-----------------
-
-What happens when you try to read a value that was never written in an
-open netCDF dataset? You might expect that this should always be an
-error, and that you should get an error message or an error status
-returned. You do get an error if you try to read data from a netCDF
-dataset that is not open for reading, if the variable ID is invalid for
-the specified netCDF dataset, or if the specified indices are not
-properly within the range defined by the dimension lengths of the
-specified variable. Otherwise, reading a value that was not written
-returns a special fill value used to fill in any undefined values when a
-netCDF variable is first written.
-
-You may ignore fill values and use the entire range of a netCDF external
-data type, but in this case you should make sure you write all data
-values before reading them. If you know you will be writing all the data
-before reading it, you can specify that no prefilling of variables with
-fill values will occur by calling writing. This may provide a
-significant performance gain for netCDF writes.
-
-The variable attribute \_FillValue may be used to specify the fill value
-for a variable. There are default fill values for each type, defined in
-module netcdf: NF90\_FILL\_CHAR, NF90\_FILL\_INT1 (same as
-NF90\_FILL\_BYTE), NF90\_FILL\_INT2 (same as NF90\_FILL\_SHORT),
-NF90\_FILL\_INT, NF90\_FILL\_REAL (same as NF90\_FILL\_FLOAT), and
-NF90\_FILL\_DOUBLE
-
-The netCDF byte and character types have different default fill values.
-The default fill value for characters is the zero byte, a useful value
-for detecting the end of variable-length C character strings. If you
-need a fill value for a byte variable, it is recommended that you
-explicitly define an appropriate \_FillValue attribute, as generic
-utilities such as ncdump will not assume a default fill value for byte
-variables.
-
-Type conversion for fill values is identical to type conversion for
-other values: attempting to convert a value from one type to another
-type that can’t represent the value results in a range error. Such
-errors may occur on writing or reading values from a larger type (such
-as double) to a smaller type (such as float), if the fill value for the
-larger type cannot be represented in the smaller type.
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------- ------------------------------------------------------------------------------ --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Fill-Values "Previous section in reading order")\]   \[[>](#NF90_005fVAR_005fPAR_005fACCESS "Next section in reading order")\]       \[[<<](#Variables "Beginning of this chapter or previous chapter")\]   \[[Up](#Variables "Up section")\]   \[[>>](#Attributes "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------- ------------------------------------------------------------------------------ --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-6.12 NF90\_RENAME\_VAR {.section}
-----------------------
-
-The function NF90\_RENAME\_VAR changes the name of a netCDF variable in
-an open netCDF dataset. If the new name is longer than the old name, the
-netCDF dataset must be in define mode. You cannot rename a variable to
-have the name of any existing variable.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_rename_var(ncid, vari |
-|                                      | d, newname)                          |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid, varid                       |
-|                                      |    character (len = *), intent( in)  |
-|                                      | :: newname                           |
-|                                      |    integer                           |
-|                                      | :: nf90_rename_var                   |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `varid`
-
-:   Variable ID.
-
- `newname`
-
-:   New name for the specified variable.
-
-Errors {.heading}
-------
-
-NF90\_RENAME\_VAR returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The new name is in use as the name of another variable.
--   The variable ID is invalid for the specified netCDF dataset.
--   The specified netCDF ID does not refer to an open netCDF dataset.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_RENAME\_VAR to rename the variable rh to
-rel\_hum in an existing netCDF dataset named foo.nc:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncId, rhVarId, status    |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_W |
-|                                      | rite, ncid)                          |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  ...                                 |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  rhVarId)                            |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  status = nf90_redef(ncid)  ! Enter  |
-|                                      | define mode to change variable name  |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  status = nf90_rename_var(ncid, rhVa |
-|                                      | rId, "rel_hum")                      |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      |  status = nf90_enddef(ncid) ! Leave  |
-|                                      | define mode                          |
-|                                      |  if(status /= nf90_NoErr) call handl |
-|                                      | e_err(status)                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------- --------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fRENAME_005fVAR "Previous section in reading order")\]   \[[>](#Attributes "Next section in reading order")\]       \[[<<](#Variables "Beginning of this chapter or previous chapter")\]   \[[Up](#Variables "Up section")\]   \[[>>](#Attributes "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------- --------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------------- -------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-6.13 Change between Collective and Independent Parallel Access: NF90\_VAR\_PAR\_ACCESS {.section}
---------------------------------------------------------------------------------------
-
-The function NF90\_VAR\_PAR\_ACCESS changes whether read/write
-operations on a parallel file system are performed collectively or
-independently (the default) on the variable. This function can only be
-called if the file was created (see [NF90\_CREATE](#NF90_005fCREATE)) or
-opened (see [NF90\_OPEN](#NF90_005fOPEN)) for parallel I/O.
-
-This function is only available if the netCDF library was built with
-parallel I/O enabled.
-
-Calling this function affects only the open file - information about
-whether a variable is to be accessed collectively or independently is
-not written to the data file. Every time you open a file on a parallel
-file system, all variables default to independent operations. The change
-of a variable to collective access lasts only as long as that file is
-open.
-
-The variable can be changed from collective to independent, and back, as
-often as desired.
-
-Classic and 64-bit offset files, when opened for parallel access, use
-the parallel-netcdf (a.k.a. pnetcdf) library, which does not allow
-per-variable changes of access mode - the entire file must be access
-independently or collectively. For classic and 64-bit offset files, the
-nf90\_var\_par\_access function changes the access for all variables in
-the file.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   function nf90_var_par_access(ncid, |
-|                                      |  varid, access)                      |
-|                                      |     integer, intent(in) :: ncid      |
-|                                      |     integer, intent(in) :: varid     |
-|                                      |     integer, intent(in) :: access    |
-|                                      |     integer :: nf90_var_par_access   |
-|                                      |   end function nf90_var_par_access   |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN (see
-    [NF90\_OPEN](#NF90_005fOPEN)) or NF90\_CREATE (see
-    [NF90\_CREATE](#NF90_005fCREATE)).
-
- `varid`
-
-:   Variable ID.
-
- `access`
-
-:   NF90\_INDEPENDENT to set this variable to independent operations.
-    NF90\_COLLECTIVE to set it to collective operations.
-
-Return Values {.heading}
--------------
-
- `NF90_NOERR`
-
-:   No error.
-
- `NF90_ENOTVAR`
-
-:   No variable found.
-
- `NF90_NOPAR`
-
-:   File not opened for parallel access.
-
-Example {.heading}
--------
-
-This example comes from test program nf\_test/f90tst\_parallel.f90. For
-this test to be run, netCDF must have been built with a parallel-enabled
-HDF5, and –enable-parallel-tests must have been used when configuring
-netcdf.
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |   ! Reopen the file.                 |
-|                                      |   call handle_err(nf90_open(FILE_NAM |
-|                                      | E, nf90_nowrite, ncid, comm = MPI_CO |
-|                                      | MM_WORLD, &                          |
-|                                      |        info = MPI_INFO_NULL))        |
-|                                      |                                      |
-|                                      |   ! Set collective access on this va |
-|                                      | riable. This will cause all          |
-|                                      |   ! reads/writes to happen together  |
-|                                      | on every processor.                  |
-|                                      |   call handle_err(nf90_var_par_acces |
-|                                      | s(ncid, varid, nf90_collective))     |
-|                                      |                                      |
-|                                      |   ! Read this processor's data.      |
-|                                      |   call handle_err(nf90_get_var(ncid, |
-|                                      |  varid, data_in, start = start, coun |
-|                                      | t = count))                          |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ---------------------------------------------------------------------------------- ---------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------- ----------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fVAR_005fPAR_005fACCESS "Previous section in reading order")\]   \[[>](#Attributes-Introduction "Next section in reading order")\]       \[[<<](#Variables "Beginning of this chapter or previous chapter")\]   \[[Up](#Top "Up section")\]   \[[>>](#Summary-of-Fortran-90-Interface "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ---------------------------------------------------------------------------------- ---------------------------------------------------------------------- --- ---------------------------------------------------------------------------- ----------------------------- ----------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-7. Attributes {.chapter}
-=============
-
-  ------------------------ ------------------------ ------------------------
-  [7.1 Attributes                                   
-  Introduction](#Attribute                          
-  s-Introduction)                                   
-
-  [7.2 Create an                                    
-  Attribute:                                        
-  NF90\_PUT\_ATT](#NF90_00                          
-  5fPUT_005fATT)                                    
-
-  [7.3 Get Information                              
-  about an Attribute:                               
-  NF90\_INQUIRE\_ATTRIBUTE                          
-  and                                               
-  NF90\_INQ\_ATTNAME](#NF9                          
-  0_005fINQUIRE_005fATTRIB                          
-  UTE)                                              
-
-  [7.4 Get Attribute’s                              
-  Values:                                           
-  NF90\_GET\_ATT](#NF90_00                          
-  5fGET_005fATT)                                    
-
-  [7.5 Copy Attribute from                          
-  One NetCDF to Another:                            
-  NF90\_COPY\_ATT](#NF90_0                          
-  05fCOPY_005fATT)                                  
-
-  [7.6 Rename an                                    
-  Attribute:                                        
-  NF90\_RENAME\_ATT](#NF90                          
-  _005fRENAME_005fATT)                              
-
-  [7.7                                              
-  NF90\_DEL\_ATT](#NF90_00                          
-  5fDEL_005fATT)                                    
-  ------------------------ ------------------------ ------------------------
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------- ------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ ----------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Attributes "Previous section in reading order")\]   \[[>](#NF90_005fPUT_005fATT "Next section in reading order")\]       \[[<<](#Attributes "Beginning of this chapter or previous chapter")\]   \[[Up](#Attributes "Up section")\]   \[[>>](#Summary-of-Fortran-90-Interface "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------- ------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ ----------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-7.1 Attributes Introduction {.section}
----------------------------
-
-Attributes may be associated with each netCDF variable to specify such
-properties as units, special values, maximum and minimum valid values,
-scaling factors, and offsets. Attributes for a netCDF dataset are
-defined when the dataset is first created, while the netCDF dataset is
-in define mode. Additional attributes may be added later by reentering
-define mode. A netCDF attribute has a netCDF variable to which it is
-assigned, a name, a type, a length, and a sequence of one or more
-values. An attribute is designated by its variable ID and name. When an
-attribute name is not known, it may be designated by its variable ID and
-number in order to determine its name, using the function
-NF90\_INQ\_ATTNAME.
-
-The attributes associated with a variable are typically defined
-immediately after the variable is created, while still in define mode.
-The data type, length, and value of an attribute may be changed even
-when in data mode, as long as the changed attribute requires no more
-space than the attribute as originally defined.
-
-It is also possible to have attributes that are not associated with any
-variable. These are called global attributes and are identified by using
-NF90\_GLOBAL as a variable pseudo-ID. Global attributes are usually
-related to the netCDF dataset as a whole and may be used for purposes
-such as providing a title or processing history for a netCDF dataset.
-
-Attributes are much more useful when they follow established community
-conventions. See [(netcdf)Attribute
-Conventions](netcdf.html#Attribute-Conventions) section ‘Attribute
-Conventions’ in The NetCDF Users Guide.
-
-Operations supported on attributes are:
-
--   Create an attribute, given its variable ID, name, data type, length,
-    and value.
--   Get attribute’s data type and length from its variable ID and name.
--   Get attribute’s value from its variable ID and name.
--   Copy attribute from one netCDF variable to another.
--   Get name of attribute from its number.
--   Rename an attribute.
--   Delete an attribute.
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------- ----------------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ ----------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Attributes-Introduction "Previous section in reading order")\]   \[[>](#NF90_005fINQUIRE_005fATTRIBUTE "Next section in reading order")\]       \[[<<](#Attributes "Beginning of this chapter or previous chapter")\]   \[[Up](#Attributes "Up section")\]   \[[>>](#Summary-of-Fortran-90-Interface "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------- ----------------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ ----------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-7.2 Create an Attribute: NF90\_PUT\_ATT {.section}
----------------------------------------
-
-The function NF90\_PUT\_ATTadds or changes a variable attribute or
-global attribute of an open netCDF dataset. If this attribute is new, or
-if the space required to store the attribute is greater than before, the
-netCDF dataset must be in define mode.
-
-Usage {.heading}
------
-
-Although it’s possible to create attributes of all types, text and
-double attributes are adequate for most purposes.
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_put_att(ncid, varid,  |
-|                                      | name, values)                        |
-|                                      |    integer,            intent( in) : |
-|                                      | : ncid, varid                        |
-|                                      |    character(len = *), intent( in) : |
-|                                      | : name                               |
-|                                      |    scalar character string or any nu |
-|                                      | meric type, scalar, or array of rank |
-|                                      |  1, &                                |
-|                                      |                        intent( in) : |
-|                                      | : values                             |
-|                                      |    integer                         : |
-|                                      | : nf90_put_att                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `varid`
-
-:   Variable ID of the variable to which the attribute will be assigned
-    or NF90\_GLOBAL for a global attribute.
-
- `name`
-
-:   Attribute name. Attribute name conventions are assumed by some
-    netCDF generic applications, e.g., ‘units’ as the name for a string
-    attribute that gives the units for a netCDF variable. See
-    [(netcdf)Attribute Conventions](netcdf.html#Attribute-Conventions)
-    section ‘Attribute Conventions’ in The NetCDF Users Guide.
-
- `values`
-
-:   A numeric rank 1 array of attribute values or a scalar. The external
-    data type of the attribute is set to match the internal
-    representation of the argument, that is if values is a two byte
-    integer array, the attribute will be of type NF90\_INT2. Fortran 90
-    intrinsic functions can be used to convert attributes to the
-    desired type.
-
-Errors {.heading}
-------
-
-NF90\_PUT\_ATT returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The variable ID is invalid for the specified netCDF dataset.
--   The specified netCDF type is invalid.
--   The specified length is negative.
--   The specified open netCDF dataset is in data mode and the specified
-    attribute would expand.
--   The specified open netCDF dataset is in data mode and the specified
-    attribute does not already exist.
--   The specified netCDF ID does not refer to an open netCDF dataset.
--   The number of attributes for this variable exceeds NF90\_MAX\_ATTRS.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_PUT\_ATT to add a variable attribute
-named valid\_range for a netCDF variable named rh and a global attribute
-named title to an existing netCDF dataset named foo.nc:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid, status, RHVarID    |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_w |
-|                                      | rite, ncid)                          |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  ! Enter define mode so we can add t |
-|                                      | he attribute                         |
-|                                      |  status = nf90_redef(ncid)           |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ! Get the variable ID for "rh"...   |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  RHVarID)                            |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ! ...  put the range attribute, set |
-|                                      | ting it to eight byte reals...       |
-|                                      |  status = nf90_put_att(ncid, RHVarID |
-|                                      | , "valid_range", real((/ 0, 100 /))  |
-|                                      |  ! ... and the title attribute.      |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  status = nf90_put_att(ncid, RHVarID |
-|                                      | , "title", "example netCDF dataset") |
-|                                      |  )                                   |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ! Leave define mode                 |
-|                                      |  status = nf90_enddef(ncid)          |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------------- ------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ ----------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fPUT_005fATT "Previous section in reading order")\]   \[[>](#NF90_005fGET_005fATT "Next section in reading order")\]       \[[<<](#Attributes "Beginning of this chapter or previous chapter")\]   \[[Up](#Attributes "Up section")\]   \[[>>](#Summary-of-Fortran-90-Interface "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------------------- ------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ ----------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-7.3 Get Information about an Attribute: NF90\_INQUIRE\_ATTRIBUTE and NF90\_INQ\_ATTNAME {.section}
----------------------------------------------------------------------------------------
-
-The function NF90\_INQUIRE\_ATTRIBUTE returns information about a netCDF
-attribute given the variable ID and attribute name. Information about an
-attribute includes its type, length, name, and number. See
-NF90\_GET\_ATT for getting attribute values.
-
-The function NF90\_INQ\_ATTNAME gets the name of an attribute, given its
-variable ID and number. This function is useful in generic applications
-that need to get the names of all the attributes associated with a
-variable, since attributes are accessed by name rather than number in
-all other attribute functions. The number of an attribute is more
-volatile than the name, since it can change when other attributes of the
-same variable are deleted. This is why an attribute number is not called
-an attribute ID.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_inquire_attribute(nci |
-|                                      | d, varid, name, xtype, len, attnum)  |
-|                                      |    integer,             intent( in)  |
-|                                      |           :: ncid, varid             |
-|                                      |    character (len = *), intent( in)  |
-|                                      |           :: name                    |
-|                                      |    integer,             intent(out), |
-|                                      |  optional :: xtype, len, attnum      |
-|                                      |    integer                           |
-|                                      |           :: nf90_inquire_attribute  |
-|                                      |  function nf90_inq_attname(ncid, var |
-|                                      | id, attnum, name)                    |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid, varid, attnum               |
-|                                      |    character (len = *), intent(out)  |
-|                                      | :: name                              |
-|                                      |    integer                           |
-|                                      | :: nf90_inq_attname                  |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `varid`
-
-:   Variable ID of the attribute’s variable, or NF90\_GLOBAL for a
-    global attribute.
-
- `name`
-
-:   Attribute name. For NF90\_INQ\_ATTNAME, this is a pointer to the
-    location for the returned attribute name.
-
- `xtype`
-
-:   Returned attribute type, one of the set of predefined netCDF
-    external data types. The valid netCDF external data types are
-    NF90\_BYTE, NF90\_CHAR, NF90\_SHORT, NF90\_INT, NF90\_FLOAT,
-    and NF90\_DOUBLE.
-
- `len`
-
-:   Returned number of values currently stored in the attribute. For a
-    string-valued attribute, this is the number of characters in
-    the string.
-
- `attnum`
-
-:   For NF90\_INQ\_ATTNAME, the input attribute number; for
-    NF90\_INQ\_ATTID, the returned attribute number. The attributes for
-    each variable are numbered from 1 (the first attribute) to NATTS,
-    where NATTS is the number of attributes for the variable, as
-    returned from a call to NF90\_INQ\_VARNATTS.
-
-    (If you already know an attribute name, knowing its number is not
-    very useful, because accessing information about an attribute
-    requires its name.)
-
-Errors {.heading}
-------
-
-Each function returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The variable ID is invalid for the specified netCDF dataset.
--   The specified attribute does not exist.
--   The specified netCDF ID does not refer to an open netCDF dataset.
--   For NF90\_INQ\_ATTNAME, the specified attribute number is negative
-    or more than the number of attributes defined for the
-    specified variable.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_INQUIRE\_ATTRIBUTE to inquire about the
-lengths of an attribute named valid\_range for a netCDF variable named
-rh and a global attribute named title in an existing netCDF dataset
-named foo.nc:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid, status             |
-|                                      |  integer :: RHVarID                  |
-|                                      |       ! Variable ID                  |
-|                                      |  integer :: validRangeLength, titleL |
-|                                      | ength ! Attribute lengths            |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_n |
-|                                      | owrite, ncid)                        |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  ! Get the variable ID for "rh"...   |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  RHVarID)                            |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ! ...  get the length of the "valid |
-|                                      | _range" attribute...                 |
-|                                      |  status = nf90_inquire_attribute(nci |
-|                                      | d, RHVarID, "valid_range", &         |
-|                                      |                            len = val |
-|                                      | idRangeLength)                       |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ! ... and the global title attribut |
-|                                      | e.                                   |
-|                                      |  status = nf90_inquire_attribute(nci |
-|                                      | d, nf90_global, "title", len = title |
-|                                      | Length)                              |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  --------------------------------------------------------------------------------- -------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ ----------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fINQUIRE_005fATTRIBUTE "Previous section in reading order")\]   \[[>](#NF90_005fCOPY_005fATT "Next section in reading order")\]       \[[<<](#Attributes "Beginning of this chapter or previous chapter")\]   \[[Up](#Attributes "Up section")\]   \[[>>](#Summary-of-Fortran-90-Interface "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  --------------------------------------------------------------------------------- -------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ ----------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-7.4 Get Attribute’s Values: NF90\_GET\_ATT {.section}
-------------------------------------------
-
-Function nf90\_get\_att gets the value(s) of a netCDF attribute, given
-its variable ID and name.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_get_att(ncid, varid,  |
-|                                      | name, values)                        |
-|                                      |    integer,            intent( in) : |
-|                                      | : ncid, varid                        |
-|                                      |    character(len = *), intent( in) : |
-|                                      | : name                               |
-|                                      |    any valid type, scalar or array o |
-|                                      | f rank 1, &                          |
-|                                      |                        intent(out) : |
-|                                      | : values                             |
-|                                      |    integer                         : |
-|                                      | : nf90_get_att                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `varid`
-
-:   Variable ID of the attribute’s variable, or NF90\_GLOBAL for a
-    global attribute.
-
- `name`
-
-:   Attribute name.
-
- `values`
-
-:   Returned attribute values. All elements of the vector of attribute
-    values are returned, so you must provide enough space to hold them.
-    If you don’t know how much space to reserve, call
-    NF90\_INQUIRE\_ATTRIBUTE first to find out the length of
-    the attribute. If there is only a single attribute values may be
-    a scalar. If the attribute is of type character values should be a
-    variable of type character with the len Fortran 90 attribute set to
-    an appropriate value (i.e. character (len = 80) :: values). You
-    cannot read character data from a numeric variable or numeric data
-    from a text variable. For numeric data, if the type of data differs
-    from the netCDF variable type, type conversion will occur. See
-    [(netcdf)Type Conversion](netcdf.html#Type-Conversion) section ‘Type
-    Conversion’ in NetCDF Users Guide.
-
-Errors {.heading}
-------
-
-NF90\_GET\_ATT\_ type returns the value NF90\_NOERR if no errors
-occurred. Otherwise, the returned status indicates an error. Possible
-causes of errors include:
-
--   The variable ID is invalid for the specified netCDF dataset.
--   The specified attribute does not exist.
--   The specified netCDF ID does not refer to an open netCDF dataset.
--   One or more of the attribute values are out of the range of values
-    representable by the desired type.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_GET\_ATT to determine the values of an
-attribute named valid\_range for a netCDF variable named rh and a global
-attribute named title in an existing netCDF dataset named foo.nc. In
-this example, it is assumed that we don’t know how many values will be
-returned, so we first inquire about the length of the attributes to make
-sure we have enough space to store them:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer              :: ncid, statu |
-|                                      | s                                    |
-|                                      |  integer              :: RHVarID     |
-|                                      |                    ! Variable ID     |
-|                                      |  integer              :: validRangeL |
-|                                      | ength, titleLength ! Attribute lengt |
-|                                      | hs                                   |
-|                                      |  real, dimension(:), allocatable, &  |
-|                                      |                       :: validRange  |
-|                                      |  character (len = 80) :: title       |
-|                                      |                                      |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_n |
-|                                      | owrite, ncid)                        |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  ! Find the lengths of the attribute |
-|                                      | s                                    |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  RHVarID)                            |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  status = nf90_inquire_attribute(nci |
-|                                      | d, RHVarID, "valid_range", &         |
-|                                      |                            len = val |
-|                                      | idRangeLength)                       |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  status = nf90_inquire_attribute(nci |
-|                                      | d, nf90_global, "title", len = title |
-|                                      | Length)                              |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  !Allocate space to hold attribute v |
-|                                      | alues, check string lengths          |
-|                                      |  allocate(validRange(validRangeLengt |
-|                                      | h), stat = status)                   |
-|                                      |  if(status /= 0 .or. len(title) < ti |
-|                                      | tleLength)                           |
-|                                      |    print *, "Not enough space to put |
-|                                      |  attribute values."                  |
-|                                      |    exit                              |
-|                                      |  end if                              |
-|                                      |  ! Read the attributes.              |
-|                                      |  status = nf90_get_att(ncid, RHVarID |
-|                                      | , "valid_range", validRange)         |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  status = nf90_get_att(ncid, nf90_gl |
-|                                      | obal, "title", title)                |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------------- ---------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ ----------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fGET_005fATT "Previous section in reading order")\]   \[[>](#NF90_005fRENAME_005fATT "Next section in reading order")\]       \[[<<](#Attributes "Beginning of this chapter or previous chapter")\]   \[[Up](#Attributes "Up section")\]   \[[>>](#Summary-of-Fortran-90-Interface "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------------------- ---------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ ----------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-7.5 Copy Attribute from One NetCDF to Another: NF90\_COPY\_ATT {.section}
---------------------------------------------------------------
-
-The function NF90\_COPY\_ATT copies an attribute from one open netCDF
-dataset to another. It can also be used to copy an attribute from one
-variable to another within the same netCDF dataset.
-
-If used to copy an attribute of user-defined type, then that
-user-defined type must already be defined in the target file. In the
-case of user-defined attributes, enddef/redef is called for ncid\_in and
-ncid\_out if they are in define mode. (This is the ensure that all
-user-defined types are committed to the file(s) before the copy is
-attempted.)
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_copy_att(ncid_in, var |
-|                                      | id_in, name, ncid_out, varid_out)    |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid_in,  varid_in                |
-|                                      |    character (len = *), intent( in)  |
-|                                      | :: name                              |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid_out, varid_out               |
-|                                      |    integer                           |
-|                                      | :: nf90_copy_att                     |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid_in`
-
-:   The netCDF ID of an input netCDF dataset from which the attribute
-    will be copied, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `varid_in`
-
-:   ID of the variable in the input netCDF dataset from which the
-    attribute will be copied, or NF90\_GLOBAL for a global attribute.
-
- `name`
-
-:   Name of the attribute in the input netCDF dataset to be copied.
-
- `ncid_out`
-
-:   The netCDF ID of the output netCDF dataset to which the attribute
-    will be copied, from a previous call to NF90\_OPEN or NF90\_CREATE.
-    It is permissible for the input and output netCDF IDs to be
-    the same. The output netCDF dataset should be in define mode if the
-    attribute to be copied does not already exist for the target
-    variable, or if it would cause an existing target attribute to grow.
-
- `varid_out`
-
-:   ID of the variable in the output netCDF dataset to which the
-    attribute will be copied, or NF90\_GLOBAL to copy to a
-    global attribute.
-
-Errors {.heading}
-------
-
-NF90\_COPY\_ATT returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The input or output variable ID is invalid for the specified
-    netCDF dataset.
--   The specified attribute does not exist.
--   The output netCDF is not in define mode and the attribute is new for
-    the output dataset is larger than the existing attribute.
--   The input or output netCDF ID does not refer to an open
-    netCDF dataset.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_COPY\_ATT to copy the variable attribute
-units from the variable rh in an existing netCDF dataset named foo.nc to
-the variable avgrh in another existing netCDF dataset named bar.nc,
-assuming that the variable avgrh already exists, but does not yet have a
-units attribute:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid1, ncid2, status     |
-|                                      |  integer :: RHVarID, avgRHVarID    ! |
-|                                      |  Variable ID                         |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_n |
-|                                      | owrite, ncid1)                       |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  status = nf90_open("bar.nc", nf90_w |
-|                                      | rite, ncid2)                         |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  ! Find the IDs of the variables     |
-|                                      |  status = nf90_inq_varid(ncid1, "rh" |
-|                                      | , RHVarID)                           |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  status = nf90_inq_varid(ncid1, "avg |
-|                                      | rh", avgRHVarID)                     |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  status = nf90_redef(ncid2)   ! Ente |
-|                                      | r define mode                        |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ! Copy variable attribute from "rh" |
-|                                      |  in file 1 to "avgrh" in file 1      |
-|                                      |  status = nf90_copy_att(ncid1, RHVar |
-|                                      | ID, "units", ncid2, avgRHVarID)      |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  status = nf90_enddef(ncid2)         |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------ ------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ ----------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fCOPY_005fATT "Previous section in reading order")\]   \[[>](#NF90_005fDEL_005fATT "Next section in reading order")\]       \[[<<](#Attributes "Beginning of this chapter or previous chapter")\]   \[[Up](#Attributes "Up section")\]   \[[>>](#Summary-of-Fortran-90-Interface "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------------------------------------ ------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ------------------------------------ ----------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-7.6 Rename an Attribute: NF90\_RENAME\_ATT {.section}
-------------------------------------------
-
-The function NF90\_RENAME\_ATT changes the name of an attribute. If the
-new name is longer than the original name, the netCDF dataset must be in
-define mode. You cannot rename an attribute to have the same name as
-another attribute of the same variable.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_rename_att(ncid, vari |
-|                                      | d, curname, newname)                 |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid,  varid                      |
-|                                      |    character (len = *), intent( in)  |
-|                                      | :: curname, newname                  |
-|                                      |    integer                           |
-|                                      | :: nf90_rename_att                   |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE
-
- `varid`
-
-:   ID of the attribute’s variable, or NF90\_GLOBAL for a global
-    attribute
-
- `curname`
-
-:   The current attribute name.
-
- `newname`
-
-:   The new name to be assigned to the specified attribute. If the new
-    name is longer than the current name, the netCDF dataset must be in
-    define mode.
-
-Errors {.heading}
-------
-
-NF90\_RENAME\_ATT returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The specified variable ID is not valid.
--   The new attribute name is already in use for another attribute of
-    the specified variable.
--   The specified netCDF dataset is in data mode and the new name is
-    longer than the old name.
--   The specified attribute does not exist.
--   The specified netCDF ID does not refer to an open netCDF dataset.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_RENAME\_ATT to rename the variable
-attribute units to Units for a variable rh in an existing netCDF dataset
-named foo.nc:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid1, status            |
-|                                      |  integer :: RHVarID         ! Variab |
-|                                      | le ID                                |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_n |
-|                                      | owrite, ncid)                        |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  ! Find the IDs of the variables     |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  RHVarID)                            |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  status = nf90_rename_att(ncid, RHVa |
-|                                      | rID, "units", "Units")               |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------- ------------------------------------------------------------------------------ --- ----------------------------------------------------------------------------- ------------------------------------ ----------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#NF90_005fRENAME_005fATT "Previous section in reading order")\]   \[[>](#Summary-of-Fortran-90-Interface "Next section in reading order")\]       \[[<<](#Attributes "Beginning of this chapter or previous chapter")\]   \[[Up](#Attributes "Up section")\]   \[[>>](#Summary-of-Fortran-90-Interface "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  -------------------------------------------------------------------------- ------------------------------------------------------------------------------ --- ----------------------------------------------------------------------------- ------------------------------------ ----------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-7.7 NF90\_DEL\_ATT {.section}
-------------------
-
-The function NF90\_DEL\_ATT deletes a netCDF attribute from an open
-netCDF dataset. The netCDF dataset must be in define mode.
-
-Usage {.heading}
------
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_del_att(ncid, varid,  |
-|                                      | name)                                |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid, varid                       |
-|                                      |    character (len = *), intent( in)  |
-|                                      | :: name                              |
-|                                      |    integer                           |
-|                                      | :: nf90_del_att                      |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
- `ncid`
-
-:   NetCDF ID, from a previous call to NF90\_OPEN or NF90\_CREATE.
-
- `varid`
-
-:   ID of the attribute’s variable, or NF90\_GLOBAL for a
-    global attribute.
-
- `name`
-
-:   The name of the attribute to be deleted.
-
-Errors {.heading}
-------
-
-NF90\_DEL\_ATT returns the value NF90\_NOERR if no errors occurred.
-Otherwise, the returned status indicates an error. Possible causes of
-errors include:
-
--   The specified variable ID is not valid.
--   The specified netCDF dataset is in data mode.
--   The specified attribute does not exist.
--   The specified netCDF ID does not refer to an open netCDF dataset.
-
-Example {.heading}
--------
-
-Here is an example using NF90\_DEL\_ATT to delete the variable attribute
-Units for a variable rh in an existing netCDF dataset named foo.nc:
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  use netcdf                          |
-|                                      |  implicit none                       |
-|                                      |  integer :: ncid1, status            |
-|                                      |  integer :: RHVarID         ! Variab |
-|                                      | le ID                                |
-|                                      |  ...                                 |
-|                                      |  status = nf90_open("foo.nc", nf90_n |
-|                                      | owrite, ncid)                        |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  ! Find the IDs of the variables     |
-|                                      |  status = nf90_inq_varid(ncid, "rh", |
-|                                      |  RHVarID)                            |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  ...                                 |
-|                                      |  status = nf90_redef(ncid)   ! Enter |
-|                                      |  define mode                         |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  status = nf90_del_att(ncid, RHVarID |
-|                                      | , "Units")                           |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      |  status = nf90_enddef(ncid)          |
-|                                      |  if (status /= nf90_noerr) call hand |
-|                                      | le_err(status)                       |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ----------------------------------------------------------------------- ---------------------------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ----------------------------- --------------------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- --------------------------- [...]
-  \[[<](#NF90_005fDEL_005fATT "Previous section in reading order")\]   \[[>](#FORTRAN-77-to-Fortran-90-Transition-Guide "Next section in reading order")\]       \[[<<](#Attributes "Beginning of this chapter or previous chapter")\]   \[[Up](#Top "Up section")\]   \[[>>](#FORTRAN-77-to-Fortran-90-Transition-Guide "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ----------------------------------------------------------------------- ---------------------------------------------------------------------------------------- --- ----------------------------------------------------------------------------- ----------------------------- --------------------------------------------------------------------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- --------------------------- [...]
-
-A. Appendix A - Summary of Fortran 90 Interface {.appendix}
-===============================================
-
-Dataset Functions
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_inq_libvers()         |
-|                                      |    character(len = 80) :: nf90_inq_l |
-|                                      | ibvers                               |
-|                                      |  function nf90_strerror(ncerr)       |
-|                                      |    integer, intent( in) :: ncerr     |
-|                                      |    character(len = 80)  :: nf90_stre |
-|                                      | rror                                 |
-|                                      |  function nf90_create(path, cmode, n |
-|                                      | cid)                                 |
-|                                      |    character (len = *), intent(in    |
-|                                      | ) :: path                            |
-|                                      |    integer,             intent(in    |
-|                                      | ) :: cmode                           |
-|                                      |    integer, optional,   intent(in    |
-|                                      | ) :: initialsize                     |
-|                                      |    integer, optional,   intent(inout |
-|                                      | ) :: chunksize                       |
-|                                      |    integer,             intent(  out |
-|                                      | ) :: ncid                            |
-|                                      |    integer                           |
-|                                      |   :: nf90_create                     |
-|                                      |  function nf90_open(path, mode, ncid |
-|                                      | , chunksize)                         |
-|                                      |    character (len = *), intent(in    |
-|                                      | ) :: path                            |
-|                                      |    integer,             intent(in    |
-|                                      | ) :: mode                            |
-|                                      |    integer,             intent(  out |
-|                                      | ) :: ncid                            |
-|                                      |    integer, optional,   intent(inout |
-|                                      | ) :: chunksize                       |
-|                                      |    integer                           |
-|                                      |   :: nf90_open                       |
-|                                      |  function nf90_set_fill(ncid, fillmo |
-|                                      | de, old_mode)                        |
-|                                      |    integer, intent( in) :: ncid, fil |
-|                                      | lmode                                |
-|                                      |    integer, intent(out) :: old_mode  |
-|                                      |    integer              :: nf90_set_ |
-|                                      | fill                                 |
-|                                      |  function nf90_redef(ncid)           |
-|                                      |    integer, intent( in) :: ncid      |
-|                                      |    integer              :: nf90_rede |
-|                                      | f                                    |
-|                                      |  function nf90_enddef(ncid, h_minfre |
-|                                      | e, v_align, v_minfree, r_align)      |
-|                                      |    integer,           intent( in) :: |
-|                                      |  ncid                                |
-|                                      |    integer, optional, intent( in) :: |
-|                                      |  h_minfree, v_align, v_minfree, r_al |
-|                                      | ign                                  |
-|                                      |    integer                        :: |
-|                                      |  nf90_enddef                         |
-|                                      |  function nf90_sync(ncid)            |
-|                                      |    integer, intent( in) :: ncid      |
-|                                      |    integer              :: nf90_sync |
-|                                      |  function nf90_abort(ncid)           |
-|                                      |    integer, intent( in) :: ncid      |
-|                                      |    integer              :: nf90_abor |
-|                                      | t                                    |
-|                                      |  function nf90_close(ncid)           |
-|                                      |    integer, intent( in) :: ncid      |
-|                                      |    integer              :: nf90_clos |
-|                                      | e                                    |
-|                                      |  function nf90_Inquire(ncid, nDimens |
-|                                      | ions, nVariables, nAttributes, &     |
-|                                      |                       unlimitedDimId |
-|                                      | )                                    |
-|                                      |    integer,           intent( in) :: |
-|                                      |  ncid                                |
-|                                      |    integer, optional, intent(out) :: |
-|                                      |  nDimensions, nVariables, nAttribute |
-|                                      | s, &                                 |
-|                                      |                                unlim |
-|                                      | itedDimId                            |
-|                                      |    integer                        :: |
-|                                      |  nf90_Inquire                        |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-Dimension functions
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_def_dim(ncid, name, l |
-|                                      | en, dimid)                           |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid                              |
-|                                      |    character (len = *), intent( in)  |
-|                                      | :: name                              |
-|                                      |    integer,             intent( in)  |
-|                                      | :: len                               |
-|                                      |    integer,             intent(out)  |
-|                                      | :: dimid                             |
-|                                      |    integer                           |
-|                                      | :: nf90_def_dim                      |
-|                                      |  function nf90_inq_dimid(ncid, name, |
-|                                      |  dimid)                              |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid                              |
-|                                      |    character (len = *), intent( in)  |
-|                                      | :: name                              |
-|                                      |    integer,             intent(out)  |
-|                                      | :: dimid                             |
-|                                      |    integer                           |
-|                                      | :: nf90_inq_dimid                    |
-|                                      |  function nf90_inquire_dimension(nci |
-|                                      | d, dimid, name, len)                 |
-|                                      |    integer,                       in |
-|                                      | tent( in) :: ncid, dimid             |
-|                                      |    character (len = *), optional, in |
-|                                      | tent(out) :: name                    |
-|                                      |    integer,             optional, in |
-|                                      | tent(out) :: len                     |
-|                                      |    integer                           |
-|                                      |           :: nf90_inquire_dimension  |
-|                                      |  function nf90_rename_dim(ncid, dimi |
-|                                      | d, name)                             |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid                              |
-|                                      |    character (len = *), intent( in)  |
-|                                      | :: name                              |
-|                                      |    integer,             intent( in)  |
-|                                      | :: dimid                             |
-|                                      |    integer                           |
-|                                      | :: nf90_rename_dim                   |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-Variable functions
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_def_var(ncid, name, x |
-|                                      | type, dimids, varid)                 |
-|                                      |    integer,               intent( in |
-|                                      | ) :: ncid                            |
-|                                      |    character (len = *),   intent( in |
-|                                      | ) :: name                            |
-|                                      |    integer,               intent( in |
-|                                      | ) :: xtype                           |
-|                                      |    integer, dimension(:), intent( in |
-|                                      | ) :: dimids ! May be omitted, scalar |
-|                                      | ,                                    |
-|                                      |                                      |
-|                                      |          ! vector                    |
-|                                      |    integer                           |
-|                                      |   :: nf90_def_var                    |
-|                                      |  function nf90_inq_varid(ncid, name, |
-|                                      |  varid)                              |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid                              |
-|                                      |    character (len = *), intent( in)  |
-|                                      | :: name                              |
-|                                      |    integer,             intent(out)  |
-|                                      | :: varid                             |
-|                                      |    integer                           |
-|                                      | :: nf90_inq_varid                    |
-|                                      |  function nf90_inquire_variable(ncid |
-|                                      | , varid, name, xtype, ndims, &       |
-|                                      |                                 dimi |
-|                                      | ds, nAtts)                           |
-|                                      |    integer,                          |
-|                                      | intent( in) :: ncid, varid           |
-|                                      |    character (len = *),   optional,  |
-|                                      | intent(out) :: name                  |
-|                                      |    integer,               optional,  |
-|                                      | intent(out) :: xtype, ndims          |
-|                                      |    integer, dimension(*), optional,  |
-|                                      | intent(out) :: dimids                |
-|                                      |    integer,               optional,  |
-|                                      | intent(out) :: nAtts                 |
-|                                      |    integer                           |
-|                                      |             :: nf90_inquire_variable |
-|                                      |  function nf90_put_var(ncid, varid,  |
-|                                      | values, start, stride, map)          |
-|                                      |    integer,                          |
-|                                      | intent( in) :: ncid, varid           |
-|                                      |    any valid type, scalar or array o |
-|                                      | f any rank, &                        |
-|                                      |                                      |
-|                                      | intent( in) :: values                |
-|                                      |    integer, dimension(:), optional,  |
-|                                      | intent( in) :: start, count, stride, |
-|                                      |  map                                 |
-|                                      |    integer                           |
-|                                      |             :: nf90_put_var          |
-|                                      |  function nf90_get_var(ncid, varid,  |
-|                                      | values, start, stride, map)          |
-|                                      |    integer,                          |
-|                                      | intent( in) :: ncid, varid           |
-|                                      |    any valid type, scalar or array o |
-|                                      | f any rank, &                        |
-|                                      |                                      |
-|                                      | intent(out) :: values                |
-|                                      |    integer, dimension(:), optional,  |
-|                                      | intent( in) :: start, count, stride, |
-|                                      |  map                                 |
-|                                      |    integer                           |
-|                                      |             :: nf90_get_var          |
-|                                      |  function nf90_rename_var(ncid, vari |
-|                                      | d, newname)                          |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid, varid                       |
-|                                      |    character (len = *), intent( in)  |
-|                                      | :: newname                           |
-|                                      |    integer                           |
-|                                      | :: nf90_rename_var                   |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-Attribute functions
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_inquire_attribute(nci |
-|                                      | d, varid, name, xtype, len, attnum)  |
-|                                      |    integer,             intent( in)  |
-|                                      |           :: ncid, varid             |
-|                                      |    character (len = *), intent( in)  |
-|                                      |           :: name                    |
-|                                      |    integer,             intent(out), |
-|                                      |  optional :: xtype, len, attnum      |
-|                                      |    integer                           |
-|                                      |           :: nf90_inquire_attribute  |
-|                                      |  function nf90_inq_attname(ncid, var |
-|                                      | id, attnum, name)                    |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid, varid, attnum               |
-|                                      |    character (len = *), intent(out)  |
-|                                      | :: name                              |
-|                                      |    integer                           |
-|                                      | :: nf90_inq_attname                  |
-|                                      |  function nf90_put_att(ncid, varid,  |
-|                                      | name, values)                        |
-|                                      |    integer,            intent( in) : |
-|                                      | : ncid, varid                        |
-|                                      |    character(len = *), intent( in) : |
-|                                      | : name                               |
-|                                      |    scalar character string or any nu |
-|                                      | meric type, scalar, or array of rank |
-|                                      |  1, &                                |
-|                                      |                        intent( in) : |
-|                                      | : values                             |
-|                                      |    integer                         : |
-|                                      | : nf90_put_att                       |
-|                                      |  function nf90_get_att(ncid, varid,  |
-|                                      | name, values)                        |
-|                                      |    integer,            intent( in) : |
-|                                      | : ncid, varid                        |
-|                                      |    character(len = *), intent( in) : |
-|                                      | : name                               |
-|                                      |    any valid type, scalar or array o |
-|                                      | f rank 1, &                          |
-|                                      |                        intent(out) : |
-|                                      | : values                             |
-|                                      |    integer                           |
-|                                      | :: nf90_get_att                      |
-|                                      |  function nf90_copy_att(ncid_in, var |
-|                                      | id_in, name, ncid_out, varid_out)    |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid_in,  varid_in                |
-|                                      |    character (len = *), intent( in)  |
-|                                      | :: name                              |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid_out, varid_out               |
-|                                      |    integer                           |
-|                                      | :: nf90_copy_att                     |
-|                                      |  function nf90_rename_att(ncid, vari |
-|                                      | d, curname, newname)                 |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid,  varid                      |
-|                                      |    character (len = *), intent( in)  |
-|                                      | :: curname, newname                  |
-|                                      |    integer                           |
-|                                      | :: nf90_rename_att                   |
-|                                      |  function nf90_del_att(ncid, varid,  |
-|                                      | name)                                |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid, varid                       |
-|                                      |    character (len = *), intent( in)  |
-|                                      | :: name                              |
-|                                      |    integer                           |
-|                                      | :: nf90_del_att                      |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ---------------------------------------------------------------------------------- --------------------------------------------------------------------------- --- -------------------------------------------------------------------------------------------------- ----------------------------- ------------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Summary-of-Fortran-90-Interface "Previous section in reading order")\]   \[[>](#The-new-Fortran-90-interface "Next section in reading order")\]       \[[<<](#Summary-of-Fortran-90-Interface "Beginning of this chapter or previous chapter")\]   \[[Up](#Top "Up section")\]   \[[>>](#Combined-Index "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ---------------------------------------------------------------------------------- --------------------------------------------------------------------------- --- -------------------------------------------------------------------------------------------------- ----------------------------- ------------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-B. Appendix B - FORTRAN 77 to Fortran 90 Transition Guide {.appendix}
-=========================================================
-
-------------------------------------------------------------------------
-
-  -------------------------------------------------------------------------------------------- --------------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------- ------------------------------------------------ --- --- --- --- ------------------------------------------- -------------- ---------------- [...]
-  \[[<](#FORTRAN-77-to-Fortran-90-Transition-Guide "Previous section in reading order")\]   \[[>](#Changes-to-Inquiry-functions "Next section in reading order")\]       \[[<<](#FORTRAN-77-to-Fortran-90-Transition-Guide "Beginning of this chapter or previous chapter")\]   \[[Up](#FORTRAN-77-to-Fortran-90-Transition-Guide "Up section")\]   \[[>>](#Combined-Index "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combi [...]
-  -------------------------------------------------------------------------------------------- --------------------------------------------------------------------------- --- ------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------- ------------------------------------------------ --- --- --- --- ------------------------------------------- -------------- ---------------- [...]
-
-The new Fortran 90 interface {.unnumberedsec}
-----------------------------
-
-The Fortran 90 interface to the netCDF library closely follows the
-FORTRAN 77 interface. In most cases, function and constant names and
-argument lists are the same, except that nf90\_ replaces nf\_ in names.
-The Fortran 90 interface is much smaller than the FORTRAN 77 interface,
-however. This has been accomplished by using optional arguments and
-overloaded functions wherever possible.
-
-Because FORTRAN 77 is a subset of Fortran 90, there is no reason to
-modify working FORTRAN code to use the Fortran 90 interface. New code,
-however, can easily be patterned after existing FORTRAN while taking
-advantage of the simpler interface. Some compilers may provide
-additional support when using Fortran 90. For example, compilers may
-issue warnings if arguments with intent( in) are not set before they are
-passed to a procedure.
-
-The Fortran 90 interface is currently implemented as a set of wrappers
-around the base FORTRAN subroutines in the netCDF distribution. Future
-versions may be implemented entirely in Fortran 90, adding additional
-error checking possibilities.
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------------- ------------------------------------------------------------------------------ --- ------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------- ------------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------- [...]
-  \[[<](#The-new-Fortran-90-interface "Previous section in reading order")\]   \[[>](#Changes-to-put-and-get-function "Next section in reading order")\]       \[[<<](#FORTRAN-77-to-Fortran-90-Transition-Guide "Beginning of this chapter or previous chapter")\]   \[[Up](#FORTRAN-77-to-Fortran-90-Transition-Guide "Up section")\]   \[[>>](#Combined-Index "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index  [...]
-  ------------------------------------------------------------------------------- ------------------------------------------------------------------------------ --- ------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------- ------------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------- [...]
-
-Changes to Inquiry functions {.unnumberedsec}
-----------------------------
-
-In the Fortran 90 interface there are two inquiry functions each for
-dimensions, variables, and attributes, and a single inquiry function for
-datasets. These functions take optional arguments, allowing users to
-request only the information they need. These functions replace the
-many-argument and single-argument inquiry functions in the FORTRAN
-interface.
-
-As an example, compare the attribute inquiry functions in the Fortran 90
-interface
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  function nf90_inquire_attribute(nci |
-|                                      | d, varid, name, xtype, len, attnum)  |
-|                                      |    integer,             intent( in)  |
-|                                      |           :: ncid, varid             |
-|                                      |    character (len = *), intent( in)  |
-|                                      |           :: name                    |
-|                                      |    integer,             intent(out), |
-|                                      |  optional :: xtype, len, attnum      |
-|                                      |    integer                           |
-|                                      |           :: nf90_inquire_attribute  |
-|                                      |  function nf90_inq_attname(ncid, var |
-|                                      | id, attnum, name)                    |
-|                                      |    integer,             intent( in)  |
-|                                      | :: ncid, varid, attnum               |
-|                                      |    character (len = *), intent(out)  |
-|                                      | :: name                              |
-|                                      |    integer                           |
-|                                      | :: nf90_inq_attname                  |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-with those in the FORTRAN interface
-
-+--------------------------------------+--------------------------------------+
-|                                      | ``` {.example}                       |
-|                                      |  INTEGER FUNCTION  NF_INQ_ATT        |
-|                                      |  (NCID, VARID, NAME, xtype, len)     |
-|                                      |  INTEGER FUNCTION  NF_INQ_ATTID      |
-|                                      |  (NCID, VARID, NAME, attnum)         |
-|                                      |  INTEGER FUNCTION  NF_INQ_ATTTYPE    |
-|                                      |  (NCID, VARID, NAME, xtype)          |
-|                                      |  INTEGER FUNCTION  NF_INQ_ATTLEN     |
-|                                      |  (NCID, VARID, NAME, len)            |
-|                                      |  INTEGER FUNCTION  NF_INQ_ATTNAME    |
-|                                      |  (NCID, VARID, ATTNUM, name)         |
-|                                      | ```                                  |
-+--------------------------------------+--------------------------------------+
-
-------------------------------------------------------------------------
-
-  ------------------------------------------------------------------------------- ------------------------------------------------------------- --- ------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------- ------------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ---- [...]
-  \[[<](#Changes-to-Inquiry-functions "Previous section in reading order")\]   \[[>](#Combined-Index "Next section in reading order")\]       \[[<<](#FORTRAN-77-to-Fortran-90-Transition-Guide "Beginning of this chapter or previous chapter")\]   \[[Up](#FORTRAN-77-to-Fortran-90-Transition-Guide "Up section")\]   \[[>>](#Combined-Index "Next chapter")\]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[? [...]
-  ------------------------------------------------------------------------------- ------------------------------------------------------------- --- ------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------- ------------------------------------------------ --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ---- [...]
-
-Changes to put and get function {.unnumberedsec}
--------------------------------
-
-The biggest simplification in the Fortran 90 is in the nf90\_put\_var
-and nf90\_get\_var functions. Both functions are overloaded: the values
-argument can be a scalar or an array any rank (7 is the maximum rank
-allowed by Fortran 90), and may be of any numeric type or the default
-character type. The netCDF library provides transparent conversion
-between the external representation of the data and the desired internal
-representation.
-
-The start, count, stride, and map arguments to nf90\_put\_var and
-nf90\_get\_var are optional. By default, data is read from or written to
-consecutive values of starting at the origin of the netCDF variable; the
-shape of the argument determines how many values are read from or
-written to each dimension. Any or all of these arguments may be supplied
-to override the default behavior.
-
-Note also that Fortran 90 allows arbitrary array sections to be passed
-to any procedure, which may greatly simplify programming. For examples
-see [Writing Data Values: NF90\_PUT\_VAR](#NF90_005fPUT_005fVAR) and
-[Reading Data Values: NF90\_GET\_VAR](#NF90_005fGET_005fVAR).
-
-------------------------------------------------------------------------
-
-  ---------------------------------------------------------------------------------- ------------ --- ------------------------------------------------------------------------------------------------------------ ----------------------------- ---------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[<](#Changes-to-put-and-get-function "Previous section in reading order")\]   \[ > \]       \[[<<](#FORTRAN-77-to-Fortran-90-Transition-Guide "Beginning of this chapter or previous chapter")\]   \[[Up](#Top "Up section")\]   \[ >> \]                   \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ---------------------------------------------------------------------------------- ------------ --- ------------------------------------------------------------------------------------------------------------ ----------------------------- ---------------- --- --- --- --- ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-Index {.unnumbered}
-=====
-
-  ------------ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-  Jump to:     [**A**](#Index_cp_letter-A)   [**C**](#Index_cp_letter-C)   [**D**](#Index_cp_letter-D)   [**E**](#Index_cp_letter-E)   [**F**](#Index_cp_letter-F)   [**G**](#Index_cp_letter-G)   [**I**](#Index_cp_letter-I)   [**L**](#Index_cp_letter-L)   [**N**](#Index_cp_letter-N)   [**O**](#Index_cp_letter-O)   [**R**](#Index_cp_letter-R)   [**U**](#Index_cp_letter-U)   [**V**](#Index_cp_letter-V)   [**W**](#Index_cp_letter-W)  
-  ------------ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-Index Entry
-
-Section
-
-------------------------------------------------------------------------
-
-A
-
-[attributes, adding](#index-attributes_002c-adding)
-
-[1.5 Adding New Dimensions, Variables,
-Attributes](#Adding-New-Dimensions)
-
-------------------------------------------------------------------------
-
-C
-
-[common netcdf commands](#index-common-netcdf-commands)
-
-[1. Use of the NetCDF Library](#Use-of-the-NetCDF-Library)
-
-[compiling with netCDF library](#index-compiling-with-netCDF-library)
-
-[1.7 Compiling and Linking with the NetCDF
-Library](#Compiling-and-Linking-with-the-NetCDF-Library)
-
-[compound types, overview](#index-compound-types_002c-overview)
-
-[5.6 Compound Types Introduction](#Compound-Types)
-
-------------------------------------------------------------------------
-
-D
-
-[dataset, creating](#index-dataset_002c-creating)
-
-[1.1 Creating a NetCDF Dataset](#Creating-a-NetCDF-Dataset)
-
-[datasets, overview](#index-datasets_002c-overview)
-
-[2.1 Datasets Introduction](#Datasets-Introduction)
-
-[dimensions, adding](#index-dimensions_002c-adding)
-
-[1.5 Adding New Dimensions, Variables,
-Attributes](#Adding-New-Dimensions)
-
-------------------------------------------------------------------------
-
-E
-
-[enum type](#index-enum-type)
-
-[5.9 Enum Type Introduction](#Enum-Type)
-
-[error handling](#index-error-handling)
-
-[1.6 Error Handling](#Error-Handling)
-
-------------------------------------------------------------------------
-
-F
-
-[fill](#index-fill)
-
-[6.4 Define Fill Parameters for a Variable:
-`nf90_def_var_fill`](#NF90_005fDEF_005fVAR_005fFILL)
-
-------------------------------------------------------------------------
-
-G
-
-[groups, overview](#index-groups_002c-overview)
-
-[3. Groups](#Groups)
-
-------------------------------------------------------------------------
-
-I
-
-[interface descriptions](#index-interface-descriptions)
-
-[2.2 NetCDF Library Interface
-Descriptions](#NetCDF-Library-Interface-Descriptions)
-
-------------------------------------------------------------------------
-
-L
-
-[linking to netCDF library](#index-linking-to-netCDF-library)
-
-[1.7 Compiling and Linking with the NetCDF
-Library](#Compiling-and-Linking-with-the-NetCDF-Library)
-
-------------------------------------------------------------------------
-
-N
-
-[nf-config](#index-nf_002dconfig)
-
-[1.7 Compiling and Linking with the NetCDF
-Library](#Compiling-and-Linking-with-the-NetCDF-Library)
-
-[NF90\_ABORT](#index-NF90_005fABORT)
-
-[2.12 NF90\_ABORT](#NF90_005fABORT)
-
-[NF90\_ABORT , example](#index-NF90_005fABORT-_002c-example)
-
-[2.12 NF90\_ABORT](#NF90_005fABORT)
-
-[NF90\_CLOSE](#index-NF90_005fCLOSE)
-
-[2.9 NF90\_CLOSE](#NF90_005fCLOSE)
-
-[NF90\_CLOSE , example](#index-NF90_005fCLOSE-_002c-example)
-
-[2.9 NF90\_CLOSE](#NF90_005fCLOSE)
-
-[NF90\_CLOSE, typical use](#index-NF90_005fCLOSE_002c-typical-use)
-
-[1.1 Creating a NetCDF Dataset](#Creating-a-NetCDF-Dataset)
-
-[NF90\_COPY\_ATT](#index-NF90_005fCOPY_005fATT)
-
-[7.5 Copy Attribute from One NetCDF to Another:
-NF90\_COPY\_ATT](#NF90_005fCOPY_005fATT)
-
-[NF90\_COPY\_ATT, example](#index-NF90_005fCOPY_005fATT_002c-example)
-
-[7.5 Copy Attribute from One NetCDF to Another:
-NF90\_COPY\_ATT](#NF90_005fCOPY_005fATT)
-
-[NF90\_CREATE](#index-NF90_005fCREATE)
-
-[2.5 NF90\_CREATE](#NF90_005fCREATE)
-
-[NF90\_CREATE , example](#index-NF90_005fCREATE-_002c-example)
-
-[2.5 NF90\_CREATE](#NF90_005fCREATE)
-
-[NF90\_CREATE, typical use](#index-NF90_005fCREATE_002c-typical-use)
-
-[1.1 Creating a NetCDF Dataset](#Creating-a-NetCDF-Dataset)
-
-[NF90\_DEF\_COMPOUND](#index-NF90_005fDEF_005fCOMPOUND)
-
-[5.6.1 Creating a Compound Type:
-NF90\_DEF\_COMPOUND](#NF90_005fDEF_005fCOMPOUND)
-
-[NF90\_DEF\_DIM](#index-NF90_005fDEF_005fDIM)
-
-[4.2 NF90\_DEF\_DIM](#NF90_005fDEF_005fDIM)
-
-[NF90\_DEF\_DIM, example](#index-NF90_005fDEF_005fDIM_002c-example)
-
-[4.2 NF90\_DEF\_DIM](#NF90_005fDEF_005fDIM)
-
-[NF90\_DEF\_DIM, typical
-use](#index-NF90_005fDEF_005fDIM_002c-typical-use)
-
-[1.1 Creating a NetCDF Dataset](#Creating-a-NetCDF-Dataset)
-
-[NF90\_DEF\_ENUM](#index-NF90_005fDEF_005fENUM)
-
-[5.9.1 Creating a Enum Type: NF90\_DEF\_ENUM](#NF90_005fDEF_005fENUM)
-
-[NF90\_DEF\_GRP](#index-NF90_005fDEF_005fGRP)
-
-[3.11 Create a New Group: NF90\_DEF\_GRP](#NF90_005fDEF_005fGRP)
-
-[NF90\_DEF\_OPAQUE](#index-NF90_005fDEF_005fOPAQUE)
-
-[5.8.1 Creating Opaque Types:
-NF90\_DEF\_OPAQUE](#NF90_005fDEF_005fOPAQUE)
-
-[NF90\_DEF\_VAR](#index-NF90_005fDEF_005fVAR)
-
-[6.3 Create a Variable: `NF90_DEF_VAR`](#NF90_005fDEF_005fVAR)
-
-[NF90\_DEF\_VAR, example](#index-NF90_005fDEF_005fVAR_002c-example)
-
-[6.3 Create a Variable: `NF90_DEF_VAR`](#NF90_005fDEF_005fVAR)
-
-[NF90\_DEF\_VAR, typical
-use](#index-NF90_005fDEF_005fVAR_002c-typical-use)
-
-[1.1 Creating a NetCDF Dataset](#Creating-a-NetCDF-Dataset)
-
-[NF90\_DEF\_VAR\_FILL](#index-NF90_005fDEF_005fVAR_005fFILL)
-
-[6.4 Define Fill Parameters for a Variable:
-`nf90_def_var_fill`](#NF90_005fDEF_005fVAR_005fFILL)
-
-[NF90\_DEF\_VLEN](#index-NF90_005fDEF_005fVLEN)
-
-[5.7.1 Define a Variable Length Array (VLEN):
-NF90\_DEF\_VLEN](#NF90_005fDEF_005fVLEN)
-
-[NF90\_DEL\_ATT](#index-NF90_005fDEL_005fATT)
-
-[7.7 NF90\_DEL\_ATT](#NF90_005fDEL_005fATT)
-
-[NF90\_DEL\_ATT , example](#index-NF90_005fDEL_005fATT-_002c-example)
-
-[7.7 NF90\_DEL\_ATT](#NF90_005fDEL_005fATT)
-
-[NF90\_ENDDEF](#index-NF90_005fENDDEF)
-
-[2.8 NF90\_ENDDEF](#NF90_005fENDDEF)
-
-[NF90\_ENDDEF , example](#index-NF90_005fENDDEF-_002c-example)
-
-[2.8 NF90\_ENDDEF](#NF90_005fENDDEF)
-
-[NF90\_ENDDEF, typical use](#index-NF90_005fENDDEF_002c-typical-use)
-
-[1.1 Creating a NetCDF Dataset](#Creating-a-NetCDF-Dataset)
-
-[NF90\_FREE\_VLEN](#index-NF90_005fFREE_005fVLEN)
-
-[5.7.3 Releasing Memory for a Variable Length Array (VLEN) Type:
-NF90\_FREE\_VLEN](#NF90_005fFREE_005fVLEN)
-
-[NF90\_GET\_ATT](#index-NF90_005fGET_005fATT)
-
-[7.4 Get Attribute’s Values: NF90\_GET\_ATT](#NF90_005fGET_005fATT)
-
-[NF90\_GET\_ATT, example](#index-NF90_005fGET_005fATT_002c-example)
-
-[7.4 Get Attribute’s Values: NF90\_GET\_ATT](#NF90_005fGET_005fATT)
-
-[NF90\_GET\_ATT, typical
-use](#index-NF90_005fGET_005fATT_002c-typical-use)
-
-[1.2 Reading a NetCDF Dataset with Known
-Names](#Reading-a-NetCDF-Dataset-with-Known-Names)
-
-[NF90\_GET\_ATT, typical
-use](#index-NF90_005fGET_005fATT_002c-typical-use-1)
-
-[1.3 Reading a netCDF Dataset with Unknown
-Names](#Reading-a-netCDF-Dataset-with-Unknown-Names)
-
-[NF90\_GET\_VAR](#index-NF90_005fGET_005fVAR)
-
-[6.9 Reading Data Values: NF90\_GET\_VAR](#NF90_005fGET_005fVAR)
-
-[NF90\_GET\_VAR, example](#index-NF90_005fGET_005fVAR_002c-example)
-
-[6.9 Reading Data Values: NF90\_GET\_VAR](#NF90_005fGET_005fVAR)
-
-[NF90\_GET\_VAR, typical
-use](#index-NF90_005fGET_005fVAR_002c-typical-use)
-
-[1.2 Reading a NetCDF Dataset with Known
-Names](#Reading-a-NetCDF-Dataset-with-Known-Names)
-
-[NF90\_GET\_VLEN\_ELEMENT](#index-NF90_005fGET_005fVLEN_005fELEMENT)
-
-[5.5.2 Set a Variable Length Array with
-NF90\_GET\_VLEN\_ELEMENT](#NF90_005fGET_005fVLEN_005fELEMENT)
-
-[NF90\_INQUIRE, typical use](#index-NF90_005fINQUIRE_002c-typical-use)
-
-[1.3 Reading a netCDF Dataset with Unknown
-Names](#Reading-a-netCDF-Dataset-with-Unknown-Names)
-
-[NF90\_INQUIRE\_ATTRIBUTE](#index-NF90_005fINQUIRE_005fATTRIBUTE)
-
-[7.3 Get Information about an Attribute: NF90\_INQUIRE\_ATTRIBUTE and
-NF90\_INQ\_ATTNAME](#NF90_005fINQUIRE_005fATTRIBUTE)
-
-[NF90\_INQUIRE\_ATTRIBUTE,
-example](#index-NF90_005fINQUIRE_005fATTRIBUTE_002c-example)
-
-[7.3 Get Information about an Attribute: NF90\_INQUIRE\_ATTRIBUTE and
-NF90\_INQ\_ATTNAME](#NF90_005fINQUIRE_005fATTRIBUTE)
-
-[NF90\_INQUIRE\_ATTRIBUTE, typical
-use](#index-NF90_005fINQUIRE_005fATTRIBUTE_002c-typical-use)
-
-[1.3 Reading a netCDF Dataset with Unknown
-Names](#Reading-a-netCDF-Dataset-with-Unknown-Names)
-
-[NF90\_INQUIRE\_DIMENSION](#index-NF90_005fINQUIRE_005fDIMENSION)
-
-[4.4 NF90\_INQUIRE\_DIMENSION](#NF90_005fINQUIRE_005fDIMENSION)
-
-[NF90\_INQUIRE\_DIMENSION ,
-example](#index-NF90_005fINQUIRE_005fDIMENSION-_002c-example)
-
-[4.4 NF90\_INQUIRE\_DIMENSION](#NF90_005fINQUIRE_005fDIMENSION)
-
-[NF90\_INQUIRE\_DIMENSION, typical
-use](#index-NF90_005fINQUIRE_005fDIMENSION_002c-typical-use)
-
-[1.3 Reading a netCDF Dataset with Unknown
-Names](#Reading-a-netCDF-Dataset-with-Unknown-Names)
-
-[NF90\_INQUIRE\_VARIABLE](#index-NF90_005fINQUIRE_005fVARIABLE)
-
-[6.6 Get Information about a Variable from Its ID:
-NF90\_INQUIRE\_VARIABLE](#NF90_005fINQUIRE_005fVARIABLE)
-
-[NF90\_INQUIRE\_VARIABLE ,
-example](#index-NF90_005fINQUIRE_005fVARIABLE-_002c-example)
-
-[6.6 Get Information about a Variable from Its ID:
-NF90\_INQUIRE\_VARIABLE](#NF90_005fINQUIRE_005fVARIABLE)
-
-[NF90\_INQUIRE\_VARIABLE, typical
-use](#index-NF90_005fINQUIRE_005fVARIABLE_002c-typical-use)
-
-[1.3 Reading a netCDF Dataset with Unknown
-Names](#Reading-a-netCDF-Dataset-with-Unknown-Names)
-
-[NF90\_INQ\_ATTNAME](#index-NF90_005fINQ_005fATTNAME)
-
-[7.3 Get Information about an Attribute: NF90\_INQUIRE\_ATTRIBUTE and
-NF90\_INQ\_ATTNAME](#NF90_005fINQUIRE_005fATTRIBUTE)
-
-[NF90\_INQ\_ATTNAME,
-example](#index-NF90_005fINQ_005fATTNAME_002c-example)
-
-[7.3 Get Information about an Attribute: NF90\_INQUIRE\_ATTRIBUTE and
-NF90\_INQ\_ATTNAME](#NF90_005fINQUIRE_005fATTRIBUTE)
-
-[NF90\_INQ\_ATTNAME, typical
-use](#index-NF90_005fINQ_005fATTNAME_002c-typical-use)
-
-[1.3 Reading a netCDF Dataset with Unknown
-Names](#Reading-a-netCDF-Dataset-with-Unknown-Names)
-
-[NF90\_INQ\_CMP\_FIELDDIM\_SIZES](#index-NF90_005fINQ_005fCMP_005fFIELDDIM_005fSIZES)
-
-[5.6.5 Learn About a Field of a Compound Type:
-NF90\_INQ\_COMPOUND\_FIELD](#NF90_005fINQ_005fCOMPOUND_005fFIELD)
-
-[NF90\_INQ\_COMPOUND](#index-NF90_005fINQ_005fCOMPOUND)
-
-[5.6.4 Learn About a Compound Type:
-NF90\_INQ\_COMPOUND](#NF90_005fINQ_005fCOMPOUND)
-
-[NF90\_INQ\_COMPOUND\_FIELD](#index-NF90_005fINQ_005fCOMPOUND_005fFIELD)
-
-[5.6.5 Learn About a Field of a Compound Type:
-NF90\_INQ\_COMPOUND\_FIELD](#NF90_005fINQ_005fCOMPOUND_005fFIELD)
-
-[NF90\_INQ\_COMPOUND\_FIELDINDEX](#index-NF90_005fINQ_005fCOMPOUND_005fFIELDINDEX)
-
-[5.6.5 Learn About a Field of a Compound Type:
-NF90\_INQ\_COMPOUND\_FIELD](#NF90_005fINQ_005fCOMPOUND_005fFIELD)
-
-[NF90\_INQ\_COMPOUND\_FIELDNAME](#index-NF90_005fINQ_005fCOMPOUND_005fFIELDNAME)
-
-[5.6.5 Learn About a Field of a Compound Type:
-NF90\_INQ\_COMPOUND\_FIELD](#NF90_005fINQ_005fCOMPOUND_005fFIELD)
-
-[NF90\_INQ\_COMPOUND\_FIELDNDIMS](#index-NF90_005fINQ_005fCOMPOUND_005fFIELDNDIMS)
-
-[5.6.5 Learn About a Field of a Compound Type:
-NF90\_INQ\_COMPOUND\_FIELD](#NF90_005fINQ_005fCOMPOUND_005fFIELD)
-
-[NF90\_INQ\_COMPOUND\_FIELDOFFSET](#index-NF90_005fINQ_005fCOMPOUND_005fFIELDOFFSET)
-
-[5.6.5 Learn About a Field of a Compound Type:
-NF90\_INQ\_COMPOUND\_FIELD](#NF90_005fINQ_005fCOMPOUND_005fFIELD)
-
-[NF90\_INQ\_COMPOUND\_FIELDTYPE](#index-NF90_005fINQ_005fCOMPOUND_005fFIELDTYPE)
-
-[5.6.5 Learn About a Field of a Compound Type:
-NF90\_INQ\_COMPOUND\_FIELD](#NF90_005fINQ_005fCOMPOUND_005fFIELD)
-
-[NF90\_INQ\_COMPOUND\_NAME](#index-NF90_005fINQ_005fCOMPOUND_005fNAME)
-
-[5.6.4 Learn About a Compound Type:
-NF90\_INQ\_COMPOUND](#NF90_005fINQ_005fCOMPOUND)
-
-[NF90\_INQ\_COMPOUND\_NFIELDS](#index-NF90_005fINQ_005fCOMPOUND_005fNFIELDS)
-
-[5.6.4 Learn About a Compound Type:
-NF90\_INQ\_COMPOUND](#NF90_005fINQ_005fCOMPOUND)
-
-[NF90\_INQ\_COMPOUND\_SIZE](#index-NF90_005fINQ_005fCOMPOUND_005fSIZE)
-
-[5.6.4 Learn About a Compound Type:
-NF90\_INQ\_COMPOUND](#NF90_005fINQ_005fCOMPOUND)
-
-[NF90\_INQ\_DIMID](#index-NF90_005fINQ_005fDIMID)
-
-[4.3 NF90\_INQ\_DIMID](#NF90_005fINQ_005fDIMID)
-
-[NF90\_INQ\_DIMID ,
-example](#index-NF90_005fINQ_005fDIMID-_002c-example)
-
-[4.3 NF90\_INQ\_DIMID](#NF90_005fINQ_005fDIMID)
-
-[NF90\_INQ\_DIMID, typical
-use](#index-NF90_005fINQ_005fDIMID_002c-typical-use)
-
-[1.2 Reading a NetCDF Dataset with Known
-Names](#Reading-a-NetCDF-Dataset-with-Known-Names)
-
-[NF90\_INQ\_DIMIDS](#index-NF90_005fINQ_005fDIMIDS)
-
-[3.4 Find all Dimensions Visible in a Group:
-NF90\_INQ\_DIMIDS](#NF90_005fINQ_005fDIMIDS)
-
-[NF90\_INQ\_ENUM](#index-NF90_005fINQ_005fENUM)
-
-[5.9.3 Learn About a Enum Type: NF90\_INQ\_ENUM](#NF90_005fINQ_005fENUM)
-
-[NF90\_INQ\_ENUM\_IDENT](#index-NF90_005fINQ_005fENUM_005fIDENT)
-
-[5.9.5 Learn the Name of a Enum Type:
-NF90\_INQ\_ENUM\_IDENT](#NF90_005fINQ_005fENUM_005fIDENT)
-
-[nf90\_inq\_enum\_member](#index-nf90_005finq_005fenum_005fmember)
-
-[5.9.4 Learn the Name of a Enum Type:
-nf90\_inq\_enum\_member](#NF90_005fINQ_005fENUM_005fMEMBER)
-
-[NF90\_INQ\_GRPNAME](#index-NF90_005fINQ_005fGRPNAME)
-
-[3.6 Find a Group’s Name: NF90\_INQ\_GRPNAME](#NF90_005fINQ_005fGRPNAME)
-
-[NF90\_INQ\_GRPNAME\_FULL](#index-NF90_005fINQ_005fGRPNAME_005fFULL)
-
-[3.7 Find a Group’s Full Name:
-NF90\_INQ\_GRPNAME\_FULL](#NF90_005fINQ_005fGRPNAME_005fFULL)
-
-[NF90\_INQ\_GRPNAME\_LEN](#index-NF90_005fINQ_005fGRPNAME_005fLEN)
-
-[3.5 Find the Length of a Group’s Full Name:
-NF90\_INQ\_GRPNAME\_LEN](#NF90_005fINQ_005fGRPNAME_005fLEN)
-
-[NF90\_INQ\_GRPS](#index-NF90_005fINQ_005fGRPS)
-
-[3.2 Get a List of Groups in a Group:
-NF90\_INQ\_GRPS](#NF90_005fINQ_005fGRPS)
-
-[NF90\_INQ\_GRP\_PARENT](#index-NF90_005fINQ_005fGRP_005fPARENT)
-
-[3.8 Find a Group’s Parent:
-NF90\_INQ\_GRP\_PARENT](#NF90_005fINQ_005fGRP_005fPARENT)
-
-[NF90\_INQ\_GRP\_PARENT](#index-NF90_005fINQ_005fGRP_005fPARENT-1)
-
-[3.9 Find a Group by Name:
-NF90\_INQ\_GRP\_NCID](#NF90_005fINQ_005fGRP_005fNCID)
-
-[NF90\_INQ\_GRP\_PARENT](#index-NF90_005fINQ_005fGRP_005fPARENT-2)
-
-[3.10 Find a Group by its Fully-qualified Name:
-NF90\_INQ\_GRP\_FULL\_NCID](#NF90_005fINQ_005fGRP_005fFULL_005fNCID)
-
-[NF90\_INQ\_LIBVERS](#index-NF90_005fINQ_005fLIBVERS)
-
-[2.4 Get netCDF library version:
-NF90\_INQ\_LIBVERS](#NF90_005fINQ_005fLIBVERS)
-
-[NF90\_INQ\_LIBVERS,
-example](#index-NF90_005fINQ_005fLIBVERS_002c-example)
-
-[2.4 Get netCDF library version:
-NF90\_INQ\_LIBVERS](#NF90_005fINQ_005fLIBVERS)
-
-[NF90\_INQ\_NCID](#index-NF90_005fINQ_005fNCID)
-
-[3.1 Find a Group ID: NF90\_INQ\_NCID](#NF90_005fINQ_005fNCID)
-
-[NF90\_INQ\_OPAQUE](#index-NF90_005fINQ_005fOPAQUE)
-
-[5.8.2 Learn About an Opaque Type:
-NF90\_INQ\_OPAQUE](#NF90_005fINQ_005fOPAQUE)
-
-[NF90\_INQ\_TYPE](#index-NF90_005fINQ_005fTYPE)
-
-[5.4 Learn About a User Defined Type:
-NF90\_INQ\_TYPE](#NF90_005fINQ_005fTYPE)
-
-[nf90\_inq\_typeid](#index-nf90_005finq_005ftypeid)
-
-[5.3 Find a Typeid from Group and Name:
-nf90\_inq\_typeid](#nf90_005finq_005ftypeid)
-
-[NF90\_INQ\_TYPEIDS](#index-NF90_005fINQ_005fTYPEIDS)
-
-[5.2 Learn the IDs of All Types in Group:
-NF90\_INQ\_TYPEIDS](#NF90_005fINQ_005fTYPEIDS)
-
-[NF90\_INQ\_USER\_TYPE](#index-NF90_005fINQ_005fUSER_005fTYPE)
-
-[5.5 Learn About a User Defined Type:
-NF90\_INQ\_USER\_TYPE](#NF90_005fINQ_005fUSER_005fTYPE)
-
-[NF90\_INQ\_VARID](#index-NF90_005fINQ_005fVARID)
-
-[6.7 Get the ID of a variable from the name:
-NF90\_INQ\_VARID](#NF90_005fINQ_005fVARID)
-
-[NF90\_INQ\_VARID, example](#index-NF90_005fINQ_005fVARID_002c-example)
-
-[6.7 Get the ID of a variable from the name:
-NF90\_INQ\_VARID](#NF90_005fINQ_005fVARID)
-
-[NF90\_INQ\_VARID, typical
-use](#index-NF90_005fINQ_005fVARID_002c-typical-use)
-
-[1.2 Reading a NetCDF Dataset with Known
-Names](#Reading-a-NetCDF-Dataset-with-Known-Names)
-
-[NF90\_INQ\_VARID, typical
-use](#index-NF90_005fINQ_005fVARID_002c-typical-use-1)
-
-[1.4 Writing Data in an Existing NetCDF
-Dataset](#Writing-Data-in-an-Existing-NetCDF-Dataset)
-
-[NF90\_INQ\_VARIDS](#index-NF90_005fINQ_005fVARIDS)
-
-[3.3 Find all the Variables in a Group:
-NF90\_INQ\_VARIDS](#NF90_005fINQ_005fVARIDS)
-
-[NF90\_INQ\_VAR\_FILL](#index-NF90_005fINQ_005fVAR_005fFILL)
-
-[6.5 Learn About Fill Parameters for a Variable:
-`NF90_INQ_VAR_FILL`](#NF90_005fINQ_005fVAR_005fFILL)
-
-[NF90\_INQ\_VLEN](#index-NF90_005fINQ_005fVLEN)
-
-[5.7.2 Learning about a Variable Length Array (VLEN) Type:
-NF90\_INQ\_VLEN](#NF90_005fINQ_005fVLEN)
-
-[NF90\_INSERT\_ARRAY\_COMPOUND](#index-NF90_005fINSERT_005fARRAY_005fCOMPOUND)
-
-[5.6.3 Inserting an Array Field into a Compound Type:
-NF90\_INSERT\_ARRAY\_COMPOUND](#NF90_005fINSERT_005fARRAY_005fCOMPOUND)
-
-[NF90\_INSERT\_COMPOUND](#index-NF90_005fINSERT_005fCOMPOUND)
-
-[5.6.2 Inserting a Field into a Compound Type:
-NF90\_INSERT\_COMPOUND](#NF90_005fINSERT_005fCOMPOUND)
-
-[NF90\_INSERT\_ENUM](#index-NF90_005fINSERT_005fENUM)
-
-[5.9.2 Inserting a Field into a Enum Type:
-NF90\_INSERT\_ENUM](#NF90_005fINSERT_005fENUM)
-
-[NF90\_OPEN](#index-NF90_005fOPEN)
-
-[2.6 NF90\_OPEN](#NF90_005fOPEN)
-
-[NF90\_OPEN , example](#index-NF90_005fOPEN-_002c-example)
-
-[2.6 NF90\_OPEN](#NF90_005fOPEN)
-
-[NF90\_OPEN, typical use](#index-NF90_005fOPEN_002c-typical-use)
-
-[1.2 Reading a NetCDF Dataset with Known
-Names](#Reading-a-NetCDF-Dataset-with-Known-Names)
-
-[NF90\_PUT\_ATT](#index-NF90_005fPUT_005fATT)
-
-[7.2 Create an Attribute: NF90\_PUT\_ATT](#NF90_005fPUT_005fATT)
-
-[NF90\_PUT\_ATT, example](#index-NF90_005fPUT_005fATT_002c-example)
-
-[7.2 Create an Attribute: NF90\_PUT\_ATT](#NF90_005fPUT_005fATT)
-
-[NF90\_PUT\_ATT, typical
-use](#index-NF90_005fPUT_005fATT_002c-typical-use)
-
-[1.1 Creating a NetCDF Dataset](#Creating-a-NetCDF-Dataset)
-
-[NF90\_PUT\_ATT, typical
-use](#index-NF90_005fPUT_005fATT_002c-typical-use-1)
-
-[1.4 Writing Data in an Existing NetCDF
-Dataset](#Writing-Data-in-an-Existing-NetCDF-Dataset)
-
-[NF90\_PUT\_VAR](#index-NF90_005fPUT_005fVAR)
-
-[6.8 Writing Data Values: NF90\_PUT\_VAR](#NF90_005fPUT_005fVAR)
-
-[NF90\_PUT\_VAR, example](#index-NF90_005fPUT_005fVAR_002c-example)
-
-[6.8 Writing Data Values: NF90\_PUT\_VAR](#NF90_005fPUT_005fVAR)
-
-[NF90\_PUT\_VAR, typical
-use](#index-NF90_005fPUT_005fVAR_002c-typical-use)
-
-[1.1 Creating a NetCDF Dataset](#Creating-a-NetCDF-Dataset)
-
-[NF90\_PUT\_VAR, typical
-use](#index-NF90_005fPUT_005fVAR_002c-typical-use-1)
-
-[1.4 Writing Data in an Existing NetCDF
-Dataset](#Writing-Data-in-an-Existing-NetCDF-Dataset)
-
-[NF90\_PUT\_VLEN\_ELEMENT](#index-NF90_005fPUT_005fVLEN_005fELEMENT)
-
-[5.5.1 Set a Variable Length Array with
-NF90\_PUT\_VLEN\_ELEMENT](#NF90_005fPUT_005fVLEN_005fELEMENT)
-
-[NF90\_REDEF](#index-NF90_005fREDEF)
-
-[2.7 NF90\_REDEF](#NF90_005fREDEF)
-
-[NF90\_REDEF , example](#index-NF90_005fREDEF-_002c-example)
-
-[2.7 NF90\_REDEF](#NF90_005fREDEF)
-
-[NF90\_REDEF, typical use](#index-NF90_005fREDEF_002c-typical-use)
-
-[1.5 Adding New Dimensions, Variables,
-Attributes](#Adding-New-Dimensions)
-
-[NF90\_RENAME\_ATT](#index-NF90_005fRENAME_005fATT)
-
-[7.6 Rename an Attribute: NF90\_RENAME\_ATT](#NF90_005fRENAME_005fATT)
-
-[NF90\_RENAME\_ATT,
-example](#index-NF90_005fRENAME_005fATT_002c-example)
-
-[7.6 Rename an Attribute: NF90\_RENAME\_ATT](#NF90_005fRENAME_005fATT)
-
-[NF90\_RENAME\_DIM](#index-NF90_005fRENAME_005fDIM)
-
-[4.5 NF90\_RENAME\_DIM](#NF90_005fRENAME_005fDIM)
-
-[NF90\_RENAME\_DIM ,
-example](#index-NF90_005fRENAME_005fDIM-_002c-example)
-
-[4.5 NF90\_RENAME\_DIM](#NF90_005fRENAME_005fDIM)
-
-[NF90\_RENAME\_VAR](#index-NF90_005fRENAME_005fVAR)
-
-[6.12 NF90\_RENAME\_VAR](#NF90_005fRENAME_005fVAR)
-
-[NF90\_RENAME\_VAR ,
-example](#index-NF90_005fRENAME_005fVAR-_002c-example)
-
-[6.12 NF90\_RENAME\_VAR](#NF90_005fRENAME_005fVAR)
-
-[NF90\_SET\_FILL](#index-NF90_005fSET_005fFILL)
-
-[2.13 NF90\_SET\_FILL](#NF90_005fSET_005fFILL)
-
-[NF90\_SET\_FILL , example](#index-NF90_005fSET_005fFILL-_002c-example)
-
-[2.13 NF90\_SET\_FILL](#NF90_005fSET_005fFILL)
-
-[NF90\_STRERROR](#index-NF90_005fSTRERROR)
-
-[2.3 NF90\_STRERROR](#NF90_005fSTRERROR)
-
-[NF90\_STRERROR, example](#index-NF90_005fSTRERROR_002c-example)
-
-[2.3 NF90\_STRERROR](#NF90_005fSTRERROR)
-
-[NF90\_STRERROR,
-introduction](#index-NF90_005fSTRERROR_002c-introduction)
-
-[1.6 Error Handling](#Error-Handling)
-
-[NF90\_SYNC](#index-NF90_005fSYNC)
-
-[2.11 NF90\_SYNC](#NF90_005fSYNC)
-
-[NF90\_SYNC , example](#index-NF90_005fSYNC-_002c-example)
-
-[2.11 NF90\_SYNC](#NF90_005fSYNC)
-
-[NF90\_VAR\_PAR\_ACCESS](#index-NF90_005fVAR_005fPAR_005fACCESS)
-
-[6.13 Change between Collective and Independent Parallel Access:
-NF90\_VAR\_PAR\_ACCESS](#NF90_005fVAR_005fPAR_005fACCESS)
-
-[NF90\_VAR\_PAR\_ACCESS,
-example](#index-NF90_005fVAR_005fPAR_005fACCESS_002c-example)
-
-[6.13 Change between Collective and Independent Parallel Access:
-NF90\_VAR\_PAR\_ACCESS](#NF90_005fVAR_005fPAR_005fACCESS)
-
-------------------------------------------------------------------------
-
-O
-
-[opaque type](#index-opaque-type)
-
-[5.8 Opaque Type Introduction](#Opaque-Type)
-
-------------------------------------------------------------------------
-
-R
-
-[reading dataset with unknown
-names](#index-reading-dataset-with-unknown-names)
-
-[1.3 Reading a netCDF Dataset with Unknown
-Names](#Reading-a-netCDF-Dataset-with-Unknown-Names)
-
-------------------------------------------------------------------------
-
-U
-
-[user defined types](#index-user-defined-types)
-
-[5. User Defined Data Types](#User-Defined-Data-Types)
-
-[user defined types, overview](#index-user-defined-types_002c-overview)
-
-[5.1 User Defined Types Introduction](#User-Defined-Types)
-
-[users’ guide, netcdf](#index-users_0027-guide_002c-netcdf)
-
-[1. Use of the NetCDF Library](#Use-of-the-NetCDF-Library)
-
-------------------------------------------------------------------------
-
-V
-
-[variable length array type,
-overview](#index-variable-length-array-type_002c-overview)
-
-[5. User Defined Data Types](#User-Defined-Data-Types)
-
-[variable length arrays](#index-variable-length-arrays)
-
-[5.7 Variable Length Array Introduction](#Variable-Length-Array)
-
-[variables, adding](#index-variables_002c-adding)
-
-[1.5 Adding New Dimensions, Variables,
-Attributes](#Adding-New-Dimensions)
-
-[variables, fill](#index-variables_002c-fill)
-
-[6.4 Define Fill Parameters for a Variable:
-`nf90_def_var_fill`](#NF90_005fDEF_005fVAR_005fFILL)
-
-[VLEN](#index-VLEN)
-
-[5.7 Variable Length Array Introduction](#Variable-Length-Array)
-
-[VLEN, defining](#index-VLEN_002c-defining)
-
-[5.7.1 Define a Variable Length Array (VLEN):
-NF90\_DEF\_VLEN](#NF90_005fDEF_005fVLEN)
-
-[VLEN, defining](#index-VLEN_002c-defining-1)
-
-[5.7.2 Learning about a Variable Length Array (VLEN) Type:
-NF90\_INQ\_VLEN](#NF90_005fINQ_005fVLEN)
-
-[VLEN, defining](#index-VLEN_002c-defining-2)
-
-[5.7.3 Releasing Memory for a Variable Length Array (VLEN) Type:
-NF90\_FREE\_VLEN](#NF90_005fFREE_005fVLEN)
-
-------------------------------------------------------------------------
-
-W
-
-[writing to existing dataset](#index-writing-to-existing-dataset)
-
-[1.4 Writing Data in an Existing NetCDF
-Dataset](#Writing-Data-in-an-Existing-NetCDF-Dataset)
-
-------------------------------------------------------------------------
-
-  ------------ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-  Jump to:     [**A**](#Index_cp_letter-A)   [**C**](#Index_cp_letter-C)   [**D**](#Index_cp_letter-D)   [**E**](#Index_cp_letter-E)   [**F**](#Index_cp_letter-F)   [**G**](#Index_cp_letter-G)   [**I**](#Index_cp_letter-I)   [**L**](#Index_cp_letter-L)   [**N**](#Index_cp_letter-N)   [**O**](#Index_cp_letter-O)   [**R**](#Index_cp_letter-R)   [**U**](#Index_cp_letter-U)   [**V**](#Index_cp_letter-V)   [**W**](#Index_cp_letter-W)  
-  ------------ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-------------------------------------------------------------------------
-
-  ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-  \[[Top](#Top "Cover (top) of document")\]   \[Contents\]   \[[Index](#Combined-Index "Index")\]   \[[?](#SEC_About "About (help)")\]
-  ------------------------------------------- -------------- -------------------------------------- ------------------------------------
-
-About This Document
-===================
-
-This document was generated by *Ward Fisher* on *July 14, 2015* using
-[*texi2html 1.82*](http://www.nongnu.org/texi2html/).
-
-The buttons in the navigation panels have the following meaning:
-
-  Button           Name          Go to                                           From 1.2.3 go to
-  ---------------- ------------- ----------------------------------------------- ------------------
-  \[ < \]       Back          Previous section in reading order               1.2.2
-  \[ > \]       Forward       Next section in reading order                   1.2.4
-  \[ << \]   FastBack      Beginning of this chapter or previous chapter   1
-  \[ Up \]         Up            Up section                                      1.2
-  \[ >> \]   FastForward   Next chapter                                    2
-  \[Top\]          Top           Cover (top) of document                          
-  \[Contents\]     Contents      Table of contents                                
-  \[Index\]        Index         Index                                            
-  \[ ? \]          About         About (help)                                     
-
-where the **Example** assumes that the current position is at
-**Subsubsection One-Two-Three** of a document of the following
-structure:
-
--   1\. Section One
-    -   1.1 Subsection One-One
-        -   ...
-    -   1.2 Subsection One-Two
-        -   1.2.1 Subsubsection One-Two-One
-        -   1.2.2 Subsubsection One-Two-Two
-        -   1.2.3 Subsubsection One-Two-Three     **<== Current
-            Position**
-        -   1.2.4 Subsubsection One-Two-Four
-    -   1.3 Subsection One-Three
-        -   ...
-    -   1.4 Subsection One-Four
-
-------------------------------------------------------------------------
+attributes, and to write the data to the netCDF dataset. Similarly, if you are
+writing software to access data stored in a particular netCDF object,
+only a small subset of the netCDF library is required to open the netCDF
+dataset and access the data. Authors of generic applications that access
+arbitrary netCDF datasets need to be familiar with more of the netCDF
+library.
 
-This document was generated by *Ward Fisher* on *July 14, 2015* using
-[*texi2html 1.82*](http://www.nongnu.org/texi2html/).\
 
+* \subpage f90-use-of-the-netcdf-library
+* \subpage f90_datasets
+* \subpage f90_groups
+* \subpage f90_dimensions
+* \subpage f90-user-defined-data-types
+* \subpage f90-variables
+* \subpage f90-attributes
diff --git a/docs/netcdf_fortran_4.4.2dev_notes_RW.pdf b/docs/netcdf_fortran_4.4.2dev_notes_RW.pdf
new file mode 100644
index 0000000..dcbaaff
Binary files /dev/null and b/docs/netcdf_fortran_4.4.2dev_notes_RW.pdf differ
diff --git a/examples/F90/Makefile.am b/examples/F90/Makefile.am
index 6e3aa29..d3aae9b 100644
--- a/examples/F90/Makefile.am
+++ b/examples/F90/Makefile.am
@@ -10,10 +10,11 @@ AM_FFLAGS = ${AM_FCFLAGS}
 AM_LDFLAGS = ${top_builddir}/fortran/libnetcdff.la -lnetcdf
 
 # These are the example programs.
-TESTPROGRAMS = simple_xy_wr simple_xy_rd sfc_pres_temp_wr	\
+F90_TESTS = simple_xy_wr simple_xy_rd sfc_pres_temp_wr	\
 sfc_pres_temp_rd pres_temp_4D_wr pres_temp_4D_rd
 
-TESTSCRIPTS = #do_comps.sh
+check_PROGRAMS = $(F90_TESTS)
+TESTS = $(F90_TESTS) # do_comps.sh
 
 # Here's the source code for the programs.
 simple_xy_wr_SOURCES = simple_xy_wr.f90
@@ -40,11 +41,14 @@ nc4_sfc_pres_temp_wr_SOURCES = nc4_sfc_pres_temp_wr.f90
 nc4_pres_temp_4D_wr_SOURCES = nc4_pres_temp_4D_wr.f90
 
 # Add example to the tests run.
-TESTPROGRAMS += nc4_simple_xy_wr nc4_sfc_pres_temp_wr	\
+F90_EXTRA_TESTS = nc4_simple_xy_wr nc4_sfc_pres_temp_wr	\
 nc4_pres_temp_4D_wr
 
+check_PROGRAMS += $(F90_EXTRA_TESTS)
+TESTS += $(F90_EXTRA_TESTS)
+
 # Add this test script.
-TESTSCRIPTS += run_nc4_comps.sh
+#TESTS += run_nc4_comps.sh
 
 # Make sure all the files created by our netcdf-4 tests get cleaned.
 CLEANFILES += nc4_simple_xy_wr.f90 simple_xy.cdl			\
@@ -55,16 +59,17 @@ endif #EXTRA_EXAMPLE_TESTS
 
 # Optionally add parallel i/o examples.
 if TEST_PARALLEL
-TESTPROGRAMS += simple_xy_par_wr simple_xy_par_rd simple_xy_par_wr2
+check_PROGRAMS += simple_xy_par_wr simple_xy_par_rd simple_xy_par_wr2
 simple_xy_par_wr_SOURCES = simple_xy_par_wr.f90
 simple_xy_par_wr2_SOURCES = simple_xy_par_wr2.f90
 simple_xy_par_rd_SOURCES = simple_xy_par_rd.f90
-TESTSCRIPTS += run_f90_par_examples.sh
+TESTS += run_f90_par_examples.sh
 CLEANFILES += simple_xy_par.nc
 endif # TEST_PARALLEL
 
 # NetCDF-4 examples.
-TESTPROGRAMS += simple_xy_nc4_wr simple_xy_nc4_rd
+check_PROGRAMS += simple_xy_nc4_wr simple_xy_nc4_rd
+TESTS += simple_xy_nc4_wr simple_xy_nc4_rd
 simple_xy_nc4_wr_SOURCES = simple_xy_nc4_wr.f90
 simple_xy_nc4_rd_SOURCES = simple_xy_nc4_rd.f90
 CLEANFILES += simple_xy_nc4.nc
@@ -86,14 +91,6 @@ nc4_pres_temp_4D_wr.f90:
 	sed -e 's/nf90_clobber/nf90_netcdf4/' pres_temp_4D_wr.f90 \
 	| sed -e 's/pres_temp_4D/nc4_pres_temp_4D/' > nc4_pres_temp_4D_wr.f90
 
-# Build these test programs.
-check_PROGRAMS = $(TESTPROGRAMS)
-
 # Make sure the script which compares file outputs is included in the
 # dist.
 EXTRA_DIST = do_comps.sh run_nc4_comps.sh run_f90_par_examples.sh CMakeLists.txt
-
-# Run all test programs, plus the do_comps.sh script, which checks
-# that all the output files are the same as the C example output
-# files.
-TESTS = $(TESTPROGRAMS) # $(TESTSCRIPTS)
diff --git a/examples/F90/Makefile.in b/examples/F90/Makefile.in
index 49706e6..83ab753 100644
--- a/examples/F90/Makefile.in
+++ b/examples/F90/Makefile.in
@@ -82,14 +82,15 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-
-# Add example to the tests run.
- at EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE at am__append_1 = nc4_simple_xy_wr nc4_sfc_pres_temp_wr	\
- at EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE at nc4_pres_temp_4D_wr
-
+check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_3) $(am__EXEEXT_4) \
+	$(am__EXEEXT_5)
+TESTS = $(am__EXEEXT_1) $(am__EXEEXT_3) $(am__append_5) \
+	$(am__EXEEXT_5)
+ at EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE at am__append_1 = $(F90_EXTRA_TESTS)
+ at EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE at am__append_2 = $(F90_EXTRA_TESTS)
 
 # Add this test script.
- at EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE at am__append_2 = run_nc4_comps.sh
+#TESTS += run_nc4_comps.sh
 
 # Make sure all the files created by our netcdf-4 tests get cleaned.
 @EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE at am__append_3 = nc4_simple_xy_wr.f90 simple_xy.cdl			\
@@ -105,9 +106,8 @@ target_triplet = @target@
 
 # NetCDF-4 examples.
 @USE_NETCDF4_TRUE at am__append_7 = simple_xy_nc4_wr simple_xy_nc4_rd
- at USE_NETCDF4_TRUE@am__append_8 = simple_xy_nc4.nc
-check_PROGRAMS = $(am__EXEEXT_4)
-TESTS = $(am__EXEEXT_4)
+ at USE_NETCDF4_TRUE@am__append_8 = simple_xy_nc4_wr simple_xy_nc4_rd
+ at USE_NETCDF4_TRUE@am__append_9 = simple_xy_nc4.nc
 subdir = examples/F90
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/test-driver
@@ -123,18 +123,19 @@ CONFIG_HEADER = $(top_builddir)/config.h \
 	$(top_builddir)/libsrc/nfconfig1.inc
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
- at EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE at am__EXEEXT_1 = nc4_simple_xy_wr$(EXEEXT) \
+am__EXEEXT_1 = simple_xy_wr$(EXEEXT) simple_xy_rd$(EXEEXT) \
+	sfc_pres_temp_wr$(EXEEXT) sfc_pres_temp_rd$(EXEEXT) \
+	pres_temp_4D_wr$(EXEEXT) pres_temp_4D_rd$(EXEEXT)
+ at EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE at am__EXEEXT_2 = nc4_simple_xy_wr$(EXEEXT) \
 @EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE@	nc4_sfc_pres_temp_wr$(EXEEXT) \
 @EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE@	nc4_pres_temp_4D_wr$(EXEEXT)
- at TEST_PARALLEL_TRUE@@USE_NETCDF4_TRUE at am__EXEEXT_2 = simple_xy_par_wr$(EXEEXT) \
+ at EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE at am__EXEEXT_3 =  \
+ at EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE@	$(am__EXEEXT_2)
+ at TEST_PARALLEL_TRUE@@USE_NETCDF4_TRUE at am__EXEEXT_4 = simple_xy_par_wr$(EXEEXT) \
 @TEST_PARALLEL_TRUE@@USE_NETCDF4_TRUE@	simple_xy_par_rd$(EXEEXT) \
 @TEST_PARALLEL_TRUE@@USE_NETCDF4_TRUE@	simple_xy_par_wr2$(EXEEXT)
- at USE_NETCDF4_TRUE@am__EXEEXT_3 = simple_xy_nc4_wr$(EXEEXT) \
+ at USE_NETCDF4_TRUE@am__EXEEXT_5 = simple_xy_nc4_wr$(EXEEXT) \
 @USE_NETCDF4_TRUE@	simple_xy_nc4_rd$(EXEEXT)
-am__EXEEXT_4 = simple_xy_wr$(EXEEXT) simple_xy_rd$(EXEEXT) \
-	sfc_pres_temp_wr$(EXEEXT) sfc_pres_temp_rd$(EXEEXT) \
-	pres_temp_4D_wr$(EXEEXT) pres_temp_4D_rd$(EXEEXT) \
-	$(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3)
 am__nc4_pres_temp_4D_wr_SOURCES_DIST = nc4_pres_temp_4D_wr.f90
 @EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE at am_nc4_pres_temp_4D_wr_OBJECTS = nc4_pres_temp_4D_wr.$(OBJEXT)
 nc4_pres_temp_4D_wr_OBJECTS = $(am_nc4_pres_temp_4D_wr_OBJECTS)
@@ -613,10 +614,9 @@ AM_FFLAGS = ${AM_FCFLAGS}
 AM_LDFLAGS = ${top_builddir}/fortran/libnetcdff.la -lnetcdf
 
 # These are the example programs.
-TESTPROGRAMS = simple_xy_wr simple_xy_rd sfc_pres_temp_wr \
-	sfc_pres_temp_rd pres_temp_4D_wr pres_temp_4D_rd \
-	$(am__append_1) $(am__append_4) $(am__append_7)
-TESTSCRIPTS = $(am__append_2) $(am__append_5)
+F90_TESTS = simple_xy_wr simple_xy_rd sfc_pres_temp_wr	\
+sfc_pres_temp_rd pres_temp_4D_wr pres_temp_4D_rd
+
 
 # Here's the source code for the programs.
 simple_xy_wr_SOURCES = simple_xy_wr.f90
@@ -628,7 +628,7 @@ pres_temp_4D_rd_SOURCES = pres_temp_4D_rd.f90
 
 # Cleaning up files created during the process.
 CLEANFILES = simple_xy.nc sfc_pres_temp.nc pres_temp_4D.nc \
-	$(am__append_3) $(am__append_6) $(am__append_8)
+	$(am__append_3) $(am__append_6) $(am__append_9)
 
 # This will cause netCDF-4 versions of the example programs to be
 # built.
@@ -640,6 +640,11 @@ CLEANFILES = simple_xy.nc sfc_pres_temp.nc pres_temp_4D.nc \
 @EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE at nc4_simple_xy_wr_SOURCES = nc4_simple_xy_wr.f90
 @EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE at nc4_sfc_pres_temp_wr_SOURCES = nc4_sfc_pres_temp_wr.f90
 @EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE at nc4_pres_temp_4D_wr_SOURCES = nc4_pres_temp_4D_wr.f90
+
+# Add example to the tests run.
+ at EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE at F90_EXTRA_TESTS = nc4_simple_xy_wr nc4_sfc_pres_temp_wr	\
+ at EXTRA_EXAMPLE_TESTS_TRUE@@USE_NETCDF4_TRUE at nc4_pres_temp_4D_wr
+
 @TEST_PARALLEL_TRUE@@USE_NETCDF4_TRUE at simple_xy_par_wr_SOURCES = simple_xy_par_wr.f90
 @TEST_PARALLEL_TRUE@@USE_NETCDF4_TRUE at simple_xy_par_wr2_SOURCES = simple_xy_par_wr2.f90
 @TEST_PARALLEL_TRUE@@USE_NETCDF4_TRUE at simple_xy_par_rd_SOURCES = simple_xy_par_rd.f90
@@ -1027,23 +1032,9 @@ nc4_pres_temp_4D_wr.log: nc4_pres_temp_4D_wr$(EXEEXT)
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-simple_xy_par_wr.log: simple_xy_par_wr$(EXEEXT)
-	@p='simple_xy_par_wr$(EXEEXT)'; \
-	b='simple_xy_par_wr'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-simple_xy_par_rd.log: simple_xy_par_rd$(EXEEXT)
-	@p='simple_xy_par_rd$(EXEEXT)'; \
-	b='simple_xy_par_rd'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-simple_xy_par_wr2.log: simple_xy_par_wr2$(EXEEXT)
-	@p='simple_xy_par_wr2$(EXEEXT)'; \
-	b='simple_xy_par_wr2'; \
+run_f90_par_examples.sh.log: run_f90_par_examples.sh
+	@p='run_f90_par_examples.sh'; \
+	b='run_f90_par_examples.sh'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
diff --git a/fortran/module_netcdf4_nc_interfaces.f90 b/fortran/module_netcdf4_nc_interfaces.f90
index f013836..2170c39 100755
--- a/fortran/module_netcdf4_nc_interfaces.f90
+++ b/fortran/module_netcdf4_nc_interfaces.f90
@@ -29,7 +29,11 @@ Module netcdf4_nc_interfaces
 ! Version 2.: April, 2009 - Interfaces based on netcdf-4.0.1 source         
 ! Version 3.: April, 2010 - Interfaces based on netcdf-4.1.1 source         
 ! Version 4.: Aug,   2013 - Added nc_rename_grp interfaces for netcdf-C 4.3.1
-
+! Version 5 : Jan.   2016 - General code cleanup  and added interfaces for 
+!                           three new funcions in nf_lib.c that return
+!                           the number of groups, types, and dimids for
+!                           compound fields
+                            
  USE netcdf_nc_interfaces
 
  Implicit NONE
@@ -58,10 +62,10 @@ Interface
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
  Character(KIND=C_CHAR), Intent(IN)  :: path(*)
- Integer(KIND=C_INT),    VALUE       :: cmode, comm, info
- Integer(KIND=C_INT),    Intent(OUT) :: ncidp
+ Integer(C_INT),         VALUE       :: cmode, comm, info
+ Integer(C_INT),         Intent(OUT) :: ncidp
 
- Integer(KIND=C_INT)                 :: nc_create_par_fortran
+ Integer(C_INT)                      :: nc_create_par_fortran
 
  End Function nc_create_par_fortran
 End Interface
@@ -72,10 +76,10 @@ Interface
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
  Character(KIND=C_CHAR), Intent(IN)  :: path(*)
- Integer(KIND=C_INT),    VALUE       :: mode, comm, info
- Integer(KIND=C_INT),    Intent(OUT) :: ncidp
+ Integer(C_INT),         VALUE       :: mode, comm, info
+ Integer(C_INT),         Intent(OUT) :: ncidp
 
- Integer(KIND=C_INT)                 :: nc_open_par_fortran
+ Integer(C_INT)                      :: nc_open_par_fortran
 
  End Function nc_open_par_fortran
 End Interface
@@ -85,9 +89,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE :: ncid, varid, par_access
+ Integer(C_INT), VALUE :: ncid, varid, par_access
 
- Integer(KIND=C_INT)        :: nc_var_par_access
+ Integer(C_INT)        :: nc_var_par_access
 
  End Function nc_var_par_access
 End Interface
@@ -97,25 +101,51 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: ncid
  Character(KIND=C_CHAR), Intent(IN)    :: name(*)
- Integer(KIND=C_INT),    Intent(INOUT) :: grp_ncid
+ Integer(C_INT),         Intent(INOUT) :: grp_ncid
 
- Integer(KIND=C_INT)                   :: nc_inq_ncid
+ Integer(C_INT)                        :: nc_inq_ncid
 
  End Function nc_inq_ncid
 End Interface
+!------------------------------- nc_inq_numgrps ------------------------------
+!**** NOT a Netcdf C function. Added to nf_lib.c support Fortran interaces
+Interface
+ Function nc_inq_numgrps(ncid, numgrps) BIND(C)
+
+ USE ISO_C_BINDING, ONLY: C_INT
+
+ Integer(C_INT), VALUE         :: ncid
+ Integer(C_INT), Intent(INOUT) :: numgrps
+
+ Integer(C_INT)                 :: nc_inq_numgrps
+ End Function nc_inq_numgrps
+End Interface
+!------------------------------- nc_inq_numtypes ------------------------------
+!**** NOT a Netcdf C function. Added to nf_lib.c support Fortran interaces
+Interface
+ Function nc_inq_numtypes(ncid, numtypes) BIND(C)
+
+ USE ISO_C_BINDING, ONLY: C_INT
+
+ Integer(C_INT), VALUE         :: ncid
+ Integer(C_INT), Intent(INOUT) :: numtypes
+
+ Integer(C_INT)                 :: nc_inq_numtypes
+ End Function nc_inq_numtypes
+End Interface
 !------------------------------- nc_inq_grps ----------------------------------
 Interface
  Function nc_inq_grps(ncid, numgrps, ncids) BIND(C)
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE         :: ncid
- Integer(KIND=C_INT), Intent(INOUT) :: numgrps
- Integer(KIND=C_INT), Intent(INOUT) :: ncids(*)
+ Integer(C_INT), VALUE         :: ncid
+ Integer(C_INT), Intent(INOUT) :: numgrps
+ Integer(C_INT), Intent(INOUT) :: ncids(*)
 
- Integer(KIND=C_INT)                :: nc_inq_grps
+ Integer(C_INT)                :: nc_inq_grps
 
  End Function nc_inq_grps
 End Interface
@@ -125,10 +155,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: ncid
  Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
 
- Integer(KIND=C_INT)                   :: nc_inq_grpname
+ Integer(C_INT)                        :: nc_inq_grpname
 
  End Function nc_inq_grpname
 End Interface
@@ -138,11 +168,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_SIZE_T), Intent(INOUT) :: nlen
+ Integer(C_INT),         VALUE         :: ncid
+ Integer(C_SIZE_T),      Intent(INOUT) :: nlen
  Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
 
- Integer(KIND=C_INT)                   :: nc_inq_grpname_full
+ Integer(C_INT)                        :: nc_inq_grpname_full
 
  End Function nc_inq_grpname_full
 End Interface
@@ -152,10 +182,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_SIZE_T), Intent(INOUT) :: nlen
+ Integer(C_INT),    VALUE         :: ncid
+ Integer(C_SIZE_T), Intent(INOUT) :: nlen
 
- Integer(KIND=C_INT)                   :: nc_inq_grpname_len
+ Integer(C_INT)                   :: nc_inq_grpname_len
 
  End Function nc_inq_grpname_len
 End Interface
@@ -165,11 +195,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_INT),    Intent(INOUT) :: grp_ncid
+ Integer(C_INT),         VALUE         :: ncid
+ Integer(C_INT),         Intent(INOUT) :: grp_ncid
  Character(KIND=C_CHAR), Intent(INOUT) :: full_name(*)
 
- Integer(KIND=C_INT)                   :: nc_inq_grp_full_ncid
+ Integer(C_INT)                        :: nc_inq_grp_full_ncid
 
  End Function nc_inq_grp_full_ncid
 End Interface
@@ -179,10 +209,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE         :: ncid
- Integer(KIND=C_INT), Intent(INOUT) :: parent_ncid
+ Integer(C_INT), VALUE         :: ncid
+ Integer(C_INT), Intent(INOUT) :: parent_ncid
 
- Integer(KIND=C_INT)                :: nc_inq_grp_parent
+ Integer(C_INT)                :: nc_inq_grp_parent
 
  End Function nc_inq_grp_parent
 End Interface
@@ -192,11 +222,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: ncid
  Character(KIND=C_CHAR), Intent(IN)    :: grp_name(*)
- Integer(KIND=C_INT),    Intent(INOUT) :: grp_ncid
+ Integer(C_INT),         Intent(INOUT) :: grp_ncid
 
- Integer(KIND=C_INT)                   :: nc_inq_grp_ncid
+ Integer(C_INT)                        :: nc_inq_grp_ncid
 
  End Function nc_inq_grp_ncid
 End Interface
@@ -206,11 +236,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE         :: ncid
- Integer(KIND=C_INT), Intent(INOUT) :: nvars
- Integer(KIND=C_INT), Intent(INOUT) :: varids(*)
+ Integer(C_INT), VALUE         :: ncid
+ Integer(C_INT), Intent(INOUT) :: nvars
+ Integer(C_INT), Intent(INOUT) :: varids(*)
 
- Integer(KIND=C_INT)                :: nc_inq_varids_f
+ Integer(C_INT)                :: nc_inq_varids_f
 
  End Function nc_inq_varids_f
 End Interface
@@ -220,11 +250,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE         :: ncid, parent
- Integer(KIND=C_INT), Intent(INOUT) :: ndims
- Integer(KIND=C_INT), Intent(INOUT) :: dimids(*)
+ Integer(C_INT), VALUE         :: ncid, parent
+ Integer(C_INT), Intent(INOUT) :: ndims
+ Integer(C_INT), Intent(INOUT) :: dimids(*)
 
- Integer(KIND=C_INT)                :: nc_inq_dimids_f
+ Integer(C_INT)                :: nc_inq_dimids_f
 
  End Function nc_inq_dimids_f
 End Interface
@@ -234,11 +264,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE         :: ncid
- Integer(KIND=C_INT), Intent(INOUT) :: ntypes
- Integer(KIND=C_INT), Intent(INOUT) :: typeids(*)
+ Integer(C_INT), VALUE         :: ncid
+ Integer(C_INT), Intent(INOUT) :: ntypes
+ Integer(C_INT), Intent(INOUT) :: typeids(*)
 
- Integer(KIND=C_INT)                :: nc_inq_typeids
+ Integer(C_INT)                :: nc_inq_typeids
 
  End Function nc_inq_typeids
 End Interface
@@ -248,11 +278,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT), VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: ncid
  Character(KIND=C_CHAR), Intent(IN) :: name(*)
- Integer(KIND=C_INT), Intent(INOUT) :: typeid
+ Integer(C_INT),         Intent(INOUT) :: typeid
 
- Integer(KIND=C_INT)                :: nc_inq_typeid
+ Integer(C_INT)                        :: nc_inq_typeid
 
  End Function nc_inq_typeid
 End Interface
@@ -262,11 +292,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: parent_ncid
+ Integer(C_INT),         VALUE         :: parent_ncid
  Character(KIND=C_CHAR), Intent(IN)    :: name(*)
- Integer(KIND=C_INT),    Intent(INOUT) :: new_ncid
+ Integer(C_INT),         Intent(INOUT) :: new_ncid
 
- Integer(KIND=C_INT)                   :: nc_def_grp
+ Integer(C_INT)                        :: nc_def_grp
 
  End Function nc_def_grp
 End Interface
@@ -276,10 +306,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: grpid
+ Integer(C_INT),         VALUE         :: grpid
  Character(KIND=C_CHAR), Intent(IN)    :: name(*)
 
- Integer(KIND=C_INT)                   :: nc_rename_grp
+ Integer(C_INT)                        :: nc_rename_grp
 
  End Function nc_rename_grp
 End Interface
@@ -289,12 +319,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_SIZE_T), VALUE         :: isize
+ Integer(C_INT),         VALUE         :: ncid
+ Integer(C_SIZE_T),      VALUE         :: isize
  Character(KIND=C_CHAR), Intent(IN)    :: name(*)
- Integer(KIND=C_INT),    Intent(INOUT) :: typeidp
+ Integer(C_INT),         Intent(INOUT) :: typeidp
 
- Integer(KIND=C_INT)                   :: nc_def_compound
+ Integer(C_INT)                        :: nc_def_compound
 
  End Function nc_def_compound
 End Interface
@@ -304,12 +334,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE      :: ncid
- Integer(KIND=C_INT),    VALUE      :: xtype, field_typeid ! nc_type in C 
- Integer(KIND=C_SIZE_T), VALUE      :: offset
+ Integer(C_INT),         VALUE      :: ncid
+ Integer(C_INT),         VALUE      :: xtype, field_typeid ! nc_type in C 
+ Integer(C_SIZE_T),      VALUE      :: offset
  Character(KIND=C_CHAR), Intent(IN) :: name(*)
 
- Integer(KIND=C_INT)                :: nc_insert_compound
+ Integer(C_INT)                :: nc_insert_compound
 
  End Function nc_insert_compound
 End Interface
@@ -320,13 +350,13 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid, ndims
- Integer(KIND=C_INT),    VALUE         :: xtype, field_typeid  ! nc_type in C
- Integer(KIND=C_SIZE_T), VALUE         :: offset
+ Integer(C_INT),         VALUE         :: ncid, ndims
+ Integer(C_INT),         VALUE         :: xtype, field_typeid  ! nc_type in C
+ Integer(C_SIZE_T),      VALUE         :: offset
  Character(KIND=C_CHAR), Intent(IN)    :: name(*)
- Integer(KIND=C_INT),    Intent(INOUT) :: dim_sizes(*)
+ Integer(C_INT),         Intent(INOUT) :: dim_sizes(*)
 
- Integer(KIND=C_INT)                   :: nc_insert_array_compound_f
+ Integer(C_INT)                        :: nc_insert_array_compound_f
 
  End Function nc_insert_array_compound_f
 End Interface
@@ -336,12 +366,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_INT),    VALUE         :: xtype ! nc_type in C
+ Integer(C_INT),         VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: xtype ! nc_type in C
  Character(KIND=C_CHAR), Intent(IN)    :: name(*)
- Integer(KIND=C_SIZE_T), Intent(INOUT) :: isize
+ Integer(C_SIZE_T),      Intent(INOUT) :: isize
 
- Integer(KIND=C_INT)                   :: nc_inq_type
+ Integer(C_INT)                        :: nc_inq_type
 
  End Function nc_inq_type
 End Interface
@@ -351,12 +381,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_INT),    VALUE         :: xtype ! nc_type in C
+ Integer(C_INT),         VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: xtype ! nc_type in C
  Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
- Integer(KIND=C_SIZE_T), Intent(INOUT) :: isize, nfieldsp
+ Integer(C_SIZE_T),      Intent(INOUT) :: isize, nfieldsp
 
- Integer(KIND=C_INT)                   :: nc_inq_compound
+ Integer(C_INT)                        :: nc_inq_compound
 
  End Function nc_inq_compound
 End Interface
@@ -366,11 +396,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_INT),    VALUE         :: xtype ! nc_type in C
+ Integer(C_INT),         VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: xtype ! nc_type in C
  Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
 
- Integer(KIND=C_INT)                   :: nc_inq_compound_name
+ Integer(C_INT)                        :: nc_inq_compound_name
 
  End Function nc_inq_compound_name
 End Interface
@@ -380,11 +410,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_INT),    VALUE         :: xtype ! nc_type in C
- Integer(KIND=C_SIZE_T), Intent(INOUT) :: isize
+ Integer(C_INT),    VALUE         :: ncid
+ Integer(C_INT),    VALUE         :: xtype ! nc_type in C
+ Integer(C_SIZE_T), Intent(INOUT) :: isize
 
- Integer(KIND=C_INT)                   :: nc_inq_compound_size
+ Integer(C_INT)                   :: nc_inq_compound_size
 
  End Function nc_inq_compound_size
 End Interface
@@ -394,30 +424,48 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_INT),    VALUE         :: xtype ! nc_type in C
- Integer(KIND=C_SIZE_T), Intent(INOUT) :: nfieldsp
+ Integer(C_INT),    VALUE         :: ncid
+ Integer(C_INT),    VALUE         :: xtype ! nc_type in C
+ Integer(C_SIZE_T), Intent(INOUT) :: nfieldsp
 
- Integer(KIND=C_INT)                   :: nc_inq_compound_nfields
+ Integer(C_INT)                   :: nc_inq_compound_nfields
 
  End Function nc_inq_compound_nfields
 End Interface
+!------------------------------- nc_inq_compound_field_ndims ------------------
+!**** NOT a Netcdf C function. Added to nf_lib.c support Fortran interaces
+Interface
+ Function nc_inq_compound_field_ndims(ncid, xtype, fieldid, ndims) BIND(C)
+  
+ USE ISO_C_BINDING, ONLY: C_INT
+
+ Integer(C_INT), VALUE         :: ncid, fieldid
+ Integer(C_INT), VALUE         :: xtype  ! nc_type in C
+ Integer(C_INT), Intent(INOUT) :: ndims
+
+ Integer(C_INT)                   :: nc_inq_compound_field_ndims
+
+ End Function nc_inq_compound_field_ndims
+
+End Interface
+
 !------------------------------- nc_inq_compound_field_f ----------------------
 Interface
  Function nc_inq_compound_field_f(ncid, xtype, fieldid, name, offsetp, &
                                   field_typeidp, ndimsp, dim_sizesp) BIND(C)
+ 
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid, fieldid
- Integer(KIND=C_INT),    VALUE         :: xtype  ! nc_type in C
- Integer(KIND=C_INT),    Intent(INOUT) :: field_typeidp  ! nc_type in C
- Integer(KIND=C_SIZE_T), Intent(INOUT) :: offsetp
+ Integer(C_INT),         VALUE         :: ncid, fieldid
+ Integer(C_INT),         VALUE         :: xtype  ! nc_type in C
+ Integer(C_INT),         Intent(INOUT) :: field_typeidp  ! nc_type in C
+ Integer(C_SIZE_T),      Intent(INOUT) :: offsetp
  Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
- Integer(KIND=C_INT),    Intent(INOUT) :: ndimsp
- Integer(KIND=C_INT),    Intent(INOUT) :: dim_sizesp(*)
+ Integer(C_INT),         Intent(INOUT) :: ndimsp
+ Integer(C_INT),         Intent(INOUT) :: dim_sizesp(*)
 
- Integer(KIND=C_INT)                   :: nc_inq_compound_field_f
+ Integer(C_INT)                   :: nc_inq_compound_field_f
 
  End Function nc_inq_compound_field_f
 End Interface
@@ -427,11 +475,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T
 
- Integer(KIND=C_INT),    VALUE         :: ncid, fieldid
- Integer(KIND=C_INT),    VALUE         :: xtype ! nc_type in C
- Integer(KIND=C_SIZE_T), Intent(INOUT) :: offsetp 
+ Integer(C_INT),    VALUE         :: ncid, fieldid
+ Integer(C_INT),    VALUE         :: xtype ! nc_type in C
+ Integer(C_SIZE_T), Intent(INOUT) :: offsetp 
 
- Integer(KIND=C_INT)                   :: nc_inq_compound_fieldoffset
+ Integer(C_INT)                   :: nc_inq_compound_fieldoffset
 
  End Function nc_inq_compound_fieldoffset
 End Interface
@@ -441,11 +489,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid, fieldid
- Integer(KIND=C_INT),    VALUE         :: xtype ! nc_type in C
+ Integer(C_INT),         VALUE         :: ncid, fieldid
+ Integer(C_INT),         VALUE         :: xtype ! nc_type in C
  Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
 
- Integer(KIND=C_INT)                   :: nc_inq_compound_fieldname
+ Integer(C_INT)                        :: nc_inq_compound_fieldname
 
  End Function nc_inq_compound_fieldname
 End Interface
@@ -455,12 +503,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_INT),    VALUE         :: xtype ! nc_type in C
+ Integer(C_INT),         VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: xtype ! nc_type in C
  Character(KIND=C_CHAR), Intent(IN)    :: name(*)
- Integer(KIND=C_INT),    Intent(INOUT) :: fieldidp
+ Integer(C_INT),         Intent(INOUT) :: fieldidp
 
- Integer(KIND=C_INT)                   :: nc_inq_compound_fieldindex
+ Integer(C_INT)                        :: nc_inq_compound_fieldindex
 
  End Function nc_inq_compound_fieldindex
 End Interface
@@ -470,11 +518,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE         :: ncid, fieldid
- Integer(KIND=C_INT), VALUE         :: xtype ! nc_type in C
- Integer(KIND=C_INT), Intent(INOUT) :: field_typeidp ! nc_type in C
+ Integer(C_INT), VALUE         :: ncid, fieldid
+ Integer(C_INT), VALUE         :: xtype ! nc_type in C
+ Integer(C_INT), Intent(INOUT) :: field_typeidp ! nc_type in C
 
- Integer(KIND=C_INT)                :: nc_inq_compound_fieldtype
+ Integer(C_INT)                :: nc_inq_compound_fieldtype
 
  End Function nc_inq_compound_fieldtype
 End Interface
@@ -484,11 +532,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE         :: ncid, fieldid
- Integer(KIND=C_INT), VALUE         :: xtype ! nc_type in C
- Integer(KIND=C_INT), Intent(INOUT) :: ndimsp
+ Integer(C_INT), VALUE         :: ncid, fieldid
+ Integer(C_INT), VALUE         :: xtype ! nc_type in C
+ Integer(C_INT), Intent(INOUT) :: ndimsp
 
- Integer(KIND=C_INT)                :: nc_inq_compound_fieldndims
+ Integer(C_INT)                :: nc_inq_compound_fieldndims
 
  End Function nc_inq_compound_fieldndims
 End Interface
@@ -498,11 +546,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE         :: ncid, fieldid
- Integer(KIND=C_INT), VALUE         :: xtype ! nc_type in C
- Integer(KIND=C_INT), Intent(INOUT) :: dim_sizes(*)
+ Integer(C_INT), VALUE         :: ncid, fieldid
+ Integer(C_INT), VALUE         :: xtype ! nc_type in C
+ Integer(C_INT), Intent(INOUT) :: dim_sizes(*)
 
- Integer(KIND=C_INT)                :: nc_inq_compound_fielddim_sizes
+ Integer(C_INT)                :: nc_inq_compound_fielddim_sizes
 
  End Function nc_inq_compound_fielddim_sizes
 End Interface
@@ -512,12 +560,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_INT),    VALUE         :: base_typeid ! nc_type in C
- Integer(KIND=C_INT),    Intent(INOUT) :: xtypep ! nc_type in C 
+ Integer(C_INT),         VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: base_typeid ! nc_type in C
+ Integer(C_INT),         Intent(INOUT) :: xtypep ! nc_type in C 
  Character(KIND=C_CHAR), Intent(IN)    :: name(*)
 
- Integer(KIND=C_INT)                   :: nc_def_vlen
+ Integer(C_INT)                        :: nc_def_vlen
 
  End Function nc_def_vlen
 End Interface
@@ -527,13 +575,13 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_INT),    VALUE         :: xtype ! nc_type in C
- Integer(KIND=C_SIZE_T), Intent(INOUT) :: datum_sizep
- Integer(KIND=C_INT),    Intent(INOUT) :: base_nc_typep ! nc_type in C 
+ Integer(C_INT),         VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: xtype ! nc_type in C
+ Integer(C_SIZE_T),      Intent(INOUT) :: datum_sizep
+ Integer(C_INT),         Intent(INOUT) :: base_nc_typep ! nc_type in C 
  Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
 
- Integer(KIND=C_INT)                   :: nc_inq_vlen
+ Integer(C_INT)                        :: nc_inq_vlen
 
  End Function nc_inq_vlen
 End Interface
@@ -544,14 +592,14 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_INT),    VALUE         :: xtype ! nc_type in C
- Integer(KIND=C_SIZE_T), Intent(INOUT) :: isize , nfieldsp
- Integer(KIND=C_INT),    Intent(INOUT) :: base_nc_typep ! nc_type in C 
- Integer(KIND=C_INT),    Intent(INOUT) :: classp
+ Integer(C_INT),         VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: xtype ! nc_type in C
+ Integer(C_SIZE_T),      Intent(INOUT) :: isize , nfieldsp
+ Integer(C_INT),         Intent(INOUT) :: base_nc_typep ! nc_type in C 
+ Integer(C_INT),         Intent(INOUT) :: classp
  Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
 
- Integer(KIND=C_INT)                   :: nc_inq_user_type
+ Integer(C_INT)                        :: nc_inq_user_type
 
  End Function nc_inq_user_type
 End Interface
@@ -561,12 +609,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid
- Integer(KIND=C_INT),    VALUE       :: base_typeid ! nc_type in C
- Integer(KIND=C_INT),    Intent(OUT) :: typeidp ! nc_type in C 
+ Integer(C_INT),         VALUE       :: ncid
+ Integer(C_INT),         VALUE       :: base_typeid ! nc_type in C
+ Integer(C_INT),         Intent(OUT) :: typeidp ! nc_type in C 
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
 
- Integer(KIND=C_INT)                 :: nc_def_enum
+ Integer(C_INT)                      :: nc_def_enum
 
  End Function nc_def_enum
 End Interface
@@ -576,12 +624,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR, C_PTR
 
- Integer(KIND=C_INT),    VALUE      :: ncid
- Integer(KIND=C_INT),    VALUE      :: xtype ! nc_type in C
+ Integer(C_INT),         VALUE      :: ncid
+ Integer(C_INT),         VALUE      :: xtype ! nc_type in C
  Type(C_PTR),            VALUE      :: values  ! void pointer in C
  Character(KIND=C_CHAR), Intent(IN) :: name(*)
 
- Integer(KIND=C_INT)                :: nc_insert_enum
+ Integer(C_INT)                     :: nc_insert_enum
 
  End Function nc_insert_enum
 End Interface
@@ -592,13 +640,13 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_INT),    VALUE         :: xtype ! nc_type in C
- Integer(KIND=C_INT),    Intent(INOUT) :: base_nc_typep ! nc_type in C 
- Integer(KIND=C_SIZE_T), Intent(INOUT) :: base_sizep, num_membersp 
+ Integer(C_INT),         VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: xtype ! nc_type in C
+ Integer(C_INT),         Intent(INOUT) :: base_nc_typep ! nc_type in C 
+ Integer(C_SIZE_T),      Intent(INOUT) :: base_sizep, num_membersp 
  Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
 
- Integer(KIND=C_INT)                   :: nc_inq_enum
+ Integer(C_INT)                        :: nc_inq_enum
 
  End Function nc_inq_enum
 End Interface
@@ -608,12 +656,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid, idx
- Integer(KIND=C_INT),    VALUE         :: xtype ! nc_type in C
+ Integer(C_INT),         VALUE         :: ncid, idx
+ Integer(C_INT),         VALUE         :: xtype ! nc_type in C
  Character(KIND=C_CHAR), Intent(OUT)   :: value(*)
  Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
 
- Integer(KIND=C_INT)                   :: nc_inq_enum_member
+ Integer(C_INT)                        :: nc_inq_enum_member
 
  End Function nc_inq_enum_member
 End Interface
@@ -623,12 +671,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG_LONG, C_CHAR
 
- Integer(KIND=C_INT),       VALUE         :: ncid
- Integer(KIND=C_INT),       VALUE         :: xtype ! nc_type in C
- Integer(KIND=C_LONG_LONG), VALUE         :: val 
- Character(KIND=C_CHAR),    Intent(INOUT) :: name(*)
+ Integer(C_INT),         VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: xtype ! nc_type in C
+ Integer(C_LONG_LONG),   VALUE         :: val 
+ Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
 
- Integer(KIND=C_INT)                      :: nc_inq_enum_ident
+ Integer(C_INT)                        :: nc_inq_enum_ident
 
  End Function nc_inq_enum_ident
 End Interface
@@ -638,12 +686,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid
- Integer(KIND=C_SIZE_T), VALUE       :: isize
+ Integer(C_INT),         VALUE       :: ncid
+ Integer(C_SIZE_T),      VALUE       :: isize
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
- Integer(KIND=C_INT),    Intent(OUT) :: xtypep ! nc_type in C
+ Integer(C_INT),         Intent(OUT) :: xtypep ! nc_type in C
 
- Integer(KIND=C_INT)                 :: nc_def_opaque
+ Integer(C_INT)                      :: nc_def_opaque
 
  End Function nc_def_opaque
 End Interface
@@ -653,12 +701,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid
- Integer(KIND=C_INT),    VALUE       :: xtype ! nc_type in C
- Integer(KIND=C_SIZE_T), Intent(OUT) :: sizep
+ Integer(C_INT),         VALUE       :: ncid
+ Integer(C_INT),         VALUE       :: xtype ! nc_type in C
+ Integer(C_SIZE_T),      Intent(OUT) :: sizep
  Character(KIND=C_CHAR), Intent(OUT) :: name(*)
 
- Integer(KIND=C_INT)                 :: nc_inq_opaque
+ Integer(C_INT)                      :: nc_inq_opaque
 
  End Function nc_inq_opaque
 End Interface
@@ -668,10 +716,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR
 
- Integer(KIND=C_INT), VALUE :: ncid, varid, no_fill
- Type(C_PTR),         VALUE :: cfill_value_p
+ Integer(C_INT), VALUE :: ncid, varid, no_fill
+ Type(C_PTR),    VALUE :: cfill_value_p
 
- Integer(KIND=C_INT)        :: nc_def_var_fill
+ Integer(C_INT)        :: nc_def_var_fill
 
  End Function nc_def_var_fill
 End Interface
@@ -681,11 +729,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid, varid
- Integer(KIND=C_INT),    Intent(INOUT) :: no_fill
+ Integer(C_INT),         VALUE         :: ncid, varid
+ Integer(C_INT),         Intent(INOUT) :: no_fill
  Character(KIND=C_CHAR), Intent(INOUT) :: fill_value(*)
 
- Integer(KIND=C_INT)                   :: nc_inq_var_fill
+ Integer(C_INT)                        :: nc_inq_var_fill
 
  End Function nc_inq_var_fill
 End Interface
@@ -695,10 +743,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE         :: ncid, varid
- Integer(KIND=C_INT), Intent(INOUT) :: options_mask, pixels_per_block 
+ Integer(C_INT), VALUE         :: ncid, varid
+ Integer(C_INT), Intent(INOUT) :: options_mask, pixels_per_block 
 
- Integer(KIND=C_INT)                :: nc_inq_var_szip
+ Integer(C_INT)                :: nc_inq_var_szip
 
  End Function nc_inq_var_szip
 End Interface
@@ -708,9 +756,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE :: ncid, varid, fletcher32
+ Integer(C_INT), VALUE :: ncid, varid, fletcher32
 
- Integer(KIND=C_INT)        :: nc_def_var_fletcher32
+ Integer(C_INT)        :: nc_def_var_fletcher32
 
  End Function nc_def_var_fletcher32
 End Interface
@@ -720,10 +768,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE         :: ncid, varid
- Integer(KIND=C_INT), Intent(INOUT) :: fletcher32
+ Integer(C_INT), VALUE         :: ncid, varid
+ Integer(C_INT), Intent(INOUT) :: fletcher32
 
- Integer(KIND=C_INT)                :: nc_inq_var_fletcher32
+ Integer(C_INT)                :: nc_inq_var_fletcher32
 
  End Function nc_inq_var_fletcher32
 End Interface
@@ -733,9 +781,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE :: ncid, varid, shuffle, deflate, deflate_level
+ Integer(C_INT), VALUE :: ncid, varid, shuffle, deflate, deflate_level
 
- Integer(KIND=C_INT)        :: nc_def_var_deflate
+ Integer(C_INT)        :: nc_def_var_deflate
 
  End Function nc_def_var_deflate
 End Interface
@@ -745,10 +793,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE         :: ncid, varid
- Integer(KIND=C_INT), Intent(INOUT) :: shuffle, deflate, deflate_level
+ Integer(C_INT), VALUE         :: ncid, varid
+ Integer(C_INT), Intent(INOUT) :: shuffle, deflate, deflate_level
 
- Integer(KIND=C_INT)                :: nc_inq_var_deflate
+ Integer(C_INT)                :: nc_inq_var_deflate
 
  End Function nc_inq_var_deflate
 End Interface
@@ -758,10 +806,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T
 
- Integer(KIND=C_INT),    VALUE         :: ncid, varid, contiguousp
- Integer(KIND=C_SIZE_T), Intent(INOUT) :: chunksizesp
+ Integer(C_INT),    VALUE         :: ncid, varid, contiguousp
+ Integer(C_SIZE_T), Intent(INOUT) :: chunksizesp
 
- Integer(KIND=C_INT)                   :: nc_def_var_chunking
+ Integer(C_INT)                   :: nc_def_var_chunking
 
  End Function nc_def_var_chunking
 End Interface
@@ -771,11 +819,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T
 
- Integer(KIND=C_INT),    VALUE         :: ncid, varid
- Integer(KIND=C_INT),    Intent(INOUT) :: contiguousp
- Integer(KIND=C_SIZE_T), Intent(INOUT) :: chunksizesp(*)
+ Integer(C_INT),    VALUE         :: ncid, varid
+ Integer(C_INT),    Intent(INOUT) :: contiguousp
+ Integer(C_SIZE_T), Intent(INOUT) :: chunksizesp(*)
 
- Integer(KIND=C_INT)                   :: nc_inq_var_chunking
+ Integer(C_INT)                   :: nc_inq_var_chunking
 
  End Function nc_inq_var_chunking
 End Interface
@@ -785,10 +833,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR
 
- Integer(KIND=C_INT), VALUE :: ncid, varid, contiguousp
- Type(C_PTR),         VALUE :: chunksizesp
+ Integer(C_INT), VALUE :: ncid, varid, contiguousp
+ Type(C_PTR),    VALUE :: chunksizesp
 
- Integer(KIND=C_INT)        :: nc_def_var_chunking_ints
+ Integer(C_INT)        :: nc_def_var_chunking_ints
 
  End Function nc_def_var_chunking_ints
 End Interface
@@ -798,11 +846,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE         :: ncid, varid
- Integer(KIND=C_INT), Intent(INOUT) :: contiguousp
- Integer(KIND=C_INT), Intent(INOUT) :: chunksizesp(*)
+ Integer(C_INT), VALUE         :: ncid, varid
+ Integer(C_INT), Intent(INOUT) :: contiguousp
+ Integer(C_INT), Intent(INOUT) :: chunksizesp(*)
 
- Integer(KIND=C_INT)                :: nc_inq_var_chunking_ints
+ Integer(C_INT)                :: nc_inq_var_chunking_ints
 
  End Function nc_inq_var_chunking_ints
 End Interface
@@ -812,9 +860,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE :: ncid, varid, endiann
+ Integer(C_INT), VALUE :: ncid, varid, endiann
 
- Integer(KIND=C_INT)        :: nc_def_var_endian
+ Integer(C_INT)        :: nc_def_var_endian
 
  End Function nc_def_var_endian
 End Interface
@@ -824,10 +872,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE         :: ncid, varid
- Integer(KIND=C_INT), Intent(INOUT) :: endiann
+ Integer(C_INT), VALUE         :: ncid, varid
+ Integer(C_INT), Intent(INOUT) :: endiann
 
- Integer(KIND=C_INT)                :: nc_inq_var_endian
+ Integer(C_INT)                :: nc_inq_var_endian
 
  End Function nc_inq_var_endian
 End Interface
@@ -837,12 +885,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR, C_SIZE_T, C_PTR
 
- Integer(KIND=C_INT),    VALUE      :: ncid, varid, xtype
- Integer(KIND=C_SIZE_T), VALUE      :: nlen
+ Integer(C_INT),         VALUE      :: ncid, varid, xtype
+ Integer(C_SIZE_T),      VALUE      :: nlen
  Character(KIND=C_CHAR), Intent(IN) :: name(*)
  Type(C_PTR),            VALUE      :: op
 
- Integer(KIND=C_INT)                :: nc_put_att
+ Integer(C_INT)                     :: nc_put_att
 
  End Function nc_put_att
 End Interface
@@ -852,11 +900,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
  Character(KIND=C_CHAR), Intent(OUT) :: op(*)
 
- Integer(KIND=C_INT)                 :: nc_get_att
+ Integer(C_INT)                      :: nc_get_att
 
  End Function nc_get_att
 End Interface
@@ -866,12 +914,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid, xtype 
- Integer(KIND=C_SIZE_T), VALUE         :: nlen 
- Character(KIND=C_CHAR), INTENT(INOUT) :: vlen_element(*)
+ Integer(C_INT),         VALUE         :: ncid, xtype 
+ Integer(C_SIZE_T),      VALUE         :: nlen 
+ Character(KIND=C_CHAR), Intent(INOUT) :: vlen_element(*)
  Type(C_PTR),            VALUE         :: op
 
- Integer(KIND=C_INT)                   :: nc_put_vlen_element
+ Integer(C_INT)                        :: nc_put_vlen_element
 
  End Function nc_put_vlen_element
 End Interface
@@ -881,12 +929,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR, C_SIZE_T, C_PTR
 
- Integer(KIND=C_INT),    VALUE         :: ncid, xtype 
- Integer(KIND=C_SIZE_T), Intent(INOUT) :: nlen 
- Character(KIND=C_CHAR), INTENT(INOUT) :: vlen_element(*)
+ Integer(C_INT),         VALUE         :: ncid, xtype 
+ Integer(C_SIZE_T),      Intent(INOUT) :: nlen 
+ Character(KIND=C_CHAR), Intent(INOUT) :: vlen_element(*)
  Character(KIND=C_CHAR), Intent(INOUT) :: op(*)
 
- Integer(KIND=C_INT)                   :: nc_get_vlen_element
+ Integer(C_INT)                        :: nc_get_vlen_element
 
  End Function nc_get_vlen_element
 End Interface
@@ -898,7 +946,7 @@ Interface
 
  Type(C_PTR), VALUE  :: vl
 
- Integer(KIND=C_INT) :: nc_free_vlen
+ Integer(C_INT)      :: nc_free_vlen
 
  End Function nc_free_vlen
 End Interface
@@ -911,7 +959,7 @@ Interface
  Integer(C_SIZE_T), Intent(IN) :: len
  Type(C_PTR),       VALUE      :: vl
 
- Integer(KIND=C_INT)           :: nc_free_vlens
+ Integer(C_INT)                :: nc_free_vlens
 
  End Function nc_free_vlens
 End Interface
@@ -924,7 +972,7 @@ Interface
  Integer(C_SIZE_T), Intent(IN) :: len
  Type(C_PTR),       VALUE      :: vl
 
- Integer(KIND=C_INT)           :: nc_free_string
+ Integer(C_INT)                :: nc_free_string
 
  End Function nc_free_string
 End Interface
@@ -934,11 +982,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG_LONG, C_PTR
 
- Integer(KIND=C_INT),       VALUE      :: ncid, varid
- Type(C_PTR),               VALUE      :: indexp
- Integer(KIND=C_LONG_LONG), Intent(IN) :: op
+ Integer(C_INT),       VALUE      :: ncid, varid
+ Type(C_PTR),          VALUE      :: indexp
+ Integer(C_LONG_LONG), Intent(IN) :: op
 
- Integer(KIND=C_INT)                   :: nc_put_var1_longlong
+ Integer(C_INT)                   :: nc_put_var1_longlong
 
  End Function nc_put_var1_longlong
 End Interface
@@ -948,11 +996,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG_LONG, C_PTR
 
- Integer(KIND=C_INT),       VALUE       :: ncid, varid
- Type(C_PTR),               VALUE       :: indexp
- Integer(KIND=C_LONG_LONG), Intent(OUT) :: ip
+ Integer(C_INT),       VALUE       :: ncid, varid
+ Type(C_PTR),          VALUE       :: indexp
+ Integer(C_LONG_LONG), Intent(OUT) :: ip
 
- Integer(KIND=C_INT)                    :: nc_get_var1_longlong
+ Integer(C_INT)                    :: nc_get_var1_longlong
 
  End Function nc_get_var1_longlong
 End Interface
@@ -962,11 +1010,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG_LONG, C_PTR
 
- Integer(KIND=C_INT),       VALUE      :: ncid, varid
- Type(C_PTR),               VALUE      :: startp, countp
- Integer(KIND=C_LONG_LONG), Intent(IN) :: op(*)
+ Integer(C_INT),       VALUE      :: ncid, varid
+ Type(C_PTR),          VALUE      :: startp, countp
+ Integer(C_LONG_LONG), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)                   :: nc_put_vara_longlong
+ Integer(C_INT)                   :: nc_put_vara_longlong
 
  End Function nc_put_vara_longlong
 End Interface
@@ -976,11 +1024,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG_LONG, C_PTR
 
- Integer(KIND=C_INT),       VALUE       :: ncid, varid
- Type(C_PTR),               VALUE       :: startp, countp
- Integer(KIND=C_LONG_LONG), Intent(OUT) :: ip(*)
+ Integer(C_INT),       VALUE       :: ncid, varid
+ Type(C_PTR),          VALUE       :: startp, countp
+ Integer(C_LONG_LONG), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)                    :: nc_get_vara_longlong
+ Integer(C_INT)                    :: nc_get_vara_longlong
 
  End Function nc_get_vara_longlong
 End Interface
@@ -991,11 +1039,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_LONG_LONG
 
- Integer(KIND=C_INT),       VALUE      :: ncid, varid
- Type(C_PTR),               VALUE      :: startp, countp, stridep, imapp
- Integer(KIND=C_LONG_LONG), Intent(IN) :: op(*)
+ Integer(C_INT),       VALUE      :: ncid, varid
+ Type(C_PTR),          VALUE      :: startp, countp, stridep, imapp
+ Integer(C_LONG_LONG), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)                   :: nc_put_varm_longlong
+ Integer(C_INT)                   :: nc_put_varm_longlong
 
  End Function nc_put_varm_longlong
 End Interface
@@ -1006,11 +1054,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_LONG_LONG
 
- Integer(KIND=C_INT),       VALUE       :: ncid, varid
- Type(C_PTR),               VALUE       :: startp, countp, stridep, imapp
- Integer(KIND=C_LONG_LONG), Intent(OUT) :: ip(*)
+ Integer(C_INT),       VALUE       :: ncid, varid
+ Type(C_PTR),          VALUE       :: startp, countp, stridep, imapp
+ Integer(C_LONG_LONG), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)                    :: nc_get_varm_longlong
+ Integer(C_INT)                    :: nc_get_varm_longlong
 
  End Function nc_get_varm_longlong
 End Interface
@@ -1020,11 +1068,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_LONG_LONG
 
- Integer(KIND=C_INT),       VALUE      :: ncid, varid
- Type(C_PTR),               VALUE      :: startp, countp, stridep
- Integer(KIND=C_LONG_LONG), Intent(IN) :: op(*)
+ Integer(C_INT),       VALUE      :: ncid, varid
+ Type(C_PTR),          VALUE      :: startp, countp, stridep
+ Integer(C_LONG_LONG), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)                   :: nc_put_vars_longlong
+ Integer(C_INT)                   :: nc_put_vars_longlong
 
  End Function nc_put_vars_longlong
 End Interface
@@ -1034,11 +1082,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_LONG_LONG
 
- Integer(KIND=C_INT),       VALUE       :: ncid, varid
- Type(C_PTR),               VALUE       :: startp, countp, stridep
- Integer(KIND=C_LONG_LONG), Intent(OUT) :: ip(*)
+ Integer(C_INT),       VALUE       :: ncid, varid
+ Type(C_PTR),          VALUE       :: startp, countp, stridep
+ Integer(C_LONG_LONG), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)                    :: nc_get_vars_longlong
+ Integer(C_INT)                    :: nc_get_vars_longlong
 
  End Function nc_get_vars_longlong
 End Interface
@@ -1048,10 +1096,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG_LONG
 
- Integer(KIND=C_INT),       VALUE      :: ncid, varid
- Integer(KIND=C_LONG_LONG), Intent(IN) :: op(*)
+ Integer(C_INT),       VALUE      :: ncid, varid
+ Integer(C_LONG_LONG), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)                   :: nc_put_var_longlong
+ Integer(C_INT)                   :: nc_put_var_longlong
 
  End Function nc_put_var_longlong
 End Interface
@@ -1061,10 +1109,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG_LONG
 
- Integer(KIND=C_INT),       VALUE       :: ncid, varid
- Integer(KIND=C_LONG_LONG), Intent(OUT) :: ip(*)
+ Integer(C_INT),       VALUE       :: ncid, varid
+ Integer(C_LONG_LONG), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)                    :: nc_get_var_longlong
+ Integer(C_INT)                    :: nc_get_var_longlong
 
  End Function nc_get_var_longlong
 End Interface
@@ -1074,9 +1122,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE :: size, nelems, preemption 
+ Integer(C_INT), VALUE :: size, nelems, preemption 
 
- Integer(KIND=C_INT)        :: nc_set_chunk_cache_ints
+ Integer(C_INT)        :: nc_set_chunk_cache_ints
 
  End Function nc_set_chunk_cache_ints
 End Interface
@@ -1086,33 +1134,36 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), Intent(INOUT) :: size, nelems, preemption 
+ Integer(C_INT), Intent(INOUT) :: size, nelems, preemption 
 
- Integer(KIND=C_INT)                :: nc_get_chunk_cache_ints
+ Integer(C_INT)                :: nc_get_chunk_cache_ints
 
  End Function nc_get_chunk_cache_ints
 End Interface
 !------------------------------- nc_set_var_chunk_cache_ints ------------------
 Interface
- Function nc_set_var_chunk_cache_ints(ncid, varid, size, nelems, preemption) BIND(C)
+ Function nc_set_var_chunk_cache_ints(ncid, varid, size, nelems,        &
+                                      preemption) BIND(C)
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE :: ncid, varid, size, nelems, preemption 
+ Integer(C_INT), VALUE :: ncid, varid, size, nelems, preemption 
 
- Integer(KIND=C_INT)        :: nc_set_var_chunk_cache_ints
+ Integer(C_INT)        :: nc_set_var_chunk_cache_ints
 
  End Function nc_set_var_chunk_cache_ints
 End Interface
 !------------------------------- nc_get_var_chunk_cache_ints ------------------
 Interface
- Function nc_get_var_chunk_cache_ints(ncid, varid, size, nelems, preemption) BIND(C)
+ Function nc_get_var_chunk_cache_ints(ncid, varid, size, nelems,        &
+                                      preemption) BIND(C)
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE         :: ncid, varid
- Integer(KIND=C_INT), Intent(INOUT) :: size, nelems, preemption
- Integer(KIND=C_INT)                :: nc_get_var_chunk_cache_ints
+ Integer(C_INT), VALUE         :: ncid, varid
+ Integer(C_INT), Intent(INOUT) :: size, nelems, preemption
+
+ Integer(C_INT)                :: nc_get_var_chunk_cache_ints
 
  End Function nc_get_var_chunk_cache_ints
 End Interface
@@ -1122,10 +1173,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_SIZE_T, C_FLOAT, C_INT
 
- Integer(KIND=C_SIZE_T), VALUE :: size, nelems
- Real(KIND=C_FLOAT),     VALUE :: preemption 
+ Integer(C_SIZE_T), VALUE :: size, nelems
+ Real(C_FLOAT),     VALUE :: preemption 
 
- Integer(KIND=C_INT)           :: nc_set_chunk_cache
+ Integer(C_INT)           :: nc_set_chunk_cache
 
  End Function nc_set_chunk_cache
 End Interface
@@ -1135,10 +1186,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_SIZE_T, C_FLOAT, C_INT
 
- Integer(KIND=C_SIZE_T), Intent(INOUT) :: size, nelems
- Real(KIND=C_FLOAT),     Intent(INOUT) :: preemption 
+ Integer(C_SIZE_T), Intent(INOUT) :: size, nelems
+ Real(C_FLOAT),     Intent(INOUT) :: preemption 
 
- Integer(KIND=C_INT)                   :: nc_get_chunk_cache
+ Integer(C_INT)                   :: nc_get_chunk_cache
 
  End Function nc_get_chunk_cache
 End Interface
@@ -1148,10 +1199,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR
 
- Integer(KIND=C_INT), VALUE :: ncid, varid
- Type(C_PTR),         VALUE :: op
+ Integer(C_INT), VALUE :: ncid, varid
+ Type(C_PTR),    VALUE :: op
 
- Integer(KIND=C_INT)        :: nc_put_var
+ Integer(C_INT)        :: nc_put_var
 
  End Function nc_put_var
 End Interface
@@ -1161,10 +1212,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid, varid
+ Integer(C_INT),         VALUE         :: ncid, varid
  Character(KIND=C_CHAR), Intent(INOUT) :: ip(*)
 
- Integer(KIND=C_INT)                   :: nc_get_var
+ Integer(C_INT)                        :: nc_get_var
 
  End Function nc_get_var
 End Interface
diff --git a/fortran/module_netcdf4_nf_interfaces.F90 b/fortran/module_netcdf4_nf_interfaces.F90
index 6dcb9f1..a5e8895 100755
--- a/fortran/module_netcdf4_nf_interfaces.F90
+++ b/fortran/module_netcdf4_nf_interfaces.F90
@@ -25,6 +25,7 @@ Module netcdf4_nf_interfaces
 !                         to support new nf90_ non-integer fill characters
 !                         Added interface for new nf_rename_grp function 
 !                         Changed interface type defs to USE netcdf_nf_data
+! Version 4. Jan.   2016  General code cleanup
 
 ! Most legacy programs don't need to use this module. However, I've created
 ! it to support FORTRAN programmers who like to provide explicit interfaces
@@ -734,10 +735,10 @@ Interface
 
  USE netcdf_nf_data, ONLY: IK8
 
- Integer,           Intent(IN) :: ncid, varid
- Integer,           Intent(IN) :: ndex(*)
- Integer(KIND=IK8), Intent(IN) :: ival
- Integer                       :: status
+ Integer,      Intent(IN) :: ncid, varid
+ Integer,      Intent(IN) :: ndex(*)
+ Integer(IK8), Intent(IN) :: ival
+ Integer                  :: status
 
  End Function nf_put_var1_int64
 End Interface
@@ -747,10 +748,10 @@ Interface
 
  USE netcdf_nf_data, ONLY: IK8
 
- Integer,           Intent(IN) :: ncid, varid
- Integer,           Intent(IN) :: start(*), counts(*)
- Integer(KIND=IK8), Intent(IN) :: ivals(*)
- Integer                       :: status
+ Integer,      Intent(IN) :: ncid, varid
+ Integer,      Intent(IN) :: start(*), counts(*)
+ Integer(IK8), Intent(IN) :: ivals(*)
+ Integer                  :: status
 
  End Function nf_put_vara_int64
 End Interface
@@ -761,10 +762,10 @@ Interface
  
  USE netcdf_nf_data, ONLY: IK8
 
- Integer,           Intent(IN) :: ncid, varid
- Integer,           Intent(IN) :: start(*), counts(*), strides(*)
- Integer(KIND=IK8), Intent(IN) :: ivals(*)
- Integer                       :: status
+ Integer,      Intent(IN) :: ncid, varid
+ Integer,      Intent(IN) :: start(*), counts(*), strides(*)
+ Integer(IK8), Intent(IN) :: ivals(*)
+ Integer                  :: status
 
  End Function nf_put_vars_int64
 End Interface
@@ -775,10 +776,10 @@ Interface
 
  USE netcdf_nf_data, ONLY: IK8
 
- Integer,           Intent(IN) :: ncid, varid
- Integer,           Intent(IN) :: start(*), counts(*), strides(*), maps(*)
- Integer(KIND=IK8), Intent(IN) :: ivals(*)
- Integer                       :: status
+ Integer,      Intent(IN) :: ncid, varid
+ Integer,      Intent(IN) :: start(*), counts(*), strides(*), maps(*)
+ Integer(IK8), Intent(IN) :: ivals(*)
+ Integer                  :: status
 
  End Function nf_put_varm_int64
 End Interface
@@ -788,9 +789,9 @@ Interface
 
  USE netcdf_nf_data, ONLY: IK8
 
- Integer,           Intent(IN) :: ncid, varid
- Integer(KIND=IK8), Intent(IN) :: ivals(*)
- Integer                       :: status
+ Integer,      Intent(IN) :: ncid, varid
+ Integer(IK8), Intent(IN) :: ivals(*)
+ Integer                  :: status
 
  End Function nf_put_var_int64
 End Interface
@@ -800,10 +801,10 @@ Interface
 
  USE netcdf_nf_data, ONLY: IK8
 
- Integer,           Intent(IN)  :: ncid, varid
- Integer,           Intent(IN)  :: ndex(*)
- Integer(KIND=IK8), Intent(OUT) :: ival
- Integer                        :: status
+ Integer,      Intent(IN)  :: ncid, varid
+ Integer,      Intent(IN)  :: ndex(*)
+ Integer(IK8), Intent(OUT) :: ival
+ Integer                   :: status
 
  End Function nf_get_var1_int64
 End Interface
@@ -813,10 +814,10 @@ Interface
 
  USE netcdf_nf_data, ONLY: IK8
 
- Integer,           Intent(IN)  :: ncid, varid
- Integer,           Intent(IN)  :: start(*), counts(*)
- Integer(KIND=IK8), Intent(OUT) :: ivals(*)
- Integer                        :: status
+ Integer,      Intent(IN)  :: ncid, varid
+ Integer,      Intent(IN)  :: start(*), counts(*)
+ Integer(IK8), Intent(OUT) :: ivals(*)
+ Integer                   :: status
 
  End Function nf_get_vara_int64
 End Interface
@@ -827,10 +828,10 @@ Interface
 
  USE netcdf_nf_data, ONLY: IK8
 
- Integer,           Intent(IN)  :: ncid, varid
- Integer,           Intent(IN)  :: start(*), counts(*), strides(*)
- Integer(KIND=IK8), Intent(OUT) :: ivals(*)
- Integer                        :: status
+ Integer,      Intent(IN)  :: ncid, varid
+ Integer,      Intent(IN)  :: start(*), counts(*), strides(*)
+ Integer(IK8), Intent(OUT) :: ivals(*)
+ Integer                   :: status
 
  End Function nf_get_vars_int64
 End Interface
@@ -841,10 +842,10 @@ Interface
 
  USE netcdf_nf_data, ONLY: IK8
 
- Integer,           Intent(IN)  :: ncid, varid
- Integer,           Intent(IN)  :: start(*), counts(*), strides(*), maps(*)
- Integer(KIND=IK8), Intent(OUT) :: ivals(*)
- Integer                        :: status
+ Integer,      Intent(IN)  :: ncid, varid
+ Integer,      Intent(IN)  :: start(*), counts(*), strides(*), maps(*)
+ Integer(IK8), Intent(OUT) :: ivals(*)
+ Integer                   :: status
 
  End Function nf_get_varm_int64
 End Interface
@@ -854,9 +855,9 @@ Interface
 
  USE netcdf_nf_data, ONLY: IK8
 
- Integer,           Intent(IN)  :: ncid, varid
- Integer(KIND=IK8), Intent(OUT) :: ivals(*)
- Integer                        :: status
+ Integer,      Intent(IN)  :: ncid, varid
+ Integer(IK8), Intent(OUT) :: ivals(*)
+ Integer                   :: status
 
  End Function nf_get_var_int64
 End Interface
diff --git a/fortran/module_netcdf_f03.f90 b/fortran/module_netcdf_f03.f90
index e8a0c90..00f7690 100755
--- a/fortran/module_netcdf_f03.f90
+++ b/fortran/module_netcdf_f03.f90
@@ -1,9 +1,9 @@
 Module netcdf_f03
 
-!> Module to provide inheritance of data and interfaces from nf_data and
+!! Module to provide inheritance of data and interfaces from nf_data and
 !! nf_interfaces modules. Not really needed by netCDF but provided for
 !! folks writing new code or updating old code who would prefer using
-!! modules instead of the old netcdf.inc include file.
+!! a module instead of the old netcdf.inc include file.
 
 !! Written by: Richard Weed, Ph.D.
 !!             Center for Advanced Vehicular Systems
diff --git a/fortran/module_netcdf_fortv2_c_interfaces.f90 b/fortran/module_netcdf_fortv2_c_interfaces.f90
index 90b1f53..4d1fc83 100755
--- a/fortran/module_netcdf_fortv2_c_interfaces.f90
+++ b/fortran/module_netcdf_fortv2_c_interfaces.f90
@@ -9,7 +9,6 @@ Module netcdf_fortv2_c_interfaces
 !              Mississipi State University
 !              rweed at cavs.msstate.edu
 
-
 ! License (and other Lawyer Language)
  
 ! This software is released under the Apache 2.0 Open Source License. The
@@ -28,11 +27,9 @@ Module netcdf_fortv2_c_interfaces
 !                           in C with C_PTR and C_CHAR strings and 
 !                           NetCDF 4.0.1
 ! Version 3.; April, 2010 - Updated to NetCDF 4.1.1
+! Version 4.: Jan.   2016 - General code cleanup. Changed cmap argument
+!                           in convert_v2_imap routine to assumed shape
 
-! USE ISO_C_BINDING
-
-! USE NETCDF_NC_DATA,       ONLY: C_PTRDIFF_T
-! USE NETCDF_NC_INTERFACES, ONLY: addCNullChar, stripCNullChar
  USE NETCDF_NC_INTERFACES
 
  Implicit NONE
@@ -56,7 +53,7 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE :: val
+ Integer(C_INT), VALUE :: val
 
  End Subroutine c_ncpopt
 End Interface
@@ -66,7 +63,7 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), Intent(OUT) :: val
+ Integer(C_INT), Intent(OUT) :: val
 
  End Subroutine c_ncgopt
 End Interface
@@ -77,10 +74,10 @@ Interface
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
  Character(KIND=C_CHAR), Intent(IN)  :: pathname(*)
- Integer(KIND=C_INT),    VALUE       :: clobmode 
- Integer(KIND=C_INT),    Intent(OUT) :: rcode 
+ Integer(C_INT),         VALUE       :: clobmode 
+ Integer(C_INT),         Intent(OUT) :: rcode 
  
- Integer(KIND=C_INT)                 :: c_nccre
+ Integer(C_INT)                      :: c_nccre
 
  End Function c_nccre
 End Interface
@@ -91,10 +88,10 @@ Interface
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
  Character(KIND=C_CHAR), Intent(IN)  :: pathname(*)
- Integer(KIND=C_INT),    VALUE       :: rwmode 
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         VALUE       :: rwmode 
+ Integer(C_INT),         Intent(OUT) :: rcode
  
- Integer(KIND=C_INT)                 :: c_ncopn
+ Integer(C_INT)                      :: c_ncopn
 
  End Function c_ncopn
 End Interface
@@ -104,11 +101,11 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, dimlen
+ Integer(C_INT),         VALUE       :: ncid, dimlen
  Character(KIND=C_CHAR), Intent(IN)  :: dimname(*)
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
  
- Integer(KIND=C_INT)                 :: c_ncddef
+ Integer(C_INT)                      :: c_ncddef
 
  End Function c_ncddef
 End Interface
@@ -118,28 +115,28 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid
+ Integer(C_INT),         VALUE       :: ncid
  Character(KIND=C_CHAR), Intent(IN)  :: dimname(*)
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
  
- Integer(KIND=C_INT)                 :: c_ncdid
+ Integer(C_INT)                      :: c_ncdid
 
  End Function c_ncdid
 End Interface
 !-------------------------------- c_ncvdef ------------------------------------
 Interface
- Function c_ncvdef(ncid, varname, datatype, ndims, dimids, rcode) BIND(C)
+ Function c_ncvdef(ncid, varname, datatype, ndims, dimidp, rcode) BIND(C)
  
- USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
+ USE ISO_C_BINDING, ONLY: C_INT, C_CHAR, C_PTR
 
- Integer(KIND=C_INT),    VALUE       :: ncid
+ Integer(C_INT),         VALUE       :: ncid
  Character(KIND=C_CHAR), Intent(IN)  :: varname(*)
- Integer(KIND=C_INT),    VALUE       :: datatype ! nc_type variable in C
- Integer(KIND=C_INT),    VALUE       :: ndims
- Integer(KIND=C_INT),    Intent(IN)  :: dimids(*)
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         VALUE       :: datatype ! nc_type variable in C
+ Integer(C_INT),         VALUE       :: ndims
+ Type(C_PTR),            VALUE       :: dimidp
+ Integer(C_INT),         Intent(OUT) :: rcode
 
- Integer(KIND=C_INT)                 :: c_ncvdef
+ Integer(C_INT)                      :: c_ncvdef
 
  End Function c_ncvdef
 End Interface
@@ -149,11 +146,11 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid
+ Integer(C_INT),         VALUE       :: ncid
  Character(KIND=C_CHAR), Intent(IN)  :: varname(*)
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
- Integer(KIND=C_INT)                 :: c_ncvid
+ Integer(C_INT)                      :: c_ncvid
 
  End Function c_ncvid
 End Interface
@@ -163,10 +160,10 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: datatype ! nc_type var in C
- Integer(KIND=C_INT), Intent(OUT) :: rcode
+ Integer(C_INT), VALUE       :: datatype ! nc_type var in C
+ Integer(C_INT), Intent(OUT) :: rcode
 
- Integer(KIND=C_INT)              :: c_nctlen
+ Integer(C_INT)              :: c_nctlen
 
  End Function c_nctlen
 End Interface
@@ -176,8 +173,8 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid 
- Integer(KIND=C_INT), Intent(OUT) :: rcode
+ Integer(C_INT), VALUE       :: ncid 
+ Integer(C_INT), Intent(OUT) :: rcode
 
  End Subroutine c_ncclos
 End Interface
@@ -187,8 +184,8 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid 
- Integer(KIND=C_INT), Intent(OUT) :: rcode
+ Integer(C_INT), VALUE       :: ncid 
+ Integer(C_INT), Intent(OUT) :: rcode
 
  End Subroutine c_ncredf
 End Interface
@@ -198,8 +195,8 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid 
- Integer(KIND=C_INT), Intent(OUT) :: rcode
+ Integer(C_INT), VALUE       :: ncid 
+ Integer(C_INT), Intent(OUT) :: rcode
 
  End Subroutine c_ncendf
 End Interface
@@ -209,8 +206,8 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid
- Integer(KIND=C_INT), Intent(OUT) :: indims, invars, inatts, irecdim, rcode
+ Integer(C_INT), VALUE       :: ncid
+ Integer(C_INT), Intent(OUT) :: indims, invars, inatts, irecdim, rcode
 
  End Subroutine c_ncinq
 End Interface
@@ -220,8 +217,8 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid 
- Integer(KIND=C_INT), Intent(OUT) :: rcode
+ Integer(C_INT), VALUE       :: ncid 
+ Integer(C_INT), Intent(OUT) :: rcode
 
  End Subroutine c_ncsnc
 End Interface
@@ -231,8 +228,8 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid 
- Integer(KIND=C_INT), Intent(OUT) :: rcode
+ Integer(C_INT), VALUE       :: ncid 
+ Integer(C_INT), Intent(OUT) :: rcode
 
  End Subroutine c_ncabor
 End Interface
@@ -242,9 +239,9 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , dimid
+ Integer(C_INT),         VALUE       :: ncid , dimid
  Character(KIND=C_CHAR), Intent(OUT) :: dimname(*)
- Integer(KIND=C_INT),    Intent(OUT) :: size, rcode
+ Integer(C_INT),         Intent(OUT) :: size, rcode
 
  End Subroutine c_ncdinq
 End Interface
@@ -254,9 +251,9 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , dimid
+ Integer(C_INT),         VALUE       :: ncid , dimid
  Character(KIND=C_CHAR), Intent(IN)  :: dimname(*)
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncdren
 End Interface
@@ -267,11 +264,11 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid , varid
+ Integer(C_INT),         VALUE         :: ncid , varid
  Character(KIND=C_CHAR), Intent(INOUT) :: varname(*)
- Integer(KIND=C_INT),    Intent(OUT)   :: datatype ! nc_type var in C
- Integer(KIND=C_INT),    Intent(OUT)   :: dimarray(*)
- Integer(KIND=C_INT),    Intent(OUT)   :: indims, inatts, rcode
+ Integer(C_INT),         Intent(OUT)   :: datatype ! nc_type var in C
+ Integer(C_INT),         Intent(OUT)   :: dimarray(*)
+ Integer(C_INT),         Intent(OUT)   :: indims, inatts, rcode
 
  End Subroutine c_ncvinq
 End Interface
@@ -281,10 +278,10 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR
 
- Integer(KIND=C_INT), VALUE       :: ncid , varid
- TYPE(C_PTR),         VALUE       :: indices
- Type(C_PTR),         VALUE       :: value
- Integer(KIND=C_INT), Intent(OUT) :: rcode
+ Integer(C_INT), VALUE       :: ncid , varid
+ TYPE(C_PTR),    VALUE       :: indices
+ Type(C_PTR),    VALUE       :: value
+ Integer(C_INT), Intent(OUT) :: rcode
 
  End Subroutine c_ncvpt1
 End Interface
@@ -294,10 +291,10 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , varid
+ Integer(C_INT),         VALUE       :: ncid , varid
  TYPE(C_PTR),            VALUE       :: indices
  Character(KIND=C_CHAR), Intent(IN)  :: value(*) ! void in C
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncvp1c
 End Interface
@@ -307,10 +304,10 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR
 
- Integer(KIND=C_INT), VALUE       :: ncid , varid
- Type(C_PTR),         VALUE       :: start, count
- Type(C_PTR),         VALUE       :: value
- Integer(KIND=C_INT), Intent(OUT) :: rcode
+ Integer(C_INT), VALUE       :: ncid , varid
+ Type(C_PTR),    VALUE       :: start, count
+ Type(C_PTR),    VALUE       :: value
+ Integer(C_INT), Intent(OUT) :: rcode
 
  End Subroutine c_ncvpt
 End Interface
@@ -320,10 +317,10 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , varid, lenstr
+ Integer(C_INT),         VALUE       :: ncid , varid, lenstr
  Type(C_PTR),            VALUE       :: start, count
  Character(KIND=C_CHAR), Intent(IN)  :: value(*) ! char in C
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncvptc
 End Interface
@@ -334,10 +331,10 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR
 
- Integer(KIND=C_INT), VALUE       :: ncid , varid
- Type(C_PTR),         VALUE       :: start, count, strides, imap
- Type(C_PTR),         VALUE       :: value
- Integer(KIND=C_INT), Intent(OUT) :: rcode
+ Integer(C_INT), VALUE       :: ncid , varid
+ Type(C_PTR),    VALUE       :: start, count, strides, imap
+ Type(C_PTR),    VALUE       :: value
+ Integer(C_INT), Intent(OUT) :: rcode
 
  End Subroutine c_ncvptg
 End Interface
@@ -348,10 +345,10 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , varid
+ Integer(C_INT),         VALUE       :: ncid , varid
  Type(C_PTR),            VALUE       :: start, count, strides, imap
  Character(KIND=C_CHAR), Intent(IN)  :: value(*) ! char in C
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncvpgc
 End Interface
@@ -361,10 +358,10 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , varid
+ Integer(C_INT),         VALUE       :: ncid , varid
  Type(C_PTR),            VALUE       :: indices
  Character(KIND=C_CHAR), Intent(OUT) :: value(*) ! void in C
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncvgt1
 End Interface
@@ -374,10 +371,10 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid , varid
+ Integer(C_INT),         VALUE         :: ncid , varid
  Type(C_PTR),            VALUE         :: indices
  Character(KIND=C_CHAR), Intent(INOUT) :: value(*) ! char in C
- Integer(KIND=C_INT),    Intent(OUT)   :: rcode
+ Integer(C_INT),         Intent(OUT)   :: rcode
 
  End Subroutine c_ncvg1c
 End Interface
@@ -387,10 +384,10 @@ Interface
  
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , varid
+ Integer(C_INT),         VALUE       :: ncid , varid
  Type(C_PTR),            VALUE       :: start, count
  Character(KIND=C_CHAR), Intent(OUT) :: value(*) ! void in C
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncvgt
 End Interface
@@ -400,10 +397,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid , varid, lenstr
+ Integer(C_INT),         VALUE         :: ncid , varid, lenstr
  Type(C_PTR),            VALUE         :: start, count
  Character(KIND=C_CHAR), Intent(INOUT) :: value(*) ! char in C
- Integer(KIND=C_INT),    Intent(OUT)   :: rcode
+ Integer(C_INT),         Intent(OUT)   :: rcode
 
  End Subroutine c_ncvgtc
 End Interface
@@ -414,10 +411,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , varid
+ Integer(C_INT),         VALUE       :: ncid , varid
  Type(C_PTR),            VALUE       :: start, count, strides,  imap
  Character(KIND=C_CHAR), Intent(OUT) :: value(*) ! void in C
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncvgtg
 End Interface
@@ -428,10 +425,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , varid
+ Integer(C_INT),         VALUE       :: ncid , varid
  Type(C_PTR),            VALUE       :: start, count, strides, imap
  Character(KIND=C_CHAR), Intent(OUT) :: value(*) ! char in C
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncvggc
 End Interface
@@ -441,9 +438,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , varid
+ Integer(C_INT),         VALUE       :: ncid , varid
  Character(KIND=C_CHAR), Intent(IN)  :: varname(*)
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncvren
 End Interface
@@ -454,12 +451,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR, C_PTR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , varid
+ Integer(C_INT),         VALUE       :: ncid , varid
  Character(KIND=C_CHAR), Intent(IN)  :: attname(*)
- Integer(KIND=C_INT),    VALUE       :: datatype ! nc_type var in C
- Integer(KIND=C_SIZE_T), VALUE       :: attlen
+ Integer(C_INT),         VALUE       :: datatype ! nc_type var in C
+ Integer(C_SIZE_T),      VALUE       :: attlen
  Type(C_PTR),            VALUE       :: value ! void in C
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncapt
 End Interface
@@ -470,12 +467,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , varid
+ Integer(C_INT),         VALUE       :: ncid , varid
  Character(KIND=C_CHAR), Intent(IN)  :: attname(*)
- Integer(KIND=C_INT),    VALUE       :: datatype ! nc_type var in C
- Integer(KIND=C_SIZE_T), VALUE       :: attlen
+ Integer(C_INT),         VALUE       :: datatype ! nc_type var in C
+ Integer(C_SIZE_T),      VALUE       :: attlen
  Character(KIND=C_CHAR), Intent(IN)  :: string(*) ! char in C
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncaptc
 End Interface
@@ -485,11 +482,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , varid
+ Integer(C_INT),         VALUE       :: ncid , varid
  Character(KIND=C_CHAR), Intent(IN)  :: attname(*)
- Integer(KIND=C_INT),    Intent(OUT) :: datatype ! nc_type var in C
- Integer(KIND=C_INT),    Intent(OUT) :: attlen
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: datatype ! nc_type var in C
+ Integer(C_INT),         Intent(OUT) :: attlen
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncainq
 End Interface
@@ -499,10 +496,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , varid
+ Integer(C_INT),         VALUE       :: ncid , varid
  Character(KIND=C_CHAR), Intent(IN)  :: attname(*)
  Character(KIND=C_CHAR), Intent(OUT) :: value(*) ! void in C
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncagt
 End Interface
@@ -512,10 +509,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , varid, attlen
+ Integer(C_INT),         VALUE       :: ncid , varid, attlen
  Character(KIND=C_CHAR), Intent(IN)  :: attname(*)
  Character(KIND=C_CHAR), Intent(OUT) :: value(*) ! char in C
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncagtc
 End Interface
@@ -526,9 +523,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: inncid , invarid, outncid, outvarid 
+ Integer(C_INT),         VALUE       :: inncid , invarid, outncid, outvarid 
  Character(KIND=C_CHAR), Intent(IN)  :: attname(*)
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncacpy
 End Interface
@@ -538,9 +535,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid , varid, attnum
+ Integer(C_INT),         VALUE         :: ncid , varid, attnum
  Character(KIND=C_CHAR), Intent(INOUT) :: newname(*)
- Integer(KIND=C_INT),    Intent(OUT)   :: rcode
+ Integer(C_INT),         Intent(OUT)   :: rcode
 
  End Subroutine c_ncanam
 End Interface
@@ -550,9 +547,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , varid
+ Integer(C_INT),         VALUE       :: ncid , varid
  Character(KIND=C_CHAR), Intent(IN)  :: attnam(*), newname(*)
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncaren
 End Interface
@@ -562,9 +559,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid , varid
+ Integer(C_INT),         VALUE       :: ncid , varid
  Character(KIND=C_CHAR), Intent(IN)  :: attname(*)
- Integer(KIND=C_INT),    Intent(OUT) :: rcode
+ Integer(C_INT),         Intent(OUT) :: rcode
 
  End Subroutine c_ncadel
 End Interface
@@ -574,10 +571,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid , fillmode 
- Integer(KIND=C_INT), Intent(OUT) :: rcode
+ Integer(C_INT), VALUE       :: ncid , fillmode 
+ Integer(C_INT), Intent(OUT) :: rcode
 
- Integer(KIND=C_INT)              :: c_ncsfil
+ Integer(C_INT)              :: c_ncsfil
 
  End Function c_ncsfil
 End Interface
@@ -589,8 +586,8 @@ Interface
 !
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T
 
- Integer(KIND=C_INT),   VALUE :: datatype
- Integer(KIND=C_SIZE_T)       :: v2data_size
+ Integer(C_INT),   VALUE :: datatype
+ Integer(C_SIZE_T)       :: v2data_size
 
  End Function v2data_size  
 End Interface
@@ -601,29 +598,22 @@ Subroutine convert_v2_imap(cncid, cvarid, fmap, cmap, inullp)
 
 ! Replacement for f2c_v2imap C function. Uses v2data_size to return
 ! data size defined for C code. A futher test will be made using
-! C interop value.s for FORTRAN side
+! C interop values for FORTRAN side. Made cmap a assumed shape arry
+! for Jan. 2016 update to use allocatable arrays
 !
-!   USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T
-!   USE NETCDF_NC_DATA, ONLY: C_PTRDIFF_T
-!   USE netcdf_nc_interfaces, ONLY: NC_CHAR, NC_SHORT, NC_INT, NC_FLOAT, &
-!                                   NC_BYTE, NC_DOUBLE, NC_MAX_VAR_DIMS, &
-
-! USE netcdf_nc_interfaces, ONLY: nc_inq_vartype, nc_inq_varndims,     &
-!                                 nc_inq_vardimid, nc_inq_dimlen,      &
-!                                 NC_NOERR , NC_MAX_VAR_DIMS
    
  Implicit NONE
 
- Integer(KIND=C_INT),       Intent(IN)    :: cncid, cvarid
- Integer(KIND=C_INT),       Intent(IN)    :: fmap(*)
- Integer(KIND=C_PTRDIFF_T), Intent(INOUT) :: cmap(*)
- Integer,                   Intent(OUT)   :: inullp
+ Integer(C_INT),       Intent(IN)    :: cncid, cvarid
+ Integer(C_INT),       Intent(IN)    :: fmap(*)
+ Integer(C_PTRDIFF_T), Intent(INOUT) :: cmap(:)
+ Integer,              Intent(OUT)   :: inullp
 
- Integer(KIND=C_INT)    :: rank, datatype, cstat1, cstat2, cstat3, cstat4
- Integer(KIND=C_SIZE_T) :: total, length, csize
- Integer(KIND=C_INT)    :: dimids(NC_MAX_VAR_DIMS)
- Integer                :: ii, idim
+ Integer(C_INT)    :: rank, datatype, cstat1, cstat2, cstat3, cstat4
+ Integer(C_SIZE_T) :: total, length, csize
+ Integer           :: ii, idim
 
+ Integer(C_INT), ALLOCATABLE  :: dimids(:)
 !
  inullp=0
 
@@ -647,6 +637,10 @@ Subroutine convert_v2_imap(cncid, cvarid, fmap, cmap, inullp)
    Return
  EndIf
 
+ If (rank > 0) Then
+   ALLOCATE(dimids(rank))
+ EndIf
+
  If (fmap(1)==0) Then ! Special Fortran version 2 sematics
    cstat3 = nc_inq_vardimid(cncid, cvarid, dimids)
    If (cstat3 /= NC_NOERR) Then
diff --git a/fortran/module_netcdf_nc_data.F90 b/fortran/module_netcdf_nc_data.F90
index 624b2a1..525a9fd 100755
--- a/fortran/module_netcdf_nc_data.F90
+++ b/fortran/module_netcdf_nc_data.F90
@@ -30,9 +30,14 @@ Module netcdf_nc_data
 ! Version 7.:  Feb.  2012 - Added support for F2008 Intrinsic kinds
 ! Version 8.:  Feb.  2013 - Updated for netcdf fortran-4.4
 ! Version 9.:  April 2014 - Changed C_PTRDIFF_T to UCAR definitions
+! Version 10.: Jan.  2016 - General code cleanup. Added a definition
+!                           for a C_ENUM kind paramater for future
+!                           code mods. Added several new parameters
+!                           to include all of the values supported
+!                           in netcdf_constant.f90
 
- USE ISO_C_BINDING  ! All subsequent USE associations of netcdf_nc_data
-                    ! will inherit ISO_C_BINDING data
+ USE ISO_C_BINDING ! All subsequent USE associations of netcdf_nc_data
+                   ! will inherit ISO_C_BINDING data
 
 ! The following will allow us to use the Fortran 2008 default intrinsic
 ! kind variables contained in Fortran 2008 ISO_FORTRAN_ENV module when
@@ -46,6 +51,10 @@ Module netcdf_nc_data
 
 #include "nfconfig.inc"
 
+! All of the stuff inside this ifndef black needs to be moved to a
+! stantdalone module and combined with the f90 interfaces typesizes
+! module
+
 #ifndef HAVE_F2008
  
 ! Create our own REAL32, REAL64, INT8, INT16, INT32, INT64 if we don't have F2008
@@ -151,188 +160,236 @@ Module netcdf_nc_data
 #else
   Integer, Parameter :: NFREAL = RK4
 #endif
+
+! Create a C_ENUM kind which should be just C_INT (but you never know).
+! Don't know why this wasn't included in the C Interop standard but it
+! would have been nice to have.
+
+! This will eventually be used to replace the current integer values in the
+! interfaces with something that should be consistent with C enum data
+! types. Mostly this is cosmetic to identify in the code that we are 
+! passing something that is a enumerator member in C. 
+
+ Enum, BIND(C)
+   Enumerator :: dummy
+ End Enum
+
+ Private :: dummy
+
+ Integer, Parameter :: C_ENUM = KIND(dummy)
+
  
 !--------- Define default C interface parameters from netcdf.h   ---------------
+
 ! This is not a complete impementation of the C header files but 
 ! defines NC_ values equivalent to the values in the netcdf.inc files
-! excludeing the V2 values
+! excluding the V2 values
 
 !                     NETCDF3 data
 !               
 ! Define enumerator nc_type data as integers
 
- Integer(KIND=C_INT), Parameter :: NC_NAT    = 0
- Integer(KIND=C_INT), Parameter :: NC_BYTE   = 1
- Integer(KIND=C_INT), Parameter :: NC_CHAR   = 2
- Integer(KIND=C_INT), Parameter :: NC_SHORT  = 3
- Integer(KIND=C_INT), Parameter :: NC_INT    = 4
- Integer(KIND=C_INT), Parameter :: NC_FLOAT  = 5
- Integer(KIND=C_INT), Parameter :: NC_DOUBLE = 6
+ Integer(C_INT), Parameter :: NC_NAT    = 0
+ Integer(C_INT), Parameter :: NC_BYTE   = 1
+ Integer(C_INT), Parameter :: NC_CHAR   = 2
+ Integer(C_INT), Parameter :: NC_SHORT  = 3
+ Integer(C_INT), Parameter :: NC_INT    = 4
+ Integer(C_INT), Parameter :: NC_FLOAT  = 5
+ Integer(C_INT), Parameter :: NC_DOUBLE = 6
 
 ! Default fill values
 
- Character(KIND=C_CHAR),      Parameter :: NC_FILL_CHAR   = C_NULL_CHAR 
- Integer(KIND=C_SIGNED_CHAR), Parameter :: NC_FILL_BYTE   = -127_C_SIGNED_CHAR
- Integer(KIND=C_SHORT),       Parameter :: NC_FILL_SHORT  = -32767_C_SHORT
- Integer(KIND=C_INT),         Parameter :: NC_FILL_INT    = -2147483647_C_INT
- Real(KIND=C_FLOAT),          Parameter :: NC_FILL_FLOAT  = 9.9692099683868690E+36
- Real(KIND=C_DOUBLE),         Parameter :: NC_FILL_DOUBLE = 9.9692099683868690D+36
+ Character(KIND=C_CHAR), Parameter :: NC_FILL_CHAR   = C_NULL_CHAR 
+ Integer(C_SIGNED_CHAR), Parameter :: NC_FILL_BYTE   = -127_C_SIGNED_CHAR
+ Integer(C_SHORT),       Parameter :: NC_FILL_SHORT  = -32767_C_SHORT
+ Integer(C_INT),         Parameter :: NC_FILL_INT    = -2147483647_C_INT
+ Real(C_FLOAT),          Parameter :: NC_FILL_FLOAT  = 9.9692099683868690E+36
+ Real(C_DOUBLE),         Parameter :: NC_FILL_DOUBLE = 9.9692099683868690D+36
 
 ! Mode flags for opening and creating datasets
 
- Integer(KIND=C_INT), Parameter :: NC_NOWRITE          = 0
- Integer(KIND=C_INT), Parameter :: NC_WRITE            = 1
- Integer(KIND=C_INT), Parameter :: NC_CLOBBER          = 0
- Integer(KIND=C_INT), Parameter :: NC_NOCLOBBER        = 4
- Integer(KIND=C_INT), Parameter :: NC_FILL             = 0
- Integer(KIND=C_INT), Parameter :: NC_NOFILL           = 256
- Integer(KIND=C_INT), Parameter :: NC_LOCK             = 1024
- Integer(KIND=C_INT), Parameter :: NC_SHARE            = 2048
- Integer(KIND=C_INT), Parameter :: NC_STRICT_NC3       = 8
- Integer(KIND=C_INT), Parameter :: NC_64BIT_OFFSET     = 512
- Integer(KIND=C_INT), Parameter :: NC_SIZEHINT_DEFAULT = 0
- Integer(KIND=C_INT), Parameter :: NC_ALIGN_CHUNK      = -1
- Integer(KIND=C_INT), Parameter :: NC_FORMAT_CLASSIC   = 1
- Integer(KIND=C_INT), Parameter :: NC_FORMAT_64BIT     = 2
- Integer(KIND=C_INT), Parameter :: NC_DISKLESS         = 8
- Integer(KIND=C_INT), Parameter :: NC_MMAP             = 16
-
+ Integer(C_INT), Parameter :: NC_NOWRITE          = 0
+ Integer(C_INT), Parameter :: NC_WRITE            = 1
+ Integer(C_INT), Parameter :: NC_CLOBBER          = 0
+ Integer(C_INT), Parameter :: NC_NOCLOBBER        = 4
+ Integer(C_INT), Parameter :: NC_FILL             = 0
+ Integer(C_INT), Parameter :: NC_NOFILL           = 256
+ Integer(C_INT), Parameter :: NC_LOCK             = 1024
+ Integer(C_INT), Parameter :: NC_SHARE            = 2048
+ Integer(C_INT), Parameter :: NC_STRICT_NC3       = 8
+ Integer(C_INT), Parameter :: NC_64BIT_OFFSET     = 512
+ Integer(C_INT), Parameter :: NC_SIZEHINT_DEFAULT = 0
+ Integer(C_INT), Parameter :: NC_ALIGN_CHUNK      = -1
+ Integer(C_INT), Parameter :: NC_FORMAT_CLASSIC   = 1
+ Integer(C_INT), Parameter :: NC_FORMAT_64BIT     = 2
+ Integer(C_INT), Parameter :: NC_DISKLESS         = 8
+ Integer(C_INT), Parameter :: NC_MMAP             = 16
+ Integer(C_INT), Parameter :: NC_INMEMORY         = 32768
 
 ! Unlimited dimension size argument and global attibute ID
 
- Integer(KIND=C_INT),  Parameter :: NC_UNLIMITED = 0
- Integer(KIND=C_INT),  Parameter :: NC_GLOBAL    = 0 
+ Integer(C_INT),  Parameter :: NC_UNLIMITED = 0
+ Integer(C_INT),  Parameter :: NC_GLOBAL    = 0 
 
 ! Implementation limits (WARNING!  SHOULD BE THE SAME AS C INTERFACE)
 
- Integer(KIND=C_INT), Parameter :: NC_MAX_DIMS     = 1024 
- Integer(KIND=C_INT), Parameter :: NC_MAX_ATTRS    = 8192 
- Integer(KIND=C_INT), Parameter :: NC_MAX_VARS     = 8192 
- Integer(KIND=C_INT), Parameter :: NC_MAX_NAME     = 256 
- Integer(KIND=C_INT), Parameter :: NC_MAX_VAR_DIMS = NC_MAX_DIMS
+ Integer(C_INT), Parameter :: NC_MAX_DIMS     = 1024 
+ Integer(C_INT), Parameter :: NC_MAX_ATTRS    = 8192 
+ Integer(C_INT), Parameter :: NC_MAX_VARS     = 8192 
+ Integer(C_INT), Parameter :: NC_MAX_NAME     = 256 
+ Integer(C_INT), Parameter :: NC_MAX_VAR_DIMS = NC_MAX_DIMS
 
 ! Error codes
 
- Integer(KIND=C_INT), Parameter :: NC_NOERR        =  0
- Integer(KIND=C_INT), Parameter :: NC2_ERR         = -1
- Integer(KIND=C_INT), Parameter :: NC_SYSERR       = -31
- Integer(KIND=C_INT), Parameter :: NC_EXDR         = -32
- Integer(KIND=C_INT), Parameter :: NC_EBADID       = -33
- Integer(KIND=C_INT), Parameter :: NC_EBFILE       = -34
- Integer(KIND=C_INT), Parameter :: NC_EEXIST       = -35
- Integer(KIND=C_INT), Parameter :: NC_EINVAL       = -36
- Integer(KIND=C_INT), Parameter :: NC_EPERM        = -37
- Integer(KIND=C_INT), Parameter :: NC_ENOTINDEFINE = -38
- Integer(KIND=C_INT), Parameter :: NC_EINDEFINE    = -39
- Integer(KIND=C_INT), Parameter :: NC_EINVALCOORDS = -40
- Integer(KIND=C_INT), Parameter :: NC_EMAXDIMS     = -41
- Integer(KIND=C_INT), Parameter :: NC_ENAMEINUSE   = -42
- Integer(KIND=C_INT), Parameter :: NC_ENOTATT      = -43
- Integer(KIND=C_INT), Parameter :: NC_EMAXATTS     = -44
- Integer(KIND=C_INT), Parameter :: NC_EBADTYPE     = -45
- Integer(KIND=C_INT), Parameter :: NC_EBADDIM      = -46
- Integer(KIND=C_INT), Parameter :: NC_EUNLIMPOS    = -47
- Integer(KIND=C_INT), Parameter :: NC_EMAXVARS     = -48
- Integer(KIND=C_INT), Parameter :: NC_ENOTVAR      = -49
- Integer(KIND=C_INT), Parameter :: NC_EGLOBAL      = -50
- Integer(KIND=C_INT), Parameter :: NC_ENOTNC       = -51
- Integer(KIND=C_INT), Parameter :: NC_ESTS         = -52
- Integer(KIND=C_INT), Parameter :: NC_EMAXNAME     = -53
- Integer(KIND=C_INT), Parameter :: NC_EUNLIMIT     = -54
- Integer(KIND=C_INT), Parameter :: NC_ENORECVARS   = -55
- Integer(KIND=C_INT), Parameter :: NC_ECHAR        = -56
- Integer(KIND=C_INT), Parameter :: NC_EEDGE        = -57
- Integer(KIND=C_INT), Parameter :: NC_ESTRIDE      = -58
- Integer(KIND=C_INT), Parameter :: NC_EBADNAME     = -59
- Integer(KIND=C_INT), Parameter :: NC_ERANGE       = -60
- Integer(KIND=C_INT), Parameter :: NC_ENOMEM       = -61
- Integer(KIND=C_INT), Parameter :: NC_EVARSIZE     = -62
- Integer(KIND=C_INT), Parameter :: NC_EDIMSIZE     = -63
- Integer(KIND=C_INT), Parameter :: NC_ETRUNC       = -64
+ Integer(C_INT), Parameter :: NC_NOERR        =  0
+ Integer(C_INT), Parameter :: NC2_ERR         = -1
+ Integer(C_INT), Parameter :: NC_SYSERR       = -31
+ Integer(C_INT), Parameter :: NC_EXDR         = -32
+ Integer(C_INT), Parameter :: NC_EBADID       = -33
+ Integer(C_INT), Parameter :: NC_EBFILE       = -34
+ Integer(C_INT), Parameter :: NC_EEXIST       = -35
+ Integer(C_INT), Parameter :: NC_EINVAL       = -36
+ Integer(C_INT), Parameter :: NC_EPERM        = -37
+ Integer(C_INT), Parameter :: NC_ENOTINDEFINE = -38
+ Integer(C_INT), Parameter :: NC_EINDEFINE    = -39
+ Integer(C_INT), Parameter :: NC_EINVALCOORDS = -40
+ Integer(C_INT), Parameter :: NC_EMAXDIMS     = -41
+ Integer(C_INT), Parameter :: NC_ENAMEINUSE   = -42
+ Integer(C_INT), Parameter :: NC_ENOTATT      = -43
+ Integer(C_INT), Parameter :: NC_EMAXATTS     = -44
+ Integer(C_INT), Parameter :: NC_EBADTYPE     = -45
+ Integer(C_INT), Parameter :: NC_EBADDIM      = -46
+ Integer(C_INT), Parameter :: NC_EUNLIMPOS    = -47
+ Integer(C_INT), Parameter :: NC_EMAXVARS     = -48
+ Integer(C_INT), Parameter :: NC_ENOTVAR      = -49
+ Integer(C_INT), Parameter :: NC_EGLOBAL      = -50
+ Integer(C_INT), Parameter :: NC_ENOTNC       = -51
+ Integer(C_INT), Parameter :: NC_ESTS         = -52
+ Integer(C_INT), Parameter :: NC_EMAXNAME     = -53
+ Integer(C_INT), Parameter :: NC_EUNLIMIT     = -54
+ Integer(C_INT), Parameter :: NC_ENORECVARS   = -55
+ Integer(C_INT), Parameter :: NC_ECHAR        = -56
+ Integer(C_INT), Parameter :: NC_EEDGE        = -57
+ Integer(C_INT), Parameter :: NC_ESTRIDE      = -58
+ Integer(C_INT), Parameter :: NC_EBADNAME     = -59
+ Integer(C_INT), Parameter :: NC_ERANGE       = -60
+ Integer(C_INT), Parameter :: NC_ENOMEM       = -61
+ Integer(C_INT), Parameter :: NC_EVARSIZE     = -62
+ Integer(C_INT), Parameter :: NC_EDIMSIZE     = -63
+ Integer(C_INT), Parameter :: NC_ETRUNC       = -64
+ Integer(C_INT), Parameter :: NC_EAXISTYPE    = -65
+
+! DAP error codes
+
+ Integer(C_INT), Parameter :: NC_EDAP           = -66
+ Integer(C_INT), Parameter :: NC_ECURL          = -67
+ Integer(C_INT), Parameter :: NC_EIO            = -68
+ Integer(C_INT), Parameter :: NC_ENODATA        = -69
+ Integer(C_INT), Parameter :: NC_EDAPSVC        = -70
+ Integer(C_INT), Parameter :: NC_EDAS           = -71
+ Integer(C_INT), Parameter :: NC_EDDS           = -72
+ Integer(C_INT), Parameter :: NC_EDATADDS       = -73
+ Integer(C_INT), Parameter :: NC_EDAPURL        = -74
+ Integer(C_INT), Parameter :: NC_EDAPCONSTRAINT = -75
+ Integer(C_INT), Parameter :: NC_ETRANSLATION   = -76
 
 ! Error handling codes
 
- Integer(KIND=C_INT), Parameter :: NC_FATAL   = 1
- Integer(KIND=C_INT), Parameter :: NC_VERBOSE = 2
+ Integer(C_INT), Parameter :: NC_FATAL   = 1
+ Integer(C_INT), Parameter :: NC_VERBOSE = 2
 
 #ifdef USE_NETCDF4
+
 !                          NETCDF4 data
- Integer(KIND=C_INT), Parameter :: NC_FORMAT_NETCDF4         = 3
- Integer(KIND=C_INT), Parameter :: NC_FORMAT_NETCDF4_CLASSIC = 4
- Integer(KIND=C_INT), Parameter :: NC_NETCDF4                = 4096
- Integer(KIND=C_INT), Parameter :: NC_CLASSIC_MODEL          = 256
+
+ Integer(C_INT), Parameter :: NC_FORMAT_NETCDF4         = 3
+ Integer(C_INT), Parameter :: NC_FORMAT_NETCDF4_CLASSIC = 4
+ Integer(C_INT), Parameter :: NC_NETCDF4                = 4096
+ Integer(C_INT), Parameter :: NC_CLASSIC_MODEL          = 256
 
 ! extra netcdf4 types
- Integer(KIND=C_INT), Parameter :: NC_LONG     = NC_INT
- Integer(KIND=C_INT), Parameter :: NC_UBYTE    = 7
- Integer(KIND=C_INT), Parameter :: NC_USHORT   = 8 
- Integer(KIND=C_INT), Parameter :: NC_UINT     = 9
- Integer(KIND=C_INT), Parameter :: NC_INT64    = 10 
- Integer(KIND=C_INT), Parameter :: NC_UINT64   = 11 
- Integer(KIND=C_INT), Parameter :: NC_STRING   = 12
- Integer(KIND=C_INT), Parameter :: NC_VLEN     = 13
- Integer(KIND=C_INT), Parameter :: NC_OPAQUE   = 14
- Integer(KIND=C_INT), Parameter :: NC_ENUM     = 15
- Integer(KIND=C_INT), Parameter :: NC_COMPOUND = 16
-
-!extra netcd4 fill values
- Integer(KIND=C_INT),       Parameter :: NC_FILL_UBYTE  = 255
- Integer(KIND=C_INT),       Parameter :: NC_FILL_USHORT = 65535
- Integer(KIND=C_LONG_LONG), Parameter :: NC_FILL_UINT   = 4294967295_C_LONG_LONG
- Integer(KIND=C_LONG_LONG), Parameter :: NC_FILL_INT64  = -9223372036854775806_C_LONG_LONG
+
+ Integer(C_INT), Parameter :: NC_LONG     = NC_INT
+ Integer(C_INT), Parameter :: NC_UBYTE    = 7
+ Integer(C_INT), Parameter :: NC_USHORT   = 8 
+ Integer(C_INT), Parameter :: NC_UINT     = 9
+ Integer(C_INT), Parameter :: NC_INT64    = 10 
+ Integer(C_INT), Parameter :: NC_UINT64   = 11 
+ Integer(C_INT), Parameter :: NC_STRING   = 12
+ Integer(C_INT), Parameter :: NC_VLEN     = 13
+ Integer(C_INT), Parameter :: NC_OPAQUE   = 14
+ Integer(C_INT), Parameter :: NC_ENUM     = 15
+ Integer(C_INT), Parameter :: NC_COMPOUND = 16
+
+! extra netcd4 fill values
+
+ Integer(C_INT),       Parameter :: NC_FILL_UBYTE  = 255
+ Integer(C_INT),       Parameter :: NC_FILL_USHORT = 65535
+ Integer(C_LONG_LONG), Parameter :: NC_FILL_UINT   = 4294967295_C_LONG_LONG
+ Integer(C_LONG_LONG), Parameter :: NC_FILL_INT64  = -9223372036854775806_C_LONG_LONG
 
 ! extra netcdf4 variable flags 
- Integer(KIND=C_INT), Parameter :: NC_CHUNK_SEQ      = 0 
- Integer(KIND=C_INT), Parameter :: NC_CHUNK_SUB      = 1 
- Integer(KIND=C_INT), Parameter :: NC_CHUNK_SIZES    = 2 
- Integer(KIND=C_INT), Parameter :: NC_ENDIAN_NATIVE  = 0 
- Integer(KIND=C_INT), Parameter :: NC_ENDIAN_LITTLE  = 1 
- Integer(KIND=C_INT), Parameter :: NC_ENDIAN_BIG     = 2 
- Integer(KIND=C_INT), Parameter :: NC_CHUNKED        = 0
- Integer(KIND=C_INT), Parameter :: NC_NOTCONTIGUOUS  = 0
- Integer(KIND=C_INT), Parameter :: NC_CONTIGUOUS     = 1
- Integer(KIND=C_INT), Parameter :: NC_NOCHECKSUM     = 0
- Integer(KIND=C_INT), Parameter :: NC_FLETCHER32     = 1
- Integer(KIND=C_INT), Parameter :: NC_NOSHUFFLE      = 0
- Integer(KIND=C_INT), Parameter :: NC_SHUFFLE        = 1
- Integer(KIND=C_INT), Parameter :: NC_INDEPENDENT    = 0
- Integer(KIND=C_INT), Parameter :: NC_COLLECTIVE     = 1
+
+ Integer(C_INT), Parameter :: NC_CHUNK_SEQ      = 0 
+ Integer(C_INT), Parameter :: NC_CHUNK_SUB      = 1 
+ Integer(C_INT), Parameter :: NC_CHUNK_SIZES    = 2 
+ Integer(C_INT), Parameter :: NC_ENDIAN_NATIVE  = 0 
+ Integer(C_INT), Parameter :: NC_ENDIAN_LITTLE  = 1 
+ Integer(C_INT), Parameter :: NC_ENDIAN_BIG     = 2 
+ Integer(C_INT), Parameter :: NC_CHUNKED        = 0
+ Integer(C_INT), Parameter :: NC_NOTCONTIGUOUS  = 0
+ Integer(C_INT), Parameter :: NC_CONTIGUOUS     = 1
+ Integer(C_INT), Parameter :: NC_NOCHECKSUM     = 0
+ Integer(C_INT), Parameter :: NC_FLETCHER32     = 1
+ Integer(C_INT), Parameter :: NC_NOSHUFFLE      = 0
+ Integer(C_INT), Parameter :: NC_SHUFFLE        = 1
+ Integer(C_INT), Parameter :: NC_INDEPENDENT    = 0
+ Integer(C_INT), Parameter :: NC_COLLECTIVE     = 1
 
 ! flags for parallel i/o
 
- Integer(KIND=C_INT), Parameter :: NC_MPIIO          = 8192
- Integer(KIND=C_INT), Parameter :: NC_MPIPOSIX       = 16384
- Integer(KIND=C_INT), Parameter :: NC_PNETCDF        = 32768
+ Integer(C_INT), Parameter :: NC_MPIIO          = 8192
+ Integer(C_INT), Parameter :: NC_MPIPOSIX       = 16384
+ Integer(C_INT), Parameter :: NC_PNETCDF        = NC_MPIIO 
 
- Integer(KIND=C_INT), Parameter :: NC_SZIP_EC_OPTION_MASK = 4
- Integer(KIND=C_INT), Parameter :: NC_SZIP_NN_OPTION_MASK = 32
+ Integer(C_INT), Parameter :: NC_SZIP_EC_OPTION_MASK = 4
+ Integer(C_INT), Parameter :: NC_SZIP_NN_OPTION_MASK = 32
 
 ! extra netcdf4 error flags
- Integer(KIND=C_INT), Parameter :: NC_EHDFERR        = -101
- Integer(KIND=C_INT), Parameter :: NC_ECANTREAD      = -102
- Integer(KIND=C_INT), Parameter :: NC_ECANTWRITE     = -103
- Integer(KIND=C_INT), Parameter :: NC_ECANTCREATE    = -104
- Integer(KIND=C_INT), Parameter :: NC_EFILEMETA      = -105
- Integer(KIND=C_INT), Parameter :: NC_EDIMMETA       = -106
- Integer(KIND=C_INT), Parameter :: NC_EATTMETA       = -107
- Integer(KIND=C_INT), Parameter :: NC_EVARMETA       = -108
- Integer(KIND=C_INT), Parameter :: NC_ENOCOMPOUND    = -109
- Integer(KIND=C_INT), Parameter :: NC_EATTEXISTS     = -110
- Integer(KIND=C_INT), Parameter :: NC_ENOTNC4        = -111
- Integer(KIND=C_INT), Parameter :: NC_ESTRICTNC3     = -112
- Integer(KIND=C_INT), Parameter :: NC_ENOTNC3        = -113
- Integer(KIND=C_INT), Parameter :: NC_ENOPAR         = -114
- Integer(KIND=C_INT), Parameter :: NC_EPARINIT       = -115
- Integer(KIND=C_INT), Parameter :: NC_EBADGRPID      = -116
- Integer(KIND=C_INT), Parameter :: NC_EBADTYPID      = -117
- Integer(KIND=C_INT), Parameter :: NC_ETYPDEFINED    = -118
- Integer(KIND=C_INT), Parameter :: NC_EBADFIELD      = -119
- Integer(KIND=C_INT), Parameter :: NC_EBADCLASS      = -120
- Integer(KIND=C_INT), Parameter :: NC_EMAPTYPE       = -121
- Integer(KIND=C_INT), Parameter :: NC_ELATEFILL      = -122
- Integer(KIND=C_INT), Parameter :: NC_ELATEDEF       = -123
- Integer(KIND=C_INT), Parameter :: NC_EDIMSCALE      = -124
- Integer(KIND=C_INT), Parameter :: NC_ENOGRP         = -125
+
+ Integer(C_INT), Parameter :: NC_EHDFERR        = -101
+ Integer(C_INT), Parameter :: NC_ECANTREAD      = -102
+ Integer(C_INT), Parameter :: NC_ECANTWRITE     = -103
+ Integer(C_INT), Parameter :: NC_ECANTCREATE    = -104
+ Integer(C_INT), Parameter :: NC_EFILEMETA      = -105
+ Integer(C_INT), Parameter :: NC_EDIMMETA       = -106
+ Integer(C_INT), Parameter :: NC_EATTMETA       = -107
+ Integer(C_INT), Parameter :: NC_EVARMETA       = -108
+ Integer(C_INT), Parameter :: NC_ENOCOMPOUND    = -109
+ Integer(C_INT), Parameter :: NC_EATTEXISTS     = -110
+ Integer(C_INT), Parameter :: NC_ENOTNC4        = -111
+ Integer(C_INT), Parameter :: NC_ESTRICTNC3     = -112
+ Integer(C_INT), Parameter :: NC_ENOTNC3        = -113
+ Integer(C_INT), Parameter :: NC_ENOPAR         = -114
+ Integer(C_INT), Parameter :: NC_EPARINIT       = -115
+ Integer(C_INT), Parameter :: NC_EBADGRPID      = -116
+ Integer(C_INT), Parameter :: NC_EBADTYPID      = -117
+ Integer(C_INT), Parameter :: NC_ETYPDEFINED    = -118
+ Integer(C_INT), Parameter :: NC_EBADFIELD      = -119
+ Integer(C_INT), Parameter :: NC_EBADCLASS      = -120
+ Integer(C_INT), Parameter :: NC_EMAPTYPE       = -121
+ Integer(C_INT), Parameter :: NC_ELATEFILL      = -122
+ Integer(C_INT), Parameter :: NC_ELATEDEF       = -123
+ Integer(C_INT), Parameter :: NC_EDIMSCALE      = -124
+ Integer(C_INT), Parameter :: NC_ENOGRP         = -125
+ Integer(C_INT), Parameter :: NC_ESTORAGE       = -126
+ Integer(C_INT), Parameter :: NC_EBADCHUNK      = -127
+ Integer(C_INT), Parameter :: NC_ENOTBUILT      = -128
+ Integer(C_INT), Parameter :: NC_EDISKLESS      = -129
+ Integer(C_INT), Parameter :: NC_ECANTEXTEND    = -130
+ Integer(C_INT), Parameter :: NC_EMPI           = -131
+
 #endif
+
 !------------------------------------------------------------------------------
 End Module netcdf_nc_data
diff --git a/fortran/module_netcdf_nc_interfaces.f90 b/fortran/module_netcdf_nc_interfaces.f90
index 2204ce2..3bad706 100755
--- a/fortran/module_netcdf_nc_interfaces.f90
+++ b/fortran/module_netcdf_nc_interfaces.f90
@@ -29,6 +29,10 @@ Module netcdf_nc_interfaces
 ! Version 4.:  April 2009 - Updated to match netCDF 4.0.1 release
 ! Version 5.:  April 2010 - Updated to match netCDF 4.1.1 release
 ! Version 6.:  April 2013 - Added nc_inq_path support for fortran 4.4 beta
+! Version 7.:  Jan.  2016 - General code cleanup. Changed addCNullChar
+!                           to return length of string plus added C_NULL_CHAR.
+!                           Added support for nc_open_mem
+!              
 
  USE netcdf_nc_data
 
@@ -64,9 +68,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR
 
- Integer(KIND=C_INT), VALUE :: ncerr
+ Integer(C_INT), VALUE :: ncerr
 
- Type(C_PTR)                :: nc_strerror
+ Type(C_PTR)           :: nc_strerror
 
  End Function nc_strerror
 End Interface
@@ -87,10 +91,10 @@ Interface
  USE ISO_C_BINDING, ONLY: C_CHAR, C_INT
 
  Character(KIND=C_CHAR), Intent(IN)  :: path(*)
- Integer(KIND=C_INT),    VALUE       :: cmode
- Integer(KIND=C_INT),    Intent(OUT) :: ncidp
+ Integer(C_INT),         VALUE       :: cmode
+ Integer(C_INT),         Intent(OUT) :: ncidp
 
- Integer(KIND=C_INT)                 :: nc_create
+ Integer(C_INT)                      :: nc_create
 
  End Function nc_create
 End Interface
@@ -101,12 +105,12 @@ Interface
  USE ISO_C_BINDING, ONLY: C_CHAR, C_INT, C_SIZE_T
 
  Character(KIND=C_CHAR), Intent(IN)  :: path(*)
- Integer(KIND=C_INT),    VALUE       :: cmode
- Integer(KIND=C_SIZE_T), VALUE       :: initialsz
- Integer(KIND=C_SIZE_T), Intent(IN)  :: chunksizehintp
- Integer(KIND=C_INT),    Intent(OUT) :: ncidp
+ Integer(C_INT),         VALUE       :: cmode
+ Integer(C_SIZE_T),      VALUE       :: initialsz
+ Integer(C_SIZE_T),      Intent(IN)  :: chunksizehintp
+ Integer(C_INT),         Intent(OUT) :: ncidp
 
- Integer(KIND=C_INT)                 :: nc__create
+ Integer(C_INT)                      :: nc__create
 
  End Function nc__create
 End Interface
@@ -118,13 +122,13 @@ Interface
  USE ISO_C_BINDING, ONLY: C_CHAR, C_INT, C_SIZE_T, C_PTR
 
  Character(KIND=C_CHAR), Intent(IN)  :: path(*)
- Integer(KIND=C_INT),    VALUE       :: cmode
- Integer(KIND=C_SIZE_T), VALUE       :: initialsz
- Integer(KIND=C_SIZE_T), Intent(IN)  :: chunksizehintp
+ Integer(C_INT),         VALUE       :: cmode
+ Integer(C_SIZE_T),      VALUE       :: initialsz
+ Integer(C_SIZE_T),      Intent(IN)  :: chunksizehintp
  Type(C_PTR),            VALUE       :: basepe
- Integer(KIND=C_INT),    Intent(OUT) :: ncidp
+ Integer(C_INT),         Intent(OUT) :: ncidp
 
- Integer(KIND=C_INT)                 :: nc__create_mp
+ Integer(C_INT)                      :: nc__create_mp
 
  End Function nc__create_mp
 End Interface
@@ -135,10 +139,10 @@ Interface
  USE ISO_C_BINDING, ONLY: C_CHAR, C_INT
 
  Character(KIND=C_CHAR), Intent(IN)  :: path(*)
- Integer(KIND=C_INT),    VALUE       :: mode
- Integer(KIND=C_INT),    Intent(OUT) :: ncidp
+ Integer(C_INT),         VALUE       :: mode
+ Integer(C_INT),         Intent(OUT) :: ncidp
 
- Integer(KIND=C_INT)                 :: nc_open
+ Integer(C_INT)                      :: nc_open
 
  End Function nc_open
 End Interface
@@ -149,11 +153,11 @@ Interface
  USE ISO_C_BINDING, ONLY: C_CHAR, C_INT, C_SIZE_T
 
  Character(KIND=C_CHAR), Intent(IN)  :: path(*)
- Integer(KIND=C_INT),    VALUE       :: mode
- Integer(KIND=C_SIZE_T), Intent(IN)  :: chunksizehintp
- Integer(KIND=C_INT),    Intent(OUT) :: ncidp
+ Integer(C_INT),         VALUE       :: mode
+ Integer(C_SIZE_T),      Intent(IN)  :: chunksizehintp
+ Integer(C_INT),         Intent(OUT) :: ncidp
 
- Integer(KIND=C_INT)                 :: nc__open
+ Integer(C_INT)                      :: nc__open
 
  End Function nc__open
 End Interface
@@ -164,26 +168,42 @@ Interface
  USE ISO_C_BINDING, ONLY: C_CHAR, C_INT, C_SIZE_T, C_PTR
 
  Character(KIND=C_CHAR), Intent(IN)  :: path(*)
- Integer(KIND=C_INT),    VALUE       :: mode
- Integer(KIND=C_SIZE_T), Intent(IN)  :: chunksizehintp
- Integer(KIND=C_INT),    Intent(OUT) :: ncidp
+ Integer(C_INT),         VALUE       :: mode
+ Integer(C_SIZE_T),      Intent(IN)  :: chunksizehintp
+ Integer(C_INT),         Intent(OUT) :: ncidp
  Type(C_PTR),            VALUE       :: basepe
 
- Integer(KIND=C_INT)                 :: nc__open_mp
+ Integer(C_INT)                      :: nc__open_mp
 
  End Function nc__open_mp
 End Interface
+!---------------------------------- nc_open_mem -------------------------------
+Interface
+ Function nc_open_mem(path, mode, size, memory, ncid) BIND(C)
+
+ USE ISO_C_BINDING, ONLY: C_CHAR, C_INT, C_SIZE_T, C_PTR
+
+ Character(KIND=C_CHAR), Intent(IN)  :: path(*)
+ Integer(C_INT),         VALUE       :: mode
+ Integer(C_SIZE_T),      VALUE       :: size
+ Type(C_PTR),            VALUE       :: memory
+ Integer(C_INT),         Intent(OUT) :: ncid
+
+ Integer(C_INT)                      :: nc_open_mem
+
+ End Function nc_open_mem
+End Interface
 !---------------------------------- nc_inq_path -----------------------------
 Interface
  Function nc_inq_path(ncid, pathlen, path) BIND(C)
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_SIZE_T), Intent(INOUT) :: pathlen
+ Integer(C_INT),         VALUE         :: ncid
+ Integer(C_SIZE_T),      Intent(INOUT) :: pathlen
  Character(KIND=C_CHAR), Intent(INOUT) :: path(*)
 
- Integer(KIND=C_INT)                   :: nc_inq_path
+ Integer(C_INT)                        :: nc_inq_path
 
  End Function nc_inq_path
 End Interface
@@ -193,11 +213,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid
- Integer(KIND=C_INT), VALUE       :: fillmode
- Integer(KIND=C_INT), Intent(OUT) :: old_modep
+ Integer(C_INT), VALUE       :: ncid
+ Integer(C_INT), VALUE       :: fillmode
+ Integer(C_INT), Intent(OUT) :: old_modep
 
- Integer(KIND=C_INT)              :: nc_set_fill
+ Integer(C_INT)              :: nc_set_fill
 
  End Function nc_set_fill
 End Interface
@@ -207,9 +227,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE :: ncid
+ Integer(C_INT), VALUE :: ncid
 
- Integer(KIND=C_INT)        :: nc_redef
+ Integer(C_INT)        :: nc_redef
 
  End Function nc_redef
 End Interface
@@ -219,9 +239,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE :: ncid
+ Integer(C_INT), VALUE :: ncid
 
- Integer(KIND=C_INT)        :: nc_enddef
+ Integer(C_INT)        :: nc_enddef
 
  End Function nc_enddef
 End Interface
@@ -231,10 +251,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T
 
- Integer(KIND=C_INT),    VALUE :: ncid
- Integer(KIND=C_SIZE_T), VALUE :: h_minfree, v_align, v_minfree, r_align
+ Integer(C_INT),    VALUE :: ncid
+ Integer(C_SIZE_T), VALUE :: h_minfree, v_align, v_minfree, r_align
 
- Integer(KIND=C_INT)           :: nc__enddef
+ Integer(C_INT)           :: nc__enddef
 
  End Function nc__enddef
 End Interface
@@ -244,9 +264,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE :: ncid
+ Integer(C_INT), VALUE :: ncid
 
- Integer(KIND=C_INT)        :: nc_sync
+ Integer(C_INT)        :: nc_sync
 
  End Function nc_sync
 End Interface
@@ -256,9 +276,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE :: ncid
+ Integer(C_INT), VALUE :: ncid
 
- Integer(KIND=C_INT)        :: nc_abort
+ Integer(C_INT)        :: nc_abort
 
  End Function nc_abort
 End Interface
@@ -268,9 +288,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE :: ncid
+ Integer(C_INT), VALUE :: ncid
 
- Integer(KIND=C_INT)        :: nc_close
+ Integer(C_INT)        :: nc_close
 
  End Function nc_close
 End Interface
@@ -282,7 +302,7 @@ Interface
 
  Character(KIND=C_CHAR), Intent(IN) :: path(*)
 
- Integer(KIND=C_INT)                :: nc_delete
+ Integer(C_INT)                     :: nc_delete
 
  End Function nc_delete
 End Interface
@@ -293,9 +313,9 @@ Interface
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
  Character(KIND=C_CHAR), Intent(IN) :: path(*)
- Integer(KIND=C_INT),    VALUE      :: pe
+ Integer(C_INT),         VALUE      :: pe
 
- Integer(KIND=C_INT)                :: nc_delete_mp
+ Integer(C_INT)                     :: nc_delete_mp
 
  End Function nc_delete_mp
 End Interface
@@ -305,9 +325,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE :: ncid, pe
+ Integer(C_INT), VALUE :: ncid, pe
 
- Integer(KIND=C_INT)        :: nc_set_base_pe
+ Integer(C_INT)        :: nc_set_base_pe
 
  End Function nc_set_base_pe
 End Interface
@@ -317,10 +337,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid
- Integer(KIND=C_INT), Intent(OUT) ::  pe
+ Integer(C_INT), VALUE       :: ncid
+ Integer(C_INT), Intent(OUT) ::  pe
 
- Integer(KIND=C_INT)              :: nc_inq_base_pe
+ Integer(C_INT)              :: nc_inq_base_pe
 
  End Function nc_inq_base_pe
 End Interface
@@ -330,10 +350,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid
- Integer(KIND=C_INT), Intent(OUT) :: ndimsp, nvarsp, ngattsp, unlimdimidp
+ Integer(C_INT), VALUE       :: ncid
+ Integer(C_INT), Intent(OUT) :: ndimsp, nvarsp, ngattsp, unlimdimidp
 
- Integer(KIND=C_INT)              :: nc_inq
+ Integer(C_INT)              :: nc_inq
 
  End Function nc_inq
 End Interface
@@ -343,10 +363,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid
- Integer(KIND=C_INT), Intent(OUT) ::  ndimsp
+ Integer(C_INT), VALUE       :: ncid
+ Integer(C_INT), Intent(OUT) ::  ndimsp
 
- Integer(KIND=C_INT)              :: nc_inq_ndims
+ Integer(C_INT)              :: nc_inq_ndims
 
  End Function nc_inq_ndims
 End Interface
@@ -356,10 +376,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid
- Integer(KIND=C_INT), Intent(OUT) ::  nvarsp
+ Integer(C_INT), VALUE       :: ncid
+ Integer(C_INT), Intent(OUT) ::  nvarsp
 
- Integer(KIND=C_INT)              :: nc_inq_nvars
+ Integer(C_INT)              :: nc_inq_nvars
 
  End Function nc_inq_nvars
 End Interface
@@ -369,10 +389,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid
- Integer(KIND=C_INT), Intent(OUT) :: ngattsp
+ Integer(C_INT), VALUE       :: ncid
+ Integer(C_INT), Intent(OUT) :: ngattsp
 
- Integer(KIND=C_INT)              :: nc_inq_natts
+ Integer(C_INT)              :: nc_inq_natts
 
  End Function nc_inq_natts
 End Interface
@@ -382,10 +402,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid
- Integer(KIND=C_INT), Intent(OUT) :: unlimdimidp
+ Integer(C_INT), VALUE       :: ncid
+ Integer(C_INT), Intent(OUT) :: unlimdimidp
 
- Integer(KIND=C_INT)              :: nc_inq_unlimdim
+ Integer(C_INT)              :: nc_inq_unlimdim
 
  End Function nc_inq_unlimdim
 End Interface
@@ -395,10 +415,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid
- Integer(KIND=C_INT), Intent(OUT) :: formatp
+ Integer(C_INT), VALUE       :: ncid
+ Integer(C_INT), Intent(OUT) :: formatp
 
- Integer(KIND=C_INT)              :: nc_inq_format
+ Integer(C_INT)              :: nc_inq_format
 
  End Function nc_inq_format
 End Interface
@@ -408,12 +428,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: ncid
  Character(KIND=C_CHAR), Intent(IN)    :: name(*)
- Integer(KIND=C_SIZE_T), VALUE         :: nlen
- Integer(KIND=C_INT),    Intent(INOUT) :: idp
+ Integer(C_SIZE_T),      VALUE         :: nlen
+ Integer(C_INT),         Intent(INOUT) :: idp
 
- Integer(KIND=C_INT)                   :: nc_def_dim
+ Integer(C_INT)                        :: nc_def_dim
 
  End Function nc_def_dim
 End Interface
@@ -423,11 +443,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: ncid
  Character(KIND=C_CHAR), Intent(IN)    :: name(*)
- Integer(KIND=C_INT),    Intent(INOUT) :: idp
+ Integer(C_INT),         Intent(INOUT) :: idp
 
- Integer(KIND=C_INT)                   :: nc_inq_dimid
+ Integer(C_INT)                        :: nc_inq_dimid
 
  End Function nc_inq_dimid
 End Interface
@@ -437,12 +457,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_INT),    VALUE         :: dimid
+ Integer(C_INT),         VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: dimid
  Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
- Integer(KIND=C_SIZE_T), Intent(OUT)   :: lenp
+ Integer(C_SIZE_T),      Intent(OUT)   :: lenp
 
- Integer(KIND=C_INT)                   :: nc_inq_dim
+ Integer(C_INT)                        :: nc_inq_dim
 
  End Function nc_inq_dim
 End Interface
@@ -452,11 +472,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid
- Integer(KIND=C_INT),    VALUE         :: dimid
+ Integer(C_INT),         VALUE         :: ncid
+ Integer(C_INT),         VALUE         :: dimid
  Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
 
- Integer(KIND=C_INT)                   :: nc_inq_dimname
+ Integer(C_INT)                        :: nc_inq_dimname
 
  End Function nc_inq_dimname
 End Interface
@@ -466,11 +486,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T
 
- Integer(KIND=C_INT),    VALUE       :: ncid
- Integer(KIND=C_INT),    VALUE       :: dimid
- Integer(KIND=C_SIZE_T), Intent(OUT) :: lenp
+ Integer(C_INT),    VALUE       :: ncid
+ Integer(C_INT),    VALUE       :: dimid
+ Integer(C_SIZE_T), Intent(OUT) :: lenp
 
- Integer(KIND=C_INT)                 :: nc_inq_dimlen
+ Integer(C_INT)                 :: nc_inq_dimlen
 
  End Function nc_inq_dimlen
 End Interface
@@ -480,11 +500,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE      :: ncid
- Integer(KIND=C_INT),    VALUE      :: dimid
+ Integer(C_INT),         VALUE      :: ncid
+ Integer(C_INT),         VALUE      :: dimid
  Character(KIND=C_CHAR), Intent(IN) :: name(*)
 
- Integer(KIND=C_INT)                :: nc_rename_dim
+ Integer(C_INT)                     :: nc_rename_dim
 
  End Function nc_rename_dim
 End Interface
@@ -494,14 +514,14 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid
+ Integer(C_INT),         VALUE       :: ncid
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
- Integer(KIND=C_INT),    VALUE       :: xtype
- Integer(KIND=C_INT),    VALUE       :: ndims
- Integer(KIND=C_INT),    Intent(IN)  :: dimidsp(*)
- Integer(KIND=C_INT),    Intent(OUT) :: varidp
+ Integer(C_INT),         VALUE       :: xtype
+ Integer(C_INT),         VALUE       :: ndims
+ Integer(C_INT),         Intent(IN)  :: dimidsp(*)
+ Integer(C_INT),         Intent(OUT) :: varidp
 
- Integer(KIND=C_INT)                 :: nc_def_var
+ Integer(C_INT)                      :: nc_def_var
 
  End Function nc_def_var
 End Interface
@@ -512,14 +532,14 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Character(KIND=C_CHAR), Intent(OUT) :: name(*)
- Integer(KIND=C_INT),    Intent(OUT) :: xtypep
- Integer(KIND=C_INT),    Intent(OUT) :: ndimsp
- Integer(KIND=C_INT),    Intent(OUT) :: dimidsp(*)
- Integer(KIND=C_INT),    Intent(OUT) :: nattsp
+ Integer(C_INT),         Intent(OUT) :: xtypep
+ Integer(C_INT),         Intent(OUT) :: ndimsp
+ Integer(C_INT),         Intent(OUT) :: dimidsp(*)
+ Integer(C_INT),         Intent(OUT) :: nattsp
 
- Integer(KIND=C_INT)                 :: nc_inq_var
+ Integer(C_INT)                      :: nc_inq_var
 
  End Function nc_inq_var
 End Interface
@@ -529,11 +549,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid
+ Integer(C_INT),         VALUE       :: ncid
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
- Integer(KIND=C_INT),    Intent(OUT) :: varidp
+ Integer(C_INT),         Intent(OUT) :: varidp
 
- Integer(KIND=C_INT)                 :: nc_inq_varid
+ Integer(C_INT)                      :: nc_inq_varid
 
  End Function nc_inq_varid
 End Interface
@@ -543,10 +563,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Character(KIND=C_CHAR), Intent(OUT) :: name(*)
 
- Integer(KIND=C_INT)                 :: nc_inq_varname
+ Integer(C_INT)                      :: nc_inq_varname
 
  End Function nc_inq_varname
 End Interface
@@ -556,10 +576,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Integer(KIND=C_INT), Intent(OUT) :: xtypep
+ Integer(C_INT), VALUE       :: ncid, varid
+ Integer(C_INT), Intent(OUT) :: xtypep
 
- Integer(KIND=C_INT)              :: nc_inq_vartype
+ Integer(C_INT)              :: nc_inq_vartype
 
  End Function nc_inq_vartype
 End Interface
@@ -569,10 +589,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Integer(KIND=C_INT), Intent(OUT) :: ndimsp
+ Integer(C_INT), VALUE       :: ncid, varid
+ Integer(C_INT), Intent(OUT) :: ndimsp
 
- Integer(KIND=C_INT)              :: nc_inq_varndims
+ Integer(C_INT)              :: nc_inq_varndims
 
  End Function nc_inq_varndims
 End Interface
@@ -582,10 +602,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Integer(KIND=C_INT), Intent(OUT) :: dimidsp(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Integer(C_INT), Intent(OUT) :: dimidsp(*)
 
- Integer(KIND=C_INT)              :: nc_inq_vardimid
+ Integer(C_INT)              :: nc_inq_vardimid
 
  End Function nc_inq_vardimid
 End Interface
@@ -595,10 +615,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Integer(KIND=C_INT), Intent(OUT) :: nattsp
+ Integer(C_INT), VALUE       :: ncid, varid
+ Integer(C_INT), Intent(OUT) :: nattsp
 
- Integer(KIND=C_INT)              :: nc_inq_varnatts
+ Integer(C_INT)              :: nc_inq_varnatts
 
  End Function nc_inq_varnatts
 End Interface
@@ -608,10 +628,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE      :: ncid, varid
+ Integer(C_INT),         VALUE      :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN) :: name(*)
 
- Integer(KIND=C_INT)                :: nc_rename_var
+ Integer(C_INT)                     :: nc_rename_var
 
  End Function nc_rename_var
 End Interface
@@ -621,10 +641,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE      :: ncid, varid
+ Integer(C_INT),         VALUE      :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)                :: nc_put_var_text
+ Integer(C_INT)                     :: nc_put_var_text
 
  End Function nc_put_var_text
 End Interface
@@ -634,10 +654,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid, varid
+ Integer(C_INT),         VALUE         :: ncid, varid
  Character(KIND=C_CHAR), Intent(INOUT) :: ip(*)
 
- Integer(KIND=C_INT)                   :: nc_get_var_text
+ Integer(C_INT)                        :: nc_get_var_text
 
  End Function nc_get_var_text
 End Interface
@@ -648,10 +668,10 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Integer(KIND=CINT1), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Integer(CINT1), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_var_uchar
+ Integer(C_INT)             :: nc_put_var_uchar
 
  End Function nc_put_var_uchar
 End Interface
@@ -662,10 +682,10 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Integer(KIND=CINT1), Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Integer(CINT1), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_var_uchar
+ Integer(C_INT)              :: nc_get_var_uchar
 
  End Function nc_get_var_uchar
 End Interface
@@ -676,10 +696,10 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Integer(KIND=CINT1), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Integer(CINT1), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_var_schar
+ Integer(C_INT)             :: nc_put_var_schar
 
  End Function nc_put_var_schar
 End Interface
@@ -690,10 +710,10 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT),  VALUE       :: ncid, varid
- Integer(KIND=CINT1),  Intent(OUT) :: ip(*)
+ Integer(C_INT),  VALUE       :: ncid, varid
+ Integer(CINT1),  Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)               :: nc_get_var_schar
+ Integer(C_INT)               :: nc_get_var_schar
 
  End Function nc_get_var_schar
 End Interface
@@ -704,10 +724,10 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT
  USE NETCDF_NC_DATA, ONLY: CINT2
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Integer(KIND=CINT2), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Integer(CINT2), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_var_short
+ Integer(C_INT)             :: nc_put_var_short
 
  End Function nc_put_var_short
 End Interface
@@ -718,10 +738,10 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT
  USE NETCDF_NC_DATA, ONLY: CINT2
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Integer(KIND=CINT2), Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Integer(CINT2), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_var_short
+ Integer(C_INT)              :: nc_get_var_short
 
  End Function nc_get_var_short
 End Interface
@@ -732,10 +752,10 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT
  USE NETCDF_NC_DATA, ONLY: CINT
 
- Integer(KIND=C_INT), VALUE     :: ncid, varid
- Integer(KIND=CINT), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE     :: ncid, varid
+ Integer(CINT), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)            :: nc_put_var_int
+ Integer(C_INT)            :: nc_put_var_int
 
  End Function nc_put_var_int
 End Interface
@@ -746,10 +766,10 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT
  USE NETCDF_NC_DATA, ONLY: CINT
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Integer(KIND=CINT),  Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Integer(CINT),  Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_var_int
+ Integer(C_INT)              :: nc_get_var_int
 
  End Function nc_get_var_int
 End Interface
@@ -759,10 +779,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG
 
- Integer(KIND=C_INT),  VALUE      :: ncid, varid
- Integer(KIND=C_LONG), Intent(IN) :: op(*)
+ Integer(C_INT),  VALUE      :: ncid, varid
+ Integer(C_LONG), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)              :: nc_put_var_long
+ Integer(C_INT)              :: nc_put_var_long
 
  End Function nc_put_var_long
 End Interface
@@ -772,10 +792,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG
 
- Integer(KIND=C_INT),  VALUE       :: ncid, varid
- Integer(KIND=C_LONG), Intent(OUT) :: ip(*)
+ Integer(C_INT),  VALUE       :: ncid, varid
+ Integer(C_LONG), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)               :: nc_get_var_long
+ Integer(C_INT)               :: nc_get_var_long
 
  End Function nc_get_var_long
 End Interface
@@ -785,10 +805,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_FLOAT
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Real(KIND=C_FLOAT),  Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Real(C_FLOAT),  Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_var_float
+ Integer(C_INT)             :: nc_put_var_float
 
  End Function nc_put_var_float
 End Interface
@@ -800,10 +820,10 @@ Interface
 
  Implicit NONE
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Real(KIND=C_FLOAT),  Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Real(C_FLOAT),  Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_var_float
+ Integer(C_INT)              :: nc_get_var_float
 
  End Function nc_get_var_float
 End Interface
@@ -813,10 +833,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_DOUBLE
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Real(KIND=C_DOUBLE), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Real(C_DOUBLE), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_var_double
+ Integer(C_INT)             :: nc_put_var_double
 
  End Function nc_put_var_double
 End Interface
@@ -826,10 +846,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_DOUBLE
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Real(KIND=C_DOUBLE), Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Real(C_DOUBLE), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_var_double
+ Integer(C_INT)              :: nc_get_var_double
 
  End Function nc_get_var_double
 End Interface
@@ -839,11 +859,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),   VALUE      :: ncid, varid
+ Integer(C_INT),        VALUE      :: ncid, varid
  Type(C_PTR),           VALUE      :: indexp
  Character(LEN=C_CHAR), Intent(IN) :: op
 
- Integer(KIND=C_INT)               :: nc_put_var1_text
+ Integer(C_INT)               :: nc_put_var1_text
 
  End Function nc_put_var1_text
 End Interface
@@ -853,11 +873,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Type(C_PTR),            VALUE       :: indexp
  Character(KIND=C_CHAR), Intent(OUT) :: ip
 
- Integer(KIND=C_INT)                 :: nc_get_var1_text
+ Integer(C_INT)                      :: nc_get_var1_text
 
  End Function nc_get_var1_text
 End Interface
@@ -868,11 +888,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT),  VALUE      :: ncid, varid
- Type(C_PTR),          VALUE      :: indexp
- Integer(KIND=CINT1),  Intent(IN) :: op
+ Integer(C_INT),  VALUE      :: ncid, varid
+ Type(C_PTR),     VALUE      :: indexp
+ Integer(CINT1),  Intent(IN) :: op
 
- Integer(KIND=C_INT)              :: nc_put_var1_uchar
+ Integer(C_INT)              :: nc_put_var1_uchar
 
  End Function nc_put_var1_uchar
 End Interface
@@ -883,11 +903,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT),  VALUE       :: ncid, varid
- Type(C_PTR),          VALUE       :: indexp
- Integer(KIND=CINT1),  Intent(OUT) :: ip
+ Integer(C_INT),  VALUE       :: ncid, varid
+ Type(C_PTR),     VALUE       :: indexp
+ Integer(CINT1),  Intent(OUT) :: ip
 
- Integer(KIND=C_INT)               :: nc_get_var1_uchar
+ Integer(C_INT)               :: nc_get_var1_uchar
 
  End Function nc_get_var1_uchar
 End Interface
@@ -898,11 +918,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT),  VALUE      :: ncid, varid
- Type(C_PTR),          VALUE      :: indexp
- Integer(KIND=CINT1),  Intent(IN) :: op
+ Integer(C_INT),  VALUE      :: ncid, varid
+ Type(C_PTR),     VALUE      :: indexp
+ Integer(CINT1),  Intent(IN) :: op
 
- Integer(KIND=C_INT)              :: nc_put_var1_schar
+ Integer(C_INT)              :: nc_put_var1_schar
 
  End Function nc_put_var1_schar
 End Interface
@@ -913,11 +933,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT),  VALUE       :: ncid, varid
- Type(C_PTR),          VALUE       :: indexp
- Integer(KIND=CINT1),  Intent(OUT) :: ip
+ Integer(C_INT),  VALUE       :: ncid, varid
+ Type(C_PTR),     VALUE       :: indexp
+ Integer(CINT1),  Intent(OUT) :: ip
 
- Integer(KIND=C_INT)               :: nc_get_var1_schar
+ Integer(C_INT)               :: nc_get_var1_schar
 
  End Function nc_get_var1_schar
 End Interface
@@ -928,11 +948,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT2
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: indexp
- Integer(KIND=CINT2), Intent(IN) :: op
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: indexp
+ Integer(CINT2), Intent(IN) :: op
 
- Integer(KIND=C_INT)             :: nc_put_var1_short
+ Integer(C_INT)             :: nc_put_var1_short
 
  End Function nc_put_var1_short
 End Interface
@@ -943,11 +963,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT2
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: indexp
- Integer(KIND=CINT2), Intent(OUT) :: ip
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: indexp
+ Integer(CINT2), Intent(OUT) :: ip
 
- Integer(KIND=C_INT)              :: nc_get_var1_short
+ Integer(C_INT)              :: nc_get_var1_short
 
  End Function nc_get_var1_short
 End Interface
@@ -957,11 +977,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: indexp
- Integer(KIND=C_INT), Intent(IN) :: op
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: indexp
+ Integer(C_INT), Intent(IN) :: op
 
- Integer(KIND=C_INT)             :: nc_put_var1_int
+ Integer(C_INT)             :: nc_put_var1_int
 
  End Function nc_put_var1_int
 End Interface
@@ -971,11 +991,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: indexp
- Integer(KIND=C_INT), Intent(OUT) :: ip
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: indexp
+ Integer(C_INT), Intent(OUT) :: ip
 
- Integer(KIND=C_INT)              :: nc_get_var1_int
+ Integer(C_INT)              :: nc_get_var1_int
 
  End Function nc_get_var1_int
 End Interface
@@ -985,11 +1005,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG, C_PTR
 
- Integer(KIND=C_INT),  VALUE      :: ncid, varid
- Type(C_PTR),          VALUE      :: indexp
- Integer(KIND=C_LONG), Intent(IN) :: op
+ Integer(C_INT),  VALUE      :: ncid, varid
+ Type(C_PTR),     VALUE      :: indexp
+ Integer(C_LONG), Intent(IN) :: op
 
- Integer(KIND=C_INT)              :: nc_put_var1_long
+ Integer(C_INT)              :: nc_put_var1_long
 
  End Function nc_put_var1_long
 End Interface
@@ -999,11 +1019,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG, C_PTR
 
- Integer(KIND=C_INT),  VALUE       :: ncid, varid
- Type(C_PTR),          VALUE       :: indexp
- Integer(KIND=C_LONG), Intent(OUT) :: ip
+ Integer(C_INT),  VALUE       :: ncid, varid
+ Type(C_PTR),     VALUE       :: indexp
+ Integer(C_LONG), Intent(OUT) :: ip
 
- Integer(KIND=C_INT)               :: nc_get_var1_long
+ Integer(C_INT)               :: nc_get_var1_long
 
  End Function nc_get_var1_long
 End Interface
@@ -1013,11 +1033,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_FLOAT, C_PTR
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: indexp
- Real(KIND=C_FLOAT),  Intent(IN) :: op
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: indexp
+ Real(C_FLOAT),  Intent(IN) :: op
 
- Integer(KIND=C_INT)             :: nc_put_var1_float
+ Integer(C_INT)             :: nc_put_var1_float
 
  End Function nc_put_var1_float
 End Interface
@@ -1027,11 +1047,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_FLOAT, C_PTR
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: indexp
- Real(KIND=C_FLOAT),  Intent(OUT) :: ip
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: indexp
+ Real(C_FLOAT),  Intent(OUT) :: ip
 
- Integer(KIND=C_INT)              :: nc_get_var1_float
+ Integer(C_INT)              :: nc_get_var1_float
 
  End Function nc_get_var1_float
 End Interface
@@ -1041,11 +1061,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_DOUBLE, C_PTR
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: indexp
- Real(KIND=C_DOUBLE), Intent(IN) :: op
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: indexp
+ Real(C_DOUBLE), Intent(IN) :: op
 
- Integer(KIND=C_INT)             :: nc_put_var1_double
+ Integer(C_INT)             :: nc_put_var1_double
 
  End Function nc_put_var1_double
 End Interface
@@ -1055,11 +1075,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_DOUBLE, C_PTR
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: indexp
- Real(KIND=C_DOUBLE), Intent(OUT) :: ip
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: indexp
+ Real(C_DOUBLE), Intent(OUT) :: ip
 
- Integer(KIND=C_INT)              :: nc_get_var1_double
+ Integer(C_INT)              :: nc_get_var1_double
 
  End Function nc_get_var1_double
 End Interface
@@ -1067,13 +1087,14 @@ End Interface
 Interface
  Function nc_put_var1(ncid, varid, indexp, op) BIND(C)
 
- USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
+ USE ISO_C_BINDING, ONLY: C_INT, C_PTR
 
- Integer(KIND=C_INT), VALUE :: ncid, varid
- Type(C_PTR),         VALUE :: indexp
- Type(C_PTR),         VALUE :: op
+ Integer(C_INT), VALUE :: ncid, varid
+! Type(C_PTR)     :: indexp
+ Type(C_PTR),    VALUE :: indexp
+ Type(C_PTR),    VALUE :: op
 
- Integer(KIND=C_INT)        :: nc_put_var1
+ Integer(C_INT)        :: nc_put_var1
 
  End Function nc_put_var1
 End Interface
@@ -1083,11 +1104,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid, varid
+ Integer(C_INT),         VALUE         :: ncid, varid
  Type(C_PTR),            VALUE         :: indexp
  Character(KIND=C_CHAR), Intent(INOUT) :: op(*) ! op is actually void * in C
 
- Integer(KIND=C_INT)                   :: nc_get_var1
+ Integer(C_INT)                        :: nc_get_var1
 
  End Function nc_get_var1
 End Interface
@@ -1097,11 +1118,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE      :: ncid, varid
+ Integer(C_INT),         VALUE      :: ncid, varid
  Type(C_PTR),            VALUE      :: startp, countp
  Character(KIND=C_CHAR), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)                :: nc_put_vara_text
+ Integer(C_INT)                     :: nc_put_vara_text
 
  End Function nc_put_vara_text
 End Interface
@@ -1111,11 +1132,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Type(C_PTR),            VALUE       :: startp, countp
  Character(KIND=C_CHAR), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)                 :: nc_get_vara_text
+ Integer(C_INT)                      :: nc_get_vara_text
 
  End Function nc_get_vara_text
 End Interface
@@ -1126,11 +1147,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp
- Integer(KIND=CINT1), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp
+ Integer(CINT1), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_vara_uchar
+ Integer(C_INT)             :: nc_put_vara_uchar
 
  End Function nc_put_vara_uchar
 End Interface
@@ -1141,11 +1162,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp
- Integer(KIND=CINT1), Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp
+ Integer(CINT1), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_vara_uchar
+ Integer(C_INT)              :: nc_get_vara_uchar
 
  End Function nc_get_vara_uchar
 End Interface
@@ -1156,11 +1177,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp
- Integer(KIND=CINT1), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp
+ Integer(CINT1), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_vara_schar
+ Integer(C_INT)             :: nc_put_vara_schar
 
  End Function nc_put_vara_schar
 End Interface
@@ -1171,11 +1192,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp
- Integer(KIND=CINT1), Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp
+ Integer(CINT1), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_vara_schar
+ Integer(C_INT)              :: nc_get_vara_schar
 
  End Function nc_get_vara_schar
 End Interface
@@ -1186,11 +1207,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT2
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp
- Integer(KIND=CINT2), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp
+ Integer(CINT2), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_vara_short
+ Integer(C_INT)             :: nc_put_vara_short
 
  End Function nc_put_vara_short
 End Interface
@@ -1201,11 +1222,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT2
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp
- Integer(KIND=CINT2), Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp
+ Integer(CINT2), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_vara_short
+ Integer(C_INT)              :: nc_get_vara_short
 
  End Function nc_get_vara_short
 End Interface
@@ -1216,11 +1237,11 @@ Interface
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp
- Integer(KIND=CINT),  Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp
+ Integer(CINT),  Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_vara_int
+ Integer(C_INT)             :: nc_put_vara_int
 
  End Function nc_put_vara_int
 End Interface
@@ -1231,11 +1252,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp
- Integer(KIND=CINT),  Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp
+ Integer(CINT),  Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_vara_int
+ Integer(C_INT)              :: nc_get_vara_int
 
  End Function nc_get_vara_int
 End Interface
@@ -1245,11 +1266,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG, C_PTR
 
- Integer(KIND=C_INT),  VALUE      :: ncid, varid
- Type(C_PTR),          VALUE      :: startp, countp
- Integer(KIND=C_LONG), Intent(IN) :: op(*)
+ Integer(C_INT),  VALUE      :: ncid, varid
+ Type(C_PTR),     VALUE      :: startp, countp
+ Integer(C_LONG), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)              :: nc_put_vara_long
+ Integer(C_INT)              :: nc_put_vara_long
 
  End Function nc_put_vara_long
 End Interface
@@ -1259,11 +1280,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG, C_PTR
 
- Integer(KIND=C_INT),  VALUE       :: ncid, varid
- Type(C_PTR),          VALUE       :: startp, countp
- Integer(KIND=C_LONG), Intent(OUT) :: ip(*)
+ Integer(C_INT),  VALUE       :: ncid, varid
+ Type(C_PTR),     VALUE       :: startp, countp
+ Integer(C_LONG), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)               :: nc_get_vara_long
+ Integer(C_INT)               :: nc_get_vara_long
 
  End Function nc_get_vara_long
 End Interface
@@ -1273,11 +1294,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_FLOAT, C_PTR
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp
- Real(KIND=C_FLOAT),  Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp
+ Real(C_FLOAT),  Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_vara_float
+ Integer(C_INT)             :: nc_put_vara_float
 
  End Function nc_put_vara_float
 End Interface
@@ -1287,11 +1308,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_FLOAT, C_PTR
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp
- Real(KIND=C_FLOAT),  Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp
+ Real(C_FLOAT),  Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_vara_float
+ Integer(C_INT)              :: nc_get_vara_float
 
  End Function nc_get_vara_float
 End Interface
@@ -1301,11 +1322,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_DOUBLE, C_PTR
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp
- Real(KIND=C_DOUBLE), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp
+ Real(C_DOUBLE), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_vara_double
+ Integer(C_INT)             :: nc_put_vara_double
 
  End Function nc_put_vara_double
 End Interface
@@ -1315,11 +1336,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_DOUBLE, C_PTR
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp
- Real(KIND=C_DOUBLE), Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp
+ Real(C_DOUBLE), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_vara_double
+ Integer(C_INT)              :: nc_get_vara_double
 
  End Function nc_get_vara_double
 End Interface
@@ -1329,11 +1350,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR
 
- Integer(KIND=C_INT), VALUE :: ncid, varid
- Type(C_PTR),         VALUE :: startp, countp
- Type(C_PTR),         VALUE :: op
+ Integer(C_INT), VALUE :: ncid, varid
+ Type(C_PTR),    VALUE :: startp, countp
+ Type(C_PTR),    VALUE :: op
 
- Integer(KIND=C_INT)        :: nc_put_vara
+ Integer(C_INT)        :: nc_put_vara
 
  End Function nc_put_vara
 End Interface
@@ -1343,11 +1364,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid, varid
+ Integer(C_INT),         VALUE         :: ncid, varid
  Type(C_PTR),            VALUE         :: startp, countp
  Character(KIND=C_CHAR), Intent(INOUT) :: ip(*)
 
- Integer(KIND=C_INT)                   :: nc_get_vara
+ Integer(C_INT)                        :: nc_get_vara
 
  End Function nc_get_vara
 End Interface
@@ -1357,11 +1378,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE      :: ncid, varid
+ Integer(C_INT),         VALUE      :: ncid, varid
  Type(C_PTR),            VALUE      :: startp, countp, stridep
  Character(KIND=C_CHAR), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)                :: nc_put_vars_text
+ Integer(C_INT)                     :: nc_put_vars_text
 
  End Function nc_put_vars_text
 End Interface
@@ -1371,11 +1392,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Type(C_PTR),            VALUE       :: startp, countp, stridep
  Character(KIND=C_CHAR), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)                 :: nc_get_vars_text
+ Integer(C_INT)                       :: nc_get_vars_text
 
  End Function nc_get_vars_text
 End Interface
@@ -1386,11 +1407,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp, stridep
- Integer(KIND=CINT1), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp, stridep
+ Integer(CINT1), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_vars_uchar
+ Integer(C_INT)             :: nc_put_vars_uchar
 
  End Function nc_put_vars_uchar
 End Interface
@@ -1401,11 +1422,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp, stridep
- Integer(KIND=CINT1), Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp, stridep
+ Integer(CINT1), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_vars_uchar
+ Integer(C_INT)              :: nc_get_vars_uchar
 
  End Function nc_get_vars_uchar
 End Interface
@@ -1416,11 +1437,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp, stridep
- Integer(KIND=CINT1), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp, stridep
+ Integer(CINT1), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_vars_schar
+ Integer(C_INT)             :: nc_put_vars_schar
 
  End Function nc_put_vars_schar
 End Interface
@@ -1431,11 +1452,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp, stridep
- Integer(KIND=CINT1), Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp, stridep
+ Integer(CINT1), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_vars_schar
+ Integer(C_INT)              :: nc_get_vars_schar
 
  End Function nc_get_vars_schar
 End Interface
@@ -1446,11 +1467,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT2
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp, stridep
- Integer(KIND=CINT2), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp, stridep
+ Integer(CINT2), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_vars_short
+ Integer(C_INT)             :: nc_put_vars_short
 
  End Function nc_put_vars_short
 End Interface
@@ -1461,11 +1482,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT,  C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT2
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp, stridep
- Integer(KIND=CINT2), Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp, stridep
+ Integer(CINT2), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_vars_short
+ Integer(C_INT)              :: nc_get_vars_short
 
  End Function nc_get_vars_short
 End Interface
@@ -1476,11 +1497,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp, stridep
- Integer(KIND=CINT),  Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp, stridep
+ Integer(CINT),  Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_vars_int
+ Integer(C_INT)             :: nc_put_vars_int
 
  End Function nc_put_vars_int
 End Interface
@@ -1491,11 +1512,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp, stridep
- Integer(KIND=CINT),  Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp, stridep
+ Integer(CINT),  Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_vars_int
+ Integer(C_INT)              :: nc_get_vars_int
 
  End Function nc_get_vars_int
 End Interface
@@ -1505,11 +1526,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG, C_PTR
 
- Integer(KIND=C_INT),  VALUE      :: ncid, varid
- Type(C_PTR),          VALUE      :: startp, countp, stridep
- Integer(KIND=C_LONG), Intent(IN) :: op(*)
+ Integer(C_INT),  VALUE      :: ncid, varid
+ Type(C_PTR),     VALUE      :: startp, countp, stridep
+ Integer(C_LONG), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)              :: nc_put_vars_long
+ Integer(C_INT)              :: nc_put_vars_long
 
  End Function nc_put_vars_long
 End Interface
@@ -1519,11 +1540,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG, C_PTR
 
- Integer(KIND=C_INT),  VALUE       :: ncid, varid
- Type(C_PTR),          VALUE       :: startp, countp, stridep
- Integer(KIND=C_LONG), Intent(OUT) :: ip(*)
+ Integer(C_INT),  VALUE       :: ncid, varid
+ Type(C_PTR),     VALUE       :: startp, countp, stridep
+ Integer(C_LONG), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)               :: nc_get_vars_long
+ Integer(C_INT)               :: nc_get_vars_long
 
  End Function nc_get_vars_long
 End Interface
@@ -1533,11 +1554,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_FLOAT, C_PTR
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp, stridep
- Real(KIND=C_FLOAT),  Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp, stridep
+ Real(C_FLOAT),  Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_vars_float
+ Integer(C_INT)             :: nc_put_vars_float
 
  End Function nc_put_vars_float
 End Interface
@@ -1547,11 +1568,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_FLOAT, C_PTR
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp, stridep
- Real(KIND=C_FLOAT),  Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp, stridep
+ Real(C_FLOAT),  Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_vars_float
+ Integer(C_INT)              :: nc_get_vars_float
 
  End Function nc_get_vars_float
 End Interface
@@ -1561,11 +1582,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_DOUBLE, C_PTR
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp, stridep
- Real(KIND=C_DOUBLE), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp, stridep
+ Real(C_DOUBLE), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_vars_double
+ Integer(C_INT)             :: nc_put_vars_double
 
  End Function nc_put_vars_double
 End Interface
@@ -1575,11 +1596,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_DOUBLE, C_PTR
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp, stridep
- Real(KIND=C_DOUBLE), Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp, stridep
+ Real(C_DOUBLE), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_vars_double
+ Integer(C_INT)              :: nc_get_vars_double
 
  End Function nc_get_vars_double
 End Interface
@@ -1589,11 +1610,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR
 
- Integer(KIND=C_INT), VALUE :: ncid, varid
- Type(C_PTR),         VALUE :: startp, countp, stridep
- Type(C_PTR),         VALUE :: op
+ Integer(C_INT), VALUE :: ncid, varid
+ Type(C_PTR),    VALUE :: startp, countp, stridep
+ Type(C_PTR),    VALUE :: op
 
- Integer(KIND=C_INT)        :: nc_put_vars
+ Integer(C_INT)        :: nc_put_vars
 
  End Function nc_put_vars
 End Interface
@@ -1603,11 +1624,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid, varid
+ Integer(C_INT),         VALUE         :: ncid, varid
  Type(C_PTR),            VALUE         :: startp, countp, stridep
  Character(KIND=C_CHAR), Intent(INOUT) :: ip(*)
 
- Integer(KIND=C_INT)                   :: nc_get_vars
+ Integer(C_INT)                        :: nc_get_vars
 
  End Function nc_get_vars
 End Interface
@@ -1619,11 +1640,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE      :: ncid, varid
+ Integer(C_INT),         VALUE      :: ncid, varid
  Type(C_PTR),            VALUE      :: startp, countp, stridep, imapp
  Character(KIND=C_CHAR), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)                :: nc_put_varm_text
+ Integer(C_INT)                     :: nc_put_varm_text
 
  End Function nc_put_varm_text
 End Interface
@@ -1634,11 +1655,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_PTR, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Type(C_PTR),            VALUE       :: startp, countp, stridep, imapp
  Character(KIND=C_CHAR), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)                 :: nc_get_varm_text
+ Integer(C_INT)                      :: nc_get_varm_text
 
  End Function nc_get_varm_text
 End Interface
@@ -1650,11 +1671,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp, stridep, imapp
- Integer(KIND=CINT1), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp, stridep, imapp
+ Integer(CINT1), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_varm_uchar
+ Integer(C_INT)             :: nc_put_varm_uchar
 
  End Function nc_put_varm_uchar
 End Interface
@@ -1666,11 +1687,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp, stridep, imapp
- Integer(KIND=CINT1), Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp, stridep, imapp
+ Integer(CINT1), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_varm_uchar
+ Integer(C_INT)              :: nc_get_varm_uchar
 
  End Function nc_get_varm_uchar
 End Interface
@@ -1682,11 +1703,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp, stridep, imapp
- Integer(KIND=CINT1), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp, stridep, imapp
+ Integer(CINT1), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_varm_schar
+ Integer(C_INT)             :: nc_put_varm_schar
 
  End Function nc_put_varm_schar
 End Interface
@@ -1698,11 +1719,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp, stridep, imapp
- Integer(KIND=CINT1), Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp, stridep, imapp
+ Integer(CINT1), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_varm_schar
+ Integer(C_INT)              :: nc_get_varm_schar
 
  End Function nc_get_varm_schar
 End Interface
@@ -1714,11 +1735,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT2
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp, stridep, imapp
- Integer(KIND=CINT2), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp, stridep, imapp
+ Integer(CINT2), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_varm_short
+ Integer(C_INT)             :: nc_put_varm_short
 
  End Function nc_put_varm_short
 End Interface
@@ -1730,11 +1751,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT2
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp, stridep, imapp
- Integer(KIND=CINT2), Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp, stridep, imapp
+ Integer(CINT2), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_varm_short
+ Integer(C_INT)              :: nc_get_varm_short
 
  End Function nc_get_varm_short
 End Interface
@@ -1746,11 +1767,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp, stridep, imapp
- Integer(KIND=CINT),  Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp, stridep, imapp
+ Integer(CINT),  Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_varm_int
+ Integer(C_INT)             :: nc_put_varm_int
 
  End Function nc_put_varm_int
 End Interface
@@ -1762,11 +1783,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_PTR
  USE NETCDF_NC_DATA, ONLY: CINT
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp, stridep, imapp
- Integer(KIND=CINT),  Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp, stridep, imapp
+ Integer(CINT),  Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_varm_int
+ Integer(C_INT)              :: nc_get_varm_int
 
  End Function nc_get_varm_int
 End Interface
@@ -1777,11 +1798,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG, C_PTR
 
- Integer(KIND=C_INT),  VALUE      :: ncid, varid
- Type(C_PTR),          VALUE      :: startp, countp, stridep, imapp
- Integer(KIND=C_LONG), Intent(IN) :: op(*)
+ Integer(C_INT),  VALUE      :: ncid, varid
+ Type(C_PTR),     VALUE      :: startp, countp, stridep, imapp
+ Integer(C_LONG), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)              :: nc_put_varm_long
+ Integer(C_INT)              :: nc_put_varm_long
 
  End Function nc_put_varm_long
 End Interface
@@ -1792,11 +1813,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG, C_PTR
 
- Integer(KIND=C_INT),  VALUE       :: ncid, varid
- Type(C_PTR),          VALUE       :: startp, countp, stridep, imapp
- Integer(KIND=C_LONG), Intent(OUT) :: ip(*)
+ Integer(C_INT),  VALUE       :: ncid, varid
+ Type(C_PTR),     VALUE       :: startp, countp, stridep, imapp
+ Integer(C_LONG), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)               :: nc_get_varm_long
+ Integer(C_INT)               :: nc_get_varm_long
 
  End Function nc_get_varm_long
 End Interface
@@ -1807,11 +1828,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_FLOAT, C_PTR
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp, stridep, imapp
- Real(KIND=C_FLOAT),  Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp, stridep, imapp
+ Real(C_FLOAT),  Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_varm_float
+ Integer(C_INT)             :: nc_put_varm_float
 
  End Function nc_put_varm_float
 End Interface
@@ -1822,11 +1843,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_FLOAT, C_PTR
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp, stridep, imapp
- Real(KIND=C_FLOAT),  Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp, stridep, imapp
+ Real(C_FLOAT),  Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_varm_float
+ Integer(C_INT)              :: nc_get_varm_float
 
  End Function nc_get_varm_float
 End Interface
@@ -1837,11 +1858,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_DOUBLE, C_PTR
 
- Integer(KIND=C_INT), VALUE      :: ncid, varid
- Type(C_PTR),         VALUE      :: startp, countp, stridep, imapp
- Real(KIND=C_DOUBLE), Intent(IN) :: op(*)
+ Integer(C_INT), VALUE      :: ncid, varid
+ Type(C_PTR),    VALUE      :: startp, countp, stridep, imapp
+ Real(C_DOUBLE), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)             :: nc_put_varm_double
+ Integer(C_INT)             :: nc_put_varm_double
 
  End Function nc_put_varm_double
 End Interface
@@ -1852,11 +1873,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_DOUBLE, C_PTR
 
- Integer(KIND=C_INT), VALUE       :: ncid, varid
- Type(C_PTR),         VALUE       :: startp, countp, stridep, imapp
- Real(KIND=C_DOUBLE), Intent(OUT) :: ip(*)
+ Integer(C_INT), VALUE       :: ncid, varid
+ Type(C_PTR),    VALUE       :: startp, countp, stridep, imapp
+ Real(C_DOUBLE), Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)              :: nc_get_varm_double
+ Integer(C_INT)              :: nc_get_varm_double
 
  End Function nc_get_varm_double
 End Interface
@@ -1866,12 +1887,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
- Integer(KIND=C_INT),    Intent(OUT) :: xtypep
- Integer(KIND=C_SIZE_T), Intent(OUT) :: lenp
+ Integer(C_INT),         Intent(OUT) :: xtypep
+ Integer(C_SIZE_T),      Intent(OUT) :: lenp
 
- Integer(KIND=C_INT)                 :: nc_inq_att
+ Integer(C_INT)                      :: nc_inq_att
 
  End Function nc_inq_att
 End Interface
@@ -1881,11 +1902,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
- Integer(KIND=C_INT),    Intent(OUT) :: attnump
+ Integer(C_INT),         Intent(OUT) :: attnump
 
- Integer(KIND=C_INT)                 :: nc_inq_attid
+ Integer(C_INT)                      :: nc_inq_attid
 
  End Function nc_inq_attid
 End Interface
@@ -1895,11 +1916,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
- Integer(KIND=C_INT),    Intent(OUT) :: xtypep
+ Integer(C_INT),         Intent(OUT) :: xtypep
 
- Integer(KIND=C_INT)                 :: nc_inq_atttype
+ Integer(C_INT)                      :: nc_inq_atttype
 
  End Function nc_inq_atttype
 End Interface
@@ -1909,11 +1930,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
- Integer(KIND=C_SIZE_T), Intent(OUT) :: lenp
+ Integer(C_SIZE_T),      Intent(OUT) :: lenp
 
- Integer(KIND=C_INT)                 :: nc_inq_attlen
+ Integer(C_INT)                      :: nc_inq_attlen
 
  End Function nc_inq_attlen
 End Interface
@@ -1923,10 +1944,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE         :: ncid, varid, attnum
+ Integer(C_INT),         VALUE         :: ncid, varid, attnum
  Character(KIND=C_CHAR), Intent(INOUT) :: name(*)
 
- Integer(KIND=C_INT)                   :: nc_inq_attname
+ Integer(C_INT)                        :: nc_inq_attname
 
  End Function nc_inq_attname
 End Interface
@@ -1936,11 +1957,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE      :: ncid_in, varid_in, varid_out, &
+ Integer(C_INT),         VALUE      :: ncid_in, varid_in, varid_out, &
                                        ncid_out
  Character(KIND=C_CHAR), Intent(IN) :: name(*)
 
- Integer(KIND=C_INT)                :: nc_copy_att
+ Integer(C_INT)                     :: nc_copy_att
 
  End Function nc_copy_att
 End Interface
@@ -1950,10 +1971,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE      :: ncid, varid
+ Integer(C_INT),         VALUE      :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN) :: name(*), newname(*)
 
- Integer(KIND=C_INT)                :: nc_rename_att
+ Integer(C_INT)                     :: nc_rename_att
 
  End Function nc_rename_att
 End Interface
@@ -1963,10 +1984,10 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE      :: ncid, varid
+ Integer(C_INT),         VALUE      :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN) :: name(*)
 
- Integer(KIND=C_INT)                :: nc_del_att
+ Integer(C_INT)                     :: nc_del_att
 
  End Function nc_del_att
 End Interface
@@ -1976,12 +1997,12 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE      :: ncid, varid
- Integer(KIND=C_SIZE_T), VALUE      :: nlen
+ Integer(C_INT),         VALUE      :: ncid, varid
+ Integer(C_SIZE_T),      VALUE      :: nlen
  Character(KIND=C_CHAR), Intent(IN) :: name(*)
  Character(KIND=C_CHAR), Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)                :: nc_put_att_text
+ Integer(C_INT)                     :: nc_put_att_text
 
  End Function nc_put_att_text
 End Interface
@@ -1991,11 +2012,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
  Character(KIND=C_CHAR), Intent(OUT) :: ip(*)
-
- Integer(KIND=C_INT)                 :: nc_get_att_text
+ 
+ Integer(C_INT     )                 :: nc_get_att_text
 
  End Function nc_get_att_text
 End Interface
@@ -2006,13 +2027,13 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_SIZE_T, C_CHAR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT),    VALUE      :: ncid, varid
- Integer(KIND=C_SIZE_T), VALUE      :: nlen
- Integer(KIND=C_INT),    VALUE      :: xtype
+ Integer(C_INT),         VALUE      :: ncid, varid
+ Integer(C_SIZE_T),      VALUE      :: nlen
+ Integer(C_INT),         VALUE      :: xtype
  Character(KIND=C_CHAR), Intent(IN) :: name(*)
- Integer(KIND=CINT1),    Intent(IN) :: op(*)
+ Integer(CINT1),         Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)                :: nc_put_att_uchar
+ Integer(C_INT)                     :: nc_put_att_uchar
 
  End Function nc_put_att_uchar
 End Interface
@@ -2023,11 +2044,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_CHAR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
- Integer(KIND=CINT1),    Intent(OUT) :: ip(*)
+ Integer(CINT1),         Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)                 :: nc_get_att_uchar
+ Integer(C_INT)                      :: nc_get_att_uchar
 
  End Function nc_get_att_uchar
 End Interface
@@ -2038,13 +2059,13 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_SIZE_T, C_CHAR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT),    VALUE      :: ncid, varid
- Integer(KIND=C_SIZE_T), VALUE      :: nlen
- Integer(KIND=C_INT),    VALUE      :: xtype
+ Integer(C_INT),         VALUE      :: ncid, varid
+ Integer(C_SIZE_T),      VALUE      :: nlen
+ Integer(C_INT),         VALUE      :: xtype
  Character(KIND=C_CHAR), Intent(IN) :: name(*)
- Integer(KIND=CINT1),    Intent(IN) :: op(*)
+ Integer(CINT1),         Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)                :: nc_put_att_schar
+ Integer(C_INT)                     :: nc_put_att_schar
 
  End Function nc_put_att_schar
 End Interface
@@ -2055,11 +2076,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_CHAR
  USE NETCDF_NC_DATA, ONLY: CINT1
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
- Integer(KIND=CINT1),    Intent(OUT) :: ip(*)
+ Integer(CINT1),         Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)                 :: nc_get_att_schar
+ Integer(C_INT)                      :: nc_get_att_schar
 
  End Function nc_get_att_schar
 End Interface
@@ -2070,13 +2091,13 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_SIZE_T, C_CHAR
  USE NETCDF_NC_DATA, ONLY: CINT2
 
- Integer(KIND=C_INT),    VALUE      :: ncid, varid
- Integer(KIND=C_SIZE_T), VALUE      :: nlen
- Integer(KIND=C_INT),    VALUE      :: xtype
+ Integer(C_INT),         VALUE      :: ncid, varid
+ Integer(C_SIZE_T),      VALUE      :: nlen
+ Integer(C_INT),         VALUE      :: xtype
  Character(KIND=C_CHAR), Intent(IN) :: name(*)
- Integer(KIND=CINT2),    Intent(IN) :: op(*)
+ Integer(CINT2),         Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)                :: nc_put_att_short
+ Integer(C_INT)                     :: nc_put_att_short
 
  End Function nc_put_att_short
 End Interface
@@ -2087,11 +2108,11 @@ Interface
  USE ISO_C_BINDING,  ONLY: C_INT, C_CHAR
  USE NETCDF_NC_DATA, ONLY: CINT2
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
- Integer(KIND=CINT2),    Intent(OUT) :: ip(*)
+ Integer(CINT2),         Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)                 :: nc_get_att_short
+ Integer(C_INT)                      :: nc_get_att_short
 
  End Function nc_get_att_short
 End Interface
@@ -2101,13 +2122,13 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_CHAR
 
- Integer(KIND=C_INT),    VALUE      :: ncid, varid
- Integer(KIND=C_SIZE_T), VALUE      :: nlen
- Integer(KIND=C_INT),    VALUE      :: xtype
+ Integer(C_INT),         VALUE      :: ncid, varid
+ Integer(C_SIZE_T),      VALUE      :: nlen
+ Integer(C_INT),         VALUE      :: xtype
  Character(KIND=C_CHAR), Intent(IN) :: name(*)
- Integer(KIND=C_INT),    Intent(IN) :: op(*)
+ Integer(C_INT),         Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)                :: nc_put_att_int
+ Integer(C_INT)                     :: nc_put_att_int
 
  End Function nc_put_att_int
 End Interface
@@ -2117,11 +2138,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
- Integer(KIND=C_INT),    Intent(OUT) :: ip(*)
+ Integer(C_INT),         Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)                 :: nc_get_att_int
+ Integer(C_INT)                      :: nc_get_att_int
 
  End Function nc_get_att_int
 End Interface
@@ -2131,13 +2152,13 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_LONG, C_CHAR
 
- Integer(KIND=C_INT),    VALUE      :: ncid, varid
- Integer(KIND=C_SIZE_T), VALUE      :: nlen
- Integer(KIND=C_INT),    VALUE      :: xtype
+ Integer(C_INT),         VALUE      :: ncid, varid
+ Integer(C_SIZE_T),      VALUE      :: nlen
+ Integer(C_INT),         VALUE      :: xtype
  Character(KIND=C_CHAR), Intent(IN) :: name(*)
- Integer(KIND=C_LONG),   Intent(IN) :: op(*)
+ Integer(C_LONG),        Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)                :: nc_put_att_long
+ Integer(C_INT)                     :: nc_put_att_long
 
  End Function nc_put_att_long
 End Interface
@@ -2147,11 +2168,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_LONG, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
- Integer(KIND=C_LONG),   Intent(OUT) :: ip(*)
+ Integer(C_LONG),        Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)                 :: nc_get_att_long
+ Integer(C_INT)                      :: nc_get_att_long
 
  End Function nc_get_att_long
 End Interface
@@ -2161,13 +2182,13 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_FLOAT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE      :: ncid, varid
- Integer(KIND=C_SIZE_T), VALUE      :: nlen
- Integer(KIND=C_INT),    VALUE      :: xtype
+ Integer(C_INT),         VALUE      :: ncid, varid
+ Integer(C_SIZE_T),      VALUE      :: nlen
+ Integer(C_INT),         VALUE      :: xtype
  Character(KIND=C_CHAR), Intent(IN) :: name(*)
- Real(KIND=C_FLOAT),     Intent(IN) :: op(*)
+ Real(C_FLOAT),          Intent(IN) :: op(*)
 
- Integer(KIND=C_INT) :: nc_put_att_float
+ Integer(C_INT)                     :: nc_put_att_float
 
  End Function nc_put_att_float
 End Interface
@@ -2177,11 +2198,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_FLOAT, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
- Real(KIND=C_FLOAT),     Intent(OUT) :: ip(*)
+ Real(C_FLOAT),          Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)                 :: nc_get_att_float
+ Integer(C_INT)                      :: nc_get_att_float
 
  End Function nc_get_att_float
 End Interface
@@ -2191,13 +2212,13 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_SIZE_T, C_DOUBLE, C_CHAR
 
- Integer(KIND=C_INT),    VALUE      :: ncid, varid
- Integer(KIND=C_SIZE_T), VALUE      :: nlen
- Integer(KIND=C_INT),    VALUE      :: xtype
+ Integer(C_INT),         VALUE      :: ncid, varid
+ Integer(C_SIZE_T),      VALUE      :: nlen
+ Integer(C_INT),         VALUE      :: xtype
  Character(KIND=C_CHAR), Intent(IN) :: name(*)
- Real(KIND=C_DOUBLE),    Intent(IN) :: op(*)
+ Real(C_DOUBLE),         Intent(IN) :: op(*)
 
- Integer(KIND=C_INT)                :: nc_put_att_double
+ Integer(C_INT)                     :: nc_put_att_double
 
  End Function nc_put_att_double
 End Interface
@@ -2207,11 +2228,11 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT, C_DOUBLE, C_CHAR
 
- Integer(KIND=C_INT),    VALUE       :: ncid, varid
+ Integer(C_INT),         VALUE       :: ncid, varid
  Character(KIND=C_CHAR), Intent(IN)  :: name(*)
- Real(KIND=C_DOUBLE),    Intent(OUT) :: ip(*)
+ Real(C_DOUBLE),         Intent(OUT) :: ip(*)
 
- Integer(KIND=C_INT)                 :: nc_get_att_double
+ Integer(C_INT)                      :: nc_get_att_double
 
  End Function nc_get_att_double
 End Interface
@@ -2221,9 +2242,9 @@ Interface
 
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE :: ncid_in, varid, ncid_out
+ Integer(C_INT), VALUE :: ncid_in, varid, ncid_out
 
- Integer(KIND=C_INT)        :: nc_copy_var
+ Integer(C_INT)        :: nc_copy_var
 
  End Function nc_copy_var
 End Interface
@@ -2233,10 +2254,10 @@ Interface
 !
  USE ISO_C_BINDING, ONLY: C_INT
 
- Integer(KIND=C_INT), VALUE       :: newform
- Integer(KIND=C_INT), Intent(OUT) :: old_format
+ Integer(C_INT), VALUE       :: newform
+ Integer(C_INT), Intent(OUT) :: old_format
 
- Integer(KIND=C_INT)              :: nc_set_default_format
+ Integer(C_INT)              :: nc_set_default_format
 
  End Function nc_set_default_format
 End Interface
@@ -2252,7 +2273,7 @@ CONTAINS
 ! string. Assumes target variable will be of length
 ! LEN(string)+1. Trailing blanks will be stripped
 ! from string and length of trimmed string will
-! be returned in nlen
+! be returned in nlen. 
 
 ! USE ISO_C_BINDING
 
@@ -2267,20 +2288,25 @@ CONTAINS
 
 
 ! first check to see if we already have a C NULL char attached
-! to string and strip trailing blanks. We will overwrite it if
-! we do
+! to string and strip trailing blanks. We will use it if its present 
+! otherwise we add one. The length of the trimmed string plus the
+! C_NULL_CHAR is returned in nlen 
 
  nlen  = LEN_TRIM(string)
  inull = SCAN(string, C_NULL_CHAR)
 
- If (inull > 1) nlen = inull - 1
- nlen = MAX(1,nlen)  ! Make sure nlen is at least 1
-
-! append null char to trimmed string
-
  cstring = REPEAT(" ", LEN(cstring)) ! init to blanks
- cstring = string(1:nlen)//C_NULL_CHAR
 
+ If (inull > 0)  Then ! string has a NULL char
+   nlen = inull
+   cstring = string(1:nlen)
+     
+ Else ! append null char to trimmed string
+
+   cstring = string(1:nlen)//C_NULL_CHAR
+   nlen = nlen + 1
+ Endif
+ 
  End Function addCNullChar
 !----------------------------------- stripCNullChar ----------------------------
  Function StripCNullChar(cstring, nlen) Result(string)
@@ -2310,6 +2336,6 @@ CONTAINS
  string(1:ie) = cstring(1:ie)
 
  End Function StripCNullChar
-!
+ 
 !----------------------------End of Module netcdf_c_interfaces ----------------
 End Module netcdf_nc_interfaces
diff --git a/fortran/module_netcdf_nf_data.F90 b/fortran/module_netcdf_nf_data.F90
index ce10fcc..d6235d1 100755
--- a/fortran/module_netcdf_nf_data.F90
+++ b/fortran/module_netcdf_nf_data.F90
@@ -28,6 +28,8 @@ Module netcdf_nf_data
 ! Version 3. Apr.  2009 - updated for netCDF 4.0.1
 ! Version 4. Apr.  2010 - updated for netCDF 4.1.1
 ! Version 5. Feb.  2013 - Updated for netCDF 4.4
+! Version 6. Jan.  2016 - General code cleanup and added several new
+!                         parameters to mirror whats in netcdf_constants.f90
 
 ! This module is provided as a replacement for parts of the netcdf2.inc,
 ! netcdf3.inc and netcdf4.inc include files. It does not include the 
@@ -88,6 +90,7 @@ Module netcdf_nf_data
  Integer, Parameter :: NF_FORMAT_64BIT     = NC_FORMAT_64BIT 
  Integer, Parameter :: NF_DISKLESS         = NC_DISKLESS 
  Integer, Parameter :: NF_MMAP             = NC_MMAP
+ Integer, Parameter :: NF_INMEMORY         = NC_INMEMORY
 
 ! Unlimited dimension size argument and global attibute ID
 
@@ -141,6 +144,21 @@ Module netcdf_nf_data
  Integer, Parameter :: NF_EVARSIZE     = NC_EVARSIZE
  Integer, Parameter :: NF_EDIMSIZE     = NC_EDIMSIZE 
  Integer, Parameter :: NF_ETRUNC       = NC_ETRUNC 
+ Integer, Parameter :: NF_EAXISTYPE    = NC_EAXISTYPE
+  
+! DAP error codes
+
+ Integer, Parameter :: NF_EDAP           = NC_EDAP
+ Integer, Parameter :: NF_ECURL          = NC_ECURL
+ Integer, Parameter :: NF_EIO            = NC_EIO
+ Integer, Parameter :: NF_ENODATA        = NC_ENODATA
+ Integer, Parameter :: NF_EDAPSVC        = NC_EDAPSVC
+ Integer, Parameter :: NF_EDAS           = NC_EDAS
+ Integer, Parameter :: NF_EDDS           = NC_EDDS
+ Integer, Parameter :: NF_EDATADDS       = NC_EDATADDS
+ Integer, Parameter :: NF_EDAPURL        = NC_EDAPURL
+ Integer, Parameter :: NF_EDAPCONSTRAINT = NC_EDAPCONSTRAINT
+ Integer, Parameter :: NF_ETRANSLATION   = NC_ETRANSLATION
 
 ! Error handling codes
 
@@ -175,6 +193,7 @@ Module netcdf_nf_data
  Integer(IK8), Parameter :: NF_FILL_INT64  = NC_FILL_INT64 
 
 ! new format types
+
  Integer, Parameter :: NF_FORMAT_NETCDF4         = NC_FORMAT_NETCDF4 
  Integer, Parameter :: NF_FORMAT_NETCDF4_CLASSIC = NC_FORMAT_NETCDF4_CLASSIC
  
@@ -182,7 +201,9 @@ Module netcdf_nf_data
  Integer, Parameter :: NF_NETCDF4        = NC_NETCDF4 
  Integer, Parameter :: NF_HDF5           = NF_NETCDF4 ! deprecated
  Integer, Parameter :: NF_CLASSIC_MODEL  = NC_CLASSIC_MODEL 
+
 ! Netcdf4 variable flags
+
  Integer, Parameter :: NF_CHUNK_SEQ      = NC_CHUNK_SEQ 
  Integer, Parameter :: NF_CHUNK_SUB      = NC_CHUNK_SUB 
  Integer, Parameter :: NF_CHUNK_SIZES    = NC_CHUNK_SIZES 
@@ -203,7 +224,7 @@ Module netcdf_nf_data
 
  Integer, Parameter :: NF_MPIIO          = NC_MPIIO 
  Integer, Parameter :: NF_MPIPOSIX       = NC_MPIPOSIX 
- Integer, Parameter :: NF_PNETCDF        = NC_PNETCDF
+ Integer, Parameter :: NF_PNETCDF        = NC_PNETCDF ! which is actually NC_MPIIO
 
 ! SZIP flags
  
@@ -237,9 +258,17 @@ Module netcdf_nf_data
  Integer, Parameter :: NF_ELATEDEF       = NC_ELATEDEF 
  Integer, Parameter :: NF_EDIMSCALE      = NC_EDIMSCALE 
  Integer, Parameter :: NF_ENOGRP         = NC_ENOGRP 
+ Integer, Parameter :: NF_ESTORAGE       = NC_ESTORAGE
+ Integer, Parameter :: NF_EBADCHUNK      = NC_EBADCHUNK
+ Integer, Parameter :: NF_ENOTBUILT      = NC_ENOTBUILT
+ Integer, Parameter :: NF_EDISKLESS      = NC_EDISKLESS
+ Integer, Parameter :: NF_ECANTEXTEND    = NC_ECANTEXTEND
+ Integer, Parameter :: NF_EMPI           = NC_EMPI
+
 #endif
 
 #ifndef NO_NETCDF_2
+
 ! V2 interface values
 
  Integer, Parameter :: NCBYTE     = NF_BYTE 
@@ -309,6 +338,7 @@ Module netcdf_nf_data
  Integer,      Parameter :: FILLONG  = NF_FILL_INT 
  Real(RK4),    Parameter :: FILFLOAT = NF_FILL_FLOAT 
  Real(RK8),    Parameter :: FILDOUB  = NF_FILL_DOUBLE 
+
 #endif
 
 !------------------------------------------------------------------------------
diff --git a/fortran/module_netcdf_nf_interfaces.F90 b/fortran/module_netcdf_nf_interfaces.F90
index 1c86664..0b54f36 100755
--- a/fortran/module_netcdf_nf_interfaces.F90
+++ b/fortran/module_netcdf_nf_interfaces.F90
@@ -34,6 +34,8 @@ Module netcdf_nf_interfaces
 ! Version 3. April 2009 - Updated for netCDF 4.0.1
 ! Version 4. April 2010 - Updated for netCDF 4.1.1
 ! Version 5. Feb.  2013 - Added nf_inq_path support for fortran 4.4
+! Version 6. Jan.  2016 - General code cleanup, added interface for
+!                         nf_open_mem function
          
 ! Most legacy programs don't need to use this module. However, I've created
 ! it to support FORTRAN programmers who like to provide explicit interfaces
@@ -144,6 +146,22 @@ Interface
 
  End Function nf__open_mp
 End Interface
+!-------------------------------- nf_open_mem ---------------------------------
+Interface nf90_open_mem
+ Function nf_open_mem(path, mode, size, memory, ncid) RESULT (status)
+
+ USE ISO_C_BINDING, ONLY : C_CHAR
+
+ Character(LEN=*),       Intent(IN)           :: path
+ Integer,                Intent(IN)           :: mode
+ Integer,                Intent(IN)           :: size 
+ Character(KIND=C_CHAR), Intent(IN),   TARGET :: memory(*)
+ Integer,                Intent(INOUT)        :: ncid
+
+ Integer                               :: status
+
+ End Function nf_open_mem
+End Interface
 !-------------------------------- nf_inq_path ---------------------------------
 Interface
  Function nf_inq_path(ncid, pathlen, path) RESULT (status)
@@ -1634,7 +1652,7 @@ Interface
  End Function nf_get_att_double
 End Interface
 
-! Externals for functions that use C_CHAR strings to pass data to void
+! Externals for functions that use C_CHAR arrays to pass data to void
 ! pointers
 
  Integer, External :: nf_put_var1
@@ -1643,6 +1661,7 @@ End Interface
  Integer, External :: nf_get_vars
  Integer, External :: nf_put_vara
  Integer, External :: nf_get_vara
+! Integer, External :: nf_open_mem
 
 #ifndef NO_NETCDF_2
 ! External definitons for Netcdf2 functions 
@@ -1655,6 +1674,6 @@ End Interface
  Integer, External :: nctlen
  Integer, External :: ncsfil
 #endif
-!--------------------------- End Module netcdf_nf_interfaces - ----------------
 
+!--------------------------- End Module netcdf_nf_interfaces - ----------------
 End Module netcdf_nf_interfaces
diff --git a/fortran/netcdf4_externals.f90 b/fortran/netcdf4_externals.f90
index c195b33..ecd04ec 100644
--- a/fortran/netcdf4_externals.f90
+++ b/fortran/netcdf4_externals.f90
@@ -2,7 +2,7 @@
 ! Copyright 2006, UCAR
 ! $Id: netcdf4_externals.f90,v 1.21 2010/01/20 13:06:15 ed Exp $
 
-  ! Extra netCDF-4 functions 
+  ! Extra netCDF-4 functions
 
   integer, external :: nf_create_par, nf_open_par, nf_var_par_access, &
        nf_inq_ncid, nf_inq_grps, nf_inq_grpname, nf_inq_grpname_full, &
@@ -28,5 +28,3 @@
        nf_get_var_int64, nf_get_chunk_cache, nf_set_chunk_cache, &
        nf_inq_var_szip, nf_free_vlens, nf_free_string, &
        nf_set_var_chunk_cache, nf_get_var_chunk_cache, nf_rename_grp
-
-  
diff --git a/fortran/nf_attio.F90 b/fortran/nf_attio.F90
index da1de7f..7b2673f 100755
--- a/fortran/nf_attio.F90
+++ b/fortran/nf_attio.F90
@@ -27,6 +27,8 @@
 ! Version 3.: April 2009 - Updated to Netcdf 4.0.1 
 ! Version 4.: April 2010 - Updated to Netcdf 4.1.1 
 ! Version 5.: Feb.  2013 - bug fixes for fortran 4.4
+! Version 6:  Jan.  2016 - General code cleanup. Changed processing of
+!                          name strings to reflect change to addCNullChar
           
 !--------------------------------- nf_put_att_text ---------------------------
  Function nf_put_att_text(ncid, varid, name, nlen, text) RESULT(status)
@@ -42,8 +44,8 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus
- Integer(KIND=C_SIZE_T)       :: cnlen
+ Integer(C_INT)               :: cncid, cvarid, cstatus
+ Integer(C_SIZE_T)            :: cnlen
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -53,7 +55,7 @@
 
  cname = addCNullChar(name, ie)
  
- cstatus = nc_put_att_text(cncid, cvarid, cname(1:ie+1), cnlen, &
+ cstatus = nc_put_att_text(cncid, cvarid, cname(1:ie), cnlen, &
            text)
 
  status = cstatus
@@ -75,8 +77,8 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus
- Integer(KIND=C_SIZE_T)       :: cnlen
+ Integer(C_INT)               :: cncid, cvarid, cstatus
+ Integer(C_SIZE_T)            :: cnlen
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -86,7 +88,7 @@
 
  cname = addCNullChar(name, ie)
  
- cstatus = nc_put_att_text(cncid, cvarid, cname(1:ie+1), cnlen, &
+ cstatus = nc_put_att_text(cncid, cvarid, cname(1:ie), cnlen, &
                            text)
 
  status = cstatus
@@ -102,17 +104,16 @@
 
  Implicit NONE
 
- Integer,              Intent(IN) :: ncid, varid, nlen, xtype
-
- Character(LEN=*),     Intent(IN) :: name
- Integer(KIND=NFINT1), Intent(IN) :: i1vals(*)
+ Integer,          Intent(IN) :: ncid, varid, nlen, xtype
+ Character(LEN=*), Intent(IN) :: name
+ Integer(NFINT1),  Intent(IN) :: i1vals(*)
 
- Integer                          :: status
+ Integer                      :: status
 
- Integer(KIND=C_INT)             :: cncid, cvarid, cstatus, cxtype
- Integer(KIND=C_SIZE_T)          :: cnlen
- Character(LEN=(LEN(name)+1))    :: cname
- Integer                         :: ie
+ Integer(C_INT)               :: cncid, cvarid, cstatus, cxtype
+ Integer(C_SIZE_T)            :: cnlen
+ Character(LEN=(LEN(name)+1)) :: cname
+ Integer                      :: ie
 
  If (C_SIGNED_CHAR < 0) Then ! schar not supported by processor
    status = NC_EBADTYPE
@@ -129,16 +130,16 @@
  cname = addCNullChar(name, ie)
 
 #if NF_INT1_IS_C_SIGNED_CHAR 
- cstatus = nc_put_att_schar(cncid, cvarid, cname(1:ie+1), &
+ cstatus = nc_put_att_schar(cncid, cvarid, cname(1:ie), &
                            cxtype, cnlen, i1vals) 
 #elif NF_INT1_IS_C_SHORT
- cstatus = nc_put_att_short(cncid, cvarid, cname(1:ie+1), &
+ cstatus = nc_put_att_short(cncid, cvarid, cname(1:ie), &
                             cxtype, cnlen, i1vals)
 #elif NF_INT1_IS_C_INT
- cstatus = nc_put_att_int(cncid, cvarid, cname(1:ie+1), &
+ cstatus = nc_put_att_int(cncid, cvarid, cname(1:ie), &
                             cxtype, cnlen, i1vals)
 #elif NF_INT1_IS_C_LONG
- cstatus = nc_put_att_long(cncid, cvarid, cname(1:ie+1), &
+ cstatus = nc_put_att_long(cncid, cvarid, cname(1:ie), &
                            cxtype, cnlen, i1vals)
 #endif
  status = cstatus
@@ -154,17 +155,16 @@
 
  Implicit NONE
 
- Integer,              Intent(IN) :: ncid, varid, nlen, xtype
-
- Character(LEN=*),     Intent(IN) :: name
- Integer(KIND=NFINT2), Intent(IN) :: i2vals(*)
+ Integer,          Intent(IN) :: ncid, varid, nlen, xtype
+ Character(LEN=*), Intent(IN) :: name
+ Integer(NFINT2),  Intent(IN) :: i2vals(*)
 
- Integer                          :: status
+ Integer                      :: status
 
- Integer(KIND=C_INT)             :: cncid, cvarid, cstatus, cxtype
- Integer(KIND=C_SIZE_T)          :: cnlen
- Character(LEN=(LEN(name)+1))    :: cname
- Integer                         :: ie
+ Integer(C_INT)               :: cncid, cvarid, cstatus, cxtype
+ Integer(C_SIZE_T)            :: cnlen
+ Character(LEN=(LEN(name)+1)) :: cname
+ Integer                      :: ie
 
  If (C_SHORT < 0) Then ! short not supported by processor
    status = NC_EBADTYPE
@@ -179,13 +179,13 @@
  cname = addCNullChar(name, ie)
 
 #if NF_INT2_IS_C_SHORT 
- cstatus = nc_put_att_short(cncid, cvarid, cname(1:ie+1), &
+ cstatus = nc_put_att_short(cncid, cvarid, cname(1:ie), &
                             cxtype, cnlen, i2vals) 
 #elif NF_INT2_IS_C_INT 
- cstatus = nc_put_att_int(cncid, cvarid, cname(1:ie+1), &
+ cstatus = nc_put_att_int(cncid, cvarid, cname(1:ie), &
                            cxtype, cnlen, i2vals)
 #elif NF_INT2_IS_C_LONG 
- cstatus = nc_put_att_long(cncid, cvarid, cname(1:ie+1), &
+ cstatus = nc_put_att_long(cncid, cvarid, cname(1:ie), &
                            cxtype, cnlen, i2vals)
 #endif 
  status = cstatus
@@ -202,14 +202,13 @@
  Implicit NONE
 
  Integer,          Intent(IN) :: ncid, varid, nlen, xtype
-
  Character(LEN=*), Intent(IN) :: name
  Integer(NFINT),   Intent(IN) :: ivals(*)
 
  Integer                      :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus, cxtype
- Integer(KIND=C_SIZE_T)       :: cnlen
+ Integer(C_INT)               :: cncid, cvarid, cstatus, cxtype
+ Integer(C_SIZE_T)            :: cnlen
  Character(LEN=(LEN(name)+1)) :: cname
  Integer :: ie
 
@@ -223,10 +222,10 @@
  cname = addCNullChar(name, ie)
 
 #if NF_INT_IS_C_INT 
- cstatus = nc_put_att_int(cncid, cvarid, cname(1:ie+1), &
+ cstatus = nc_put_att_int(cncid, cvarid, cname(1:ie), &
                           cxtype, cnlen, ivals) 
 #elif NF_INT_IS_C_LONG 
- cstatus = nc_put_att_long(cncid, cvarid, cname(1:ie+1), &
+ cstatus = nc_put_att_long(cncid, cvarid, cname(1:ie), &
                           cxtype, cnlen, ivals) 
 #endif
  status = cstatus
@@ -243,14 +242,13 @@
  Implicit NONE
 
  Integer,          Intent(IN) :: ncid, varid, nlen, xtype
-
  Character(LEN=*), Intent(IN) :: name
  Real(NFREAL),     Intent(IN) :: rvals(*)
 
  Integer                      :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus, cxtype
- Integer(KIND=C_SIZE_T)       :: cnlen
+ Integer(C_INT)               :: cncid, cvarid, cstatus, cxtype
+ Integer(C_SIZE_T)            :: cnlen
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -264,10 +262,10 @@
  cname = addCNullChar(name, ie)
 
 #if NF_REAL_IS_C_DOUBLE 
- cstatus = nc_put_att_double(cncid, cvarid, cname(1:ie+1), &
+ cstatus = nc_put_att_double(cncid, cvarid, cname(1:ie), &
                              cxtype, cnlen, rvals) 
 #else
- cstatus = nc_put_att_float(cncid, cvarid, cname(1:ie+1), &
+ cstatus = nc_put_att_float(cncid, cvarid, cname(1:ie), &
                             cxtype, cnlen, rvals) 
 #endif
  status = cstatus
@@ -284,14 +282,13 @@
  Implicit NONE
 
  Integer,          Intent(IN) :: ncid, varid, nlen, xtype
-
  Character(LEN=*), Intent(IN) :: name
  Real(RK8),        Intent(IN) :: dvals(*)
 
  Integer                      :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus, cxtype
- Integer(KIND=C_SIZE_T)       :: cnlen
+ Integer(C_INT)               :: cncid, cvarid, cstatus, cxtype
+ Integer(C_SIZE_T)            :: cnlen
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -304,7 +301,7 @@
 
  cname = addCNullChar(name, ie)
  
- cstatus = nc_put_att_double(cncid, cvarid, cname(1:ie+1), &
+ cstatus = nc_put_att_double(cncid, cvarid, cname(1:ie), &
                              cxtype, cnlen, dvals) 
 
  status = cstatus
@@ -325,7 +322,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus
+ Integer(C_INT)               :: cncid, cvarid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -337,7 +334,7 @@
 
  cname = addCNullChar(name, ie)
  
- cstatus = nc_get_att_text(cncid, cvarid, cname(1:ie+1), text)
+ cstatus = nc_get_att_text(cncid, cvarid, cname(1:ie), text)
 
  status = cstatus
 
@@ -358,7 +355,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus
+ Integer(C_INT)               :: cncid, cvarid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -369,7 +366,7 @@
 
  cname = addCNullChar(name, ie)
  
- cstatus = nc_get_att_text(cncid, cvarid, cname(1:ie+1), text)
+ cstatus = nc_get_att_text(cncid, cvarid, cname(1:ie), text)
 
  status = cstatus
 
@@ -383,13 +380,13 @@
 
  Implicit NONE
 
- Integer,              Intent(IN)  :: ncid, varid
- Character(LEN=*),     Intent(IN)  :: name
- Integer(KIND=NFINT1), Intent(OUT) :: i1vals(*)
+ Integer,          Intent(IN)  :: ncid, varid
+ Character(LEN=*), Intent(IN)  :: name
+ Integer(NFINT1),  Intent(OUT) :: i1vals(*)
 
- Integer                          :: status
+ Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus
+ Integer(C_INT)               :: cncid, cvarid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -406,13 +403,13 @@
  cname = addCNullChar(name, ie)
 
 #if NF_INT1_IS_C_SIGNED_CHAR 
- cstatus = nc_get_att_schar(cncid, cvarid, cname(1:ie+1), i1vals)
+ cstatus = nc_get_att_schar(cncid, cvarid, cname(1:ie), i1vals)
 #elif NF_INT1_IS_C_SHORT
- cstatus = nc_get_att_short(cncid, cvarid, cname(1:ie+1), i1vals)
+ cstatus = nc_get_att_short(cncid, cvarid, cname(1:ie), i1vals)
 #elif NF_INT1_IS_C_INT
- cstatus = nc_get_att_int(cncid, cvarid, cname(1:ie+1), i1vals)
+ cstatus = nc_get_att_int(cncid, cvarid, cname(1:ie), i1vals)
 #elif NF_INT1_IS_C_LONG
- cstatus = nc_get_att_long(cncid, cvarid, cname(1:ie+1), i1vals)
+ cstatus = nc_get_att_long(cncid, cvarid, cname(1:ie), i1vals)
 #endif
  status = cstatus
 
@@ -426,13 +423,13 @@
 
  Implicit NONE
 
- Integer,              Intent(IN)  :: ncid, varid
- Character(LEN=*),     Intent(IN)  :: name
- Integer(KIND=NFINT2), Intent(OUT) :: i2vals(*)
+ Integer,          Intent(IN)  :: ncid, varid
+ Character(LEN=*), Intent(IN)  :: name
+ Integer(NFINT2),  Intent(OUT) :: i2vals(*)
 
- Integer                           :: status
+ Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus
+ Integer(C_INT)               :: cncid, cvarid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -449,11 +446,11 @@
  cname = addCNullChar(name, ie)
  
 #if NF_INT2_IS_C_SHORT
- cstatus = nc_get_att_short(cncid, cvarid, cname(1:ie+1), i2vals) 
+ cstatus = nc_get_att_short(cncid, cvarid, cname(1:ie), i2vals) 
 #elif NF_INT2_IS_C_INT
- cstatus = nc_get_att_int(cncid, cvarid, cname(1:ie+1), i2vals) 
+ cstatus = nc_get_att_int(cncid, cvarid, cname(1:ie), i2vals) 
 #elif NF_INT2_IS_C_LONG
- cstatus = nc_get_att_long(cncid, cvarid, cname(1:ie+1), i2vals) 
+ cstatus = nc_get_att_long(cncid, cvarid, cname(1:ie), i2vals) 
 #endif
  status = cstatus
 
@@ -473,7 +470,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus
+ Integer(C_INT)               :: cncid, cvarid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -485,9 +482,9 @@
  cname = addCNullChar(name, ie)
 
 #if NF_INT_IS_C_INT 
- cstatus = nc_get_att_int(cncid, cvarid, cname(1:ie+1), ivals)
+ cstatus = nc_get_att_int(cncid, cvarid, cname(1:ie), ivals)
 #elif NF_INT_IS_C_LONG
- cstatus = nc_get_att_long(cncid, cvarid, cname(1:ie+1), ivals)
+ cstatus = nc_get_att_long(cncid, cvarid, cname(1:ie), ivals)
 #endif
  status = cstatus
 
@@ -507,7 +504,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus
+ Integer(C_INT)               :: cncid, cvarid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -519,9 +516,9 @@
  cname = addCNullChar(name, ie)
 
 #if NF_REAL_IS_C_DOUBLE 
- cstatus = nc_get_att_double(cncid, cvarid, cname(1:ie+1), rvals) 
+ cstatus = nc_get_att_double(cncid, cvarid, cname(1:ie), rvals) 
 #else
- cstatus = nc_get_att_float(cncid, cvarid, cname(1:ie+1), rvals) 
+ cstatus = nc_get_att_float(cncid, cvarid, cname(1:ie), rvals) 
 #endif
  status = cstatus
 
@@ -541,7 +538,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus
+ Integer(C_INT)               :: cncid, cvarid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -552,7 +549,7 @@
 
  cname = addCNullChar(name, ie)
  
- cstatus = nc_get_att_double(cncid, cvarid, cname(1:ie+1), dvals)
+ cstatus = nc_get_att_double(cncid, cvarid, cname(1:ie), dvals)
 
  status = cstatus
 
diff --git a/fortran/nf_control.F90 b/fortran/nf_control.F90
index 4f65f64..3cca36a 100755
--- a/fortran/nf_control.F90
+++ b/fortran/nf_control.F90
@@ -28,7 +28,10 @@
 ! Version 5.: Feb.   2013 - Added nf_inq_path support for fortran 4.4
 ! Vertion 6.: Nov.   2013 - Added nf_set_log_level support
 ! Version 7.: May,   2014 - Ensure return error status checked from C API calls
-!
+! Version 8.: Jan.,  2016 - General code cleanup. Changed name processing to
+!                           reflect change in addCNullChar function. Added
+!                           support for nc_open_mem
+ 
 !-------------------------------- nf_create --------------------------------
  Function nf_create(path, cmode, ncid) RESULT (status)
 
@@ -45,21 +48,20 @@
  
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: ccmode, cncid, cstatus
+ Integer(C_INT)               :: ccmode, cncid, cstatus
  Character(LEN=(LEN(path)+1)) :: cpath
  Integer                      :: ie
 
  ccmode = cmode
  cncid  = 0
  
-! Check for C null character on path. We will always add a null
-! char so we don't need a second one
+! Check for C null character on path and add one if not present.
 
  cpath = addCNullChar(path, ie)
  
 ! Call nc_create to create file
 
- cstatus = nc_create(cpath(1:ie+1), ccmode, cncid)
+ cstatus = nc_create(cpath(1:ie), ccmode, cncid)
  
  If (cstatus == NC_NOERR) Then
     ncid   = cncid 
@@ -85,8 +87,8 @@
  
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: ccmode, cncid, cstatus
- Integer(KIND=C_SIZE_T)       :: cinit, cchunk
+ Integer(C_INT)               :: ccmode, cncid, cstatus
+ Integer(C_SIZE_T)            :: cinit, cchunk
  Character(LEN=(LEN(path)+1)) :: cpath
  Integer                      :: ie
 
@@ -95,14 +97,13 @@
  cinit  = initialsz
  cncid  = 0
  
-! Check for C null character on path. We will always add a null
-! char so we don't need a second one
+! Check for C null character on path and add one if not present.
 
  cpath = addCNullChar(path, ie)
  
 ! Call nc_create to create file
 
- cstatus = nc__create(cpath(1:ie+1), ccmode, cinit, cchunk, cncid)
+ cstatus = nc__create(cpath(1:ie), ccmode, cinit, cchunk, cncid)
  
  If (cstatus == NC_NOERR) Then
     ncid   = cncid 
@@ -116,7 +117,7 @@
 
 ! Creates a new NetCDF file and returns the file id and a status flag
 ! This is an alternate form of nf__create for shared memory MPP systems 
-! two additional tuning parameters
+! plus two additional tuning parameters
 
  USE netcdf_nc_interfaces
 
@@ -128,9 +129,9 @@
  
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: ccmode, cncid, cstatus
- Integer(KIND=C_INT), TARGET  :: cbasepe
- Integer(KIND=C_SIZE_T)       :: cinit, cchunk
+ Integer(C_INT)               :: ccmode, cncid, cstatus
+ Integer(C_INT), TARGET       :: cbasepe
+ Integer(C_SIZE_T)            :: cinit, cchunk
  Type(C_PTR)                  :: cbasepeptr
  Character(LEN=(LEN(path)+1)) :: cpath
  Integer                      :: ie
@@ -142,14 +143,13 @@
  cbasepe    = basepe
  cbasepeptr = C_LOC(cbasepe)
 
-! Check for C null character on path. We will always add a null
-! char so we don't need a second one
+! Check for C null character on path and add one if not present.
 
  cpath = addCNullChar(path, ie)
  
 ! Call nc_create_mp to create file for base pe
 
- cstatus = nc__create_mp(cpath(1:ie+1), ccmode, cinit, cbasepeptr, &
+ cstatus = nc__create_mp(cpath(1:ie), ccmode, cinit, cbasepeptr, &
                          cchunk, cncid)
  
  If (cstatus == NC_NOERR) Then
@@ -173,21 +173,20 @@
  
  Integer                         :: status
 
- Integer(KIND=C_INT)          :: cmode, cncid, cstatus
+ Integer(C_INT)               :: cmode, cncid, cstatus
  Character(LEN=(LEN(path)+1)) :: cpath
  Integer                      :: ie
 
  cmode = mode
  cncid = 0
  
-! Check for C null character on path. We will always add a null
-! char so we don't need a second one
+! Check for C null character on path and add one if not present.
 
  cpath = addCNullChar(path, ie) 
  
 ! Call nc_create to create file
 
- cstatus = nc_open(cpath(1:ie+1), cmode, cncid)
+ cstatus = nc_open(cpath(1:ie), cmode, cncid)
  
  If (cstatus == NC_NOERR) Then
     ncid   = cncid
@@ -211,8 +210,8 @@
  
  Integer                         :: status
 
- Integer(KIND=C_INT)          :: cmode, cncid, cstatus
- Integer(KIND=C_SIZE_T)       :: cchunk
+ Integer(C_INT)               :: cmode, cncid, cstatus
+ Integer(C_SIZE_T)            :: cchunk
  Character(LEN=(LEN(path)+1)) :: cpath
  Integer                      :: inull, ie
 
@@ -220,14 +219,13 @@
  cchunk = chunksizehintp
  cncid  = 0
  
-! Check for C null character in path. A null character is always added
-! before we pass path to C we don't need a second one
+! Check for C null character on path and add one if not present.
 
  cpath = addCNullChar(path,ie)
  
 ! Call nc_create to create file
 
- cstatus = nc__open(cpath(1:ie+1), cmode, cchunk, cncid)
+ cstatus = nc__open(cpath(1:ie), cmode, cchunk, cncid)
  
  If (cstatus == NC_NOERR) Then
     ncid   = cncid
@@ -252,9 +250,9 @@
  
  Integer                         :: status
 
- Integer(KIND=C_INT)          :: cmode, cncid, cstatus
- Integer(KIND=C_INT), TARGET  :: cbasepe
- Integer(KIND=C_SIZE_T)       :: cchunk
+ Integer(C_INT)               :: cmode, cncid, cstatus
+ Integer(C_INT), TARGET       :: cbasepe
+ Integer(C_SIZE_T)            :: cchunk
  Type(C_PTR)                  :: cbasepeptr
  Character(LEN=(LEN(path)+1)) :: cpath
  Integer                      :: ie
@@ -265,14 +263,13 @@
  cbasepe    = basepe
  cbasepeptr = C_LOC(cbasepe)
  
-! Check for C null character in path. A null character is always added
-! before we pass path to C we don't need a second one
+! Check for C null character on path and add one if not present.
 
- cpath = addCNullChar(path, ie) 
+ cpath = addCNullChar(path, ie)
  
 ! Call nc_create to create file
 
- cstatus = nc__open_mp(cpath(1:ie+1), cmode, cbasepeptr, cchunk, &
+ cstatus = nc__open_mp(cpath(1:ie), cmode, cbasepeptr, cchunk, &
                        cncid)
  
  If (cstatus == NC_NOERR) Then
@@ -281,6 +278,44 @@
  status = cstatus
 
  End Function nf__open_mp
+!-------------------------------- nf_open_mem --------------------------------
+ Function nf_open_mem(path, mode, size, memory, ncid) RESULT(status)
+
+! Open a block of memory passed as an array of C_CHAR bytes as a
+! netcdf file. Note the file can only be opened as read-only
+
+   USE netcdf_nc_interfaces
+
+   Implicit NONE
+
+   Character(LEN=*),       Intent(IN)           :: path
+   Integer,                Intent(IN)           :: mode
+   Integer,                Intent(IN)           :: size
+   Character(KIND=C_CHAR), Intent(IN),   TARGET :: memory(*)
+   Integer,                Intent(INOUT)        :: ncid
+
+   Integer                            :: status
+ 
+   Integer(C_INT)             :: cstatus, cmode, cncid
+   Character(LEN=LEN(path)+1) :: cpath
+   Integer(C_SIZE_T)          :: csize
+   Type(C_PTR)                :: cmemoryptr
+
+   Integer :: ie
+
+   cpath = addCNullChar(path, ie)
+   cmode = mode
+   csize = size
+
+   cmemoryptr = C_LOC(memory)
+
+   cstatus = nc_open_mem(cpath(1:ie), cmode, csize, cmemoryptr, cncid)
+
+   ncid = cncid
+
+   status = cstatus
+ 
+ End Function nf_open_mem
 !-------------------------------- nf_inq_path ------------------------------
  Function nf_inq_path(ncid, pathlen, path) RESULT(status)
 
@@ -328,7 +363,7 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cfill, coldmode, cstatus
+ Integer(C_INT) :: cncid, cfill, coldmode, cstatus
 
  cncid    = ncid
  cfill    = fillmode
@@ -357,7 +392,7 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cnew, cold, cstatus
+ Integer(C_INT) :: cnew, cold, cstatus
 
  cnew = newform
 
@@ -372,7 +407,7 @@
 !-------------------------------- nf_redef ---------------------------------
  Function nf_redef(ncid) RESULT(status)
  
-! Re-Enter definition mode for NetCDF file id ncid 
+! Reenter definition mode for NetCDF file id ncid 
 
  USE netcdf_nc_interfaces
 
@@ -382,7 +417,7 @@
 
  Integer             :: status
 
- Integer(KIND=C_INT) :: cncid, cstatus
+ Integer(C_INT) :: cncid, cstatus
 
  cncid = ncid
 
@@ -404,7 +439,7 @@
 
  Integer             :: status
 
- Integer(KIND=C_INT) :: cncid, cstatus
+ Integer(C_INT) :: cncid, cstatus
 
  cncid = ncid
 
@@ -428,8 +463,8 @@
 
  Integer             :: status
 
- Integer(KIND=C_INT)    :: cncid, cstatus
- Integer(KIND=C_SIZE_T) :: chminfree, cvalign, cvminfree, cralign
+ Integer(C_INT)    :: cncid, cstatus
+ Integer(C_SIZE_T) :: chminfree, cvalign, cvminfree, cralign
 
  cncid     = ncid
  chminfree = h_minfree
@@ -455,7 +490,7 @@
 
  Integer             :: status
 
- Integer(KIND=C_INT) :: cncid, cstatus
+ Integer(C_INT) :: cncid, cstatus
 
  cncid = ncid
 
@@ -477,7 +512,7 @@
 
  Integer             :: status
 
- Integer(KIND=C_INT) :: cncid, cstatus
+ Integer(C_INT) :: cncid, cstatus
 
  cncid = ncid
 
@@ -499,7 +534,7 @@
 
  Integer             :: status
 
- Integer(KIND=C_INT) :: cncid, cstatus
+ Integer(C_INT) :: cncid, cstatus
 
  cncid   = ncid
 
@@ -521,13 +556,15 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)          :: cstatus
+ Integer(C_INT)               :: cstatus
  Character(LEN=(LEN(path)+1)) :: cpath
  Integer                      :: ie
 
+! Check for C null character on path and add one if not present.
+
  cpath = addCNullChar(path,ie)
  
- cstatus = nc_delete(cpath(1:ie+1))
+ cstatus = nc_delete(cpath(1:ie))
 
  status = cstatus
 
@@ -547,15 +584,17 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)          :: cstatus, cpe
+ Integer(C_INT)               :: cstatus, cpe
  Character(LEN=(LEN(path)+1)) :: cpath
  Integer                      :: ie
 
  cpe = pe
 
+! Check for C null character on path and add one if not present.
+
  cpath = addCNullChar(path,ie)
  
- cstatus = nc_delete_mp(cpath(1:ie+1), cpe)
+ cstatus = nc_delete_mp(cpath(1:ie), cpe)
 
  status = cstatus
 
@@ -573,7 +612,7 @@
 
  Integer             :: status
 
- Integer(KIND=C_INT) :: cncid, cpe, cstatus
+ Integer(C_INT) :: cncid, cpe, cstatus
 
  cncid = ncid
  cpe   = pe
@@ -597,7 +636,7 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cpe, cstatus
+ Integer(C_INT) :: cncid, cpe, cstatus
 
  cncid = ncid
 
@@ -607,4 +646,5 @@
     pe     = cpe
  EndIf
  status = cstatus
+
 End Function nf_inq_base_pe
diff --git a/fortran/nf_dim.f90 b/fortran/nf_dim.f90
index d6a6eaa..68b8444 100755
--- a/fortran/nf_dim.f90
+++ b/fortran/nf_dim.f90
@@ -25,8 +25,11 @@
 ! Version 2.: May   2006 - Updated to support g95
 ! Version 3.: April 2009 - Updated for netCDF 4.0.1
 ! Version 4.: April 2010 - Updated for netCDF 4.1.1
-! Version 5.: May   2014 - Ensure return error status checked from C API calls          
-          
+! Version 5.: May   2014 - Ensure return error status
+!                          checked from C API calls
+! Version 6.: Jan.  2016 - General code cleanup. Changed name
+!                          processing to reflect change in addCNullChar
+
 !-------------------------------- nf_def_dim -------------------------------
  Function nf_def_dim(ncid, name, dlen, dimid) RESULT (status)
 
@@ -43,8 +46,8 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cdimid, cstatus
- Integer(KIND=C_SIZE_T)       :: cdlen
+ Integer(C_INT)               :: cncid, cdimid, cstatus
+ Integer(C_SIZE_T)            :: cdlen
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -58,7 +61,7 @@
 
  cname = addCNullChar(name, ie)
  
- cstatus = nc_def_dim(cncid, cname(1:ie+1), cdlen, cdimid)
+ cstatus = nc_def_dim(cncid, cname(1:ie), cdlen, cdimid)
 
  If (cstatus == NC_EBADDIM) Then  ! Return dimid=-1
    dimid = -1
@@ -83,8 +86,8 @@
  
  Integer                       :: status
 
- Integer(KIND=C_INT)        :: cncid, cdimid, cstatus
- Integer(KIND=C_SIZE_T)     :: cdlen
+ Integer(C_INT)             :: cncid, cdimid, cstatus
+ Integer(C_SIZE_T)          :: cdlen
  Integer                    :: nlen
  Character(LEN=NC_MAX_NAME) :: tmpname 
 
@@ -122,7 +125,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cdimid, cstatus
+ Integer(C_INT)               :: cncid, cdimid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -134,7 +137,7 @@
 
  cname = addCNullChar(name, ie)
  
- cstatus = nc_inq_dimid(cncid, cname(1:ie+1), cdimid)
+ cstatus = nc_inq_dimid(cncid, cname(1:ie), cdimid)
 
 ! add one to get FORTRAN dimid if not = -1
 
@@ -160,8 +163,8 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT)    :: cncid, cdimid, cstatus
- Integer(KIND=C_SIZE_T) :: cdlen
+ Integer(C_INT)    :: cncid, cdimid, cstatus
+ Integer(C_SIZE_T) :: cdlen
 
  cncid   = ncid
  cdimid  = dimid - 1 ! Subtract 1 to get C dimid
@@ -189,7 +192,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)        :: cncid, cdimid, cstatus
+ Integer(C_INT)             :: cncid, cdimid, cstatus
  Integer                    :: nlen
  Character(LEN=NC_MAX_NAME) :: tmpname 
 
@@ -225,7 +228,7 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)          :: cncid, cdimid, cstatus
+ Integer(C_INT)               :: cncid, cdimid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -236,7 +239,7 @@
 
  cname = addCNullChar(name, ie)
 
- cstatus = nc_rename_dim(cncid, cdimid, cname(1:ie+1))
+ cstatus = nc_rename_dim(cncid, cdimid, cname(1:ie))
 
  status = cstatus
 
diff --git a/fortran/nf_fortv2.f90 b/fortran/nf_fortv2.f90
index 269c1ed..6682207 100755
--- a/fortran/nf_fortv2.f90
+++ b/fortran/nf_fortv2.f90
@@ -28,6 +28,12 @@
 ! Version 2: April 2009 - Refactored to pass value data using C_CHAR and C_PTR
 !                         strings and pointers and updated for NetCDF 4.0.1
 ! Version 3: April 2010 - updated for NetCDF 4.1.1
+! Version 4: Jan.  2016 - Code cleanup. Replaced automatic arrays dimensioned
+!                         by NC_MAX_DIMS with allocatable arrays. Fixed
+!                         potential but with strides definitions that
+!                         wasn't caught by checks since no checks for
+!                         the routines that use them exist. Changed name
+!                         processing to reflect change in addCNullchar
 
 ! ------------------------------- ncpopt -------------------------------------- 
  Subroutine ncpopt(ncopts)
@@ -38,7 +44,7 @@
 
  Integer, Intent(IN) :: ncopts
  
- Integer(KIND=C_INT) :: cncopts
+ Integer(C_INT) :: cncopts
 
  cncopts = ncopts
 
@@ -54,7 +60,7 @@
 
  Integer, Intent(INOUT) :: ncopts
 
- Integer(KIND=C_INT)    :: cncopts
+ Integer(C_INT) :: cncopts
 
  cncopts = 0 
 
@@ -78,7 +84,7 @@
 
  Character(LEN=(LEN(filename)+1)) :: cfilename
  Integer                          :: ilen
- Integer(KIND=C_INT)              :: ccmode, crcode, cncid 
+ Integer(C_INT)                   :: ccmode, crcode, cncid 
 
  ccmode = cmode
  cncid  = 0
@@ -89,7 +95,7 @@
 
  cfilename = addCNullChar(filename, ilen)
  
- cncid = c_nccre(cfilename(1:ilen+1), ccmode, crcode )
+ cncid = c_nccre(cfilename(1:ilen), ccmode, crcode )
 
  rcode = crcode 
  ncid  = cncid
@@ -110,7 +116,7 @@
 
  Character(LEN=(LEN(filename)+1)) :: cfilename
  Integer                          :: ilen
- Integer(KIND=C_INT)              :: crwmode, crcode, cncid 
+ Integer(C_INT)                   :: crwmode, crcode, cncid 
 
  crwmode = rwmode
  rcode   = 0
@@ -121,7 +127,7 @@
 
  cfilename = addCNullChar(filename, ilen)
  
- cncid = c_ncopn(cfilename(1:ilen+1), crwmode, crcode )
+ cncid = c_ncopn(cfilename(1:ilen), crwmode, crcode )
 
  rcode = crcode 
  ncid  = cncid
@@ -142,7 +148,7 @@
 
  Character(LEN=(LEN(dimname)+1)) :: cdimname
  Integer                         :: ilen
- Integer(KIND=C_INT)             :: cncid, cdimlen, cndimid, crcode
+ Integer(C_INT)                  :: cncid, cdimlen, cndimid, crcode
 
  cncid   = ncid
  cdimlen = dimlen
@@ -154,7 +160,7 @@
 
  cdimname = addCNullChar(dimname, ilen)
  
- cndimid = c_ncddef(cncid, cdimname(1:ilen+1), cdimlen, crcode )
+ cndimid = c_ncddef(cncid, cdimname(1:ilen), cdimlen, crcode )
  
  rcode  = crcode 
  ndimid = cndimid
@@ -175,7 +181,7 @@
 
  Character(LEN=(LEN(dimname)+1)) :: cdimname
  Integer                         :: ilen
- Integer(KIND=C_INT)             :: cncid, crcode, cndimid
+ Integer(C_INT)                  :: cncid, crcode, cndimid
 
  cncid   = ncid
  cndimid = 0
@@ -186,7 +192,7 @@
 
  cdimname = addCNullChar(dimname, ilen)
  
- cndimid = c_ncdid(cncid, cdimname(1:ilen+1), crcode )
+ cndimid = c_ncdid(cncid, cdimname(1:ilen), crcode )
 
  rcode  = crcode 
  ndimid = cndimid
@@ -195,7 +201,6 @@
 ! ------------------------------- ncvdef -------------------------------------- 
  Function ncvdef(ncid, varname, vartype, nvdims, vdims, rcode) RESULT(nvarid)
 
- USE netcdf_nc_interfaces, ONLY : NC_MAX_DIMS
  USE netcdf_fortv2_c_interfaces
 
  Implicit NONE
@@ -209,8 +214,10 @@
 
  Character(LEN=(LEN(varname)+1)) :: cvarname
  Integer                         :: ilen
- Integer(KIND=C_INT)             :: cncid, crcode, cnvdims, cvartype, cnvarid
- Integer(KIND=C_INT)             :: cvdims(NC_MAX_DIMS)
+ Integer(C_INT)                  :: cncid, crcode, cnvdims, cvartype, cnvarid
+ Type(C_PTR)                     :: cvdimsptr
+
+ Integer(C_INT), ALLOCATABLE, TARGET :: cvdims(:)
 
  cncid    = ncid
  cnvdims  = nvdims 
@@ -225,18 +232,23 @@
  cvarname = addCNullChar(varname, ilen)
  
  ! mimic f2c_dimids
+ cvdimsptr = C_NULL_PTR
 
- cvdims = 0
  If (nvdims > 0) Then
+   ALLOCATE(cvdims(nvdims))
    cvdims(1:nvdims) = vdims(nvdims:1:-1) - 1
- EndIf
-
- cnvarid = c_ncvdef(cncid, cvarname(1:ilen+1), cvartype, &
-                    cnvdims, cvdims, crcode )
+   cvdimsptr = C_LOC(cvdims)
+ EndIf 
+  
+ cnvarid = c_ncvdef(cncid, cvarname(1:ilen), cvartype, &
+                    cnvdims, cvdimsptr, crcode )
 
  rcode  = crcode 
  nvarid = cnvarid
 
+ cvdimsptr = C_NULL_PTR
+ If (ALLOCATED(cvdims)) DEALLOCATE(cvdims)
+
  End Function ncvdef
 ! ------------------------------- ncvid --------------------------------------- 
  Function ncvid(ncid, varname, rcode) RESULT(nvarid)
@@ -253,7 +265,7 @@
 
  Character(LEN=(LEN(varname)+1)) :: cvarname
  Integer                         :: ilen
- Integer(KIND=C_INT)             :: cncid, crcode, cnvarid
+ Integer(C_INT)                  :: cncid, crcode, cnvarid
 
  cncid   = ncid
  crcode  = 0
@@ -265,7 +277,7 @@
 
  cvarname = addCNullChar(varname, ilen)
  
- cnvarid = c_ncvid(cncid, cvarname(1:ilen+1), crcode)
+ cnvarid = c_ncvid(cncid, cvarname(1:ilen), crcode)
 
  rcode  = crcode 
  nvarid = cnvarid
@@ -283,7 +295,7 @@
 
  Integer              :: nvarlen
 
- Integer(KIND=C_INT) :: crcode, cnvarlen, cdtype
+ Integer(C_INT) :: crcode, cnvarlen, cdtype
 
  cdtype   = datatype
  crcode   = 0
@@ -307,7 +319,7 @@
  Integer, Intent(IN)  :: ncid 
  Integer, Intent(OUT) :: rcode
 
- Integer(KIND=C_INT) :: crcode, cncid
+ Integer(C_INT) :: crcode, cncid
 
  cncid   = ncid
  crcode  = 0
@@ -328,7 +340,7 @@
  Integer, Intent(IN)  :: ncid 
  Integer, Intent(OUT) :: rcode
 
- Integer(KIND=C_INT) :: crcode, cncid
+ Integer(C_INT) :: crcode, cncid
 
  cncid   = ncid
  crcode  = 0
@@ -349,7 +361,7 @@
  Integer, Intent(IN)  :: ncid 
  Integer, Intent(OUT) :: rcode
 
- Integer(KIND=C_INT) :: crcode, cncid
+ Integer(C_INT) :: crcode, cncid
 
  cncid   = ncid
  crcode  = 0
@@ -370,7 +382,7 @@
  Integer, Intent(IN)  :: ncid 
  Integer, Intent(OUT) :: ndims, nvars, natts, recdim, rcode
 
- Integer(KIND=C_INT) :: crcode, cncid, cndims, cnvars, cnatts, crecdim
+ Integer(C_INT) :: crcode, cncid, cndims, cnvars, cnatts, crecdim
 
  cncid   = ncid
  crcode  = 0
@@ -406,7 +418,7 @@
  Integer, Intent(IN)  :: ncid 
  Integer, Intent(OUT) :: rcode
 
- Integer(KIND=C_INT) :: crcode, cncid
+ Integer(C_INT) :: crcode, cncid
 
  cncid   = ncid
  crcode  = 0
@@ -427,7 +439,7 @@
  Integer, Intent(IN)  :: ncid 
  Integer, Intent(OUT) :: rcode
 
- Integer(KIND=C_INT) :: crcode, cncid
+ Integer(C_INT) :: crcode, cncid
 
  cncid   = ncid
  crcode  = 0
@@ -450,7 +462,7 @@
  Character(LEN=*), Intent(OUT) :: dimname
  Integer,          Intent(OUT) :: dimlen, rcode
 
- Integer(KIND=C_INT)            :: cncid, crcode, cdimlen, cdimid
+ Integer(C_INT)                 :: cncid, crcode, cdimlen, cdimid
  Character(LEN=(NC_MAX_NAME+1)) :: cdimname
  Integer                        :: ilen
 
@@ -468,8 +480,8 @@
 
  dimname = stripCNullChar(cdimname, ilen)
  
- dimlen          = cdimlen
- rcode           = crcode
+ dimlen = cdimlen
+ rcode  = crcode
 
  End Subroutine ncdinq
 ! ------------------------------- ncdren -------------------------------------- 
@@ -484,7 +496,7 @@
  Integer,          Intent(OUT) :: rcode
 
  Character(LEN=(LEN(dimname)+1)) :: cdimname
- Integer(KIND=C_INT)             :: cncid, crcode, cdimid
+ Integer(C_INT)                  :: cncid, crcode, cdimid
  Integer                         :: ilen
 
  cncid  = ncid
@@ -496,7 +508,7 @@
 
  cdimname = addCNullChar(dimname, ilen)
  
- Call c_ncdren(cncid, cdimid, cdimname(1:ilen+1), crcode)
+ Call c_ncdren(cncid, cdimid, cdimname(1:ilen), crcode)
 
  rcode = crcode 
 
@@ -505,7 +517,7 @@
  Subroutine ncvinq(ncid, varid, varname, vartype, nvdims, vdims, &
                    nvatts, rcode)
 
- USE netcdf_nc_interfaces, ONLY: NC_MAX_DIMS, NC_MAX_NAME
+ USE netcdf_nc_interfaces, ONLY: NC_MAX_NAME
  USE netcdf_fortv2_c_interfaces
 
  Implicit NONE
@@ -515,30 +527,37 @@
  Integer,          Intent(OUT)   :: vartype, nvdims, nvatts, rcode
  Integer,          Intent(INOUT) :: vdims(*)
 
- Integer(KIND=C_INT)          :: cncid, crcode, cvarid, cvartype, cnvdims, &
-                                 cnvatts
- Integer(KIND=C_INT)          :: cvdims(NC_MAX_DIMS)
+ Integer(C_INT)               :: cncid, crcode, cvarid, cvartype, cnvdims, &
+                                 cnvatts, cstat1
  Character(LEN=NC_MAX_NAME+1) :: cvarname
  Integer                      :: ilen
 
+ Integer(C_INT), ALLOCATABLE :: cvdims(:)
+
  cncid    = ncid
  cvarid   = varid - 1
  crcode   = 0
  rcode    = 0
- cvdims   = 0
- cvdims   = 0
  vartype  = 0
  nvdims   = 0
  nvatts   = 0
  cnvdims  = 0
- cvdims   = 0
  cnvatts  = 0
  cvartype = 0
  cvarname = REPEAT(" ", LEN(cvarname))
- ilen = LEN(varname)
+ ilen     = LEN(varname)
 
- Call c_ncvinq(cncid, cvarid, cvarname, cvartype, cnvdims, cvdims, cnvatts, &
-               crcode)      
+ cstat1 = nc_inq_varndims(cncid, cvarid, cnvdims)
+ rcode = cstat1
+
+ If (cnvdims > 0) Then
+   ALLOCATE(cvdims(cnvdims))
+ Else
+   ALLOCATE(cvdims(1))
+ EndIf
+ 
+ Call c_ncvinq(cncid, cvarid, cvarname, cvartype, cnvdims, cvdims,  &
+             cnvatts, crcode)      
 
  nvdims  = cnvdims
  vartype = cvartype
@@ -556,11 +575,14 @@
    vdims(1:nvdims) = cvdims(nvdims:1:-1) + 1
  End If
 
+
+ If (ALLOCATED(cvdims)) DEALLOCATE(cvdims)
+
  End Subroutine ncvinq
 ! ------------------------------- ncvpt1 -------------------------------------- 
  Subroutine ncvpt1(ncid, varid, mindex, values, rcode) 
 
- USE netcdf_nc_interfaces, ONLY: NC_MAX_DIMS, NC_NOERR, nc_inq_varndims
+ USE netcdf_nc_interfaces, ONLY: NC_NOERR, nc_inq_varndims
  USE netcdf_fortv2_c_interfaces
 
  Implicit NONE
@@ -570,17 +592,16 @@
  Character(KIND=C_CHAR), Intent(IN), TARGET  :: values(*)
  Integer,                Intent(OUT)         :: rcode
 
- Integer(KIND=C_INT)            :: cncid, crcode, cvarid, cstatus, cndims
- Integer(KIND=C_SIZE_T), TARGET :: cmindex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cmindexptr
- Type(C_PTR)                    :: cvaluesptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, crcode, cvarid, cstatus, cndims
+ Type(C_PTR)    :: cmindexptr, cvaluesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cmindex(:)
 
  cncid   = ncid
  cvarid  = varid - 1
  crcode  = 0
  rcode   = 0
- cmindex = 0
  cndims  = 0
  ndims   = 0
 
@@ -591,9 +612,10 @@
  
  If (cstatus == NC_NOERR) Then ! mimic f2c_coords in C code
    If (ndims > 0) Then
+     ALLOCATE(cmindex(ndims))
      cmindex(1:ndims) = mindex(ndims:1:-1) - 1
+     cmindexptr       = C_LOC(cmindex)
    Endif
-   cmindexptr = C_LOC(cmindex)
  Endif
  
  cvaluesptr = C_LOC(values)
@@ -602,11 +624,17 @@
 
  rcode = crcode
 
+! Make sure there are no dangling pointers and allocated values
+ 
+ cvaluesptr = C_NULL_PTR
+ cmindexptr = C_NULL_PTR
+ If (ALLOCATED(cmindex)) DEALLOCATE(cmindex)
+  
  End Subroutine ncvpt1
 ! ------------------------------- ncvp1c -------------------------------------- 
  Subroutine ncvp1c(ncid, varid, mindex, strings, rcode) 
 
- USE netcdf_nc_interfaces, ONLY: NC_MAX_DIMS, NC_NOERR, nc_inq_varndims
+ USE netcdf_nc_interfaces, ONLY: NC_NOERR, nc_inq_varndims
  USE netcdf_fortv2_c_interfaces
 
  Implicit NONE
@@ -616,61 +644,66 @@
  Character(LEN=*), Intent(IN)  :: strings
  Integer,          Intent(OUT) :: rcode
 
- Integer(KIND=C_INT)            :: cncid, crcode, cvarid, cstatus, cndims
- Integer(KIND=C_SIZE_T), TARGET :: cmindex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cmindexptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, crcode, cvarid, cstatus, cndims
+ Type(C_PTR)    :: cmindexptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cmindex(:)
 
  cncid   = ncid
  cvarid  = varid - 1
  crcode  = 0
  rcode   = 0
- cmindex = 0
  cndims  = 0
  ndims   = 0
 
  cstatus = nc_inq_varndims(cncid, cvarid, cndims)
 
  cmindexptr = C_NULL_PTR
- ndims     = cndims 
+ ndims      = cndims 
 
  If (cstatus == NC_NOERR) Then ! mimic f2c_coords in C code
    If (ndims > 0) Then
+     ALLOCATE(cmindex(ndims))
      cmindex(1:ndims) = mindex(ndims:1:-1) - 1
+     cmindexptr       = C_LOC(cmindex)
    Endif
-   cmindexptr = C_LOC(cmindex)
  Endif
 
  Call c_ncvp1c(cncid, cvarid, cmindexptr, strings, crcode)
 
  rcode = crcode
 
+! Make sure there are no dangling pointers and allocated values
+ 
+ cmindexptr  = C_NULL_PTR
+ If (ALLOCATED(cmindex)) DEALLOCATE(cmindex)
+  
  End Subroutine ncvp1c
 ! ------------------------------- ncvpt --------------------------------------- 
  Subroutine ncvpt(ncid, varid, start, counts, values, rcode) 
 
- USE netcdf_nc_interfaces, ONLY: NC_MAX_DIMS, NC_NOERR, nc_inq_varndims
+ USE netcdf_nc_interfaces, ONLY: NC_NOERR, nc_inq_varndims
  USE netcdf_fortv2_c_interfaces
 
  Implicit NONE
 
- Integer,                Intent(IN)          :: ncid, varid
- Integer,                Intent(IN)          :: start(*), counts(*)
- Character(KIND=C_CHAR), Intent(IN), TARGET  :: values(*)
- Integer,                Intent(OUT)         :: rcode
+ Integer,                Intent(IN)         :: ncid, varid
+ Integer,                Intent(IN)         :: start(*), counts(*)
+ Character(KIND=C_CHAR), Intent(IN), TARGET :: values(*)
+ Integer,                Intent(OUT)        :: rcode
+
+ Integer(C_INT) :: cncid, crcode, cvarid, cstatus, cndims
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Type(C_PTR)    :: cvaluesptr
+ Integer        :: ndims
 
- Integer(KIND=C_INT)            :: cncid, crcode, cvarid, cstatus, cndims
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Type(C_PTR)                    :: cvaluesptr
- Integer                        :: ndims
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1
  crcode  = 0
  rcode   = 0
- cstart  = 0
- ccounts = 0
  cndims  = 0
  ndims   = 0
 
@@ -682,11 +715,13 @@
 
  If (cstatus == NC_NOERR) Then ! mimic f2c_coords, etc. in C code
    If (ndims > 0) Then
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
      cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts) 
    Endif
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts) 
  Endif
 
  cvaluesptr = C_LOC(values)
@@ -695,11 +730,19 @@
 
  rcode = crcode
 
+! Make sure there are no dangling pointers or allocated values
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ cvaluesptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Subroutine ncvpt
 ! ------------------------------- ncvptc--------------------------------------- 
  Subroutine ncvptc(ncid, varid, start, counts, strings, lenstr, rcode) 
 
- USE netcdf_nc_interfaces, ONLY: NC_MAX_DIMS, NC_NOERR, nc_inq_varndims
+ USE netcdf_nc_interfaces, ONLY: NC_NOERR, nc_inq_varndims
  USE netcdf_fortv2_c_interfaces
 
  Implicit NONE
@@ -709,19 +752,17 @@
  Character(LEN=*), Intent(INOUT) :: strings
  Integer,          Intent(OUT)   :: rcode
 
- Integer(KIND=C_INT)            :: cncid, crcode, cvarid, cstatus, cndims, &
-                                   clenstr
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, crcode, cvarid, cstatus, cndims, clenstr 
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1
  clenstr = lenstr
  crcode  = 0
  rcode   = 0
- cstart  = 0
- ccounts = 0
  cndims  = 0
  ndims   = 0
 
@@ -733,11 +774,13 @@
  
  If (cstatus == NC_NOERR) Then ! mimic f2c_coords, etc. in C code
    If (ndims > 0) Then
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
      cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    Endif
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  Endif
 
  Call c_ncvptc(cncid, cvarid, cstartptr, ccountsptr, strings(1:lenstr),&
@@ -745,12 +788,19 @@
 
  rcode = crcode
 
+! Make sure there are no dangling pointers or allocated values
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Subroutine ncvptc
 ! ------------------------------- ncvptg -------------------------------------- 
  Subroutine ncvptg(ncid, varid, start, counts, strides, imap, values, &
                    rcode) 
 
- USE netcdf_nc_interfaces, ONLY: NC_MAX_DIMS, NC_NOERR, nc_inq_varndims
+ USE netcdf_nc_interfaces, ONLY: NC_NOERR, nc_inq_varndims
  USE netcdf_fortv2_c_interfaces
 
  Implicit NONE
@@ -761,58 +811,74 @@
  Character(KIND=C_CHAR), Intent(IN), TARGET  :: values(*)
  Integer,                Intent(OUT)         :: rcode
 
- Integer(KIND=C_INT)               :: cncid, crcode, cvarid, cstatus, cndims
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cimap(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cimapptr, &
-                                      cstridesptr
- Type(C_PTR)                       :: cvaluesptr
- Integer                           :: ndims, inullp
+ Integer(C_INT) :: cncid, crcode, cvarid, cstatus, cndims
+ Type(C_PTR)    :: cstartptr, ccountsptr, cimapptr, cstridesptr 
+ Type(C_PTR)    :: cvaluesptr
+ Integer        :: ndims, inullp
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cimap(:)
 
  cncid   = ncid
  cvarid  = varid - 1
  crcode  = 0
  rcode   = 0
- cstart  = 0
- ccounts = 0
  cndims  = 0
  ndims   = 0
  inullp  = 0
 
- Call convert_v2_imap(cncid, cvarid, imap, cimap, inullp)
- 
  cstatus = nc_inq_varndims(cncid, cvarid, cndims)
 
+ If (cndims > 0) Then
+   ALLOCATE(cimap(cndims)) 
+ Else
+   ALLOCATE(cimap(1))
+ EndIf
+
+ Call convert_v2_imap(cncid, cvarid, imap, cimap, inullp)
+ 
  ndims       = cndims 
  cstartptr   = C_NULL_PTR
  ccountsptr  = C_NULL_PTR
  cstridesptr = C_NULL_PTR
  cimapptr    = C_LOC(cimap)
  If (inullp /= 0) cimapptr = C_NULL_PTR
- 
- If (cstatus == NC_NOERR) Then ! mimic f2c_coords, etc. in C code
-   If (ndims > 0) Then
-     cstart(1:ndims)   = start(ndims:1:-1) - 1
-     ccounts(1:ndims)  = counts(ndims:1:-1)
-     cstrides(1:ndims) = strides(ndims:1:-1) - 1
-   Endif
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
+ If (ndims > 0) Then
+   ALLOCATE(cstart(ndims))
+   ALLOCATE(ccounts(ndims))
+   ALLOCATE(cstrides(ndims))
+   cstart(1:ndims)   = start(ndims:1:-1) - 1
+   ccounts(1:ndims)  = counts(ndims:1:-1)
+   cstrides(1:ndims) = strides(ndims:1:-1)
+   cstartptr         = C_LOC(cstart)
+   ccountsptr        = C_LOC(ccounts)
+   cstridesptr       = C_LOC(cstrides)
  Endif
 
  cvaluesptr = C_LOC(values)
 
  Call c_ncvptg(cncid, cvarid, cstartptr, ccountsptr, cstridesptr, &
                cimapptr, cvaluesptr, crcode)
-
+ 
  rcode = crcode
 
+! Make sure there are no dangling pointers or allocated values
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cvaluesptr  = C_NULL_PTR
+ cimapptr    = C_NULL_PTR
+ If (ALLOCATED(cimap))    DEALLOCATE(cimap)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Subroutine ncvptg
 ! ------------------------------- ncvpgc -------------------------------------- 
  Subroutine ncvpgc(ncid, varid, start, counts, strides, imap, string, rcode) 
 
- USE netcdf_nc_interfaces, ONLY: NC_MAX_DIMS, NC_NOERR, nc_inq_varndims
+ USE netcdf_nc_interfaces, ONLY: NC_NOERR, nc_inq_varndims
  USE netcdf_fortv2_c_interfaces
 
  Implicit NONE
@@ -822,27 +888,30 @@
  Character(LEN=*), Intent(IN)  :: string
  Integer,          Intent(OUT) :: rcode
 
- Integer(KIND=C_INT)               :: cncid, crcode, cvarid, cstatus, cndims
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cimap(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cimapptr
- Integer                           :: ndims, inullp
+ Integer(C_INT) :: cncid, crcode, cvarid, cstatus, cndims
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr, cimapptr 
+ Integer        :: ndims, inullp
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cimap(:)
 
  cncid   = ncid
  cvarid  = varid - 1
  crcode  = 0
  rcode   = 0
- cstart  = 0
- ccounts = 0
  cndims  = 0
  ndims   = 0
  inullp  = 0
 
- Call convert_v2_imap(cncid, cvarid, imap, cimap, inullp)
-
  cstatus = nc_inq_varndims(cncid, cvarid, cndims)
 
+ If (cndims > 0) Then
+  ALLOCATE(cimap(cndims))
+ Else
+  ALLOCATE(cimap(1))
+ EndIf
+
+ Call convert_v2_imap(cncid, cvarid, imap, cimap, inullp)
  ndims       = cndims 
  cstartptr   = C_NULL_PTR
  ccountsptr  = C_NULL_PTR
@@ -850,15 +919,16 @@
  cimapptr    = C_LOC(cimap)
  If (inullp /= 0) cimapptr = C_NULL_PTR
 
- If (cstatus == NC_NOERR) Then ! mimic f2c_coords, etc. in C code
-   If (ndims > 0) Then
-     cstart(1:ndims)   = start(ndims:1:-1) - 1
-     ccounts(1:ndims)  = counts(ndims:1:-1)
-     cstrides(1:ndims) = strides(ndims:1:-1) - 1
-   Endif
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
+ If (ndims > 0) Then
+   ALLOCATE(cstart(ndims))
+   ALLOCATE(ccounts(ndims))
+   ALLOCATE(cstrides(ndims))
+   cstart(1:ndims)   = start(ndims:1:-1) - 1
+   ccounts(1:ndims)  = counts(ndims:1:-1)
+   cstrides(1:ndims) = strides(ndims:1:-1)
+   cstartptr         = C_LOC(cstart)
+   ccountsptr        = C_LOC(ccounts)
+   cstridesptr       = C_LOC(cstrides)
  Endif
 
  Call c_ncvpgc(cncid, cvarid, cstartptr, ccountsptr, cstridesptr, &
@@ -866,11 +936,23 @@
 
  rcode = crcode
 
+
+! Make sure there are no dangling pointers or allocated values
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cimapptr    = C_NULL_PTR
+ If (ALLOCATED(cimap))    DEALLOCATE(cimap)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Subroutine ncvpgc
 ! ------------------------------- ncvgt1 -------------------------------------- 
  Subroutine ncvgt1(ncid, varid, mindex, values, rcode) 
 
- USE netcdf_nc_interfaces, ONLY: NC_MAX_DIMS, NC_NOERR, nc_inq_varndims
+ USE netcdf_nc_interfaces, ONLY: NC_NOERR, nc_inq_varndims
  USE netcdf_fortv2_c_interfaces
 
  Implicit NONE
@@ -880,16 +962,16 @@
  Character(KIND=C_CHAR), Intent(OUT) :: values(*)
  Integer,                Intent(OUT) :: rcode
 
- Integer(KIND=C_INT)            :: cncid, crcode, cvarid, cstatus, cndims
- Integer(KIND=C_SIZE_T), TARGET :: cmindex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cmindexptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, crcode, cvarid, cstatus, cndims
+ Type(C_PTR)    :: cmindexptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cmindex(:)
 
  cncid   = ncid
  cvarid  = varid - 1
  crcode  = 0
  rcode   = 0
- cmindex = 0
  cndims  = 0
  ndims   = 0
 
@@ -900,20 +982,26 @@
  
  If (cstatus == NC_NOERR) Then ! mimic f2c_coords in C code
    If (ndims > 0) Then
+     ALLOCATE(cmindex(ndims))
      cmindex(1:ndims) = mindex(ndims:1:-1) - 1
+     cmindexptr       = C_LOC(cmindex)
    Endif
-   cmindexptr = C_LOC(cmindex)
  Endif
 
  Call c_ncvgt1(cncid, cvarid, cmindexptr, values, crcode)
 
  rcode = crcode
 
+! Make sure there are no dangling pointers and allocated values
+ 
+ cmindexptr  = C_NULL_PTR
+ If (ALLOCATED(cmindex)) DEALLOCATE(cmindex)
+  
  End Subroutine ncvgt1
 ! ------------------------------- ncvg1c -------------------------------------- 
  Subroutine ncvg1c(ncid, varid, mindex, string, rcode) 
 
- USE netcdf_nc_interfaces, ONLY: NC_MAX_DIMS, NC_NOERR, nc_inq_varndims
+ USE netcdf_nc_interfaces, ONLY: NC_NOERR, nc_inq_varndims
  USE netcdf_fortv2_c_interfaces
 
  Implicit NONE
@@ -923,16 +1011,16 @@
  Character(LEN=*), Intent(INOUT) :: string
  Integer,          Intent(OUT)   :: rcode
 
- Integer(KIND=C_INT)            :: cncid, crcode, cvarid, cstatus, cndims
- Integer(KIND=C_SIZE_T), TARGET :: cmindex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cmindexptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, crcode, cvarid, cstatus, cndims
+ Type(C_PTR)    :: cmindexptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cmindex(:)
 
  cncid   = ncid
  cvarid  = varid - 1
  crcode  = 0
  rcode   = 0
- cmindex = 0
  cndims  = 0
  ndims   = 0
 
@@ -943,20 +1031,26 @@
  
  If (cstatus == NC_NOERR) Then ! mimic f2c_coords in C code
    If (ndims > 0) Then
+     ALLOCATE(cmindex(ndims))
      cmindex(1:ndims) = mindex(ndims:1:-1) - 1
+     cmindexptr       = C_LOC(cmindex)
    Endif
-   cmindexptr = C_LOC(cmindex)
  Endif
 
  Call c_ncvg1c(cncid, cvarid, cmindexptr, string, crcode)
 
  rcode = crcode
 
+! Make sure there are no dangling pointers and allocated values
+ 
+ cmindexptr  = C_NULL_PTR
+ If (ALLOCATED(cmindex)) DEALLOCATE(cmindex)
+  
  End Subroutine ncvg1c
 ! ------------------------------- ncvgt --------------------------------------- 
  Subroutine ncvgt(ncid, varid, start, counts, values, rcode) 
 
- USE netcdf_nc_interfaces, ONLY: NC_MAX_DIMS, NC_NOERR, nc_inq_varndims
+ USE netcdf_nc_interfaces, ONLY: NC_NOERR, nc_inq_varndims
  USE netcdf_fortv2_c_interfaces
 
  Implicit NONE
@@ -966,17 +1060,16 @@
  Character(KIND=C_CHAR), Intent(OUT) :: values(*)
  Integer,                Intent(OUT) :: rcode
 
- Integer(KIND=C_INT)            :: cncid, crcode, cvarid, cstatus, cndims
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, crcode, cvarid, cstatus, cndims
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1
  crcode  = 0
  rcode   = 0
- cstart  = 0
- ccounts = 0
  cndims  = 0
  ndims   = 0
 
@@ -988,22 +1081,31 @@
  
  If (cstatus == NC_NOERR) Then ! mimic f2c_coords, etc. in C code
    If (ndims > 0) Then
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
      cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    Endif
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  Endif
 
  Call c_ncvgt(cncid, cvarid, cstartptr, ccountsptr, values, crcode)
 
  rcode = crcode
 
+! Make sure there are no dangling pointers or allocated values
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Subroutine ncvgt
 ! ------------------------------- ncvgtc -------------------------------------- 
  Subroutine ncvgtc(ncid, varid, start, counts, string, lenstr, rcode) 
 
- USE netcdf_nc_interfaces, ONLY: NC_MAX_DIMS, NC_NOERR, nc_inq_varndims
+ USE netcdf_nc_interfaces, ONLY: NC_NOERR, nc_inq_varndims
  USE netcdf_fortv2_c_interfaces
 
  Implicit NONE
@@ -1013,20 +1115,19 @@
  Character(LEN=*), Intent(INOUT) :: string
  Integer,          Intent(OUT)   :: rcode
 
- Integer(KIND=C_INT)            :: cncid, crcode, cvarid, cstatus, cndims, &
-                                   clenstr
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Character(LEN=lenstr+1)        :: cstring
- Integer                        :: ndims, slen
+ Integer(C_INT)          :: cncid, crcode, cvarid, cstatus, cndims, &
+                            clenstr
+ Type(C_PTR)             :: cstartptr, ccountsptr
+ Character(LEN=lenstr+1) :: cstring
+ Integer                 :: ndims, slen
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1
  clenstr = lenstr
  crcode  = 0
  rcode   = 0
- cstart  = 0
- ccounts = 0
  cndims  = 0
  ndims   = 0
  string  = REPEAT(" ", LEN(string))
@@ -1040,11 +1141,13 @@
  
  If (cstatus == NC_NOERR) Then ! mimic f2c_coords, etc. in C code
    If (ndims > 0) Then
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
      cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    Endif
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  Endif
 
  Call c_ncvgtc(cncid, cvarid, cstartptr, ccountsptr, cstring, clenstr, crcode)
@@ -1058,12 +1161,19 @@
 
  rcode = crcode
 
+! Make sure there are no dangling pointers or allocated values
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Subroutine ncvgtc
 ! ------------------------------- ncvgtg -------------------------------------- 
  Subroutine ncvgtg(ncid, varid, start, counts, strides, imap, values, &
                    rcode) 
 
- USE netcdf_nc_interfaces, ONLY: NC_MAX_DIMS, NC_NOERR, nc_inq_varndims
+ USE netcdf_nc_interfaces, ONLY: NC_NOERR, nc_inq_varndims
  USE netcdf_fortv2_c_interfaces
 
  Implicit NONE
@@ -1073,41 +1183,46 @@
  Character(KIND=C_CHAR), Intent(OUT) :: values(*)
  Integer,                Intent(OUT) :: rcode
 
- Integer(KIND=C_INT)               :: cncid, crcode, cvarid, cstatus, cndims
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cimap(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cimapptr, &
-                                      cstridesptr
- Integer                           :: ndims, inullp
+ Integer(C_INT) :: cncid, crcode, cvarid, cstatus, cndims
+ Type(C_PTR)    :: cstartptr, ccountsptr, cimapptr, cstridesptr 
+ Integer        :: ndims, inullp
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cimap(:)
 
  cncid   = ncid
  cvarid  = varid - 1
  crcode  = 0
  rcode   = 0
- cstart  = 0
- ccounts = 0
  cndims  = 0
  inullp  = 0
 
- Call convert_v2_imap(cncid, cvarid, imap, cimap, inullp)
  cstatus = nc_inq_varndims(cncid, cvarid, cndims)
+ If (cndims > 0) Then
+   ALLOCATE(cimap(cndims))
+ Else
+   ALLOCATE(cimap(1))
+ EndIf
+ 
+ Call convert_v2_imap(cncid, cvarid, imap, cimap, inullp)
 
  cstartptr   = C_NULL_PTR
  ccountsptr  = C_NULL_PTR
  cstridesptr = C_NULL_PTR
  cimapptr    = C_LOC(cimap)
  ndims       = cndims 
- If (inullp /= 0) cimapptr = C_NULL_PTR
 
- If (cstatus == NC_NOERR) Then ! mimic f2c_coords, etc. in C code
-   If (ndims > 0) Then
-     cstart(1:ndims)   = start(ndims:1:-1) - 1
-     ccounts(1:ndims)  = counts(ndims:1:-1)
-     cstrides(1:ndims) = strides(ndims:1:-1) - 1
-   Endif
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
+ If (inullp /= 0) cimapptr = C_NULL_PTR
+ If (ndims > 0) Then
+   ALLOCATE(cstart(ndims))
+   ALLOCATE(ccounts(ndims))
+   ALLOCATE(cstrides(ndims))
+   cstart(1:ndims)   = start(ndims:1:-1) - 1
+   ccounts(1:ndims)  = counts(ndims:1:-1)
+   cstrides(1:ndims) = strides(ndims:1:-1)
+   cstartptr         = C_LOC(cstart)
+   ccountsptr        = C_LOC(ccounts)
+   cstridesptr       = C_LOC(cstrides)
  Endif
 
  Call c_ncvgtg(cncid, cvarid, cstartptr, ccountsptr, cstridesptr, &
@@ -1115,11 +1230,22 @@
 
  rcode = crcode
 
+! Make sure there are no dangling pointers or allocated values
+
+ cstartptr    = C_NULL_PTR
+ ccountsptr   = C_NULL_PTR
+ cstridesptr  = C_NULL_PTR
+ cimapptr     = C_NULL_PTR
+ If (ALLOCATED(cimap))    DEALLOCATE(cimap)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Subroutine ncvgtg
 ! ------------------------------- ncvggc -------------------------------------- 
  Subroutine ncvggc(ncid, varid, start, counts, strides, imap, string, rcode) 
 
- USE netcdf_nc_interfaces, ONLY: NC_MAX_DIMS, NC_NOERR, nc_inq_varndims
+ USE netcdf_nc_interfaces, ONLY:  NC_NOERR, nc_inq_varndims
  USE netcdf_fortv2_c_interfaces
 
  Implicit NONE
@@ -1129,13 +1255,14 @@
  Character(LEN=*), Intent(INOUT) :: string
  Integer,          Intent(OUT)   :: rcode
 
- Integer(KIND=C_INT)               :: cncid, crcode, cvarid, cstatus, cndims
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cimap(NC_MAX_DIMS)
- Character(LEN=(LEN(string)+1))    :: cstring
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cimapptr
- Integer                           :: ndims, inullp,slen
+ Integer(C_INT)                 :: cncid, crcode, cvarid, cstatus, cndims
+ Character(LEN=(LEN(string)+1)) :: cstring
+ Type(C_PTR)                    :: cstartptr, ccountsptr, cstridesptr, &
+                                   cimapptr
+ Integer                        :: ndims, inullp,slen
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cimap(:)
 
  cncid   = ncid
  cvarid  = varid - 1
@@ -1149,26 +1276,32 @@
  string  = REPEAT(" ", LEN(string))
  cstring = REPEAT(" ", LEN(cstring)) 
 
- Call convert_v2_imap(cncid, cvarid, imap, cimap, inullp)
-
  cstatus = nc_inq_varndims(cncid, cvarid, cndims)
 
+ If (cndims > 0) Then
+   ALLOCATE(cimap(cndims))
+ Else
+   ALLOCATE(cimap(1))
+ EndIf
+
+ Call convert_v2_imap(cncid, cvarid, imap, cimap, inullp)
  cstartptr   = C_NULL_PTR
  ccountsptr  = C_NULL_PTR
  cstridesptr = C_NULL_PTR
  cimapptr    = C_LOC(cimap)
  ndims       = cndims 
+ 
  If (inullp /= 0) cimapptr = C_NULL_PTR
-
- If (cstatus == NC_NOERR) Then ! mimic f2c_coords, etc. in C code
-   If (ndims > 0) Then
-     cstart(1:ndims)   = start(ndims:1:-1) - 1
-     ccounts(1:ndims)  = counts(ndims:1:-1)
-     cstrides(1:ndims) = strides(ndims:1:-1) - 1
-   Endif
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
+ If (ndims > 0) Then
+   ALLOCATE(cstart(ndims))
+   ALLOCATE(ccounts(ndims))
+   ALLOCATE(cstrides(ndims))
+   cstart(1:ndims)   = start(ndims:1:-1) - 1
+   ccounts(1:ndims)  = counts(ndims:1:-1)
+   cstrides(1:ndims) = strides(ndims:1:-1)
+   cstartptr         = C_LOC(cstart)
+   ccountsptr        = C_LOC(ccounts)
+   cstridesptr       = C_LOC(cstrides)
  Endif
 
  Call c_ncvggc(cncid, cvarid, cstartptr, ccountsptr, cstridesptr, &
@@ -1179,6 +1312,17 @@
 
  rcode = crcode
 
+! Make sure there are no dangling pointers or allocated values
+
+ cstartptr    = C_NULL_PTR
+ ccountsptr   = C_NULL_PTR
+ cstridesptr  = C_NULL_PTR
+ cimapptr     = C_NULL_PTR
+ If (ALLOCATED(cimap))    DEALLOCATE(cimap)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Subroutine ncvggc
 !-------------------------------- ncvren --------------------------------------
  Subroutine ncvren(ncid, varid, newnam, rcode)
@@ -1192,7 +1336,7 @@
  Integer,          Intent(OUT) :: rcode
 
  Character(LEN=(LEN(newnam)+1)) :: cnewnam
- Integer(KIND=C_INT)            :: cncid, cvarid, crcode
+ Integer(C_INT)                 :: cncid, cvarid, crcode
  Integer                        :: ilen
 
  cncid  = ncid
@@ -1203,7 +1347,7 @@
 
  cnewnam = addCNullChar(newnam, ilen)
  
- Call c_ncvren(cncid, cvarid, cnewnam(1:ilen+1), crcode )
+ Call c_ncvren(cncid, cvarid, cnewnam(1:ilen), crcode )
 
  rcode = crcode 
 
@@ -1215,13 +1359,13 @@
 
  Implicit NONE
 
- Character(LEN=*),       Intent(IN)          :: attnam
- Integer,                Intent(IN)          :: ncid, varid, attype, attlen
- Character(KIND=C_CHAR), Intent(IN), TARGET  :: value(*)
- Integer,                Intent(OUT)         :: rcode
+ Character(LEN=*),       Intent(IN)         :: attnam
+ Integer,                Intent(IN)         :: ncid, varid, attype, attlen
+ Character(KIND=C_CHAR), Intent(IN), TARGET :: value(*)
+ Integer,                Intent(OUT)        :: rcode
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cattype, crcode
- Integer(KIND=C_SIZE_T)         :: cattlen
+ Integer(C_INT)                 :: cncid, cvarid, cattype, crcode
+ Integer(C_SIZE_T)              :: cattlen
  Type(C_PTR)                    :: cvalueptr
  Character(LEN=(LEN(attnam)+1)) :: cattnam
  Integer                        :: ilen
@@ -1238,7 +1382,7 @@
  
  cvalueptr = C_LOC(value)
  
- Call c_ncapt(cncid, cvarid, cattnam(1:ilen+1), cattype, &
+ Call c_ncapt(cncid, cvarid, cattnam(1:ilen), cattype, &
               cattlen, cvalueptr, crcode )
 
  rcode = crcode 
@@ -1256,8 +1400,8 @@
  Character(LEN=*), Intent(IN)  :: string 
  Integer,          Intent(OUT) :: rcode
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cattype, crcode
- Integer(KIND=C_SIZE_T)         :: clenstr
+ Integer(C_INT)                 :: cncid, cvarid, cattype, crcode
+ Integer(C_SIZE_T)              :: clenstr
  Character(LEN=(LEN(attnam)+1)) :: cattnam
  Integer                        :: ilen
 
@@ -1271,7 +1415,7 @@
 
  cattnam = addCNullChar(attnam, ilen)
  
- Call c_ncaptc(cncid, cvarid, cattnam(1:ilen+1), cattype, &
+ Call c_ncaptc(cncid, cvarid, cattnam(1:ilen), cattype, &
                clenstr, string, crcode )
 
  rcode = crcode 
@@ -1288,7 +1432,7 @@
  Integer,          Intent(IN)  :: ncid, varid
  Integer,          Intent(OUT) :: attype, attlen, rcode
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cattype, crcode, cattlen
+ Integer(C_INT)                 :: cncid, cvarid, cattype, crcode, cattlen
  Character(LEN=(LEN(attnam)+1)) :: cattnam
  Integer                        :: ilen
 
@@ -1302,7 +1446,7 @@
 
  cattnam = addCNullChar(attnam, ilen)
 
- Call c_ncainq(cncid, cvarid, cattnam(1:ilen+1), cattype, &
+ Call c_ncainq(cncid, cvarid, cattnam(1:ilen), cattype, &
              cattlen, crcode )
 
  attype = cattype
@@ -1322,7 +1466,7 @@
  Character(KIND=C_CHAR), Intent(OUT) :: values(*)
  Integer,                Intent(OUT) :: rcode
 
- Integer(KIND=C_INT)            :: cncid, cvarid, crcode
+ Integer(C_INT)                 :: cncid, cvarid, crcode
  Character(LEN=(LEN(attnam)+1)) :: cattnam
  Integer                        :: ilen
 
@@ -1334,7 +1478,7 @@
 
  cattnam = addCNullChar(attnam, ilen)
  
- Call c_ncagt(cncid, cvarid, cattnam(1:ilen+1), values, crcode)
+ Call c_ncagt(cncid, cvarid, cattnam(1:ilen), values, crcode)
 
  rcode = crcode
 
@@ -1351,7 +1495,7 @@
  Character(LEN=*), Intent(INOUT) :: string 
  Integer,          Intent(OUT)   :: rcode
 
- Integer(KIND=C_INT)            :: cncid, cvarid, crcode
+ Integer(C_INT)                 :: cncid, cvarid, crcode
  Character(LEN=(LEN(attnam)+1)) :: cattnam
  Character(LEN=(lenstr+1))      :: cstring
  Integer                        :: ilen
@@ -1366,7 +1510,7 @@
 
  cattnam = addCNullChar(attnam, ilen)
  
- Call c_ncagtc(cncid, cvarid, cattnam(1:ilen+1), cstring, lenstr, &
+ Call c_ncagtc(cncid, cvarid, cattnam(1:ilen), cstring, lenstr, &
                crcode)
 
  string(1:lenstr) = cstring(1:lenstr)
@@ -1385,7 +1529,7 @@
  Integer,          Intent(IN)  :: ncid, varid, outcdf, outvar
  Integer,          Intent(OUT) :: rcode
 
- Integer(KIND=C_INT)            :: cncid, cvarid, coutcdf, coutvar, crcode
+ Integer(C_INT)                 :: cncid, cvarid, coutcdf, coutvar, crcode
  Character(LEN=(LEN(attnam)+1)) :: cattnam
  Integer                        :: ilen
 
@@ -1399,7 +1543,7 @@
 
  cattnam = addCNullChar(attnam, ilen)
  
- Call c_ncacpy(cncid, cvarid, cattnam(1:ilen+1), coutcdf, &
+ Call c_ncacpy(cncid, cvarid, cattnam(1:ilen), coutcdf, &
                coutvar, crcode)
 
  rcode = crcode
@@ -1418,7 +1562,7 @@
  Integer,          Intent(OUT)   :: rcode
 
  Integer                      :: ilen
- Integer(KIND=C_INT)          :: cncid, cvarid, cattnum, crcode
+ Integer(C_INT)               :: cncid, cvarid, cattnum, crcode
  Character(LEN=NC_MAX_NAME+1) :: cattnam
 
  cncid = ncid
@@ -1448,7 +1592,7 @@
  Integer,          Intent(IN)  :: ncid, varid
  Integer,          Intent(OUT) :: rcode
 
- Integer(KIND=C_INT)            :: cncid, cvarid, crcode
+ Integer(C_INT)                 :: cncid, cvarid, crcode
  Character(LEN=(LEN(attnam)+1)) :: cattnam
  Character(LEN=(LEN(newnam)+1)) :: cnewnam
  Integer                        :: ilen, ilen2
@@ -1463,7 +1607,7 @@
  
  cnewnam = addCNullChar(newnam, ilen2)
  
- Call c_ncaren(cncid, cvarid, cattnam(1:ilen+1), cnewnam(1:ilen2+1), crcode) 
+ Call c_ncaren(cncid, cvarid, cattnam(1:ilen), cnewnam(1:ilen2+1), crcode) 
 
  rcode = crcode
 
@@ -1479,7 +1623,7 @@
  Integer,          Intent(IN)  :: ncid, varid
  Integer,          Intent(OUT) :: rcode
 
- Integer(KIND=C_INT)            :: cncid, cvarid, crcode
+ Integer(C_INT)                 :: cncid, cvarid, crcode
  Character(LEN=(LEN(attnam)+1)) :: cattnam
  Integer                        :: ilen
 
@@ -1491,7 +1635,7 @@
 
  cattnam = addCNullChar(attnam, ilen)
  
- Call c_ncadel(cncid, cvarid, cattnam(1:ilen+1),crcode)
+ Call c_ncadel(cncid, cvarid, cattnam(1:ilen),crcode)
 
  rcode = crcode
 
@@ -1508,7 +1652,7 @@
 
  Integer              :: currentmode
 
- Integer(KIND=C_INT) :: cncid, cfillmode, crcode, cstatus  
+ Integer(C_INT) :: cncid, cfillmode, crcode, cstatus  
 
  cncid     = ncid
  cfillmode = fillmode
diff --git a/fortran/nf_genatt.f90 b/fortran/nf_genatt.f90
index 41363d5..7d57a56 100755
--- a/fortran/nf_genatt.f90
+++ b/fortran/nf_genatt.f90
@@ -24,8 +24,10 @@
 ! Version 2.: May   2006 - Updated to support g95
 ! Version 3.: April 2009 - Updated for netCDF 4.0.1
 ! Version 4.: April 2010 - Updated for netCDF 4.1.1
-! Version 5.: May   2014 - Ensure return error status checked from C API calls          
-         
+! Version 5.: May   2014 - Ensure return error status checked from C API calls
+! Version 6.: Jan.  2016 - General code cleanup. Changed name processing to
+!                          reflect change in addCNullChar 
+
 !-------------------------------- nf_inq_att ---------------------------------
  Function nf_inq_att(ncid, varid, name, xtype, nlen) RESULT(status)
 
@@ -41,9 +43,9 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cstatus, cvarid
- Integer(KIND=C_SIZE_T)       :: cnlen
- Integer(KIND=C_INT)          :: cxtype
+ Integer(C_INT)               :: cncid, cstatus, cvarid
+ Integer(C_SIZE_T)            :: cnlen
+ Integer(C_INT)               :: cxtype
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -54,7 +56,7 @@
 
  cname = addCNullChar(name, ie)
 
- cstatus = nc_inq_att(cncid, cvarid, cname(1:ie+1), cxtype, cnlen)
+ cstatus = nc_inq_att(cncid, cvarid, cname(1:ie), cxtype, cnlen)
 
  If (cstatus == NC_NOERR) Then
     xtype = cxtype
@@ -78,8 +80,8 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cstatus, cvarid
- Integer(KIND=C_INT)          :: cxtype
+ Integer(C_INT)               :: cncid, cstatus, cvarid
+ Integer(C_INT)               :: cxtype
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -90,7 +92,7 @@
 
  cname = addCNullChar(name, ie)
 
- cstatus = nc_inq_atttype(cncid, cvarid, cname(1:ie+1), cxtype)
+ cstatus = nc_inq_atttype(cncid, cvarid, cname(1:ie), cxtype)
 
  If (cstatus == NC_NOERR) Then
     xtype = cxtype
@@ -113,8 +115,8 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cstatus, cvarid
- Integer(KIND=C_SIZE_T)       :: cnlen
+ Integer(C_INT)               :: cncid, cstatus, cvarid
+ Integer(C_SIZE_T)            :: cnlen
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -125,7 +127,7 @@
 
  cname = addCNullChar(name, ie)
 
- cstatus = nc_inq_attlen(cncid, cvarid, cname(1:ie+1), cnlen)
+ cstatus = nc_inq_attlen(cncid, cvarid, cname(1:ie), cnlen)
 
  If (cstatus == NC_NOERR) Then
     nlen = cnlen
@@ -148,7 +150,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cstatus, cattnum, cvarid
+ Integer(C_INT)               :: cncid, cstatus, cattnum, cvarid
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -159,7 +161,7 @@
 
  cname = addCNullChar(name, ie)
 
- cstatus = nc_inq_attid(cncid, cvarid, cname(1:ie+1), cattnum)
+ cstatus = nc_inq_attid(cncid, cvarid, cname(1:ie), cattnum)
  
  If (cstatus == NC_NOERR) Then
     attnum = cattnum + 1 ! add 1 to get FORTRAN att id
@@ -181,7 +183,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cstatus, cattnum, cvarid
+ Integer(C_INT)               :: cncid, cstatus, cattnum, cvarid
  Character(LEN=(LEN(name)+1)) :: tmpname
  Integer                      :: nlen
 
@@ -219,7 +221,7 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)          :: cncidin, cncidout,cvaridin, cvaridout, cstatus
+ Integer(C_INT)               :: cncidin, cncidout,cvaridin, cvaridout, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -232,7 +234,7 @@
 
  cname = addCNullChar(name, ie)
 
- cstatus = nc_copy_att(cncidin, cvaridin, cname(1:ie+1), &
+ cstatus = nc_copy_att(cncidin, cvaridin, cname(1:ie), &
                        cncidout, cvaridout)
 
  status = cstatus
@@ -252,7 +254,7 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)             :: cncid, cvarid, cstatus
+ Integer(C_INT)                  :: cncid, cvarid, cstatus
  Character(LEN=(LEN(name)+1))    :: cname 
  Character(LEN=(LEN(newname)+1)) :: cnewname 
  Integer                         :: ie1, ie2, inull
@@ -267,7 +269,7 @@
 
  cnewname = addCNullChar(newname, ie2)
 
- cstatus = nc_rename_att(cncid, cvarid, cname(1:ie1+1), cnewname(1:ie2+1))
+ cstatus = nc_rename_att(cncid, cvarid, cname(1:ie1), cnewname(1:ie2))
 
  status = cstatus
 
@@ -286,7 +288,7 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus
+ Integer(C_INT)               :: cncid, cvarid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -297,7 +299,7 @@
 
  cname = addCNullChar(name, ie)
 
- cstatus = nc_del_att(cncid, cvarid, cname(1:ie+1))
+ cstatus = nc_del_att(cncid, cvarid, cname(1:ie))
 
  status = cstatus
 
diff --git a/fortran/nf_geninq.f90 b/fortran/nf_geninq.f90
index d68ddf4..2bf54d3 100755
--- a/fortran/nf_geninq.f90
+++ b/fortran/nf_geninq.f90
@@ -26,8 +26,8 @@
 ! Version 2.: May   2006  - Updated to support g95
 ! Version 3.: April 2009  - Updated to Netcdf 4.0.1 
 ! Version 4.: April 2010  - Updated to Netcdf 4.1.1 
-! Version 5.: May   2014  - Ensure return error status checked from C API calls          
-
+! Version 5.: May   2014  - Ensure return error status checked from C API calls
+! Version 6.: Jan.  2016  - General code cleanup.
 !          
 !-------------------------------- nf_inq ----------------------------------
  Function nf_inq(ncid, ndims, nvars, ngatts, unlimdimid) RESULT(status)
@@ -45,7 +45,7 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cndims, cnvars, cngatts, cunlimdimid, cstatus
+ Integer(C_INT) :: cncid, cndims, cnvars, cngatts, cunlimdimid, cstatus
 
  cncid = ncid
 
@@ -81,7 +81,7 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cndims, cstatus
+ Integer(C_INT) :: cncid, cndims, cstatus
 
  cncid = ncid
 
@@ -107,7 +107,7 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cnvars, cstatus
+ Integer(C_INT) :: cncid, cnvars, cstatus
 
  cncid = ncid
 
@@ -133,7 +133,7 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cngatts, cstatus
+ Integer(C_INT) :: cncid, cngatts, cstatus
 
  cncid = ncid
 
@@ -159,7 +159,7 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cunlimdimid, cstatus
+ Integer(C_INT) :: cncid, cunlimdimid, cstatus
 
  cncid = ncid
 
@@ -191,7 +191,7 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cformatp, cstatus
+ Integer(C_INT) :: cncid, cformatp, cstatus
 
  cncid = ncid
 
diff --git a/fortran/nf_genvar.f90 b/fortran/nf_genvar.f90
index 809e737..93f9e21 100755
--- a/fortran/nf_genvar.f90
+++ b/fortran/nf_genvar.f90
@@ -25,8 +25,12 @@
 ! Version 2.: May   2006 - Updated to support g95
 ! Version 3.: April 2009 - Updated for netCDF 4.0.1
 ! Version 4.: April 2010 - Updated for netCDF 4.1.1
-! Version 5.: May   2014 - Ensure return error status checked from C API calls          
-          
+! Version 5.: May   2014 - Ensure return error status checked from C API calls
+! Version 6.: Jan.  2016 - General code cleanup. Replaced automatic arrays
+!                          sized with NC_MAX_DIMS with allocatable arrays.
+!                          Change name processing to reflect change in
+!                          addCNullChar
+
 !-------------------------------- nf_def_var -------------------------------
  Function nf_def_var(ncid, name, xtype, nvdims, vdims, varid) RESULT (status)
 
@@ -44,11 +48,12 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cnvdims, cvarid, cstatus, cxtype
- Integer(KIND=C_INT)          :: cvdims(NC_MAX_DIMS)
+ Integer(C_INT)               :: cncid, cnvdims, cvarid, cstatus, cxtype
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
+ Integer(C_INT), ALLOCATABLE :: cvdims(:)
+
  cncid   = ncid
  cnvdims = nvdims
  cxtype  = xtype
@@ -60,19 +65,25 @@
 ! Flip dimids to C order and subtract -1 to yield C ids prior
 ! to calling nc_def_var. Replaces C utility f2c_dimids
 
- cvdims = 0
- If (nvdims /= 0) Then 
+ If (nvdims > 0) Then
+   ALLOCATE(cvdims(nvdims))
    cvdims(1:nvdims) = vdims(nvdims:1:-1)-1
+ Else
+   ALLOCATE(cvdims(1))
+   cvdims(1) = 0
  EndIf
 
- cstatus = nc_def_var(cncid, cname(1:ie+1), cxtype, &
-                     cnvdims, cvdims, cvarid)
+ cstatus = nc_def_var(cncid, cname(1:ie), cxtype, cnvdims, cvdims, &  
+                      cvarid)
 
  If (cstatus == NC_NOERR) Then
     ! Add one to returned C varid to yield FORTRAN id
-    varid = cvarid + 1
+      varid = cvarid + 1
  EndIf
+
  status = cstatus
+ 
+ If (ALLOCATED(cvdims)) DEALLOCATE(cvdims)
 
  End Function nf_def_var
 !-------------------------------- nf_inq_varndims --------------------------
@@ -89,7 +100,7 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, cvndims, cstatus
+ Integer(C_INT) :: cncid, cvarid, cvndims, cstatus
 
  cncid   = ncid
  cvarid  = varid - 1
@@ -120,12 +131,14 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cstatus, cndims, cvarid, cnatts
- Integer(KIND=C_INT)          :: cdimids(NC_MAX_DIMS)
- Integer(KIND=C_INT)          :: cxtype
+ Integer(C_INT)               :: cncid, cstatus, cndims, cvarid, &
+                                 cnatts, cstat1
+ Integer(C_INT)               :: cxtype
  Character(LEN=NC_MAX_NAME+1) :: tmpname
  Integer                      :: nlen
 
+ Integer(C_INT), ALLOCATABLE :: cdimids(:)
+
  cncid  = ncid
  cvarid = varid - 1 ! subtract -1 to yield cvarid
 
@@ -139,27 +152,40 @@
  natts     = 0
  ndims     = 0
 
+ cstat1  = nc_inq_varndims(cncid, cvarid, cndims)
+ status  = cstat1
+
+ If (cndims > 0) Then
+   ALLOCATE(cdimids(cndims))
+ Else
+   ALLOCATE(cdimids(1))
+ EndIf
+
+ cdimids=0
+ 
  cstatus = nc_inq_var(cncid, cvarid, tmpname, cxtype, cndims, cdimids, cnatts)
 
  If (cstatus == NC_NOERR) Then
-    xtype = cxtype
-    natts = cnatts
-    ndims = cndims
+   xtype = cxtype
+   natts = cnatts
+   ndims = cndims
 
-    ! Check tmpname for a C null character and strip it and trailing blanks
+! Check tmpname for a C null character and strip it and trailing blanks
 
-    name = stripCNullChar(tmpname, nlen)
+   name = stripCNullChar(tmpname, nlen)
 
-    ! Reverse order of cdimids and add one to yield FORTRAN id numbers
-    ! Replaces c2f_dimids C utility
+! Reverse order of cdimids and add one to yield FORTRAN id numbers
+! Replaces c2f_dimids C utility
  
-    If (ndims > 0) Then
-       dimids(1:ndims) = cdimids(ndims:1:-1)+1
-    EndIf
+   If (ndims > 0) Then
+     dimids(1:ndims) = cdimids(ndims:1:-1)+1
+   EndIf
  EndIf
 
  status = cstatus
 
+ If (ALLOCATED(cdimids)) DEALLOCATE(cdimids)
+
  End Function nf_inq_var
 !-------------------------------- nf_inq_vardimid -----------------------
  Function nf_inq_vardimid(ncid, varid, dimids) RESULT (status)
@@ -175,24 +201,33 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cstatus, cstat2, cndims, cvarid
- Integer(KIND=C_INT) :: cvdimids(NC_MAX_DIMS)
- Integer             :: ndims
+ Integer(C_INT) :: cncid, cstatus, cstat2, cndims, cvarid
+ Integer        :: ndims
+
+ Integer(C_INT), ALLOCATABLE :: cvdimids(:)
 
  cncid     = ncid
  cvarid    = varid - 1 ! subtract -1 to get C id number
  dimids(1) = 0
- cvdimids  = 0
  cndims    = 0
  ndims     = 0
  
  cstat2  = nc_inq_varndims(cncid, cvarid, cndims)
+
+ If (cndims > 0) Then
+   ALLOCATE(cvdimids(cndims))
+ Else
+   ALLOCATE(cvdimids(1))
+ EndIf
+
+ cvdimids = 0
+
  cstatus = nc_inq_vardimid(cncid, cvarid, cvdimids)
 
 ! Reverse order of cdimids and add 1 to yield FORTRAN id numbers
 ! Replaces c2f_dimids C utility
  
- If (cstat2 == NC_NOERR .AND. cstatus == NC_NOERR) Then
+ If (cstatus == NC_NOERR) Then
    ndims = cndims
    If (ndims > 0) Then    
      dimids(1:ndims) = cvdimids(ndims:1:-1)+1
@@ -203,6 +238,8 @@
  
  status = cstatus
 
+ If (ALLOCATED(cvdimids)) DEALLOCATE(cvdimids)
+
  End Function nf_inq_vardimid
 !-------------------------------- nf_inq_varid --------------------------
  Function nf_inq_varid(ncid, name, varid) RESULT (status)
@@ -219,7 +256,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus
+ Integer(C_INT)               :: cncid, cvarid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -229,7 +266,7 @@
 
  cname = addCNullChar(name, ie)
 
- cstatus = nc_inq_varid(cncid, cname(1:ie+1), cvarid)
+ cstatus = nc_inq_varid(cncid, cname(1:ie), cvarid)
 
  If (cstatus == NC_NOERR) Then
     varid  = cvarid + 1  ! add one to get Fortran id number
@@ -251,7 +288,7 @@
 
  Integer                        :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus
+ Integer(C_INT)               :: cncid, cvarid, cstatus
  Character(LEN=NC_MAX_NAME+1) :: tmpname 
  Integer                      :: nlen
 
@@ -266,8 +303,9 @@
 
  cstatus = nc_inq_varname(cncid, cvarid, tmpname)
 
+ ! Find first C null character in tmpname if present and set end of string
+
  If (cstatus == NC_NOERR) Then
-    ! Find first C null character in tmpname if present and set end of string
     name = stripCNullChar(tmpname, nlen)
  EndIf
  status = cstatus
@@ -287,8 +325,8 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, cstatus
- Integer(KIND=C_INT) :: cxtype
+ Integer(C_INT) :: cncid, cvarid, cstatus
+ Integer(C_INT) :: cxtype
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C id number
@@ -315,7 +353,7 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, cnvatts, cstatus
+ Integer(C_INT) :: cncid, cvarid, cnvatts, cstatus
 
  cncid  = ncid
  cvarid = varid - 1 ! subtract one to get C id number
@@ -343,7 +381,7 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus
+ Integer(C_INT)               :: cncid, cvarid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -354,7 +392,7 @@
 
  cname = addCNullChar(name, ie)
 
- cstatus = nc_rename_var(cncid, cvarid, cname(1:ie+1))
+ cstatus = nc_rename_var(cncid, cvarid, cname(1:ie))
 
  status = cstatus
 
@@ -371,7 +409,7 @@
  Integer, Intent(IN) :: ncid_in, varid, ncid_out
  Integer             :: status
 
- Integer(KIND=C_INT) :: cncidin, cvarid, cncidout, cstatus
+ Integer(C_INT) :: cncidin, cvarid, cncidout, cstatus
 
  cncidin  = ncid_in
  cncidout = ncid_out
diff --git a/fortran/nf_lib.c b/fortran/nf_lib.c
index 142972e..8e93f52 100755
--- a/fortran/nf_lib.c
+++ b/fortran/nf_lib.c
@@ -13,6 +13,10 @@ $Id: fort-lib.c,v 1.15 2009/02/13 15:58:00 ed Exp $
 
  Version 1.0, April, 2009 - based on netcdf-4.0.1 source
  Version 2.0, April, 2010 - based on netcdf-4.1.1 source
+ Version 3.0, Jan.   2016 - added functions to return number of
+                            groups, types, and compound field
+                            dim_sizes. Needed to support move to
+                            allocatable arrays for starts, strides, etc
 
  modified by: Richard Weed Ph.D.
               Center for Advanced Vehicular Systems
@@ -118,6 +122,18 @@ nc_insert_array_compound_f(int ncid, int typeid, char *name,
 }
 
 extern int
+nc_inq_compound_field_ndims(int ncid, nc_type xtype, int fieldid, int *ndims)
+{
+ int ret;
+
+   /* Find out how many dims. */
+   if ((ret = nc_inq_compound_field(ncid, xtype, fieldid, NULL, NULL, 
+				    NULL, ndims, NULL)))
+      return ret;
+      return NC_NOERR;
+}
+
+extern int
 nc_inq_compound_field_f(int ncid, nc_type xtype, int fieldid, char *name, 
 			size_t *offsetp, nc_type *field_typeidp, int *ndimsp, 
 			int *dim_sizesp)
@@ -150,6 +166,26 @@ nc_inq_compound_field_f(int ncid, nc_type xtype, int fieldid, char *name,
    return NC_NOERR;
 }
 
+extern int
+nc_inq_numgrps(int ncid, int *numgrps)
+{
+ int ret;
+
+ if ((ret = nc_inq_grps(ncid, numgrps, NULL))) 
+
+    return ret;
+}  
+ 
+extern int
+nc_inq_numtypes(int ncid, int *numtypes)
+{
+ int ret;
+
+ if ((ret = nc_inq_typeids(ncid, numtypes, NULL))) 
+
+    return ret;
+}  
+ 
 #endif /*USE_NETCDF4*/
 
 /*
diff --git a/fortran/nf_logging.F90 b/fortran/nf_logging.F90
index bcad356..b5fd8c6 100755
--- a/fortran/nf_logging.F90
+++ b/fortran/nf_logging.F90
@@ -1,5 +1,28 @@
 #ifdef LOGGING
 ! Function to turn on logging
+
+! Written by: Richard Weed, Ph.D.
+!             Center for Advanced Vehicular Systems
+!             Mississippi State University
+!             rweed at cavs.msstate.edu
+
+
+! License (and other Lawyer Language)
+
+! This software is released under the Apache 2.0 Open Source License. The
+! full text of the License can be viewed at :
+!
+!   http:www.apache.org/licenses/LICENSE-2.0.html
+!
+! The author grants to the University Corporation for Atmospheric Research
+! (UCAR), Boulder, CO, USA the right to revise and extend the software
+! without restriction. However, the author retains all copyrights and
+! intellectual property rights explicitly stated in or implied by the
+! Apache license
+
+! Version 1. May 2014 - initial implemenation
+! Version 2. Jan 2016 - Fixed hanging comma in status definition
+
 !-------------------------------- nf_set_log_level ----------------------------
  Function nf_set_log_level(new_level) Result(status)
 
@@ -23,7 +46,7 @@
 End Interface
 
  cnew_level = new_level
- cstatus = nc_set_log_level(cnew_level)
+ cstatus    = nc_set_log_level(cnew_level)
 
  status = cstatus
 
diff --git a/fortran/nf_misc.f90 b/fortran/nf_misc.f90
index f353b1e..5ab3fa2 100755
--- a/fortran/nf_misc.f90
+++ b/fortran/nf_misc.f90
@@ -25,6 +25,7 @@
 ! Version 2.: May   2006 - Updated to support g95
 ! Version 3.: April 2009 - Updated for netCDF 4.0.1
 ! Version 4.: April 2010 - Updated for netCDF 4.1.1
+! Version 5.: Jan   2016 - General code cleanup
  
 !-------------------------------- nf_inq_libvers ---------------------------
  Function nf_inq_libvers() RESULT(vermsg)
diff --git a/fortran/nf_nc4.f90 b/fortran/nf_nc4.f90
index b63f75c..3f6a214 100755
--- a/fortran/nf_nc4.f90
+++ b/fortran/nf_nc4.f90
@@ -27,7 +27,11 @@
 ! Version 4.- April 2010 - Based on NetCDF 4.1.1 release
 ! Version 5.- Aug.  2013 - Added nf_rename_grp to align with netCDF-C 4.3.1
 ! Version 6.- Sep.  2013 - Changed fill routines to support different types
-! Version 7.- May   2014 - Ensure return error status checked from C API calls          
+! Version 7.- May   2014 - Ensure return error status checked from C API calls
+! Version 8.- Jan.  2016 - General code cleanup. Replaced automatic arrays
+!                          sized with NC_MAX_DIMS with allocatable arrays.
+!                          Changed name processing to reflect change in
+!                          addCNullChar
  
 !-------------------------------- nf_create_par -------------------------------
  Function nf_create_par (path, cmode, comm, info, ncid) RESULT(status)
@@ -44,7 +48,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: ccmode, ccomm, cinfo, cncid, cstatus
+ Integer(C_INT)               :: ccmode, ccomm, cinfo, cncid, cstatus
  Character(LEN=(LEN(path)+1)) :: cpath
  Integer                      :: ie
 
@@ -54,7 +58,7 @@
  cncid  = 0
  cpath  = addCNullChar(path, ie) ! add a C Null char and strip trailing blanks
 
- cstatus = nc_create_par_fortran(cpath(1:ie+1), ccmode, ccomm, cinfo, cncid)
+ cstatus = nc_create_par_fortran(cpath(1:ie), ccmode, ccomm, cinfo, cncid)
 
  If (cstatus == NC_NOERR) Then
     ncid = cncid
@@ -77,7 +81,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cmode, ccomm, cinfo, cncid, cstatus
+ Integer(C_INT)               :: cmode, ccomm, cinfo, cncid, cstatus
  Character(LEN=(LEN(path)+1)) :: cpath
  Integer                      :: ie
 
@@ -87,7 +91,7 @@
  cncid = 0
  cpath = addCNullChar(path, ie)
 
- cstatus = nc_open_par_fortran(cpath(1:ie+1), cmode, ccomm, cinfo, cncid)
+ cstatus = nc_open_par_fortran(cpath(1:ie), cmode, ccomm, cinfo, cncid)
 
  If (cstatus == NC_NOERR) Then
    ncid = cncid
@@ -98,7 +102,7 @@
 !-------------------------------- nf_var_par_access -------------------------
  Function nf_var_par_access( ncid, varid, iaccess) RESULT (status)
 
-! set variable access
+! set parallel variable access
 
  USE netcdf4_nc_interfaces
 
@@ -108,7 +112,7 @@
 
  Integer             :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, caccess, cstatus
+ Integer(C_INT) :: cncid, cvarid, caccess, cstatus
 
  cncid   = ncid
  cvarid  = varid - 1
@@ -134,7 +138,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)        :: cncid, cgroupid, cstatus
+ Integer(C_INT)             :: cncid, cgroupid, cstatus
  Character(LEN=LEN(name)+1) :: cname
  Integer                    :: ie
 
@@ -143,7 +147,7 @@
  cname    = REPEAT(" ",LEN(cname))
  cname    = addCNullChar(name, ie)
 
- cstatus = nc_inq_ncid(cncid, cname(1:ie+1), cgroupid)
+ cstatus = nc_inq_ncid(cncid, cname(1:ie), cgroupid)
 
  If (cstatus == NC_NOERR) Then
     groupid = cgroupid
@@ -163,23 +167,43 @@
  Integer, Intent(IN)    :: ncid
  Integer, Intent(INOUT) :: ncids(*)
  Integer, Intent(OUT)   :: numgrps
+
  Integer                :: status
 
- Integer(KIND=C_INT)    :: cncid, cnumgrps, cstatus
- Integer(KIND=C_INT)    :: cncids(NC_MAX_DIMS)
+ Integer(C_INT) :: cncid, cnumgrps, cstatus, cstatus1
+
+ Integer(C_INT), ALLOCATABLE :: cncids(:)
 
  cncid    = ncid
  cnumgrps = 0
  ncids(1) = 0
- 
- cstatus = nc_inq_grps(cncid, cnumgrps, cncids)
+ numgrps  = 0
+
+! Get cnumgrps first using utility from nc_lib.c which is not part
+! of netCDF C.
+
+ cstatus1 = nc_inq_numgrps(cncid, cnumgrps)
 
+ If (cnumgrps > 0) Then 
+   ALLOCATE(cncids(cnumgrps))
+ Else
+   ALLOCATE(cncids(1))
+ EndIf
+
+ cncids = 0
+ 
+ cstatus  = nc_inq_grps(cncid, cnumgrps, cncids)
  If (cstatus == NC_NOERR) Then
-    numgrps = cnumgrps
-    ncids(1:numgrps) = cncids(1:numgrps)
+   numgrps = cnumgrps
+   If (numgrps > 0) Then
+      ncids(1:numgrps) = cncids(1:numgrps)
+   EndIf
  EndIf
+
  status  = cstatus
 
+ If (ALLOCATED(cncids)) DEALLOCATE (cncids)
+
  End Function nf_inq_grps
 !-------------------------------- nf_inq_grpname ------------------------------
  Function nf_inq_grpname( ncid, name) RESULT (status)
@@ -195,7 +219,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)        :: cncid, cstatus
+ Integer(C_INT)             :: cncid, cstatus
  Character(LEN=NC_MAX_NAME) :: cname
  Integer                    :: nlen
 
@@ -227,8 +251,8 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)        :: cncid, cstatus
- Integer(KIND=C_SIZE_T)     :: clen
+ Integer(C_INT)             :: cncid, cstatus
+ Integer(C_SIZE_T)          :: clen
  Character(LEN=LEN(name)+1) :: cname
  Integer                    :: nl
 
@@ -260,8 +284,8 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT)    :: cncid, cstatus
- Integer(KIND=C_SIZE_T) :: clen
+ Integer(C_INT)    :: cncid, cstatus
+ Integer(C_SIZE_T) :: clen
 
  cncid  = ncid
  
@@ -288,7 +312,7 @@
 
  Integer                :: status
 
- Integer(KIND=C_INT) :: cncid, cparent_ncid, cstatus
+ Integer(C_INT) :: cncid, cparent_ncid, cstatus
 
  cncid  = ncid
 
@@ -315,7 +339,7 @@
 
  Integer                         :: status
 
- Integer(KIND=C_INT)              :: cncid, cstatus, cparent_ncid
+ Integer(C_INT)                   :: cncid, cstatus, cparent_ncid
  Character(LEN=(LEN(grp_name)+1)) :: cgrp_name
  Integer                          :: ie
 
@@ -323,7 +347,7 @@
  cgrp_name = addCNullChar(grp_name, ie)
  cncid     = ncid
 
- cstatus = nc_inq_grp_ncid(cncid, cgrp_name(1:ie+1), cparent_ncid)
+ cstatus = nc_inq_grp_ncid(cncid, cgrp_name(1:ie), cparent_ncid)
 
  If (cstatus == NC_NOERR) Then
     parent_ncid = cparent_ncid
@@ -346,17 +370,15 @@
 
  Integer                         :: status
 
- Integer(KIND=C_INT)          :: cncid, cstatus, cgrp_ncid
+ Integer(C_INT)               :: cncid, cstatus, cgrp_ncid
  Character(LEN=(LEN(name)+1)) :: cgrp_name
  Integer                      :: ie
 
-! Test for C Null character in path and strip trailing blanks
-
  cncid     = ncid
  cgrp_name = REPEAT(" ",LEN(cgrp_name))
  cgrp_name = addCNullChar(name, ie)
 
- cstatus = nc_inq_grp_full_ncid(cncid, cgrp_name(1:ie+1), cgrp_ncid)
+ cstatus = nc_inq_grp_full_ncid(cncid, cgrp_name(1:ie), cgrp_ncid)
 
  If (cstatus == NC_NOERR) Then
     grp_ncid = cgrp_ncid
@@ -379,7 +401,7 @@
 
  Integer                :: status
 
- Integer(KIND=C_INT) :: cncid, cnvars, cstatus
+ Integer(C_INT) :: cncid, cnvars, cstatus
  
  cncid     = ncid
  varids(1) = 0
@@ -407,7 +429,7 @@
 
  Integer                :: status
 
- Integer(KIND=C_INT) :: cncid, cndims, cparent, cstatus
+ Integer(C_INT) :: cncid, cndims, cparent, cstatus
 
  cncid     = ncid
  dimids(1) = 0
@@ -435,26 +457,41 @@
 
  Integer                :: status
 
- Integer(KIND=C_INT) :: cncid, cntypes, cstatus
- Integer(KIND=C_INT) :: ctypeids(NC_MAX_DIMS)
+ Integer(C_INT) :: cncid, cntypes, cstatus, cstatus1
+
+ Integer(C_INT), ALLOCATABLE :: ctypeids(:)
 
  cncid      = ncid
- ctypeids   = 0
  typeids(1) = 0
- 
- cstatus = nc_inq_typeids(cncid, cntypes, ctypeids)
 
+ cstatus1 = 0
+ cstatus1 = nc_inq_numtypes(cncid, cntypes)
+
+ If (cntypes > 0) Then
+   ALLOCATE(ctypeids(cntypes))
+ Else
+   ALLOCATE(ctypeids(1))
+ EndIf
+
+ ctypeids = 0
+
+ cstatus = nc_inq_typeids(cncid, cntypes, ctypeids)
  If (cstatus == NC_NOERR) Then
-    ntypes            = cntypes
-    typeids(1:ntypes) = ctypeids(1:ntypes)
+   ntypes            = cntypes
+   If (ntypes > 0) Then
+     typeids(1:ntypes) = ctypeids(1:ntypes)
+   EndIf
  EndIf
+
  status  = cstatus
 
+ If(ALLOCATED(ctypeids)) DEALLOCATE(ctypeids)
+
  End Function nf_inq_typeids
 !-------------------------------- nf_inq_typeid -------------------------------
  Function nf_inq_typeid(ncid, name, typeid) RESULT (status)
 
-! inquire typeid for name 
+! inquire typeid for given name 
 
  USE netcdf4_nc_interfaces
 
@@ -466,7 +503,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)        :: cncid, ctypeid, cstatus
+ Integer(C_INT)             :: cncid, ctypeid, cstatus
  Character(LEN=LEN(name)+1) :: cname
  Integer                    :: ie
 
@@ -475,7 +512,7 @@
  cname    = REPEAT(" ",LEN(cname))
  cname    = addCNullChar(name, ie)
 
- cstatus = nc_inq_typeid(cncid, cname(1:ie+1), ctypeid)
+ cstatus = nc_inq_typeid(cncid, cname(1:ie), ctypeid)
 
  If (cstatus == NC_NOERR) Then
     typeid = ctypeid
@@ -498,7 +535,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cnew_ncid, cstatus
+ Integer(C_INT)               :: cncid, cnew_ncid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -506,7 +543,7 @@
  cname = REPEAT(" ",LEN(cname))
  cname = addCNullChar(name, ie)
 
- cstatus = nc_def_grp(cncid, cname(1:ie+1), cnew_ncid)
+ cstatus = nc_def_grp(cncid, cname(1:ie), cnew_ncid)
 
  If (cstatus == NC_NOERR) Then
     new_ncid = cnew_ncid 
@@ -528,7 +565,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cgrpid, cstatus
+ Integer(C_INT)               :: cgrpid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -536,7 +573,7 @@
  cname  = REPEAT(" ",LEN(cname))
  cname  = addCNullChar(name, ie)
 
- cstatus = nc_rename_grp(cgrpid, cname(1:ie+1))
+ cstatus = nc_rename_grp(cgrpid, cname(1:ie))
 
  status   = cstatus
 
@@ -544,7 +581,7 @@
 !-------------------------------- nf_def_compound -----------------------------
  Function nf_def_compound( ncid, isize, name, typeid) RESULT (status)
 
-! define new group given name 
+! define a compound variable given name and size 
 
  USE netcdf4_nc_interfaces
 
@@ -556,8 +593,8 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, ctypeid, cstatus
- Integer(KIND=C_SIZE_T)       :: csize
+ Integer(C_INT)               :: cncid, ctypeid, cstatus
+ Integer(C_SIZE_T)            :: csize
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -566,11 +603,12 @@
  cname = REPEAT(" ",LEN(cname))
  cname = addCNullChar(name, ie)
 
- cstatus = nc_def_compound(cncid, csize, cname(1:ie+1), ctypeid)
+ cstatus = nc_def_compound(cncid, csize, cname(1:ie), ctypeid)
 
  If (cstatus == NC_NOERR) Then
     typeid = ctypeid
  EndIf
+ 
  status = cstatus
 
  End Function nf_def_compound
@@ -578,7 +616,7 @@
  Function nf_insert_compound( ncid, xtype, name, offset, field_typeid) &
                               RESULT (status)
 
-! define new group given name 
+! Insert compound name offset field_typeid etc 
 
  USE netcdf4_nc_interfaces
 
@@ -589,8 +627,8 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, ctypeid, cstatus
- Integer(KIND=C_SIZE_T)       :: coffset
+ Integer(C_INT)               :: cncid, cxtype, ctypeid, cstatus
+ Integer(C_SIZE_T)            :: coffset
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -601,7 +639,7 @@
  cname   = REPEAT(" ",LEN(cname))
  cname   = addCNullChar(name, ie)
 
- cstatus = nc_insert_compound(cncid, cxtype, cname(1:ie+1), &
+ cstatus = nc_insert_compound(cncid, cxtype, cname(1:ie), &
                               coffset, ctypeid)
 
  status = cstatus
@@ -611,7 +649,7 @@
  Function nf_insert_array_compound( ncid, xtype, name, offset, field_typeid, &
                                     ndims, dim_sizes) RESULT (status)
 
-! define new group given name 
+! Insert name type fieldid and dim_sizes array into compound 
 
  USE netcdf4_nc_interfaces
 
@@ -623,8 +661,8 @@
 
  Integer                         :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, ctypeid, cndims, cstatus
- Integer(KIND=C_SIZE_T)       :: coffset
+ Integer(C_INT)               :: cncid, cxtype, ctypeid, cndims, cstatus
+ Integer(C_SIZE_T)            :: coffset
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -636,7 +674,7 @@
  cname   = REPEAT(" ",LEN(cname))
  cname   = addCNullChar(name, ie)
 
- cstatus = nc_insert_array_compound_f(cncid, cxtype, cname(1:ie+1), &
+ cstatus = nc_insert_array_compound_f(cncid, cxtype, cname(1:ie), &
                                       coffset, ctypeid, cndims, dim_sizes)
 
  status = cstatus
@@ -645,7 +683,7 @@
 !-------------------------------- nf_inq_type ---------------------------------
  Function nf_inq_type( ncid, xtype, name, isize) RESULT (status)
 
-! define new group given name 
+! Inquire type size for given name and type
 
  USE netcdf4_nc_interfaces
 
@@ -657,8 +695,8 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, cstatus
- Integer(KIND=C_SIZE_T)       :: csize
+ Integer(C_INT)               :: cncid, cxtype, cstatus
+ Integer(C_SIZE_T)            :: csize
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -667,7 +705,7 @@
  cname  = REPEAT(" ",LEN(cname))
  cname  = addCNullChar(name, ie)
 
- cstatus = nc_inq_type(cncid, cxtype, cname(1:ie+1), csize)
+ cstatus = nc_inq_type(cncid, cxtype, cname(1:ie), csize)
 
  If (cstatus == NC_NOERR) Then
     isize  = csize
@@ -690,8 +728,8 @@
 
  Integer                         :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, cstatus
- Integer(KIND=C_SIZE_T)       :: csize, cnfieldsp
+ Integer(C_INT)               :: cncid, cxtype, cstatus
+ Integer(C_SIZE_T)            :: csize, cnfieldsp
  Character(LEN=NC_MAX_NAME+1) :: cname
  Integer                      :: nlen
 
@@ -704,7 +742,6 @@
  cstatus = nc_inq_compound(cncid, cxtype, cname, csize, cnfieldsp)
 
  If (cstatus == NC_NOERR) Then
-    ! Test for C Null character in path and strip trailing blanks
     name       = stripCNullChar(cname, nlen)
     isize      = csize
     nfields    = cnfieldsp
@@ -726,7 +763,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, cstatus
+ Integer(C_INT)               :: cncid, cxtype, cstatus
  Character(LEN=NC_MAX_NAME+1) :: cname
  Integer                      :: nlen
 
@@ -758,8 +795,8 @@
 
  Integer                :: status
 
- Integer(KIND=C_INT)    :: cncid, cxtype, cstatus
- Integer(KIND=C_SIZE_T) :: csize
+ Integer(C_INT)    :: cncid, cxtype, cstatus
+ Integer(C_SIZE_T) :: csize
 
  cncid  = ncid
  cxtype = xtype
@@ -769,13 +806,14 @@
  If (cstatus == NC_NOERR) Then
     isize  = csize
  EndIf
+
  status = cstatus
 
  End Function nf_inq_compound_size
 !-------------------------------- nf_inq_compound_nfields ----------------------
  Function nf_inq_compound_nfields( ncid, xtype, nfields) RESULT (status)
 
-! return size compound given ncid, xtype
+! return number of fields for compound 
 
  USE netcdf4_nc_interfaces
 
@@ -786,8 +824,8 @@
 
  Integer                :: status
 
- Integer(KIND=C_INT)    :: cncid, cxtype, cstatus
- Integer(KIND=C_SIZE_T) :: cnfields
+ Integer(C_INT)    :: cncid, cxtype, cstatus
+ Integer(C_SIZE_T) :: cnfields
 
  cncid  = ncid
  cxtype = xtype
@@ -797,6 +835,7 @@
  If (cstatus == NC_NOERR) Then
     nfields = cnfields
  EndIf
+
  status  = cstatus
 
  End Function nf_inq_compound_nfields
@@ -804,7 +843,7 @@
  Function nf_inq_compound_field( ncid, xtype, fieldid, name, offset, &
                                 field_typeid, ndims, dim_sizes) RESULT (status)
 
-! inquire compound name 
+! inquire compound field info. Use Fortran specific version of C interface
 
  USE netcdf4_nc_interfaces
 
@@ -817,32 +856,48 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, cfieldid, cfield_typeid, &
-                                 cndims, cstatus
- Integer(KIND=C_INT)          :: cdim_sizes(NC_MAX_DIMS)
- Integer(KIND=C_SIZE_T)       :: coffset
+ Integer(C_INT)               :: cncid, cxtype, cfieldid, cfield_typeid, &
+                                 cndims, cstatus, cstatus1
+ Integer(C_SIZE_T)            :: coffset
  Character(LEN=NC_MAX_NAME+1) :: cname
  Integer                      :: nlen
 
+ Integer(C_INT), ALLOCATABLE :: cdim_sizes(:)
+
  cncid    = ncid
  cxtype   = xtype
  cfieldid = fieldid-1
  nlen     = LEN(name)
  name     = REPEAT(" ",LEN(name))
  cname    = REPEAT(" ",LEN(cname))
- 
+ dim_sizes(1) = 0
+
+ cstatus1 = nc_inq_compound_field_ndims(cncid, cxtype, cfieldid, cndims)
+
+ If (cndims > 0) Then
+   ALLOCATE(cdim_sizes(cndims))
+ Else
+   ALLOCATE(cdim_sizes(1))
+ EndIf
+
+ cdim_sizes = 0
+
  cstatus = nc_inq_compound_field_f(cncid, cxtype, cfieldid, cname, coffset, &
                                    cfield_typeid, cndims, cdim_sizes)
-
  If (cstatus == NC_NOERR) Then
-    name               = stripCNullChar(cname, nlen)
-    offset             = coffset
-    field_typeid       = cfield_typeid
-    ndims              = cndims
-    dim_sizes(1:ndims) = cdim_sizes(1:ndims)
+   name               = stripCNullChar(cname, nlen)
+   offset             = coffset
+   field_typeid       = cfield_typeid
+   ndims              = cndims
+   If (ndims > 0) Then
+     dim_sizes(1:ndims) = cdim_sizes(1:ndims)
+   EndIf
  EndIf
+
  status = cstatus
 
+ If (ALLOCATED(cdim_sizes)) DEALLOCATE(cdim_sizes)
+
  End Function nf_inq_compound_field
 !-------------------------------- nf_inq_compound_fieldname -------------------
  Function nf_inq_compound_fieldname(ncid, xtype, fieldid, name) RESULT(status)
@@ -858,7 +913,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, cfieldid, cstatus
+ Integer(C_INT)               :: cncid, cxtype, cfieldid, cstatus
  Character(LEN=NC_MAX_NAME+1) :: cname
  Integer                      :: nlen
 
@@ -874,13 +929,14 @@
  If (cstatus == NC_NOERR) Then
     name = stripCNullChar(cname, nlen)
  EndIf
+
  status = cstatus
 
  End Function nf_inq_compound_fieldname
 !-------------------------------- nf_inq_compound_fieldindex ------------------
  Function nf_inq_compound_fieldindex( ncid, xtype, name, fieldid) RESULT (status)
 
-! define new group given name 
+! inquire compound field index id 
 
  USE netcdf4_nc_interfaces
 
@@ -892,7 +948,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, cfieldid, cstatus
+ Integer(C_INT)               :: cncid, cxtype, cfieldid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -901,11 +957,12 @@
  cname  = REPEAT(" ",LEN(cname))
  cname  = addCNullChar(name, ie)
 
- cstatus = nc_inq_compound_fieldindex(cncid, cxtype, cname(1:ie+1), cfieldid)
+ cstatus = nc_inq_compound_fieldindex(cncid, cxtype, cname(1:ie), cfieldid)
 
  If (cstatus == NC_NOERR) Then
     fieldid = cfieldid + 1
  EndIf
+
  status  = cstatus
 
  End Function nf_inq_compound_fieldindex
@@ -924,8 +981,8 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT)    :: cncid, cxtype, cfieldid, cstatus
- Integer(KIND=C_SIZE_T) :: coffset
+ Integer(C_INT)    :: cncid, cxtype, cfieldid, cstatus
+ Integer(C_SIZE_T) :: coffset
 
  cncid    = ncid
  cxtype   = xtype
@@ -936,6 +993,7 @@
  If (cstatus == NC_NOERR) Then
     offset = coffset
  EndIf
+
  status = cstatus
 
  End Function nf_inq_compound_fieldoffset
@@ -943,7 +1001,7 @@
  Function nf_inq_compound_fieldtype( ncid, xtype, fieldid, field_typeid) &
                                     RESULT (status)
 
-! define new group given name 
+! inquire compound field typeid 
 
  USE netcdf4_nc_interfaces
 
@@ -954,7 +1012,7 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cxtype, cfieldid, cfield_typeid, cstatus
+ Integer(C_INT) :: cncid, cxtype, cfieldid, cfield_typeid, cstatus
 
  cncid    = ncid
  cxtype   = xtype
@@ -965,13 +1023,14 @@
  If (cstatus == NC_NOERR) Then
     field_typeid = cfield_typeid
  EndIf
+
  status  = cstatus
 
  End Function nf_inq_compound_fieldtype
 !-------------------------------- nf_inq_compound_fieldndims ------------------
  Function nf_inq_compound_fieldndims( ncid, xtype, fieldid, ndims) RESULT (status)
 
-! define new group given name 
+! Inquire compound field dim_size ndims 
 
  USE netcdf4_nc_interfaces
 
@@ -982,7 +1041,7 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cxtype, cfieldid, cndims, cstatus
+ Integer(C_INT) :: cncid, cxtype, cfieldid, cndims, cstatus
 
  cncid    = ncid
  cxtype   = xtype
@@ -993,6 +1052,7 @@
  If (cstatus == NC_NOERR) Then
     ndims = cndims 
  EndIf
+
  status = cstatus
 
  End Function nf_inq_compound_fieldndims
@@ -1011,7 +1071,7 @@
 
  Integer                :: status
 
- Integer(KIND=C_INT) :: cncid, cxtype, cfieldid, cstatus 
+ Integer(C_INT) :: cncid, cxtype, cfieldid, cstatus 
 
  cncid    = ncid
  cxtype   = xtype
@@ -1037,7 +1097,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, cbase_typeid, cstatus
+ Integer(C_INT)               :: cncid, cxtype, cbase_typeid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -1047,11 +1107,12 @@
  cname        = REPEAT(" ",LEN(cname))
  cname        = addCNullChar(name, ie)
 
- cstatus = nc_def_vlen(cncid, cname(1:ie+1), cbase_typeid, cxtype)
+ cstatus = nc_def_vlen(cncid, cname(1:ie), cbase_typeid, cxtype)
 
  If (cstatus == NC_NOERR) Then
     xtype  = cxtype
  EndIf
+
  status = cstatus
 
  End Function nf_def_vlen
@@ -1070,8 +1131,8 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, cbase_type, cstatus
- Integer(KIND=C_SIZE_T)       :: cdatum_size
+ Integer(C_INT)               :: cncid, cxtype, cbase_type, cstatus
+ Integer(C_SIZE_T)            :: cdatum_size
  Character(LEN=NC_MAX_NAME+1) :: cname
  Integer                      :: nlen
 
@@ -1088,6 +1149,7 @@
     datum_size = cdatum_size 
     base_type  = cbase_type 
  EndIf
+
  status = cstatus
 
  End Function nf_inq_vlen
@@ -1108,8 +1170,8 @@
 
  Integer                         :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, cbase_type, cclass, cstatus
- Integer(KIND=C_SIZE_T)       :: csize, cnfields
+ Integer(C_INT)               :: cncid, cxtype, cbase_type, cclass, cstatus
+ Integer(C_SIZE_T)            :: csize, cnfields
  Character(LEN=NC_MAX_NAME+1) :: cname
  Integer                      :: nlen
 
@@ -1124,20 +1186,20 @@
                            cclass)
 
  If (cstatus == NC_NOERR) Then
-    ! Test for C Null character in path and strip trailing blanks
     name       = stripCNullChar(cname, nlen)
     isize      = csize
     nfields    = cnfields
     iclass     = cclass
     base_type  = cbase_type
  EndIf
+
  status = cstatus
 
  End Function nf_inq_user_type
 !-------------------------------- nf_def_enum ---------------------------------
  Function nf_def_enum( ncid, base_typeid, name, typeid) RESULT (status)
 
-! define new group given name 
+! define an enumerator typeid 
 
  USE netcdf4_nc_interfaces
 
@@ -1149,7 +1211,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cbase_typeid, ctypeid, cstatus
+ Integer(C_INT)               :: cncid, cbase_typeid, ctypeid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -1158,11 +1220,12 @@
  cname        = REPEAT(" ",LEN(cname))
  cname        = addCNullChar(name, ie)
 
- cstatus = nc_def_enum(cncid, cbase_typeid, cname(1:ie+1), ctypeid)
+ cstatus = nc_def_enum(cncid, cbase_typeid, cname(1:ie), ctypeid)
 
  If (cstatus == NC_NOERR) Then
     typeid = ctypeid
  EndIf
+
  status = cstatus
 
  End Function nf_def_enum
@@ -1185,7 +1248,7 @@
 
  Integer                                    :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, cstatus
+ Integer(C_INT)               :: cncid, cxtype, cstatus
  Type(C_PTR)                  :: cvalueptr
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
@@ -1197,7 +1260,7 @@
 
  cvalueptr = C_LOC(value)
 
- cstatus = nc_insert_enum(cncid, cxtype, cname(1:ie+1), cvalueptr)
+ cstatus = nc_insert_enum(cncid, cxtype, cname(1:ie), cvalueptr)
 
  status = cstatus
 
@@ -1218,8 +1281,8 @@
 
  Integer                         :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, c_base_nf_type, cstatus
- Integer(KIND=C_SIZE_T)       :: c_base_size, c_num_members
+ Integer(C_INT)               :: cncid, cxtype, c_base_nf_type, cstatus
+ Integer(C_SIZE_T)            :: c_base_size, c_num_members
  Character(LEN=NC_MAX_NAME+1) :: cname
  Integer                      :: nlen
 
@@ -1233,12 +1296,12 @@
                         c_num_members)
 
  If (cstatus == NC_NOERR) Then
-    ! Test for C Null character in path and strip trailing blanks
     name         = stripCNullChar(cname, nlen)
     base_nf_type = c_base_nf_type
     base_size    = c_base_size
     num_members  = c_num_members
  EndIf
+
  status = cstatus
 
  End Function nf_inq_enum
@@ -1260,7 +1323,7 @@
 
  Integer                             :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, cidx, cstatus
+ Integer(C_INT)               :: cncid, cxtype, cidx, cstatus
  Character(LEN=NC_MAX_NAME+1) :: cname
  Integer                      :: nlen
 
@@ -1274,9 +1337,9 @@
  cstatus = nc_inq_enum_member(cncid, cxtype, cidx, cname, value)
 
  If (cstatus == NC_NOERR) Then
-    ! Test for C Null character in path and strip trailing blanks
     name = stripCNullChar(cname, nlen)
  EndIf
+
  status = cstatus
 
  End Function nf_inq_enum_member
@@ -1294,8 +1357,8 @@
 
  Integer                         :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, cstatus
- Integer(KIND=C_LONG_LONG)    :: cvalue  
+ Integer(C_INT)               :: cncid, cxtype, cstatus
+ Integer(C_LONG_LONG)         :: cvalue  
  Character(LEN=NC_MAX_NAME+1) :: cname
  Integer                      :: nlen
 
@@ -1309,16 +1372,16 @@
  cstatus = nc_inq_enum_ident(cncid, cxtype, cvalue, cname)
 
  If (cstatus == NC_NOERR) Then
-    ! Test for C Null character in path and strip trailing blanks
     name = stripCNullChar(cname, nlen)
  EndIf
+
  status = cstatus
 
  End Function nf_inq_enum_ident
 !-------------------------------- nf_def_opaque -------------------------------
  Function nf_def_opaque( ncid, isize, name, xtype) RESULT (status)
 
-! define new group given name 
+! define opaque type info
 
  USE netcdf4_nc_interfaces
 
@@ -1330,8 +1393,8 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, cstatus
- Integer(KIND=C_SIZE_T)       :: csize
+ Integer(C_INT)               :: cncid, cxtype, cstatus
+ Integer(C_SIZE_T)            :: csize
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -1341,17 +1404,19 @@
  cname  = REPEAT(" ",LEN(cname))
  cname  = addCNullChar(name, ie)
 
- cstatus = nc_def_opaque(cncid, csize, cname(1:ie+1), cxtype)
+ cstatus = nc_def_opaque(cncid, csize, cname(1:ie), cxtype)
 
  If (cstatus == NC_NOERR) Then
     xtype  = cxtype 
  EndIf
+
  status = cstatus
 
  End Function nf_def_opaque
 !-------------------------------- nf_inq_opaque -------------------------------
  Function nf_inq_opaque( ncid, xtype, name, isize) RESULT (status)
 
+! Inquire about opaque type info
 
  USE netcdf4_nc_interfaces
 
@@ -1363,8 +1428,8 @@
 
  Integer                         :: status
 
- Integer(KIND=C_INT)          :: cncid, cxtype, cstatus
- Integer(KIND=C_SIZE_T)       :: csize
+ Integer(C_INT)               :: cncid, cxtype, cstatus
+ Integer(C_SIZE_T)            :: csize
  Character(LEN=NC_MAX_NAME+1) :: cname
  Integer                      :: nlen
 
@@ -1377,10 +1442,10 @@
  cstatus = nc_inq_opaque(cncid, cxtype, cname, csize)
 
  If (cstatus == NC_NOERR) Then
-    ! Test for C Null character in path and strip trailing blanks
     name   = stripCNullChar(cname, nlen)
     isize  = csize
  EndIf
+
  status = cstatus
 
  End Function nf_inq_opaque
@@ -1399,11 +1464,12 @@
 
  Integer                :: status
 
- Integer(KIND=C_INT)         :: cncid, cvarid, ccontiguous, cstat1, cstatus, &
-                                cndims
- Integer(KIND=C_INT), TARGET :: cchunksizes(NC_MAX_DIMS)
- Type(C_PTR)                 :: cchunksizeptr
- Integer                     :: i, ndims
+ Integer(C_INT) :: cncid, cvarid, ccontiguous, cstat1, cstatus, &
+                   cndims
+ Type(C_PTR)    :: cchunksizeptr
+ Integer        :: i, ndims
+
+ Integer(C_INT), ALLOCATABLE, TARGET :: cchunksizes(:)
 
  cncid       = ncid
  cvarid      = varid-1
@@ -1415,16 +1481,22 @@
  cchunksizeptr = C_NULL_PTR
 
  If (cstat1 == NC_NOERR) Then
-   If (ndims > 0) Then 
+   If (ndims > 0) Then
+     ALLOCATE(cchunksizes(ndims))
      cchunksizes(1:ndims) = chunksizes(ndims:1:-1)
+     cchunksizeptr        = C_LOC(cchunksizes)
    EndIf
-   cchunksizeptr = C_LOC(cchunksizes)
  EndIf
 
  cstatus = nc_def_var_chunking_ints(cncid, cvarid, ccontiguous, cchunksizeptr)
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated arrays
+
+  cchunksizeptr = C_NULL_PTR
+  If (ALLOCATED(cchunksizes)) DEALLOCATE(cchunksizes)
+
  End Function nf_def_var_chunking
 !-------------------------------- nf_inq_var_chunking -------------------------
  Function nf_inq_var_chunking( ncid, varid, contiguous, chunksizes) RESULT(status)
@@ -1441,29 +1513,41 @@
 
  Integer                :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, ccontiguous, cstatus, cstat1, cndims
- Integer(KIND=C_INT) :: cchunksizes(NC_MAX_DIMS)
- Integer             :: ndims
+ Integer(C_INT) :: cncid, cvarid, ccontiguous, cstatus, cstat1, cndims
+ Integer        :: ndims
+
+ Integer(C_INT), ALLOCATABLE :: cchunksizes(:)
 
  cncid         = ncid
  cvarid        = varid-1
  chunksizes(1) = 0
-
- cstatus = nc_inq_var_chunking_ints(cncid, cvarid, ccontiguous, cchunksizes) 
+ contiguous    = 0
 
  cstat1  = nc_inq_varndims(cncid, cvarid, cndims)
+ status  = cstat1
 
- ndims = cndims
+ If (cndims > 0) Then 
+   ALLOCATE(cchunksizes(cndims))
+ Else
+   ALLOCATE(cchunksizes(1))
+ EndIf 
 
- If (cstat1 == NC_NOERR) Then
+ cchunksizes = 0
+
+ cstatus = nc_inq_var_chunking_ints(cncid, cvarid, ccontiguous, &
+                                    cchunksizes) 
+ ndims = cndims
+ If (cstatus == NC_NOERR) Then
    If (ndims > 0) Then
      chunksizes(ndims:1:-1) = cchunksizes(1:ndims)
    EndIf
- EndIf 
-   
- contiguous = ccontiguous
+   contiguous = ccontiguous
+ EndIf
+
  status     = cstatus
 
+ If (ALLOCATED(cchunksizes)) DEALLOCATE(cchunksizes)
+
  End Function nf_inq_var_chunking
 !-------------------------------- nf_def_var_deflate --------------------------
  Function nf_def_var_deflate( ncid, varid, shuffle, deflate, deflate_level) &
@@ -1479,8 +1563,8 @@
 
  Integer             :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, cshuffle, cdeflate, cdeflate_level, &
-                        cstatus
+ Integer(C_INT) :: cncid, cvarid, cshuffle, cdeflate, cdeflate_level, &
+                   cstatus
 
  cncid          = ncid
  cvarid         = varid-1
@@ -1489,7 +1573,6 @@
  cdeflate_level = deflate_level
 
  cstatus = nc_def_var_deflate(cncid, cvarid, cshuffle, cdeflate, cdeflate_level) 
-
  status = cstatus
 
  End Function nf_def_var_deflate
@@ -1508,8 +1591,8 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, cshuffle, cdeflate, cdeflate_level, &
-                        cstatus
+ Integer(C_INT) :: cncid, cvarid, cshuffle, cdeflate, cdeflate_level, &
+                   cstatus
 
  cncid  = ncid
  cvarid = varid-1
@@ -1521,6 +1604,7 @@
     deflate       = cdeflate
     deflate_level = cdeflate_level
  EndIf
+
  status = cstatus
  
  End Function nf_inq_var_deflate
@@ -1550,6 +1634,7 @@
     options_mask     = coptions_mask
     pixels_per_block = cpixels_per_block
  EndIf
+
  status = cstatus
 
  End Function nf_inq_var_szip
@@ -1567,7 +1652,7 @@
 
  Integer             :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, cfletcher32, cstatus
+ Integer(C_INT) :: cncid, cvarid, cfletcher32, cstatus
 
  cncid       = ncid
  cvarid      = varid-1
@@ -1592,7 +1677,7 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, cfletcher32, cstatus
+ Integer(C_INT) :: cncid, cvarid, cfletcher32, cstatus
 
  cncid  = ncid
  cvarid = varid-1
@@ -1620,8 +1705,8 @@
 
  Integer                                    :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, cno_fill, cstatus
- Type(C_PTR)         :: cfill_value_p
+ Integer(C_INT) :: cncid, cvarid, cno_fill, cstatus
+ Type(C_PTR)    :: cfill_value_p
 
  cncid    = ncid
  cvarid   = varid-1
@@ -1649,7 +1734,7 @@
 
  Integer                               :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, cno_fill, cstatus
+ Integer(C_INT) :: cncid, cvarid, cno_fill, cstatus
 
  cncid  = ncid
  cvarid = varid-1
@@ -1659,6 +1744,7 @@
  If (cstatus == NC_NOERR) Then
     no_fill = cno_fill 
  EndIf
+
  status  = cstatus
 
  End Function nf_inq_var_fill
@@ -1675,7 +1761,7 @@
 
  Integer             :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, cendiann, cstatus
+ Integer(C_INT) :: cncid, cvarid, cendiann, cstatus
 
  cncid    = ncid
  cvarid   = varid-1
@@ -1700,7 +1786,7 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, cendiann, cstatus
+ Integer(C_INT) :: cncid, cvarid, cendiann, cstatus
 
  cncid  = ncid
  cvarid = varid-1
@@ -1710,6 +1796,7 @@
  If (cstatus == NC_NOERR) Then
     endiann = cendiann
  EndIf
+
  status  = cstatus
 
  End Function nf_inq_var_endian
@@ -1729,9 +1816,8 @@
 
  Integer                                    :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, cstatus, cxtype
-
- Integer(KIND=C_SIZE_T)       :: cnlen
+ Integer(C_INT)               :: cncid, cvarid, cstatus, cxtype
+ Integer(C_SIZE_T)            :: cnlen
  Type(C_PTR)                  :: cvalueptr
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
@@ -1744,7 +1830,7 @@
  cname     = REPEAT(" ",LEN(cname))
  cname     = addCNullChar(name, ie)
 
- cstatus = nc_put_att(cncid, cvarid, cname(1:ie+1), cxtype, cnlen, cvalueptr)
+ cstatus = nc_put_att(cncid, cvarid, cname(1:ie), cxtype, cnlen, cvalueptr)
 
  status = cstatus
 
@@ -1766,7 +1852,7 @@
 
  Integer                               :: status
 
- Integer(KIND=C_INT)          :: cncid, cvarid, cstatus
+ Integer(C_INT)               :: cncid, cvarid, cstatus
  Character(LEN=(LEN(name)+1)) :: cname
  Integer                      :: ie
 
@@ -1775,7 +1861,7 @@
  cname  = REPEAT(" ",LEN(cname))
  cname = addCNullChar(name, ie)
 
- cstatus = nc_get_att(cncid, cvarid, cname(1:ie+1), value)
+ cstatus = nc_get_att(cncid, cvarid, cname(1:ie), value)
 
  status = cstatus
 
@@ -1801,9 +1887,9 @@
 
  Integer                                       :: status
 
- Integer(KIND=C_INT)    :: cncid, cxtype, cstatus
- Integer(KIND=C_SIZE_T) :: cnlen
- Type(C_PTR)            :: cvalueptr
+ Integer(C_INT)    :: cncid, cxtype, cstatus
+ Integer(C_SIZE_T) :: cnlen
+ Type(C_PTR)       :: cvalueptr
 
  cncid     = ncid
  cxtype    = xtype
@@ -1837,8 +1923,8 @@
 
  Integer                                       :: status
 
- Integer(KIND=C_INT)    :: cncid, cxtype, cstatus
- Integer(KIND=C_SIZE_T) :: cnlen
+ Integer(C_INT)    :: cncid, cxtype, cstatus
+ Integer(C_SIZE_T) :: cnlen
 
  cncid  = ncid
  cxtype = xtype
@@ -1849,6 +1935,7 @@
  If (cstatus == NC_NOERR) Then
     nlen = cnlen 
  EndIf
+
  status = cstatus
 
  End Function nf_get_vlen_element
@@ -1951,8 +2038,8 @@ End Function nf_free_string
 
  Integer                                    :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
- Type(C_PTR)         :: cvaluesptr
+ Integer(C_INT) :: cncid, cvarid,  cstatus
+ Type(C_PTR)    :: cvaluesptr
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract 1 to get C varid
@@ -1981,7 +2068,7 @@ End Function nf_free_string
 
  Integer                               :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
+ Integer(C_INT) :: cncid, cvarid,  cstatus
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract 1 to get C varid
@@ -2004,21 +2091,21 @@ End Function nf_free_string
 
  Implicit NONE
 
- Integer,           Intent(IN) :: ncid, varid
- Integer,           Intent(IN) :: ndex(*)
- Integer(KIND=IK8), Intent(IN) :: ival
+ Integer,      Intent(IN) :: ncid, varid
+ Integer,      Intent(IN) :: ndex(*)
+ Integer(IK8), Intent(IN) :: ival
 
- Integer                       :: status
+ Integer                  :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cndex(NC_MAX_DIMS)
- Integer(KIND=C_LONG_LONG)      :: cival
- Type(C_PTR)                    :: cndexptr
- Integer                        :: ndims
+ Integer(C_INT)       :: cncid, cvarid, cndims, cstat1, cstatus
+ Integer(C_LONG_LONG) :: cival
+ Type(C_PTR)          :: cndexptr
+ Integer              :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cndex(:)
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C varid
- cndex  = 0
  cival  = ival
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
@@ -2027,16 +2114,22 @@ End Function nf_free_string
  ndims    = cndims
 
  If (cstat1 == NC_NOERR) Then
-   If (ndims > 0) Then ! reverse array order and subtract 1 to get C index 
-     cndex(1:ndims) = ndex(ndims:1:-1)-1
+   If (ndims > 0) Then ! reverse array order and subtract 1 to get C index
+     ALLOCATE(cndex(ndims)) 
+     cndex(1:ndims) = ndex(ndims:1:-1) - 1
+     cndexptr       = C_LOC(cndex)
    EndIf
-   cndexptr = C_LOC(cndex)
  EndIf
 
  cstatus = nc_put_var1_longlong(cncid, cvarid, cndexptr, cival)
 
  status = cstatus
 
+! Make sure there are no dangling pointers and allocated values
+
+ cndexptr = C_NULL_PTR
+ If (ALLOCATED(cndex)) DEALLOCATE(cndex)
+
  End Function nf_put_var1_int64
 !--------------------------------- nf_put_vara_int64 --------------------------
  Function nf_put_vara_int64(ncid, varid, start, counts, ivals) RESULT(status)
@@ -2047,21 +2140,20 @@ End Function nf_free_string
 
  Implicit NONE
 
- Integer,           Intent(IN) :: ncid, varid
- Integer,           Intent(IN) :: start(*), counts(*)
- Integer(KIND=IK8), Intent(IN) :: ivals(*)
+ Integer,      Intent(IN) :: ncid, varid
+ Integer,      Intent(IN) :: start(*), counts(*)
+ Integer(IK8), Intent(IN) :: ivals(*)
 
- Integer                       :: status
+ Integer                  :: status
+
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -2071,17 +2163,26 @@ End Function nf_free_string
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
  cstatus = nc_put_vara_longlong(cncid, cvarid, cstartptr, ccountsptr, ivals)
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated values
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_put_vara_int64
 !--------------------------------- nf_put_vars_int64 --------------------------
  Function nf_put_vars_int64(ncid, varid, start, counts, strides, ivals) &
@@ -2093,23 +2194,21 @@ End Function nf_free_string
 
  Implicit NONE
 
- Integer,           Intent(IN) :: ncid, varid
- Integer,           Intent(IN) :: start(*), counts(*), strides(*)
- Integer(KIND=IK8), Intent(IN) :: ivals(*)
+ Integer,      Intent(IN) :: ncid, varid
+ Integer,      Intent(IN) :: start(*), counts(*), strides(*)
+ Integer(IK8), Intent(IN) :: ivals(*)
 
- Integer                       :: status
+ Integer                  :: status
+
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -2120,13 +2219,16 @@ End Function nf_free_string
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
  cstatus = nc_put_vars_longlong(cncid, cvarid, cstartptr, ccountsptr, &
@@ -2134,6 +2236,15 @@ End Function nf_free_string
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated values
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_put_vars_int64
 
 !--------------------------------- nf_put_varm_int64 -------------------------
@@ -2146,25 +2257,21 @@ End Function nf_free_string
 
  Implicit NONE
 
- Integer,           Intent(IN) :: ncid, varid
- Integer,           Intent(IN) :: start(*), counts(*), strides(*), maps(*)
- Integer(KIND=IK8), Intent(IN) :: ivals(*)
+ Integer,      Intent(IN) :: ncid, varid
+ Integer,      Intent(IN) :: start(*), counts(*), strides(*), maps(*)
+ Integer(IK8), Intent(IN) :: ivals(*)
 
- Integer                       :: status
+ Integer                  :: status
+
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr, cmapsptr 
+ Integer        :: ndims
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cmaps(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cmapsptr
- Integer                           :: ndims
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cmaps(:)
 
  cncid    = ncid
  cvarid   = varid -1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
- cmaps    = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -2176,15 +2283,19 @@ End Function nf_free_string
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     ALLOCATE(cmaps(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
      cmaps(1:ndims)    = maps(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
+     cmapsptr          = C_LOC(cmaps)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
-   cmapsptr    = C_LOC(cmaps)
  EndIf
 
  cstatus = nc_put_varm_longlong(cncid, cvarid, cstartptr, ccountsptr, &
@@ -2192,6 +2303,17 @@ End Function nf_free_string
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated values
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cmapsptr    = C_NULL_PTR
+ If (ALLOCATED(cmaps))    DEALLOCATE(cmaps)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_put_varm_int64
 !--------------------------------- nf_put_var_int64 --------------------------
  Function nf_put_var_int64(ncid, varid, ivals) RESULT(status)
@@ -2202,12 +2324,12 @@ End Function nf_free_string
 
  Implicit NONE
 
- Integer,           Intent(IN) :: ncid, varid
- Integer(KIND=IK8), Intent(IN) :: ivals(*)
+ Integer,      Intent(IN) :: ncid, varid
+ Integer(IK8), Intent(IN) :: ivals(*)
 
  Integer                       :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
+ Integer(C_INT) :: cncid, cvarid,  cstatus
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract 1 to get C varid
@@ -2226,21 +2348,21 @@ End Function nf_free_string
 
  Implicit NONE
 
- Integer,           Intent(IN)  :: ncid, varid
- Integer,           Intent(IN)  :: ndex(*)
- Integer(KIND=IK8), Intent(OUT) :: ival
+ Integer,      Intent(IN)  :: ncid, varid
+ Integer,      Intent(IN)  :: ndex(*)
+ Integer(IK8), Intent(OUT) :: ival
 
- Integer                        :: status
+ Integer                   :: status
+
+ Integer(C_INT)       :: cncid, cvarid, cndims, cstat1, cstatus
+ Integer(C_LONG_LONG) :: cival
+ Type(C_PTR)          :: cndexptr
+ Integer              :: ndims
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cndex(NC_MAX_DIMS)
- Integer(KIND=C_LONG_LONG)      :: cival
- Type(C_PTR)                    :: cndexptr
- Integer                        :: ndims
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cndex(:)
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C varid
- cndex  = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -2249,9 +2371,10 @@ End Function nf_free_string
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! reverse array order and subtract 1 to get C index 
-     cndex(1:ndims) = ndex(ndims:1:-1)-1
+     ALLOCATE(cndex(ndims)) 
+     cndex(1:ndims) = ndex(ndims:1:-1) - 1
+     cndexptr       = C_LOC(cndex)
    EndIf
-   cndexptr = C_LOC(cndex)
  EndIf
 
  cstatus = nc_get_var1_longlong(cncid, cvarid, cndexptr, cival)
@@ -2259,6 +2382,11 @@ End Function nf_free_string
  ival   = cival
  status = cstatus
 
+! Make sure there are no dangling pointers and allocated values
+
+ cndexptr = C_NULL_PTR
+ If (ALLOCATED(cndex)) DEALLOCATE(cndex)
+
  End Function nf_get_var1_int64
 !--------------------------------- nf_get_vara_int -------------------------
  Function nf_get_vara_int64(ncid, varid, start, counts, ivals) RESULT(status)
@@ -2269,21 +2397,20 @@ End Function nf_free_string
 
  Implicit NONE
 
- Integer,           Intent(IN)  :: ncid, varid
- Integer,           Intent(IN)  :: start(*), counts(*)
- Integer(KIND=IK8), Intent(OUT) :: ivals(*)
+ Integer,      Intent(IN)  :: ncid, varid
+ Integer,      Intent(IN)  :: start(*), counts(*)
+ Integer(IK8), Intent(OUT) :: ivals(*)
 
- Integer                        :: status
+ Integer                   :: status
+
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -2293,17 +2420,26 @@ End Function nf_free_string
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
  cstatus = nc_get_vara_longlong(cncid, cvarid, cstartptr, ccountsptr, ivals)
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated values
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_get_vara_int64
 
 !--------------------------------- nf_get_vars_int64 --------------------------
@@ -2316,23 +2452,21 @@ End Function nf_free_string
 
  Implicit NONE
 
- Integer,           Intent(IN)  :: ncid, varid
- Integer,           Intent(IN)  :: start(*), counts(*), strides(*)
- Integer(KIND=IK8), Intent(OUT) :: ivals(*)
+ Integer,      Intent(IN)  :: ncid, varid
+ Integer,      Intent(IN)  :: start(*), counts(*), strides(*)
+ Integer(IK8), Intent(OUT) :: ivals(*)
 
- Integer                        :: status
+ Integer                   :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -2343,19 +2477,31 @@ End Function nf_free_string
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
  cstatus = nc_get_vars_longlong(cncid, cvarid, cstartptr, ccountsptr, &
                                 cstridesptr, ivals)
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated values
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_vars_int64
 !--------------------------------- nf_get_varm_int64 -------------------------
  Function nf_get_varm_int64(ncid, varid, start, counts, strides, maps, &
@@ -2367,25 +2513,21 @@ End Function nf_free_string
 
  Implicit NONE
 
- Integer,           Intent(IN)  :: ncid, varid
- Integer,           Intent(IN)  :: start(*), counts(*), strides(*), maps(*)
- Integer(KIND=IK8), Intent(OUT) :: ivals(*)
+ Integer,      Intent(IN)  :: ncid, varid
+ Integer,      Intent(IN)  :: start(*), counts(*), strides(*), maps(*)
+ Integer(IK8), Intent(OUT) :: ivals(*)
 
  Integer                        :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cmaps(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cmapsptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr, cmapsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cmaps(:)
 
  cncid    = ncid
  cvarid   = varid -1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
- cmaps    = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -2397,15 +2539,19 @@ End Function nf_free_string
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     ALLOCATE(cmaps(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
      cmaps(1:ndims)    = maps(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
+     cmapsptr          = C_LOC(cmaps)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
-   cmapsptr    = C_LOC(cmaps)
  EndIf
 
  cstatus = nc_get_varm_longlong(cncid, cvarid, cstartptr, ccountsptr, &
@@ -2413,6 +2559,17 @@ End Function nf_free_string
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated values
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cmapsptr    = C_NULL_PTR
+ If (ALLOCATED(cmaps))    DEALLOCATE(cmaps)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_varm_int64
 !--------------------------------- nf_get_var_int64 --------------------------
  Function nf_get_var_int64(ncid, varid, ivals) RESULT(status)
@@ -2423,12 +2580,12 @@ End Function nf_free_string
 
  Implicit NONE
 
- Integer,           Intent(IN)  :: ncid, varid
- Integer(KIND=IK8), Intent(OUT) :: ivals(*)
+ Integer,      Intent(IN)  :: ncid, varid
+ Integer(IK8), Intent(OUT) :: ivals(*)
 
- Integer                        :: status
+ Integer                   :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
+ Integer(C_INT) :: cncid, cvarid,  cstatus
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract 1 to get C varid
@@ -2453,7 +2610,7 @@ End Function nf_free_string
 
  Integer             :: status
 
- Integer(KIND=C_INT) :: cchunk_size, cnelems, cpreemption, cstatus
+ Integer(C_INT) :: cchunk_size, cnelems, cpreemption, cstatus
 
  cchunk_size = chunk_size
  cnelems     = nelems
@@ -2479,7 +2636,7 @@ End Function nf_free_string
 
  Integer                :: status
 
- Integer(KIND=C_INT) :: cchunk_size, cnelems, cpreemption, cstatus
+ Integer(C_INT) :: cchunk_size, cnelems, cpreemption, cstatus
 
  cstatus = nc_get_chunk_cache_ints(cchunk_size, cnelems, cpreemption)
 
@@ -2505,8 +2662,8 @@ End Function nf_free_string
 
  Integer             :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, cchunk_size, cnelems, cpreemption, &
-                        cstatus
+ Integer(C_INT) :: cncid, cvarid, cchunk_size, cnelems, cpreemption, &
+                   cstatus
 
  cncid       = ncid
  cvarid      = varid-1
@@ -2535,8 +2692,8 @@ End Function nf_free_string
 
  Integer                :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, cchunk_size, cnelems, cpreemption, &
-                        cstatus
+ Integer(C_INT) :: cncid, cvarid, cchunk_size, cnelems, cpreemption, &
+                   cstatus
 
  cncid  = ncid
  cvarid = varid-1
diff --git a/fortran/nf_var1io.F90 b/fortran/nf_var1io.F90
index d3d821a..ff5d6a9 100755
--- a/fortran/nf_var1io.F90
+++ b/fortran/nf_var1io.F90
@@ -28,7 +28,9 @@
 ! Version 3.: April 2009 - Updated for netCDF 4.0.1
 ! Version 4.: April 2010 - Updated for netCDF 4.1.1
 !                          Added preprocessor test for int and real types
-          
+! Version 5.: Jan.  2016 - Replace automatic array for cndex with allocatable
+!                          array and general code cleanup
+ 
 !--------------------------------- nf_put_var1_text ------------------------
  Function nf_put_var1_text(ncid, varid, ndex, chval) RESULT(status)
 
@@ -44,14 +46,14 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cndex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cndexptr
- Integer :: ndims
+ Integer(C_INT)  :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)     :: cndexptr
+ Integer         :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cndex(:)
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C varid
- cndex  = 0
  
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -59,16 +61,22 @@
  ndims    = cndims
 
  If (cstat1 == NC_NOERR) Then
-   If (ndims > 0) Then ! reverse array order and subtract 1 to get C index 
-     cndex(1:ndims) = ndex(ndims:1:-1)-1
+   If (ndims > 0) Then ! reverse array order and subtract 1 to get C index
+     ALLOCATE(cndex(ndims)) 
+     cndex(1:ndims) = ndex(ndims:1:-1) - 1
+     cndexptr       = C_LOC(cndex)
    EndIf
-   cndexptr = C_LOC(cndex)
  EndIf
 
  cstatus = nc_put_var1_text(cncid, cvarid, cndexptr, chval)
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated arrays
+
+ cndexptr = C_NULL_PTR
+ If (ALLOCATED(cndex)) DEALLOCATE(cndex)
+
  End Function nf_put_var1_text
 !--------------------------------- nf_put_var1_int1 ------------------------
  Function nf_put_var1_int1(ncid, varid, ndex, ival) RESULT(status)
@@ -79,17 +87,18 @@
 
  Implicit NONE
 
- Integer,              Intent(IN) :: ncid, varid
- Integer,              Intent(IN) :: ndex(*)
- Integer(KIND=NFINT1), Intent(IN) :: ival
+ Integer,         Intent(IN) :: ncid, varid
+ Integer,         Intent(IN) :: ndex(*)
+ Integer(NFINT1), Intent(IN) :: ival
 
- Integer                          :: status
+ Integer                     :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cndex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cndexptr
- Integer(KIND=CINT1)            :: cival
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cndexptr
+ Integer(CINT1) :: cival
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cndex(:)
 
  If (C_SIGNED_CHAR < 0) Then ! schar not supported by processor exit
    status = NC_EBADTYPE
@@ -99,7 +108,6 @@
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C varid
  cival  = ival
- cndex  = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -108,9 +116,10 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! reverse array order and subtract 1 to get C index 
-     cndex(1:ndims) = ndex(ndims:1:-1)-1
+     ALLOCATE(cndex(ndims)) 
+     cndex(1:ndims) = ndex(ndims:1:-1) - 1
+     cndexptr       = C_LOC(cndex)
    EndIf
-   cndexptr = C_LOC(cndex)
  EndIf
 
 #if NF_INT1_IS_C_SIGNED_CHAR
@@ -125,6 +134,11 @@
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated arrays
+
+ cndexptr = C_NULL_PTR
+ If (ALLOCATED(cndex)) DEALLOCATE(cndex)
+
  End Function nf_put_var1_int1
 !--------------------------------- nf_put_var1_int2 ------------------------
  Function nf_put_var1_int2(ncid, varid, ndex, ival) RESULT(status)
@@ -135,17 +149,18 @@
 
  Implicit NONE
 
- Integer,              Intent(IN) :: ncid, varid
- Integer,              Intent(IN) :: ndex(*)
- Integer(KIND=NFINT2), Intent(IN) :: ival
+ Integer,         Intent(IN) :: ncid, varid
+ Integer,         Intent(IN) :: ndex(*)
+ Integer(NFINT2), Intent(IN) :: ival
 
- Integer                          :: status
+ Integer                     :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cndex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cndexptr
- Integer(KIND=CINT2)            :: cival
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cndexptr
+ Integer(CINT2) :: cival
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cndex(:)
 
  If (C_SHORT < 0) Then ! short not supported by processor
    status = NC_EBADTYPE
@@ -155,7 +170,6 @@
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C varid
  cival  = ival
- cndex  = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -164,9 +178,10 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! reverse array order and subtract 1 to get C index 
-     cndex(1:ndims) = ndex(ndims:1:-1)-1
+     ALLOCATE(cndex(ndims)) 
+     cndex(1:ndims) = ndex(ndims:1:-1) - 1
+     cndexptr       = C_LOC(cndex)
    EndIf
-   cndexptr = C_LOC(cndex)
  EndIf
 
 #if NF_INT2_IS_C_SHORT
@@ -179,6 +194,11 @@
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated arrays
+
+ cndexptr = C_NULL_PTR
+ If (ALLOCATED(cndex)) DEALLOCATE(cndex)
+
  End Function nf_put_var1_int2
 !--------------------------------- nf_put_var1_int -------------------------
  Function nf_put_var1_int(ncid, varid, ndex, ival) RESULT(status)
@@ -195,15 +215,15 @@
 
  Integer                    :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cndex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cndexptr
- Integer(KIND=CINT)             :: cival
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cndexptr
+ Integer(CINT)  :: cival
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cndex(:)
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C varid
- cndex  = 0
  cival  = ival
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
@@ -213,9 +233,10 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! reverse array order and subtract 1 to get C index 
-     cndex(1:ndims) = ndex(ndims:1:-1)-1
+     ALLOCATE(cndex(ndims)) 
+     cndex(1:ndims) = ndex(ndims:1:-1) - 1
+     cndexptr       = C_LOC(cndex)
    EndIf
-   cndexptr = C_LOC(cndex)
  EndIf
 
 #if NF_INT_IS_C_INT
@@ -226,6 +247,11 @@
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated arrays
+
+ cndexptr = C_NULL_PTR
+ If (ALLOCATED(cndex)) DEALLOCATE(cndex)
+
  End Function nf_put_var1_int
 !--------------------------------- nf_put_var1_real ------------------------
  Function nf_put_var1_real(ncid, varid, ndex, rval) RESULT(status)
@@ -242,14 +268,14 @@
 
  Integer                  :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cndex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cndexptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cndexptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cndex(:)
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C varid
- cndex  = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -258,9 +284,10 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! reverse array order and subtract 1 to get C index 
-     cndex(1:ndims) = ndex(ndims:1:-1)-1
+     ALLOCATE(cndex(ndims)) 
+     cndex(1:ndims) = ndex(ndims:1:-1) - 1
+     cndexptr       = C_LOC(cndex)
    EndIf
-   cndexptr = C_LOC(cndex)
  EndIf
 
 #if NF_REAL_IS_C_DOUBLE
@@ -271,6 +298,11 @@
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated arrays
+
+ cndexptr = C_NULL_PTR
+ If (ALLOCATED(cndex)) DEALLOCATE(cndex)
+
  End Function nf_put_var1_real
 !--------------------------------- nf_put_var1_double ----------------------
  Function nf_put_var1_double(ncid, varid, ndex, dval) RESULT(status)
@@ -287,14 +319,14 @@
 
  Integer               :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cndex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cndexptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cndexptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cndex(:)
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C varid
- cndex  = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims) ! get varid dimension
 
@@ -303,15 +335,21 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then
-     cndex(1:ndims) = ndex(ndims:1:-1)-1
+     ALLOCATE(cndex(ndims)) 
+     cndex(1:ndims) = ndex(ndims:1:-1) - 1
+     cndexptr       = C_LOC(cndex)
    EndIf
-   cndexptr = C_LOC(cndex)
  EndIf
 
  cstatus = nc_put_var1_double(cncid, cvarid, cndexptr, dval)
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated arrays
+
+ cndexptr = C_NULL_PTR
+ If (ALLOCATED(cndex)) DEALLOCATE(cndex)
+
  End Function nf_put_var1_double
 !--------------------------------- nf_put_var1 ------------------------
  Function nf_put_var1(ncid, varid, ndex, values) RESULT(status)
@@ -328,18 +366,17 @@
  Integer,                Intent(IN)         :: ncid, varid
  Integer,                Intent(IN)         :: ndex(*)
  Character(KIND=C_CHAR), Intent(IN), TARGET :: values(*)
-! Type(C_PTR),            VALUE              :: values
+
  Integer                                    :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cndex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cndexptr
- Type(C_PTR)                    :: cvaluesptr ! comment for type(C_PTR) values
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cndexptr, cvaluesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cndex(:)
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C varid
- cndex  = 0
  
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -348,18 +385,27 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! reverse array order and subtract 1 to get C index 
-     cndex(1:ndims) = ndex(ndims:1:-1)-1
+     ALLOCATE(cndex(ndims)) 
+     cndex(1:ndims) = ndex(ndims:1:-1) - 1
+     cndexptr       = C_LOC(cndex)
+   Else
+     ALLOCATE(cndex(1))
+     cndex(1:ndims) = ndex(ndims:1:-1) - 1
+     cndexptr       = C_LOC(cndex)
    EndIf
-   cndexptr = C_LOC(cndex)
  EndIf
 
  cvaluesptr = C_LOC(values)
 
  cstatus = nc_put_var1(cncid, cvarid, cndexptr, cvaluesptr)
-! cstatus = nc_put_var1(cncid, cvarid, cndexptr, values)
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated arrays
+
+ cndexptr = C_NULL_PTR
+ If (ALLOCATED(cndex)) DEALLOCATE(cndex)
+
  End Function nf_put_var1
 !--------------------------------- nf_get_var1_text ------------------------
  Function nf_get_var1_text(ncid, varid, ndex, chval) RESULT(status)
@@ -376,14 +422,14 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cndex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cndexptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cndexptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cndex(:)
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C varid
- cndex  =  0
  chval  = ' '
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
@@ -393,15 +439,21 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! reverse array order and subtract 1 to get C index 
+     ALLOCATE(cndex(ndims)) 
      cndex(1:ndims) = ndex(ndims:1:-1) -1
+     cndexptr       = C_LOC(cndex)
    EndIf
-   cndexptr = C_LOC(cndex)
   EndIf
  
  cstatus = nc_get_var1_text(cncid, cvarid, cndexptr, chval)
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated arrays
+
+ cndexptr = C_NULL_PTR
+ If (ALLOCATED(cndex)) DEALLOCATE(cndex)
+
  End Function nf_get_var1_text
 !--------------------------------- nf_get_var1_int1 ------------------------
  Function nf_get_var1_int1(ncid, varid, ndex, ival) RESULT(status)
@@ -412,17 +464,18 @@
 
  Implicit NONE
 
- Integer,              Intent(IN)  :: ncid, varid
- Integer,              Intent(IN)  :: ndex(*)
- Integer(KIND=NFINT1), Intent(OUT) :: ival
+ Integer,         Intent(IN)  :: ncid, varid
+ Integer,         Intent(IN)  :: ndex(*)
+ Integer(NFINT1), Intent(OUT) :: ival
 
- Integer                           :: status
+ Integer                      :: status
+
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cndexptr
+ Integer(CINT1) :: cival
+ Integer        :: ndims
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cndex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cndexptr
- Integer(KIND=CINT1)            :: cival
- Integer                        :: ndims
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cndex(:)
 
  If (C_SIGNED_CHAR < 0) Then ! schar not supported by processor exit
    status = NC_EBADTYPE
@@ -431,7 +484,6 @@
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C varid
- cndex  = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -440,9 +492,10 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! reverse array order and subtract 1 to get C index 
-     cndex(1:ndims) = ndex(ndims:1:-1)-1
+     ALLOCATE(cndex(ndims)) 
+     cndex(1:ndims) = ndex(ndims:1:-1) - 1
+     cndexptr       = C_LOC(cndex)
    EndIf
-   cndexptr = C_LOC(cndex)
  EndIf
 
 #if NF_INT1_IS_C_SIGNED_CHAR
@@ -458,6 +511,11 @@
  ival   = cival
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated arrays
+
+ cndexptr = C_NULL_PTR
+ If (ALLOCATED(cndex)) DEALLOCATE(cndex)
+
  End Function nf_get_var1_int1
 !--------------------------------- nf_get_var1_int2 ------------------------
  Function nf_get_var1_int2(ncid, varid, ndex, ival) RESULT(status)
@@ -468,17 +526,18 @@
 
  Implicit NONE
 
- Integer,              Intent(IN)  :: ncid, varid
- Integer,              Intent(IN)  :: ndex(*)
- Integer(KIND=NFINT2), Intent(OUT) :: ival
+ Integer,         Intent(IN)  :: ncid, varid
+ Integer,         Intent(IN)  :: ndex(*)
+ Integer(NFINT2), Intent(OUT) :: ival
+
+ Integer                      :: status
 
- Integer                           :: status
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cndexptr
+ Integer(CINT2) :: cival
+ Integer        :: ndims
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cndex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cndexptr
- Integer(KIND=CINT2)            :: cival
- Integer                        :: ndims
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cndex(:)
 
  If (C_SHORT < 0) Then ! short not supported by processor
    status = NC_EBADTYPE
@@ -487,7 +546,6 @@
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C varid
- cndex  = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -496,9 +554,10 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! reverse array order and subtract 1 to get C index 
-     cndex(1:ndims) = ndex(ndims:1:-1)-1
+     ALLOCATE(cndex(ndims)) 
+     cndex(1:ndims) = ndex(ndims:1:-1) - 1
+     cndexptr       = C_LOC(cndex)
    EndIf
-   cndexptr = C_LOC(cndex)
  EndIf
 
 #if NF_INT2_IS_C_SHORT
@@ -512,6 +571,11 @@
  ival   = cival
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated arrays
+
+ cndexptr = C_NULL_PTR
+ If (ALLOCATED(cndex)) DEALLOCATE(cndex)
+
  End Function nf_get_var1_int2
 !--------------------------------- nf_get_var1_int -------------------------
  Function nf_get_var1_int(ncid, varid, ndex, ival) RESULT(status)
@@ -528,15 +592,15 @@
 
  Integer              :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cndex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cndexptr
- Integer(KIND=CINT)             :: cival
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cndexptr
+ Integer(CINT)  :: cival
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cndex(:)
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C varid
- cndex  = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -545,9 +609,10 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! reverse array order and subtract 1 to get C index 
-     cndex(1:ndims) = ndex(ndims:1:-1)-1
+     ALLOCATE(cndex(ndims)) 
+     cndex(1:ndims) = ndex(ndims:1:-1) - 1
+     cndexptr       = C_LOC(cndex)
    EndIf
-   cndexptr = C_LOC(cndex)
  EndIf
 
 #if NF_INT_IS_C_INT
@@ -559,6 +624,11 @@
  ival   = cival
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated arrays
+
+ cndexptr = C_NULL_PTR
+ If (ALLOCATED(cndex)) DEALLOCATE(cndex)
+
  End Function nf_get_var1_int
 !--------------------------------- nf_get_var1_real ------------------------
  Function nf_get_var1_real(ncid, varid, ndex, rval) RESULT(status)
@@ -575,14 +645,14 @@
 
  Integer                   :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cndex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cndexptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cndexptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cndex(:)
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C varid
- cndex  = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -591,9 +661,10 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! reverse array order and subtract 1 to get C index 
-     cndex(1:ndims) = ndex(ndims:1:-1)-1
+     ALLOCATE(cndex(ndims)) 
+     cndex(1:ndims) = ndex(ndims:1:-1) - 1
+     cndexptr       = C_LOC(cndex)
    EndIf
-   cndexptr = C_LOC(cndex)
  EndIf
 
 #if NF_REAL_IS_C_DOUBLE
@@ -604,6 +675,11 @@
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated arrays
+
+ cndexptr = C_NULL_PTR
+ If (ALLOCATED(cndex)) DEALLOCATE(cndex)
+
  End Function nf_get_var1_real
 !--------------------------------- nf_get_var1_double ----------------------
  Function nf_get_var1_double(ncid, varid, ndex, dval) RESULT(status)
@@ -620,14 +696,14 @@
 
  Integer                :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cndex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cndexptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cndexptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cndex(:)
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C varid
- cndex  = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims) ! get varid dimension
 
@@ -636,15 +712,21 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! reverse array order and subtract 1 to get C index 
-     cndex(1:ndims) = ndex(ndims:1:-1)-1
+     ALLOCATE(cndex(ndims)) 
+     cndex(1:ndims) = ndex(ndims:1:-1) - 1
+     cndexptr       = C_LOC(cndex)
    EndIf
-   cndexptr = C_LOC(cndex)
  EndIf
 
  cstatus = nc_get_var1_double(cncid, cvarid, cndexptr, dval)
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated arrays
+
+ cndexptr = C_NULL_PTR
+ If (ALLOCATED(cndex)) DEALLOCATE(cndex)
+
  End Function nf_get_var1_double
 !--------------------------------- nf_get_var1 -------------------------------
  Function nf_get_var1(ncid, varid, ndex, values) RESULT(status)
@@ -661,19 +743,17 @@
  Integer,                Intent(IN)          :: ncid, varid
  Integer,                Intent(IN)          :: ndex(*)
  Character(KIND=C_CHAR), Intent(OUT), TARGET :: values(*)
-! Type(C_PTR),            VALUE               :: values
 
  Integer                                     :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cndex(NC_MAX_DIMS)
- Type(C_PTR)                    :: cndexptr
- Type(C_PTR)                    :: cvaluesptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cndexptr, cvaluesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cndex(:)
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract one to get C varid
- cndex  = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims) ! get varid dimension
 
@@ -682,13 +762,19 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! reverse array order and subtract 1 to get C index 
-     cndex(1:ndims) = ndex(ndims:1:-1)-1
+     ALLOCATE(cndex(ndims)) 
+     cndex(1:ndims) = ndex(ndims:1:-1) - 1
+     cndexptr       = C_LOC(cndex)
    EndIf
-   cndexptr = C_LOC(cndex)
  EndIf
 
  cstatus = nc_get_var1(cncid, cvarid, cndexptr, values)
 
  status = cstatus
 
+! Make sure there are no dangling pointers or allocated arrays
+
+ cndexptr = C_NULL_PTR
+ If (ALLOCATED(cndex)) DEALLOCATE(cndex)
+
  End Function nf_get_var1
diff --git a/fortran/nf_varaio.F90 b/fortran/nf_varaio.F90
index 19ef6ed..263472b 100755
--- a/fortran/nf_varaio.F90
+++ b/fortran/nf_varaio.F90
@@ -29,7 +29,9 @@
 ! Version 3.: April 2009 - Updated for netCDF 4.0.1
 ! Version 4.: April 2010 - Updated for netCDF 4.1.1
 !                          Added preprocessor test for int and real types
-         
+! Version 5.: Jan.  2016 - Replaced automatic arrays for cstart and ccounts
+!                          with allocatable arrays and general code cleanup
+ 
 !--------------------------------- nf_put_vara_text ----------------------
  Function nf_put_vara_text(ncid, varid, start, counts, text) RESULT(status)
 
@@ -45,15 +47,14 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -63,17 +64,26 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
  cstatus = nc_put_vara_text(cncid, cvarid, cstartptr, ccountsptr, text)
 
  status = cstatus
 
+! Make sure there are no dangling pointers or and allocated arrays
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_put_vara_text
 !--------------------------------- nf_put_vara_text_a ----------------------
  Function nf_put_vara_text_a(ncid, varid, start, counts, text) RESULT(status)
@@ -90,15 +100,14 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -108,17 +117,26 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
  cstatus = nc_put_vara_text(cncid, cvarid, cstartptr, ccountsptr, text)
 
  status = cstatus
 
+! Make sure there are no dangling pointers or and allocated arrays
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_put_vara_text_a
 !--------------------------------- nf_put_vara_int1 ------------------------
  Function nf_put_vara_int1(ncid, varid, start, counts, i1vals) RESULT(status)
@@ -129,16 +147,17 @@
 
  Implicit NONE
 
- Integer,              Intent(IN) :: ncid, varid
- Integer,              Intent(IN) :: start(*), counts(*)
- Integer(KIND=NFINT1), Intent(IN) :: i1vals(*)
+ Integer,         Intent(IN) :: ncid, varid
+ Integer,         Intent(IN) :: start(*), counts(*)
+ Integer(NFINT1), Intent(IN) :: i1vals(*)
 
- Integer                          :: status
+ Integer                     :: status
+
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  If (C_SIGNED_CHAR < 0) Then ! schar not supported by processor
    status = NC_EBADTYPE
@@ -147,8 +166,6 @@
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -158,11 +175,13 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
 #if NF_INT1_IS_C_SIGNED_CHAR
@@ -177,6 +196,13 @@
  
  status = cstatus
 
+! Make sure there are no dangling pointers or and allocated arrays
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_put_vara_int1
 !--------------------------------- nf_put_vara_int2 ------------------------
  Function nf_put_vara_int2(ncid, varid, start, counts, i2vals) RESULT(status)
@@ -187,16 +213,17 @@
 
  Implicit NONE
 
- Integer,              Intent(IN) :: ncid, varid
- Integer,              Intent(IN) :: start(*), counts(*)
- Integer(KIND=NFINT2), Intent(IN) :: i2vals(*)
+ Integer,         Intent(IN) :: ncid, varid
+ Integer,         Intent(IN) :: start(*), counts(*)
+ Integer(NFINT2), Intent(IN) :: i2vals(*)
 
- Integer                          :: status
+ Integer                     :: status
+
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  If (C_SHORT < 0) Then ! short not supported by processor
    status = NC_EBADTYPE
@@ -205,8 +232,6 @@
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -216,11 +241,13 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
 #if NF_INT2_IS_C_SHORT
@@ -233,6 +260,13 @@
 
  status = cstatus
 
+! Make sure there are no dangling pointers or and allocated arrays
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_put_vara_int2
 !--------------------------------- nf_put_vara_int -------------------------
  Function nf_put_vara_int(ncid, varid, start, counts, ivals) RESULT(status)
@@ -249,15 +283,14 @@
 
  Integer                    :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -267,11 +300,13 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
 #if NF_INT_IS_C_INT
@@ -282,6 +317,13 @@
 
  status = cstatus
 
+! Make sure there are no dangling pointers or and allocated arrays
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_put_vara_int
 !--------------------------------- nf_put_vara_real ------------------------
  Function nf_put_vara_real(ncid, varid, start, counts, rvals) RESULT(status)
@@ -298,15 +340,14 @@
 
  Integer                  :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -316,11 +357,13 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
 #if NF_REAL_IS_C_DOUBLE
@@ -331,6 +374,13 @@
 
  status = cstatus
 
+! Make sure there are no dangling pointers or and allocated arrays
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_put_vara_real
 !--------------------------------- nf_put_vara_double ----------------------
  Function nf_put_vara_double(ncid, varid, start, counts, dvals) &
@@ -348,15 +398,14 @@
 
  Integer               :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims) ! get varid dimension
 
@@ -366,17 +415,26 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
  cstatus = nc_put_vara_double(cncid, cvarid, cstartptr, ccountsptr, dvals)
 
  status = cstatus
 
+! Make sure there are no dangling pointers or and allocated arrays
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_put_vara_double
 !--------------------------------- nf_put_vara ------------------------------
  Function nf_put_vara(ncid, varid, start, counts, values) RESULT(status)
@@ -392,19 +450,16 @@
  Integer,                Intent(IN)         :: ncid, varid
  Integer,                Intent(IN)         :: start(*), counts(*)
  Character(KIND=C_CHAR), Intent(IN), TARGET :: values(*)
-! Type(C_PTR),            VALUE              :: values
  Integer                                    :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr, cvaluesptr
-! Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cvaluesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -414,11 +469,13 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
  cvaluesptr = C_LOC(values)
@@ -428,6 +485,13 @@
 
  status = cstatus
 
+! Make sure there are no dangling pointers or and allocated arrays
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_put_vara
 !--------------------------------- nf_get_vara_text ----------------------
  Function nf_get_vara_text(ncid, varid, start, counts, text) RESULT(status)
@@ -444,15 +508,14 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
  text    = REPEAT(" ", LEN(text))
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
@@ -463,17 +526,26 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
  cstatus = nc_get_vara_text(cncid, cvarid, cstartptr, ccountsptr, text)
 
  status = cstatus
 
+! Make sure there are no dangling pointers or and allocated arrays
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_get_vara_text
 !--------------------------------- nf_get_vara_text_a ----------------------
  Function nf_get_vara_text_a(ncid, varid, start, counts, text) RESULT(status)
@@ -490,15 +562,14 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -508,17 +579,26 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
  cstatus = nc_get_vara_text(cncid, cvarid, cstartptr, ccountsptr, text)
 
  status = cstatus
 
+! Make sure there are no dangling pointers or and allocated arrays
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_get_vara_text_a
 !--------------------------------- nf_get_vara_int1 ------------------------
  Function nf_get_vara_int1(ncid, varid, start, counts, i1vals) RESULT(status)
@@ -529,16 +609,17 @@
 
  Implicit NONE
 
- Integer,              Intent(IN)  :: ncid, varid
- Integer,              Intent(IN)  :: start(*), counts(*)
- Integer(KIND=NFINT1), Intent(OUT) :: i1vals(*)
+ Integer,         Intent(IN)  :: ncid, varid
+ Integer,         Intent(IN)  :: start(*), counts(*)
+ Integer(NFINT1), Intent(OUT) :: i1vals(*)
 
- Integer                           :: status
+ Integer                      :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  If (C_SIGNED_CHAR < 0) Then ! schar not supported by processor
    status = NC_EBADTYPE
@@ -547,8 +628,6 @@
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -558,11 +637,13 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
 #if NF_INT1_IS_C_SIGNED_CHAR
@@ -577,6 +658,13 @@
 
  status = cstatus
 
+! Make sure there are no dangling pointers or and allocated arrays
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_get_vara_int1
 !--------------------------------- nf_get_vara_int2 ------------------------
  Function nf_get_vara_int2(ncid, varid, start, counts, i2vals) RESULT(status)
@@ -587,16 +675,17 @@
 
  Implicit NONE
 
- Integer,              Intent(IN)  :: ncid, varid
- Integer,              Intent(IN)  :: start(*), counts(*)
- Integer(KIND=NFINT2), Intent(OUT) :: i2vals(*)
+ Integer,         Intent(IN)  :: ncid, varid
+ Integer,         Intent(IN)  :: start(*), counts(*)
+ Integer(NFINT2), Intent(OUT) :: i2vals(*)
 
- Integer                           :: status
+ Integer                      :: status
+
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  If (C_SHORT < 0) Then ! short not supported by processor
    status = NC_EBADTYPE
@@ -605,8 +694,6 @@
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -616,11 +703,13 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
 #if NF_INT2_IS_C_SHORT
@@ -633,6 +722,13 @@
 
  status = cstatus
 
+! Make sure there are no dangling pointers or and allocated arrays
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_get_vara_int2
 !--------------------------------- nf_get_vara_int -------------------------
  Function nf_get_vara_int(ncid, varid, start, counts, ivals) RESULT(status)
@@ -649,15 +745,14 @@
 
  Integer                     :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -667,11 +762,13 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
 #if NF_INT_IS_C_INT
@@ -682,6 +779,13 @@
 
  status = cstatus
 
+! Make sure there are no dangling pointers or and allocated arrays
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_get_vara_int
 !--------------------------------- nf_get_vara_real ------------------------
  Function nf_get_vara_real(ncid, varid, start, counts, rvals) RESULT(status)
@@ -698,15 +802,14 @@
 
  Integer                   :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -716,11 +819,13 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
 #if NF_REAL_IS_C_DOUBLE
@@ -731,6 +836,13 @@
 
  status = cstatus
 
+! Make sure there are no dangling pointers or and allocated arrays
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_get_vara_real
 !--------------------------------- nf_get_vara_double ----------------------
  Function nf_get_vara_double(ncid, varid, start, counts, dvals) &
@@ -748,15 +860,14 @@
 
  Integer                :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims) ! get varid dimension
 
@@ -766,17 +877,26 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
  cstatus = nc_get_vara_double(cncid, cvarid, cstartptr, ccountsptr, dvals)
 
  status = cstatus
 
+! Make sure there are no dangling pointers or and allocated arrays
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_get_vara_double
 !--------------------------------- nf_get_vara ------------------------------
  Function nf_get_vara(ncid, varid, start, counts, values) RESULT(status)
@@ -792,18 +912,16 @@
  Integer,                Intent(IN)            :: ncid, varid
  Integer,                Intent(IN)            :: start(*), counts(*)
  Character(KIND=C_CHAR), Intent(INOUT), TARGET :: values(*)
-! Type(C_PTR),            VALUE                 :: values
  Integer                                       :: status
 
- Integer(KIND=C_INT)            :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T), TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Type(C_PTR)                    :: cstartptr, ccountsptr
- Integer                        :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T), ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
 
  cncid   = ncid
  cvarid  = varid - 1 ! Subtract 1 to get C varid
- cstart  = 0
- ccounts = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -813,15 +931,24 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! flip array order for C and subtract 1 from start
-     cstart(1:ndims)  = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     cstart(1:ndims)  = start(ndims:1:-1) - 1
      ccounts(1:ndims) = counts(ndims:1:-1)
+     cstartptr        = C_LOC(cstart)
+     ccountsptr       = C_LOC(ccounts)
    EndIf
-   cstartptr  = C_LOC(cstart)
-   ccountsptr = C_LOC(ccounts)
  EndIf
 
  cstatus = nc_get_vara(cncid, cvarid, cstartptr, ccountsptr, values)
 
  status = cstatus
 
+! Make sure there are no dangling pointers or and allocated arrays
+
+ cstartptr  = C_NULL_PTR
+ ccountsptr = C_NULL_PTR
+ If (ALLOCATED(ccounts)) DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))  DEALLOCATE(cstart)
+
  End Function nf_get_vara
diff --git a/fortran/nf_vario.F90 b/fortran/nf_vario.F90
index d86d525..fc138d3 100755
--- a/fortran/nf_vario.F90
+++ b/fortran/nf_vario.F90
@@ -27,6 +27,7 @@
 ! Version 3.: April 2009 - Updated for netCDF 4.0.1
 ! Version 4.: April 2010 - Updated for netCDF 4.1.1
 !                          Added preprocessor tests for int and real types
+! Version 5.: Jan.  2016 - Some minor code cleanup
 
 !--------------------------------- nf_put_var_text -----------------------
  Function nf_put_var_text(ncid, varid, text) RESULT(status)
@@ -42,7 +43,7 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
+ Integer(C_INT) :: cncid, cvarid,  cstatus
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract 1 to get C varid
@@ -66,7 +67,7 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
+ Integer(C_INT) :: cncid, cvarid,  cstatus
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract 1 to get C varid
@@ -85,12 +86,12 @@
 
  Implicit NONE
 
- Integer,              Intent(IN) :: ncid, varid
- Integer(KIND=NFINT1), Intent(IN) :: i1vals(*)
+ Integer,         Intent(IN) :: ncid, varid
+ Integer(NFINT1), Intent(IN) :: i1vals(*)
 
- Integer                          :: status
+ Integer                     :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
+ Integer(C_INT) :: cncid, cvarid,  cstatus
 
  If (C_SIGNED_CHAR < 0) Then ! schar not supported by processor
    status = NC_EBADTYPE
@@ -122,12 +123,12 @@
 
  Implicit NONE
 
- Integer,              Intent(IN) :: ncid, varid
- Integer(KIND=NFINT2), Intent(IN) :: i2vals(*)
+ Integer,         Intent(IN) :: ncid, varid
+ Integer(NFINT2), Intent(IN) :: i2vals(*)
 
- Integer                          :: status
+ Integer                     :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
+ Integer(C_INT) :: cncid, cvarid,  cstatus
 
  If (C_SHORT < 0) Then ! short not supported by processor
    status = NC_EBADTYPE
@@ -162,7 +163,7 @@
 
  Integer                    :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
+ Integer(C_INT) :: cncid, cvarid,  cstatus
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract 1 to get C varid
@@ -187,9 +188,10 @@
 
  Integer,         Intent(IN) :: ncid, varid
  Real(NFREAL),    Intent(IN) :: rvals(*)
+
  Integer                     :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
+ Integer(C_INT) :: cncid, cvarid,  cstatus
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract 1 to get C varid
@@ -217,7 +219,7 @@
 
  Integer               :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
+ Integer(C_INT) :: cncid, cvarid,  cstatus
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract 1 to get C varid
@@ -241,7 +243,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
+ Integer(C_INT) :: cncid, cvarid,  cstatus
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract 1 to get C varid
@@ -266,7 +268,7 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
+ Integer(C_INT) :: cncid, cvarid,  cstatus
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract 1 to get C varid
@@ -285,12 +287,12 @@
 
  Implicit NONE
 
- Integer,              Intent(IN)  :: ncid, varid
- Integer(KIND=NFINT1), Intent(OUT) :: i1vals(*)
+ Integer,         Intent(IN)  :: ncid, varid
+ Integer(NFINT1), Intent(OUT) :: i1vals(*)
 
- Integer                           :: status
+ Integer                      :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
+ Integer(C_INT) :: cncid, cvarid,  cstatus
 
  If (C_SIGNED_CHAR < 0) Then ! schar not supported by processor
    status = NC_EBADTYPE
@@ -322,12 +324,12 @@
 
  Implicit NONE
 
- Integer,              Intent(IN)  :: ncid, varid
- Integer(KIND=NFINT2), Intent(OUT) :: i2vals(*)
+ Integer,         Intent(IN)  :: ncid, varid
+ Integer(NFINT2), Intent(OUT) :: i2vals(*)
 
- Integer                           :: status
+ Integer                      :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
+ Integer(C_INT) :: cncid, cvarid,  cstatus
 
  If (C_SHORT < 0) Then ! short not supported by processor
    status = NC_EBADTYPE
@@ -362,7 +364,7 @@
 
  Integer                     :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
+ Integer(C_INT) :: cncid, cvarid,  cstatus
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract 1 to get C varid
@@ -390,7 +392,7 @@
 
  Integer                   :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid,  cstatus
+ Integer(C_INT) :: cncid, cvarid,  cstatus
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract 1 to get C varid
@@ -418,7 +420,7 @@
 
  Integer                :: status
 
- Integer(KIND=C_INT) :: cncid, cvarid, cstatus
+ Integer(C_INT) :: cncid, cvarid, cstatus
 
  cncid  = ncid
  cvarid = varid - 1 ! Subtract 1 to get C varid
diff --git a/fortran/nf_varmio.F90 b/fortran/nf_varmio.F90
index d8aa7a7..75cedf6 100755
--- a/fortran/nf_varmio.F90
+++ b/fortran/nf_varmio.F90
@@ -1,4 +1,5 @@
 #include "nfconfig.inc"
+
 !- Array/string put/get routines given start, count, stride, and map vectors - 
 
 ! Replacement for fort-varmio.c
@@ -29,6 +30,9 @@
 ! Version 3.: April 2009 - Updated for netCDF 4.0.1
 ! Version 4.: April 2010 - Updated for netCDF 4.1.1
 !                          Added preprocessor tests for int and real types
+! Version 5.: Jan.  2016 - Replaced automatic arrays for cstart, ccounts,
+!                          cstrides, and cmaps with allocatable arrays and
+!                          general code cleanup
 
 !--------------------------------- nf_put_varm_text ----------------------
  Function nf_put_varm_text(ncid, varid, start, counts, strides, maps, &
@@ -46,19 +50,15 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cmaps(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cmapsptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr, cmapsptr 
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cmaps(:)
 
  cncid    = ncid
  cvarid   = varid -1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
- cmaps    = 0 
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -70,15 +70,19 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(1:ndims))
+     ALLOCATE(ccounts(1:ndims))
+     ALLOCATE(cstrides(1:ndims))
+     ALLOCATE(cmaps(1:ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
      cmaps(1:ndims)    = maps(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
+     cmapsptr          = C_LOC(cmaps)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
-   cmapsptr    = C_LOC(cmaps)
  EndIf
 
  cstatus = nc_put_varm_text(cncid, cvarid, cstartptr, ccountsptr, &
@@ -86,6 +90,17 @@
 
  status = cstatus
 
+! Make sure we don't leave any dangling pointers or allocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cmapsptr    = C_NULL_PTR
+ If (ALLOCATED(cmaps))    DEALLOCATE(cmaps)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_put_varm_text
 !--------------------------------- nf_put_varm_text_a ----------------------
  Function nf_put_varm_text_a(ncid, varid, start, counts, strides, maps, &
@@ -103,19 +118,15 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cmaps(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr,&
-                                      cmapsptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr, cmapsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cmaps(:)
 
  cncid    = ncid
  cvarid   = varid -1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
- cmaps    = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -127,15 +138,19 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(1:ndims))
+     ALLOCATE(ccounts(1:ndims))
+     ALLOCATE(cstrides(1:ndims))
+     ALLOCATE(cmaps(1:ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
      cmaps(1:ndims)    = maps(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
+     cmapsptr          = C_LOC(cmaps)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
-   cmapsptr    = C_LOC(cmaps)
  EndIf
 
  cstatus = nc_put_varm_text(cncid, cvarid, cstartptr, ccountsptr, &
@@ -143,6 +158,17 @@
 
  status = cstatus
 
+! Make sure we don't leave any dangling pointers or allocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cmapsptr    = C_NULL_PTR
+ If (ALLOCATED(cmaps))    DEALLOCATE(cmaps)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_put_varm_text_a
 !--------------------------------- nf_put_varm_int1 ------------------------
  Function nf_put_varm_int1(ncid, varid, start, counts, strides, maps, &
@@ -154,18 +180,18 @@
 
  Implicit NONE
 
- Integer,              Intent(IN) :: ncid, varid
- Integer,              Intent(IN) :: start(*), counts(*), strides(*), maps(*)
- Integer(KIND=NFINT1), Intent(IN) :: i1vals(*)
+ Integer,         Intent(IN) :: ncid, varid
+ Integer,         Intent(IN) :: start(*), counts(*), strides(*), maps(*)
+ Integer(NFINT1), Intent(IN) :: i1vals(*)
+
+ Integer                     :: status
 
- Integer                          :: status
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr, cmapsptr
+ Integer        :: ndims
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cmaps(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr,&
-                                      cmapsptr
- Integer                           :: ndims
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cmaps(:)
 
  If (C_SIGNED_CHAR < 0) Then ! schar not supported by processor
    status = NC_EBADTYPE
@@ -174,10 +200,6 @@
 
  cncid    = ncid
  cvarid   = varid -1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
- cmaps    = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -189,15 +211,19 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(1:ndims))
+     ALLOCATE(ccounts(1:ndims))
+     ALLOCATE(cstrides(1:ndims))
+     ALLOCATE(cmaps(1:ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
      cmaps(1:ndims)    = maps(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
+     cmapsptr          = C_LOC(cmaps)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
-   cmapsptr    = C_LOC(cmaps)
  EndIf
 
 #if NF_INT1_IS_C_SIGNED_CHAR
@@ -216,6 +242,17 @@
 
  status = cstatus
 
+! Make sure we don't leave any dangling pointers or allocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cmapsptr    = C_NULL_PTR
+ If (ALLOCATED(cmaps))    DEALLOCATE(cmaps)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_put_varm_int1
 !--------------------------------- nf_put_varm_int2 ------------------------
  Function nf_put_varm_int2(ncid, varid, start, counts, strides, maps, &
@@ -227,18 +264,18 @@
 
  Implicit NONE
 
- Integer,              Intent(IN) :: ncid, varid
- Integer,              Intent(IN) :: start(*), counts(*), strides(*), maps(*)
- Integer(KIND=NFINT2), Intent(IN) :: i2vals(*)
+ Integer,         Intent(IN) :: ncid, varid
+ Integer,         Intent(IN) :: start(*), counts(*), strides(*), maps(*)
+ Integer(NFINT2), Intent(IN) :: i2vals(*)
 
- Integer                          :: status
+ Integer                     :: status
+
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr,  cmapsptr
+ Integer        :: ndims
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cmaps(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cmapsptr
- Integer                           :: ndims
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cmaps(:)
 
  If (C_SHORT < 0) Then ! short not supported by processor
    status = NC_EBADTYPE
@@ -247,10 +284,6 @@
 
  cncid    = ncid
  cvarid   = varid -1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
- cmaps    = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -262,15 +295,19 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(1:ndims))
+     ALLOCATE(ccounts(1:ndims))
+     ALLOCATE(cstrides(1:ndims))
+     ALLOCATE(cmaps(1:ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
      cmaps(1:ndims)    = maps(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
+     cmapsptr          = C_LOC(cmaps)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
-   cmapsptr    = C_LOC(cmaps)
  EndIf
 
 #if NF_INT2_IS_C_SHORT
@@ -286,6 +323,17 @@
 
  status = cstatus
 
+! Make sure we don't leave any dangling pointers or allocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cmapsptr    = C_NULL_PTR
+ If (ALLOCATED(cmaps))    DEALLOCATE(cmaps)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_put_varm_int2
 !--------------------------------- nf_put_varm_int -------------------------
  Function nf_put_varm_int(ncid, varid, start, counts, strides, maps, &
@@ -303,19 +351,15 @@
 
  Integer                    :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cmaps(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cmapsptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr, cmapsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cmaps(:)
 
  cncid    = ncid
  cvarid   = varid -1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
- cmaps    = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -327,15 +371,19 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(1:ndims))
+     ALLOCATE(ccounts(1:ndims))
+     ALLOCATE(cstrides(1:ndims))
+     ALLOCATE(cmaps(1:ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
      cmaps(1:ndims)    = maps(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
+     cmapsptr          = C_LOC(cmaps)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
-   cmapsptr    = C_LOC(cmaps)
  EndIf
 
 #if NF_INT_IS_C_INT
@@ -348,6 +396,17 @@
 
  status = cstatus
 
+! Make sure we don't leave any dangling pointers or allocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cmapsptr    = C_NULL_PTR
+ If (ALLOCATED(cmaps))    DEALLOCATE(cmaps)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_put_varm_int
 !--------------------------------- nf_put_varm_real ------------------------
  Function nf_put_varm_real(ncid, varid, start, counts, strides, maps, &
@@ -365,19 +424,15 @@
 
  Integer                  :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cmaps(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cmapsptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr, cmapsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cmaps(:)
 
  cncid    = ncid
  cvarid   = varid -1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
- cmaps    = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -389,15 +444,19 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(1:ndims))
+     ALLOCATE(ccounts(1:ndims))
+     ALLOCATE(cstrides(1:ndims))
+     ALLOCATE(cmaps(1:ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
      cmaps(1:ndims)    = maps(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
+     cmapsptr          = C_LOC(cmaps)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
-   cmapsptr    = C_LOC(cmaps)
  EndIf
 
 #if NF_REAL_IS_C_DOUBLE
@@ -407,8 +466,20 @@
  cstatus = nc_put_varm_float(cncid, cvarid, cstartptr, ccountsptr, &
                              cstridesptr, cmapsptr, rvals) 
 #endif
+
  status = cstatus
 
+! Make sure we don't leave any dangling pointers or allocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cmapsptr    = C_NULL_PTR
+ If (ALLOCATED(cmaps))    DEALLOCATE(cmaps)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_put_varm_real
 !--------------------------------- nf_put_varm_double ----------------------
  Function nf_put_varm_double(ncid, varid, start, counts, strides, maps, &
@@ -426,19 +497,15 @@
 
  Integer               :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cmaps(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cmapsptr
- Integer                           :: ndims
+ Integer(C_INT)  :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)     :: cstartptr, ccountsptr, cstridesptr, cmapsptr
+ Integer         :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cmaps(:)
 
  cncid    = ncid
  cvarid   = varid -1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
- cmaps    = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -450,15 +517,19 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(1:ndims))
+     ALLOCATE(ccounts(1:ndims))
+     ALLOCATE(cstrides(1:ndims))
+     ALLOCATE(cmaps(1:ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
      cmaps(1:ndims)    = maps(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
+     cmapsptr          = C_LOC(cmaps)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
-   cmapsptr    = C_LOC(cmaps)
  EndIf
   
  cstatus = nc_put_varm_double(cncid, cvarid, cstartptr, ccountsptr, &
@@ -466,6 +537,17 @@
 
  status = cstatus
 
+! Make sure we don't leave any dangling pointers or allocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cmapsptr    = C_NULL_PTR
+ If (ALLOCATED(cmaps))    DEALLOCATE(cmaps)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_put_varm_double
 !--------------------------------- nf_get_varm_text ----------------------
  Function nf_get_varm_text(ncid, varid, start, counts, strides, maps, &
@@ -483,19 +565,15 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cmaps(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cmapsptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr, cmapsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cmaps(:)
 
  cncid    = ncid
  cvarid   = varid -1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
- cmaps    = 0
  text     = REPEAT(" ",LEN(text))
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
@@ -508,15 +586,19 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(1:ndims))
+     ALLOCATE(ccounts(1:ndims))
+     ALLOCATE(cstrides(1:ndims))
+     ALLOCATE(cmaps(1:ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
      cmaps(1:ndims)    = maps(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
+     cmapsptr          = C_LOC(cmaps)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
-   cmapsptr    = C_LOC(cmaps)
  EndIf
 
  cstatus = nc_get_varm_text(cncid, cvarid, cstartptr, ccountsptr, &
@@ -524,6 +606,17 @@
 
  status = cstatus
 
+! Make sure we don't leave any dangling pointers or allocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cmapsptr    = C_NULL_PTR
+ If (ALLOCATED(cmaps))    DEALLOCATE(cmaps)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_varm_text
 !--------------------------------- nf_get_varm_text_a ----------------------
  Function nf_get_varm_text_a(ncid, varid, start, counts, strides, maps, &
@@ -541,19 +634,15 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cmaps(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cmapsptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr, cmapsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cmaps(:)
 
  cncid    = ncid
  cvarid   = varid -1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
- cmaps    = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -565,15 +654,19 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(1:ndims))
+     ALLOCATE(ccounts(1:ndims))
+     ALLOCATE(cstrides(1:ndims))
+     ALLOCATE(cmaps(1:ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
      cmaps(1:ndims)    = maps(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
+     cmapsptr          = C_LOC(cmaps)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
-   cmapsptr    = C_LOC(cmaps)
  EndIf
 
  cstatus = nc_get_varm_text(cncid, cvarid, cstartptr, ccountsptr, &
@@ -581,6 +674,17 @@
 
  status = cstatus
 
+! Make sure we don't leave any dangling pointers or allocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cmapsptr    = C_NULL_PTR
+ If (ALLOCATED(cmaps))    DEALLOCATE(cmaps)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_varm_text_a
 !--------------------------------- nf_get_varm_int1 ------------------------
  Function nf_get_varm_int1(ncid, varid, start, counts, strides, maps, &
@@ -592,18 +696,18 @@
 
  Implicit NONE
 
- Integer,              Intent(IN)  :: ncid, varid
- Integer,              Intent(IN)  :: start(*), counts(*), strides(*), maps(*)
- Integer(KIND=NFINT1), Intent(OUT) :: i1vals(*)
+ Integer,         Intent(IN)  :: ncid, varid
+ Integer,         Intent(IN)  :: start(*), counts(*), strides(*), maps(*)
+ Integer(NFINT1), Intent(OUT) :: i1vals(*)
+
+ Integer                      :: status
 
- Integer                           :: status
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr, cmapsptr
+ Integer        :: ndims
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cmaps(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cmapsptr
- Integer                           :: ndims
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cmaps(:)
 
  If (C_SIGNED_CHAR < 0) Then ! schar not supported by processor
    status = NC_EBADTYPE
@@ -612,10 +716,6 @@
 
  cncid    = ncid
  cvarid   = varid -1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
- cmaps    = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -627,15 +727,19 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(1:ndims))
+     ALLOCATE(ccounts(1:ndims))
+     ALLOCATE(cstrides(1:ndims))
+     ALLOCATE(cmaps(1:ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
      cmaps(1:ndims)    = maps(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
+     cmapsptr          = C_LOC(cmaps)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
-   cmapsptr    = C_LOC(cmaps)
  EndIf
 
 #if NF_INT1_IS_C_SIGNED_CHAR
@@ -654,6 +758,17 @@
 
  status = cstatus
 
+! Make sure we don't leave any dangling pointers or allocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cmapsptr    = C_NULL_PTR
+ If (ALLOCATED(cmaps))    DEALLOCATE(cmaps)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_varm_int1
 !--------------------------------- nf_get_varm_int2 ------------------------
  Function nf_get_varm_int2(ncid, varid, start, counts, strides, maps, &
@@ -665,18 +780,18 @@
 
  Implicit NONE
 
- Integer,              Intent(IN)  :: ncid, varid
- Integer,              Intent(IN)  :: start(*), counts(*), strides(*), maps(*)
- Integer(KIND=NFINT2), Intent(OUT) :: i2vals(*)
+ Integer,         Intent(IN)  :: ncid, varid
+ Integer,         Intent(IN)  :: start(*), counts(*), strides(*), maps(*)
+ Integer(NFINT2), Intent(OUT) :: i2vals(*)
 
- Integer                           :: status
+ Integer                      :: status
+
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr, cmapsptr
+ Integer        :: ndims
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cmaps(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cmapsptr
- Integer                           :: ndims
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cmaps(:)
 
  If (C_SHORT < 0) Then ! short not supported by processor
    status = NC_EBADTYPE
@@ -685,10 +800,6 @@
 
  cncid    = ncid
  cvarid   = varid -1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
- cmaps    = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -700,15 +811,19 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(1:ndims))
+     ALLOCATE(ccounts(1:ndims))
+     ALLOCATE(cstrides(1:ndims))
+     ALLOCATE(cmaps(1:ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
      cmaps(1:ndims)    = maps(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
+     cmapsptr          = C_LOC(cmaps)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
-   cmapsptr    = C_LOC(cmaps)
  EndIf
 
 #if NF_INT2_IS_C_SHORT
@@ -724,6 +839,17 @@
 
  status = cstatus
 
+! Make sure we don't leave any dangling pointers or allocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cmapsptr    = C_NULL_PTR
+ If (ALLOCATED(cmaps))    DEALLOCATE(cmaps)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_varm_int2
 !--------------------------------- nf_get_varm_int -------------------------
  Function nf_get_varm_int(ncid, varid, start, counts, strides, maps, &
@@ -741,19 +867,15 @@
 
  Integer                     :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cmaps(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cmapsptr
- Integer                              :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr, cmapsptr 
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cmaps(:)
 
  cncid    = ncid
  cvarid   = varid -1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
- cmaps    = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -765,15 +887,19 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(1:ndims))
+     ALLOCATE(ccounts(1:ndims))
+     ALLOCATE(cstrides(1:ndims))
+     ALLOCATE(cmaps(1:ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
      cmaps(1:ndims)    = maps(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
+     cmapsptr          = C_LOC(cmaps)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
-   cmapsptr    = C_LOC(cmaps)
  EndIf
 
 #if NF_INT_IS_C_INT
@@ -786,6 +912,17 @@
 
  status = cstatus
 
+! Make sure we don't leave any dangling pointers or allocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cmapsptr    = C_NULL_PTR
+ If (ALLOCATED(cmaps))    DEALLOCATE(cmaps)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_varm_int
 !--------------------------------- nf_get_varm_real ------------------------
  Function nf_get_varm_real(ncid, varid, start, counts, strides, maps, &
@@ -803,19 +940,15 @@
 
  Integer                   :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cmaps(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cmapsptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr, cmapsptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cmaps(:)
 
  cncid    = ncid
  cvarid   = varid -1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
- cmaps    = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -827,15 +960,19 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(1:ndims))
+     ALLOCATE(ccounts(1:ndims))
+     ALLOCATE(cstrides(1:ndims))
+     ALLOCATE(cmaps(1:ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
      cmaps(1:ndims)    = maps(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
+     cmapsptr          = C_LOC(cmaps)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
-   cmapsptr    = C_LOC(cmaps)
  EndIf
 
 #if NF_REAL_IS_C_DOUBLE
@@ -848,6 +985,17 @@
 
  status = cstatus
 
+! Make sure we don't leave any dangling pointers or allocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cmapsptr    = C_NULL_PTR
+ If (ALLOCATED(cmaps))    DEALLOCATE(cmaps)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_varm_real
 !--------------------------------- nf_get_varm_double ----------------------
  Function nf_get_varm_double(ncid, varid, start, counts, strides, maps, &
@@ -865,19 +1013,15 @@
 
  Integer                :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS), cmaps(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cmapsptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr, cmapsptr 
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:), cmaps(:)
 
  cncid    = ncid
  cvarid   = varid -1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
- cmaps    = 0
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -889,15 +1033,19 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(1:ndims))
+     ALLOCATE(ccounts(1:ndims))
+     ALLOCATE(cstrides(1:ndims))
+     ALLOCATE(cmaps(1:ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
      cmaps(1:ndims)    = maps(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
+     cmapsptr          = C_LOC(cmaps)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
-   cmapsptr    = C_LOC(cmaps)
  EndIf
 
  cstatus = nc_get_varm_double(cncid, cvarid, cstartptr, ccountsptr, &
@@ -905,4 +1053,15 @@
 
  status = cstatus
 
+! Make sure we don't leave any dangling pointers or allocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ cmapsptr    = C_NULL_PTR
+ If (ALLOCATED(cmaps))    DEALLOCATE(cmaps)
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_varm_double
diff --git a/fortran/nf_varsio.F90 b/fortran/nf_varsio.F90
index 0b6da66..d4534bf 100755
--- a/fortran/nf_varsio.F90
+++ b/fortran/nf_varsio.F90
@@ -1,4 +1,5 @@
 #include "nfconfig.inc"
+
 !-------- Array/string put/get routines given start, count, and stride -------
 
 ! Replacement for fort-varsio.c
@@ -29,6 +30,9 @@
 ! Version 3.: April 2009 - Updated for netCDF 4.0.1
 ! Version 4.: April 2010 - Updated for netCDF 4.1.1
 !                          Added preprocessor tests for int and real types
+! Version 5.: Jan.  2016 - Replaced automatic arrays for starts, counts,
+!                          and strides with allocatable arrays and general
+!                          text cleanup
 
 !--------------------------------- nf_put_vars_text ----------------------
  Function nf_put_vars_text(ncid, varid, start, counts, strides, text) &
@@ -46,17 +50,15 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -67,13 +69,16 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
  cstatus = nc_put_vars_text(cncid, cvarid, cstartptr, ccountsptr, &
@@ -99,17 +104,15 @@
 
  Integer                      :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -120,13 +123,16 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
  cstatus = nc_put_vars_text(cncid, cvarid, cstartptr, ccountsptr, &
@@ -144,17 +150,18 @@
 
  Implicit NONE
 
- Integer,              Intent(IN) :: ncid, varid
- Integer,              Intent(IN) :: start(*), counts(*), strides(*)
- Integer(KIND=NFINT1), Intent(IN) :: i1vals(*)
+ Integer,         Intent(IN) :: ncid, varid
+ Integer,         Intent(IN) :: start(*), counts(*), strides(*)
+ Integer(NFINT1), Intent(IN) :: i1vals(*)
 
  Integer                          :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  If (C_SIGNED_CHAR < 0) Then ! schar not supported by processor
    status = NC_EBADTYPE
@@ -163,9 +170,6 @@
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -176,13 +180,16 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
 #if NF_INT1_IS_C_SIGNED_CHAR
@@ -201,6 +208,15 @@
 
  status = cstatus
 
+! Make sure we have no dangling pointers and unallocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_put_vars_int1
 !--------------------------------- nf_put_vars_int2 ------------------------
  Function nf_put_vars_int2(ncid, varid, start, counts, strides, i2vals) &
@@ -212,17 +228,18 @@
 
  Implicit NONE
 
- Integer,              Intent(IN) :: ncid, varid
- Integer,              Intent(IN) :: start(*), counts(*), strides(*)
- Integer(KIND=NFINT2), Intent(IN) :: i2vals(*)
+ Integer,         Intent(IN) :: ncid, varid
+ Integer,         Intent(IN) :: start(*), counts(*), strides(*)
+ Integer(NFINT2), Intent(IN) :: i2vals(*)
 
  Integer                          :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  If (C_SHORT < 0) Then ! short not supported by processor
    status = NC_EBADTYPE
@@ -231,9 +248,6 @@
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -244,13 +258,16 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
 #if NF_INT2_IS_C_SHORT
@@ -266,6 +283,15 @@
 
  status = cstatus
 
+! Make sure we have no dangling pointers and unallocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_put_vars_int2
 !--------------------------------- nf_put_vars_int -------------------------
  Function nf_put_vars_int(ncid, varid, start, counts, strides, ivals) &
@@ -283,17 +309,15 @@
 
  Integer                    :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -304,13 +328,16 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
 #if NF_INT_IS_C_INT
@@ -323,6 +350,15 @@
 
  status = cstatus
 
+! Make sure we have no dangling pointers and unallocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_put_vars_int
 !--------------------------------- nf_put_vars_real ------------------------
  Function nf_put_vars_real(ncid, varid, start, counts, strides, rvals) &
@@ -340,17 +376,15 @@
 
  Integer                  :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -361,13 +395,16 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
 #if NF_REAL_IS_C_DOUBLE
@@ -380,6 +417,15 @@
 
  status = cstatus
 
+! Make sure we have no dangling pointers and unallocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_put_vars_real
 !--------------------------------- nf_put_vars_double ----------------------
  Function nf_put_vars_double(ncid, varid, start, counts, strides, dvals) &
@@ -397,17 +443,15 @@
 
  Integer               :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -418,13 +462,16 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
  cstatus = nc_put_vars_double(cncid, cvarid, cstartptr, ccountsptr, &
@@ -432,6 +479,15 @@
 
  status = cstatus
 
+! Make sure we have no dangling pointers and unallocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_put_vars_double
 !--------------------------------- nf_put_vars -----------------------------
  Function nf_put_vars(ncid, varid, start, counts, strides, values) &
@@ -448,22 +504,17 @@
  Integer,                Intent(IN)         :: ncid, varid
  Integer,                Intent(IN)         :: start(*), counts(*), strides(*)
  Character(KIND=C_CHAR), Intent(IN), TARGET :: values(*) 
-! Type(C_PTR),            VALUE              :: values
  Integer                                    :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr, &
-                                      cvaluesptr
-! Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr, cvaluesptr 
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -474,24 +525,34 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
  cvaluesptr = C_LOC(values)
 
  cstatus = nc_put_vars(cncid, cvarid, cstartptr, ccountsptr, &
                        cstridesptr, cvaluesptr)
-! cstatus = nc_put_vars(cncid, cvarid, cstartptr, ccountsptr, &
-!                       cstridesptr, values)
 
  status = cstatus
 
+! Make sure we have no dangling pointers and unallocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_put_vars
 !--------------------------------- nf_get_vars_text ----------------------
  Function nf_get_vars_text(ncid, varid, start, counts, strides, text) &
@@ -509,17 +570,15 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
  text     = REPEAT(" ", LEN(text))
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
@@ -531,13 +590,16 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
  cstatus = nc_get_vars_text(cncid, cvarid, cstartptr, ccountsptr, &
@@ -545,6 +607,15 @@
 
  status = cstatus
 
+! Make sure we have no dangling pointers and unallocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_vars_text
 !--------------------------------- nf_get_vars_text_a ----------------------
  Function nf_get_vars_text_a(ncid, varid, start, counts, strides, text) &
@@ -562,17 +633,15 @@
 
  Integer                       :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -583,14 +652,16 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
  cstatus = nc_get_vars_text(cncid, cvarid, cstartptr, ccountsptr, &
@@ -598,6 +669,15 @@
 
  status = cstatus
 
+! Make sure we have no dangling pointers and unallocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_vars_text_a
 !--------------------------------- nf_get_vars_int1 ------------------------
  Function nf_get_vars_int1(ncid, varid, start, counts, strides, i1vals) &
@@ -609,17 +689,18 @@
 
  Implicit NONE
 
- Integer,              Intent(IN)  :: ncid, varid
- Integer,              Intent(IN)  :: start(*), counts(*), strides(*)
- Integer(KIND=NFINT1), Intent(OUT) :: i1vals(*)
+ Integer,         Intent(IN)  :: ncid, varid
+ Integer,         Intent(IN)  :: start(*), counts(*), strides(*)
+ Integer(NFINT1), Intent(OUT) :: i1vals(*)
 
  Integer                           :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  If (C_SIGNED_CHAR < 0) Then ! schar not supported by processor
    status = NC_EBADTYPE
@@ -628,9 +709,6 @@
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -641,13 +719,16 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
 #if NF_INT1_IS_C_SIGNED_CHAR
@@ -666,6 +747,15 @@
 
  status = cstatus
 
+! Make sure we have no dangling pointers and unallocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_vars_int1
 !--------------------------------- nf_get_vars_int2 ------------------------
  Function nf_get_vars_int2(ncid, varid, start, counts, strides, i2vals) &
@@ -677,17 +767,18 @@
 
  Implicit NONE
 
- Integer,              Intent(IN)  :: ncid, varid
- Integer,              Intent(IN)  :: start(*), counts(*), strides(*)
- Integer(KIND=NFINT2), Intent(OUT) :: i2vals(*)
+ Integer,         Intent(IN)  :: ncid, varid
+ Integer,         Intent(IN)  :: start(*), counts(*), strides(*)
+ Integer(NFINT2), Intent(OUT) :: i2vals(*)
 
  Integer                           :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  If (C_SHORT < 0) Then ! short not supported by processor
    status = NC_EBADTYPE
@@ -696,9 +787,6 @@
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -709,13 +797,16 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
 #if NF_INT2_IS_C_SHORT
@@ -731,6 +822,15 @@
 
  status = cstatus
 
+! Make sure we have no dangling pointers and unallocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_vars_int2
 !--------------------------------- nf_get_vars_int -------------------------
  Function nf_get_vars_int(ncid, varid, start, counts, strides, ivals) &
@@ -748,17 +848,15 @@
 
  Integer                     :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -769,13 +867,16 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
 #if NF_INT_IS_C_INT
@@ -788,6 +889,15 @@
 
  status = cstatus
 
+! Make sure we have no dangling pointers and unallocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_vars_int
 !--------------------------------- nf_get_vars_real ------------------------
  Function nf_get_vars_real(ncid, varid, start, counts, strides, rvals) &
@@ -805,17 +915,15 @@
 
  Integer                   :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -826,13 +934,16 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
 #if NF_REAL_IS_C_DOUBLE
@@ -845,6 +956,15 @@
 
  status = cstatus
 
+! Make sure we have no dangling pointers and unallocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_vars_real
 !--------------------------------- nf_get_vars_double ----------------------
  Function nf_get_vars_double(ncid, varid, start, counts, strides, dvals) &
@@ -862,17 +982,15 @@
 
  Integer                :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -883,13 +1001,16 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
  cstatus = nc_get_vars_double(cncid, cvarid, cstartptr, ccountsptr, &
@@ -897,6 +1018,15 @@
 
  status = cstatus
 
+! Make sure we have no dangling pointers and unallocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_vars_double
 !--------------------------------- nf_get_vars ----------------------------
  Function nf_get_vars(ncid, varid, start, counts, strides, values) &
@@ -913,21 +1043,18 @@
  Integer,                Intent(IN)    :: ncid, varid
  Integer,                Intent(IN)    :: start(*), counts(*), strides(*)
  Character(KIND=C_CHAR), Intent(INOUT) :: values
-! Type(C_PTR)             VALUE         :: values
 
  Integer                               :: status
 
- Integer(KIND=C_INT)               :: cncid, cvarid, cndims, cstat1, cstatus
- Integer(KIND=C_SIZE_T),    TARGET :: cstart(NC_MAX_DIMS), ccounts(NC_MAX_DIMS)
- Integer(KIND=C_PTRDIFF_T), TARGET :: cstrides(NC_MAX_DIMS)
- Type(C_PTR)                       :: cstartptr, ccountsptr, cstridesptr
- Integer                           :: ndims
+ Integer(C_INT) :: cncid, cvarid, cndims, cstat1, cstatus
+ Type(C_PTR)    :: cstartptr, ccountsptr, cstridesptr
+ Integer        :: ndims
+
+ Integer(C_SIZE_T),    ALLOCATABLE, TARGET :: cstart(:), ccounts(:)
+ Integer(C_PTRDIFF_T), ALLOCATABLE, TARGET :: cstrides(:)
 
  cncid    = ncid
  cvarid   = varid - 1 ! Subtract 1 to get C varid
- cstart   = 0
- ccounts  = 0
- cstrides = 1
 
  cstat1 = nc_inq_varndims(cncid, cvarid, cndims)
 
@@ -938,13 +1065,16 @@
 
  If (cstat1 == NC_NOERR) Then
    If (ndims > 0) Then ! Flip arrays to C order and subtract 1 from start
-     cstart(1:ndims)   = start(ndims:1:-1)-1
+     ALLOCATE(cstart(ndims))
+     ALLOCATE(ccounts(ndims))
+     ALLOCATE(cstrides(ndims))
+     cstart(1:ndims)   = start(ndims:1:-1) - 1
      ccounts(1:ndims)  = counts(ndims:1:-1)
      cstrides(1:ndims) = strides(ndims:1:-1)
+     cstartptr         = C_LOC(cstart)
+     ccountsptr        = C_LOC(ccounts)
+     cstridesptr       = C_LOC(cstrides)
    EndIf
-   cstartptr   = C_LOC(cstart)
-   ccountsptr  = C_LOC(ccounts)
-   cstridesptr = C_LOC(cstrides)
  EndIf
 
  cstatus = nc_get_vars(cncid, cvarid, cstartptr, ccountsptr, &
@@ -952,4 +1082,13 @@
 
  status = cstatus
 
+! Make sure we have no dangling pointers and unallocated arrays
+
+ cstartptr   = C_NULL_PTR
+ ccountsptr  = C_NULL_PTR
+ cstridesptr = C_NULL_PTR
+ If (ALLOCATED(cstrides)) DEALLOCATE(cstrides)
+ If (ALLOCATED(ccounts))  DEALLOCATE(ccounts)
+ If (ALLOCATED(cstart))   DEALLOCATE(cstart)
+
  End Function nf_get_vars
diff --git a/libsrc/Makefile.am b/libsrc/Makefile.am
index a3b8a27..f7529b2 100644
--- a/libsrc/Makefile.am
+++ b/libsrc/Makefile.am
@@ -6,10 +6,10 @@
 
 # The (temporary) library we are building.
 # The version number is specified using the following
-# guideline:
-# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
+# http:
+# guideline://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
 noinst_LTLIBRARIES = libnetcdfc.la
-libnetcdfc_la_LDFLAGS = $(AM_LDFLAGS) -version-number 6:0:1
+libnetcdfc_la_LDFLAGS = $(AM_LDFLAGS) -version-number 7:0:2
 
 # Tell make to install these as a header file.
 include_HEADERS = nfconfig.inc
diff --git a/libsrc/Makefile.in b/libsrc/Makefile.in
index 31d01ad..8f9baaa 100644
--- a/libsrc/Makefile.in
+++ b/libsrc/Makefile.in
@@ -365,10 +365,10 @@ top_srcdir = @top_srcdir@
 
 # The (temporary) library we are building.
 # The version number is specified using the following
-# guideline:
-# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
+# http:
+# guideline://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
 noinst_LTLIBRARIES = libnetcdfc.la
-libnetcdfc_la_LDFLAGS = $(AM_LDFLAGS) -version-number 6:0:1 \
+libnetcdfc_la_LDFLAGS = $(AM_LDFLAGS) -version-number 7:0:2 \
 	$(am__append_2)
 
 # Tell make to install these as a header file.
diff --git a/nf03_test/CMakeLists.txt b/nf03_test/CMakeLists.txt
index 726fb57..700885a 100644
--- a/nf03_test/CMakeLists.txt
+++ b/nf03_test/CMakeLists.txt
@@ -22,8 +22,7 @@ SET(nf03_test_SOURCES module_tests.F90 f03lib_f_interfaces.f90 test03_get.F test
   nf03_test.F test03_read.F test03_write.F util03.F f03lib.c)
 
 IF(USE_NETCDF4)
-  LIST(APPEND check_PROGRAMS f03tst_vars f03tst_vars2 f03tst_vars3 f03tst_vars4 f03tst_vars5
-    f03tst_vars6 f03tst_types f03tst_types2 f03tst_types3 f03tst_groups)
+  LIST(APPEND check_PROGRAMS f03tst_vars f03tst_vars2 f03tst_vars3 f03tst_vars4 f03tst_vars5 f03tst_vars6 f03tst_open_mem f03tst_types f03tst_types2 f03tst_types3 f03tst_groups)
   SET(f03tst_types_SOURCES module_tests.F90 f03tst_types.F f03lib_f_interfaces.f90 f03lib.c handle_err.F)
   SET(f03tst_types2_SOURCES module_tests.F90 f03tst_types2.F f03lib_f_interfaces.f90 f03lib.c handle_err.F)
   SET(f03tst_types3_SOURCES module_tests.F90 f03tst_types3.F f03lib_f_interfaces.f90 f03lib.c handle_err.F)
@@ -33,11 +32,12 @@ IF(USE_NETCDF4)
   SET(f03tst_vars4_SOURCES module_tests.F90 f03tst_vars4.F f03lib_f_interfaces.f90 f03lib.c handle_err.F)
   SET(f03tst_vars5_SOURCES module_tests.F90 f03tst_vars5.F f03lib_f_interfaces.f90 f03lib.c handle_err.F)
   SET(f03tst_vars6_SOURCES module_tests.F90 f03tst_vars6.F f03lib_f_interfaces.f90 f03lib.c handle_err.F)
+  SET(f03tst_open_mem_SOURCES module_tests.F90 f03tst_open_mem.F f03lib_f_interfaces.f90 f03lib.c handle_err.F)
   SET(f03tst_groups_SOURCES module_tests.F90 f03tst_groups.F f03lib_f_interfaces.f90 f03lib.c handle_err.F)
   LIST(APPEND TESTS f03tst_vars f03tst_vars2 f03tst_vars3 f03tst_vars4 f03tst_vars5
-    f03tst_vars6 f03tst_types f03tst_types2 f03tst_types3 f03tst_groups)
+    f03tst_vars6 f03tst_open_mem f03tst_types f03tst_types2 f03tst_types3 f03tst_groups)
   LIST(APPEND CLEANFILES ftst_vars.nc ftst_vars2.nc ftst_vars3.nc ftst_vars4.nc
-    ftst_vars5.nc ftst_vars6.nc ftst_types.nc ftst_types2.nc ftst_types3.nc ftst_groups.nc)
+    ftst_vars5.nc ftst_vars6.nc ftst_types.nc ftst_types2.nc ftst_types3.nc ftst_groups.nc f03tst_open_mem.nc)
 
   # This is a netCDF-4 V2 test program.
   IF(BUILD_V2)
diff --git a/nf03_test/Makefile.am b/nf03_test/Makefile.am
index 4e59ff3..3b248f0 100755
--- a/nf03_test/Makefile.am
+++ b/nf03_test/Makefile.am
@@ -57,7 +57,8 @@ if USE_NETCDF4
 
 # Add these netCDF-4 f77 test programs.
 check_PROGRAMS += f03tst_vars f03tst_vars2 f03tst_vars3 f03tst_vars4 f03tst_vars5	\
-f03tst_vars6 f03tst_types f03tst_types2 f03tst_types3 f03tst_groups
+f03tst_vars6 f03tst_open_mem f03tst_types f03tst_types2 f03tst_types3 \
+f03tst_groups
 f03tst_types_SOURCES = module_tests.F90 f03tst_types.F f03lib_f_interfaces.f90 f03lib.c handle_err.F
 f03tst_types2_SOURCES = module_tests.F90 f03tst_types2.F f03lib_f_interfaces.f90 f03lib.c handle_err.F
 f03tst_types3_SOURCES = module_tests.F90 f03tst_types3.F f03lib_f_interfaces.f90 f03lib.c handle_err.F
@@ -67,12 +68,14 @@ f03tst_vars3_SOURCES = module_tests.F90 f03tst_vars3.F f03lib_f_interfaces.f90 f
 f03tst_vars4_SOURCES = module_tests.F90 f03tst_vars4.F f03lib_f_interfaces.f90 f03lib.c handle_err.F
 f03tst_vars5_SOURCES = module_tests.F90 f03tst_vars5.F f03lib_f_interfaces.f90 f03lib.c handle_err.F
 f03tst_vars6_SOURCES = module_tests.F90 f03tst_vars6.F f03lib_f_interfaces.f90 f03lib.c handle_err.F
+f03tst_open_mem_SOURCES = module_tests.F90 f03tst_open_mem.F f03lib_f_interfaces.f90 f03lib.c handle_err.F
 f03tst_groups_SOURCES = module_tests.F90 f03tst_groups.F f03lib_f_interfaces.f90 f03lib.c handle_err.F
 TESTS += f03tst_vars f03tst_vars2 f03tst_vars3 f03tst_vars4 f03tst_vars5 \
-         f03tst_vars6 f03tst_types f03tst_types2 f03tst_types3 f03tst_groups
+         f03tst_vars6 f03tst_types f03tst_types2 f03tst_types3 f03tst_groups \
+         f03tst_open_mem
 CLEANFILES += ftst_vars.nc ftst_vars2.nc ftst_vars3.nc ftst_vars4.nc	\
               ftst_vars5.nc ftst_vars6.nc ftst_types.nc ftst_types2.nc \
-              ftst_types3.nc ftst_groups.nc
+              ftst_types3.nc ftst_groups.nc f03tst_open_mem.nc
 
 # This is a netCDF-4 V2 test program.
 if BUILD_V2
@@ -92,7 +95,7 @@ endif # USE_NETCDF4
 
 
 # This is the fortran v2 test. It depends on the utilities being built
-# to generate it's input file.
+# to generate i's input file.
 if BUILD_V2
 check_PROGRAMS += f03test
 TESTS += f03test
@@ -112,7 +115,8 @@ test: check
 # Did the user build the V2 F77 API? If so, run this test.
 if BUILD_V2
 check_PROGRAMS += tst03_f77_v2
+tst03_f77_v2_SOURCES = module_tests.F90 tst03_f77_v2.F handle_err.F
 TESTS += tst03_f77_v2
 CLEANFILES += tst_f77_v2.nc temp.tmp
-tst03_f77_v2_SOURCES = module_tests.F90 tst03_f77_v2.F
+
 endif # BUILD_V2
diff --git a/nf03_test/Makefile.in b/nf03_test/Makefile.in
index 98fe28c..9fa0b75 100644
--- a/nf03_test/Makefile.in
+++ b/nf03_test/Makefile.in
@@ -94,7 +94,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-TESTS = create_fills.sh nf03_test$(EXEEXT) $(am__EXEEXT_1) \
+TESTS = create_fills.sh nf03_test$(EXEEXT) $(am__EXEEXT_5) \
 	$(am__EXEEXT_2) $(am__EXEEXT_4)
 check_PROGRAMS = nf03_test$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \
 	$(am__EXEEXT_3) $(am__EXEEXT_4)
@@ -103,14 +103,16 @@ check_PROGRAMS = nf03_test$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \
 
 # Add these netCDF-4 f77 test programs.
 @USE_NETCDF4_TRUE at am__append_1 = f03tst_vars f03tst_vars2 f03tst_vars3 f03tst_vars4 f03tst_vars5	\
- at USE_NETCDF4_TRUE@f03tst_vars6 f03tst_types f03tst_types2 f03tst_types3 f03tst_groups
+ at USE_NETCDF4_TRUE@f03tst_vars6 f03tst_open_mem f03tst_types f03tst_types2 f03tst_types3 \
+ at USE_NETCDF4_TRUE@f03tst_groups
 
 @USE_NETCDF4_TRUE at am__append_2 = f03tst_vars f03tst_vars2 f03tst_vars3 f03tst_vars4 f03tst_vars5 \
- at USE_NETCDF4_TRUE@         f03tst_vars6 f03tst_types f03tst_types2 f03tst_types3 f03tst_groups
+ at USE_NETCDF4_TRUE@         f03tst_vars6 f03tst_types f03tst_types2 f03tst_types3 f03tst_groups \
+ at USE_NETCDF4_TRUE@         f03tst_open_mem
 
 @USE_NETCDF4_TRUE at am__append_3 = ftst_vars.nc ftst_vars2.nc ftst_vars3.nc ftst_vars4.nc	\
 @USE_NETCDF4_TRUE@              ftst_vars5.nc ftst_vars6.nc ftst_types.nc ftst_types2.nc \
- at USE_NETCDF4_TRUE@              ftst_types3.nc ftst_groups.nc
+ at USE_NETCDF4_TRUE@              ftst_types3.nc ftst_groups.nc f03tst_open_mem.nc
 
 
 # This is a netCDF-4 V2 test program.
@@ -123,7 +125,7 @@ check_PROGRAMS = nf03_test$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \
 @TEST_PARALLEL_TRUE@@USE_NETCDF4_TRUE at am__append_8 = ftst_parallel.nc
 
 # This is the fortran v2 test. It depends on the utilities being built
-# to generate it's input file.
+# to generate i's input file.
 
 # Did the user build the V2 F77 API? If so, run this test.
 @BUILD_V2_TRUE at am__append_9 = f03test tst03_f77_v2
@@ -148,8 +150,9 @@ CONFIG_CLEAN_VPATH_FILES =
 @USE_NETCDF4_TRUE at am__EXEEXT_1 = f03tst_vars$(EXEEXT) \
 @USE_NETCDF4_TRUE@	f03tst_vars2$(EXEEXT) f03tst_vars3$(EXEEXT) \
 @USE_NETCDF4_TRUE@	f03tst_vars4$(EXEEXT) f03tst_vars5$(EXEEXT) \
- at USE_NETCDF4_TRUE@	f03tst_vars6$(EXEEXT) f03tst_types$(EXEEXT) \
- at USE_NETCDF4_TRUE@	f03tst_types2$(EXEEXT) \
+ at USE_NETCDF4_TRUE@	f03tst_vars6$(EXEEXT) \
+ at USE_NETCDF4_TRUE@	f03tst_open_mem$(EXEEXT) \
+ at USE_NETCDF4_TRUE@	f03tst_types$(EXEEXT) f03tst_types2$(EXEEXT) \
 @USE_NETCDF4_TRUE@	f03tst_types3$(EXEEXT) \
 @USE_NETCDF4_TRUE@	f03tst_groups$(EXEEXT)
 @BUILD_V2_TRUE@@USE_NETCDF4_TRUE at am__EXEEXT_2 = f03tst_v2$(EXEEXT)
@@ -174,6 +177,15 @@ am__f03tst_groups_SOURCES_DIST = module_tests.F90 f03tst_groups.F \
 f03tst_groups_OBJECTS = $(am_f03tst_groups_OBJECTS)
 f03tst_groups_LDADD = $(LDADD)
 f03tst_groups_DEPENDENCIES = ${top_builddir}/fortran/libnetcdff.la
+am__f03tst_open_mem_SOURCES_DIST = module_tests.F90 f03tst_open_mem.F \
+	f03lib_f_interfaces.f90 f03lib.c handle_err.F
+ at USE_NETCDF4_TRUE@am_f03tst_open_mem_OBJECTS = module_tests.$(OBJEXT) \
+ at USE_NETCDF4_TRUE@	f03tst_open_mem.$(OBJEXT) \
+ at USE_NETCDF4_TRUE@	f03lib_f_interfaces.$(OBJEXT) \
+ at USE_NETCDF4_TRUE@	f03lib.$(OBJEXT) handle_err.$(OBJEXT)
+f03tst_open_mem_OBJECTS = $(am_f03tst_open_mem_OBJECTS)
+f03tst_open_mem_LDADD = $(LDADD)
+f03tst_open_mem_DEPENDENCIES = ${top_builddir}/fortran/libnetcdff.la
 am__f03tst_parallel_SOURCES_DIST = f03tst_parallel.F
 @TEST_PARALLEL_TRUE@@USE_NETCDF4_TRUE at am_f03tst_parallel_OBJECTS = f03tst_parallel.$(OBJEXT)
 f03tst_parallel_OBJECTS = $(am_f03tst_parallel_OBJECTS)
@@ -274,9 +286,10 @@ am_nf03_test_OBJECTS = module_tests.$(OBJEXT) \
 nf03_test_OBJECTS = $(am_nf03_test_OBJECTS)
 nf03_test_LDADD = $(LDADD)
 nf03_test_DEPENDENCIES = ${top_builddir}/fortran/libnetcdff.la
-am__tst03_f77_v2_SOURCES_DIST = module_tests.F90 tst03_f77_v2.F
+am__tst03_f77_v2_SOURCES_DIST = module_tests.F90 tst03_f77_v2.F \
+	handle_err.F
 @BUILD_V2_TRUE at am_tst03_f77_v2_OBJECTS = module_tests.$(OBJEXT) \
- at BUILD_V2_TRUE@	tst03_f77_v2.$(OBJEXT)
+ at BUILD_V2_TRUE@	tst03_f77_v2.$(OBJEXT) handle_err.$(OBJEXT)
 tst03_f77_v2_OBJECTS = $(am_tst03_f77_v2_OBJECTS)
 tst03_f77_v2_LDADD = $(LDADD)
 tst03_f77_v2_DEPENDENCIES = ${top_builddir}/fortran/libnetcdff.la
@@ -358,15 +371,16 @@ am__v_FC_ = $(am__v_FC_ at AM_DEFAULT_V@)
 am__v_FC_0 = @echo "  FC      " $@;
 am__v_FC_1 = 
 SOURCES = $(f03test_SOURCES) $(f03tst_groups_SOURCES) \
-	$(f03tst_parallel_SOURCES) $(f03tst_types_SOURCES) \
-	$(f03tst_types2_SOURCES) $(f03tst_types3_SOURCES) \
-	$(f03tst_v2_SOURCES) $(f03tst_vars_SOURCES) \
-	$(f03tst_vars2_SOURCES) $(f03tst_vars3_SOURCES) \
-	$(f03tst_vars4_SOURCES) $(f03tst_vars5_SOURCES) \
-	$(f03tst_vars6_SOURCES) $(nf03_test_SOURCES) \
-	$(tst03_f77_v2_SOURCES)
+	$(f03tst_open_mem_SOURCES) $(f03tst_parallel_SOURCES) \
+	$(f03tst_types_SOURCES) $(f03tst_types2_SOURCES) \
+	$(f03tst_types3_SOURCES) $(f03tst_v2_SOURCES) \
+	$(f03tst_vars_SOURCES) $(f03tst_vars2_SOURCES) \
+	$(f03tst_vars3_SOURCES) $(f03tst_vars4_SOURCES) \
+	$(f03tst_vars5_SOURCES) $(f03tst_vars6_SOURCES) \
+	$(nf03_test_SOURCES) $(tst03_f77_v2_SOURCES)
 DIST_SOURCES = $(am__f03test_SOURCES_DIST) \
 	$(am__f03tst_groups_SOURCES_DIST) \
+	$(am__f03tst_open_mem_SOURCES_DIST) \
 	$(am__f03tst_parallel_SOURCES_DIST) \
 	$(am__f03tst_types_SOURCES_DIST) \
 	$(am__f03tst_types2_SOURCES_DIST) \
@@ -586,6 +600,14 @@ am__set_TESTS_bases = \
   bases=`echo $$bases`
 RECHECK_LOGS = $(TEST_LOGS)
 AM_RECURSIVE_TARGETS = check recheck
+ at USE_NETCDF4_TRUE@am__EXEEXT_5 = f03tst_vars$(EXEEXT) \
+ at USE_NETCDF4_TRUE@	f03tst_vars2$(EXEEXT) f03tst_vars3$(EXEEXT) \
+ at USE_NETCDF4_TRUE@	f03tst_vars4$(EXEEXT) f03tst_vars5$(EXEEXT) \
+ at USE_NETCDF4_TRUE@	f03tst_vars6$(EXEEXT) f03tst_types$(EXEEXT) \
+ at USE_NETCDF4_TRUE@	f03tst_types2$(EXEEXT) \
+ at USE_NETCDF4_TRUE@	f03tst_types3$(EXEEXT) \
+ at USE_NETCDF4_TRUE@	f03tst_groups$(EXEEXT) \
+ at USE_NETCDF4_TRUE@	f03tst_open_mem$(EXEEXT)
 TEST_SUITE_LOG = test-suite.log
 TEST_EXTENSIONS = @EXEEXT@ .test
 LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
@@ -778,6 +800,7 @@ CLEANFILES = scratch.nc test.nc copy.nc fills.nc $(am__append_3) \
 @USE_NETCDF4_TRUE at f03tst_vars4_SOURCES = module_tests.F90 f03tst_vars4.F f03lib_f_interfaces.f90 f03lib.c handle_err.F
 @USE_NETCDF4_TRUE at f03tst_vars5_SOURCES = module_tests.F90 f03tst_vars5.F f03lib_f_interfaces.f90 f03lib.c handle_err.F
 @USE_NETCDF4_TRUE at f03tst_vars6_SOURCES = module_tests.F90 f03tst_vars6.F f03lib_f_interfaces.f90 f03lib.c handle_err.F
+ at USE_NETCDF4_TRUE@f03tst_open_mem_SOURCES = module_tests.F90 f03tst_open_mem.F f03lib_f_interfaces.f90 f03lib.c handle_err.F
 @USE_NETCDF4_TRUE at f03tst_groups_SOURCES = module_tests.F90 f03tst_groups.F f03lib_f_interfaces.f90 f03lib.c handle_err.F
 @BUILD_V2_TRUE@@USE_NETCDF4_TRUE at f03tst_v2_SOURCES = f03tst_v2.F
 @TEST_PARALLEL_TRUE@@USE_NETCDF4_TRUE at f03tst_parallel_SOURCES = f03tst_parallel.F
@@ -788,7 +811,7 @@ CLEANFILES = scratch.nc test.nc copy.nc fills.nc $(am__append_3) \
 EXTRA_DIST = test03_get.F test03_put.F fills.cdl create_fills.sh	\
 run_f77_par_test.sh CMakeLists.txt
 
- at BUILD_V2_TRUE@tst03_f77_v2_SOURCES = module_tests.F90 tst03_f77_v2.F
+ at BUILD_V2_TRUE@tst03_f77_v2_SOURCES = module_tests.F90 tst03_f77_v2.F handle_err.F
 all: all-am
 
 .SUFFIXES:
@@ -841,6 +864,10 @@ f03tst_groups$(EXEEXT): $(f03tst_groups_OBJECTS) $(f03tst_groups_DEPENDENCIES) $
 	@rm -f f03tst_groups$(EXEEXT)
 	$(AM_V_F77LD)$(F77LINK) $(f03tst_groups_OBJECTS) $(f03tst_groups_LDADD) $(LIBS)
 
+f03tst_open_mem$(EXEEXT): $(f03tst_open_mem_OBJECTS) $(f03tst_open_mem_DEPENDENCIES) $(EXTRA_f03tst_open_mem_DEPENDENCIES) 
+	@rm -f f03tst_open_mem$(EXEEXT)
+	$(AM_V_F77LD)$(F77LINK) $(f03tst_open_mem_OBJECTS) $(f03tst_open_mem_LDADD) $(LIBS)
+
 f03tst_parallel$(EXEEXT): $(f03tst_parallel_OBJECTS) $(f03tst_parallel_DEPENDENCIES) $(EXTRA_f03tst_parallel_DEPENDENCIES) 
 	@rm -f f03tst_parallel$(EXEEXT)
 	$(AM_V_F77LD)$(F77LINK) $(f03tst_parallel_OBJECTS) $(f03tst_parallel_LDADD) $(LIBS)
@@ -1237,6 +1264,13 @@ f03tst_groups.log: f03tst_groups$(EXEEXT)
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+f03tst_open_mem.log: f03tst_open_mem$(EXEEXT)
+	@p='f03tst_open_mem$(EXEEXT)'; \
+	b='f03tst_open_mem'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 f03tst_v2.log: f03tst_v2$(EXEEXT)
 	@p='f03tst_v2$(EXEEXT)'; \
 	b='f03tst_v2'; \
diff --git a/nf03_test/f03tst_open_mem.F b/nf03_test/f03tst_open_mem.F
new file mode 100755
index 0000000..d42c43d
--- /dev/null
+++ b/nf03_test/f03tst_open_mem.F
@@ -0,0 +1,249 @@
+C     This is part of the netCDF package.
+C     Copyright 2008 University Corporation for Atmospheric Research/Unidata.
+C     See COPYRIGHT file for conditions of use.
+
+C     This program tests prototype nf_open_mem and procedure for
+C     creating an in memory netcdf file from an existing netcdf
+C     file on a hard drive. The program will first use the logic
+C     from f03tst_vars6.F to create a small netcdf file on
+C     the hard drive. This file is then opened as a Fortran
+C     unformatted, stream file and read into an allocatable
+C     array of C_CHAR type. 
+
+      program ftst_open_mem
+      use netcdf4_f03
+      use iso_c_binding, ONLY : C_CHAR
+
+      implicit none
+
+C     This is the name of the data file we will create.
+      character*(*) FILE_NAME
+      parameter (FILE_NAME='f03tst_open_mem.nc')
+      integer NDIMS
+      parameter (NDIMS = 1)
+      integer DIM_LEN
+      parameter (DIM_LEN = 22)
+      integer NVARS
+      parameter (NVARS = 3)
+      integer DATA_LEN
+      parameter (DATA_LEN = 2)
+      integer check_file
+C
+C  *** Specify an allocatable array of KIND=C_CHAR with TARGET
+C      attribute to hold in-memory NC file. This is the closest
+C      we can get to in Fortran >= 2003 to an array of bytes
+C      that C will understand
+
+      Character(KIND=C_CHAR), ALLOCATABLE, TARGET :: memfile(:)
+
+      integer ncid, varid(NVARS), dimids(NDIMS)
+      integer data_len_in, offset, ncsize, iostat, mode
+      parameter (offset = 20)
+      integer data1(data_len), data1_in(data_len)
+      character*(4) var_name(NVARS)
+      character*(4) dim_name
+      parameter (dim_name = 'dim1')
+      integer NO_FILL, MY_FILL_VALUE
+      parameter (NO_FILL = 1)
+      parameter (MY_FILL_VALUE = 42)
+
+C     Loop index and error handling.
+      integer x, retval
+
+      print *, ''
+      print *,'*** Testing fill values.'
+
+C     Prepare some data to write.
+      do x = 1, data_len
+         data1(x) = x
+      end do
+
+C     Set up var names.
+      var_name(1) = 'var1'
+      var_name(2) = 'var2'
+      var_name(3) = 'var3'
+
+C     Create the netCDF file.
+      retval = nf_create(FILE_NAME, NF_NETCDF4, ncid)
+      if (retval .ne. nf_noerr) call handle_err(retval)
+
+C     Create a dimension.
+      retval = nf_def_dim(ncid, dim_name, DIM_LEN, dimids(1))
+      if (retval .ne. nf_noerr) call handle_err(retval)
+
+C     Create a few integer variables.
+      do x = 1, NVARS      
+         retval = nf_def_var(ncid, var_name(x), NF_INT, NDIMS, dimids,
+     $        varid(x))
+         if (retval .ne. nf_noerr) call handle_err(retval)
+      end do
+
+C     Set no fill mode for the second variable.
+      retval = nf_def_var_fill(ncid, varid(2), NO_FILL, 88)
+      if (retval .ne. 0) stop 2
+
+C     Set an alternative fill value for the third variable.
+      retval = nf_def_var_fill(ncid, varid(3), 0, MY_FILL_VALUE)
+      if (retval .ne. 0) stop 3
+
+C     Check it out. 
+c      retval = check_file(ncid, var_name, dim_name)
+c      if (retval .ne. 0) stop 2
+
+C     Close the file. 
+      retval = nf_close(ncid)
+      if (retval .ne. nf_noerr) call handle_err(retval)
+C
+C *****   TESTING OF nf_open_mem ******
+C
+
+      Print *,''
+      Print *,' testing nf_open_mem'
+      Print *,''
+C
+C     First open external netcdf file with unformatted stream access
+C     and get file size (hopefully in bytes) using INQUIRE intrinsic
+C
+
+      Open(7, FILE=FILE_NAME, STATUS="UNKNOWN", ACCESS="STREAM",         &
+     & FORM="UNFORMATTED")
+      INQUIRE(FILE=FILE_NAME,  SIZE=ncsize)
+
+      Print *,''
+      Print *,' FILE = ', TRIM(FILE_NAME), ' is ', ncsize, ' bytes'
+      Print *,''
+
+C For non-zero length files ALLOCATED memfile to size returned by INQUIRE
+C Then do an unformatted read on file. If no read errors (iostat==0)
+C then call nf_open_mem in NF_DISKLESS mode
+
+      If (ncsize > 0) Then
+        ALLOCATE(memfile(ncsize))
+        Read(7, iostat=iostat) memfile(1:ncsize)
+        If (iostat == 0) then
+           Close(7)
+           mode = IOR(NF_DISKLESS, NF_INMEMORY)
+           retval = nf_open_mem(FILE_NAME, mode, ncsize, memfile, ncid)
+        Else
+           retval = iostat
+        EndIf
+        if (retval .ne. 0) stop 41
+      Else
+        stop 42
+      EndIf 
+      retval = check_file(ncid, var_name, dim_name)
+      if (retval .ne. 0) stop 4
+
+C     Close the file. 
+      retval = nf_close(ncid)
+      if (retval .ne. nf_noerr) call handle_err(retval)
+
+      If (ALLOCATED(memfile)) DEALLOCATE(memfile)
+      print *,'*** SUCCESS!'
+      end
+
+C     This function check the file to make sure everything is OK.
+      integer function check_file(ncid, var_name, dim_name)
+      use netcdf4_f03
+      implicit none
+
+C     I need these in both here and the main program.
+      integer NDIMS
+      parameter (NDIMS = 1)
+      integer DIM_LEN
+      parameter (DIM_LEN = 22)
+      integer NVARS
+      parameter (NVARS = 3)
+      integer DATA_LEN
+      parameter (DATA_LEN = 2)
+      integer MY_FILL_VALUE
+      parameter (MY_FILL_VALUE = 42)
+
+C     Parameters
+      integer ncid
+      character*(4) var_name(NVARS)
+      character*(4) dim_name
+
+C     Values that are read in, to check the file.
+      integer ndims_in, nvars_in, ngatts_in, unlimdimid_in
+      integer xtype_in, dimids_in(NDIMS), natts_in
+      integer varid_in(NVARS), dimid_in, no_fill_in, fill_value_in
+      character*(4) var_name_in
+      integer int_data_in(DIM_LEN)
+
+      integer x, retval
+
+C     Check it out.
+      retval = nf_inq(ncid, ndims_in, nvars_in, ngatts_in,
+     $     unlimdimid_in)
+      if (retval .ne. nf_noerr) call handle_err(retval)
+      if (ndims_in .ne. 1 .or. nvars_in .ne. NVARS .or. ngatts_in .ne. 0
+     $     .or. unlimdimid_in .ne. -1) stop 5
+
+C     Get the varids and the dimid.
+      do x = 1, NVARS      
+         retval = nf_inq_varid(ncid, var_name(x), varid_in(x))
+         if (retval .ne. nf_noerr) call handle_err(retval)
+         if (varid_in(x) .ne. x) stop 6
+      end do
+      retval = nf_inq_dimid(ncid, dim_name, dimid_in)
+      if (retval .ne. nf_noerr) call handle_err(retval)
+      if (dimid_in .ne. 1) stop 7
+
+C     These things are the same for all three variables, except
+C     natts_in..
+      do x = 1, NVARS      
+         retval = nf_inq_var(ncid, varid_in(x), var_name_in, xtype_in,
+     $        ndims_in, dimids_in, natts_in)
+         if (retval .ne. nf_noerr) call handle_err(retval)
+         if (ndims_in .ne. 1 .or. xtype_in .ne. NF_INT .or. dimids_in(1)
+     $        .ne. dimid_in) stop 8
+         if (x .eq. 3 .and. natts_in .ne. 1) stop 9
+         if (x .lt. 3 .and. natts_in .ne. 0) stop 10
+      end do
+
+C     Check the fill value for the first var. Nothing was set, so
+C     no_fill should be off, and fill_value should be the default fill
+C     value for this type.
+      retval = nf_inq_var_fill(ncid, varid_in(1), no_fill_in,
+     $     fill_value_in)
+      if (retval .ne. nf_noerr) call handle_err(retval)
+      if (no_fill_in .ne. 0 .or. fill_value_in .ne. nf_fill_int) stop 11
+
+C     Check that no_fill mode is on for the second variable.
+      retval = nf_inq_var_fill(ncid, varid_in(2), no_fill_in,
+     $     fill_value_in)
+      if (retval .ne. nf_noerr) call handle_err(retval)
+      if (no_fill_in .ne. 1 .or. fill_value_in .ne. nf_fill_int) stop 12
+
+C     Check that a non-default fill value is in use for the third variable.
+      retval = nf_inq_var_fill(ncid, varid_in(3), no_fill_in,
+     $     fill_value_in)
+      if (retval .ne. nf_noerr) call handle_err(retval)
+      if (no_fill_in .ne. 0 .or. fill_value_in .ne. MY_FILL_VALUE) stop
+     $     2
+
+C     Get the data in var1. It will be all the default fill value.
+      retval = nf_get_var_int(ncid, varid_in(1), int_data_in)
+      if (retval .ne. nf_noerr) call handle_err(retval)
+      do x = 1, DIM_LEN
+         if (int_data_in(x) .ne. nf_fill_int) stop 13
+      end do
+
+C     Get the data in var2. What will it be?
+      retval = nf_get_var_int(ncid, varid_in(2), int_data_in)
+      if (retval .ne. nf_noerr) call handle_err(retval)
+C$$$      do x = 1, DIM_LEN
+C$$$         print *, int_data_in(x)
+C$$$      end do
+
+C     Get the data in var3. It will be all the default fill value.
+      retval = nf_get_var_int(ncid, varid_in(3), int_data_in)
+      if (retval .ne. nf_noerr) call handle_err(retval)
+      do x = 1, DIM_LEN
+C         print *, int_data_in(x)
+         if (int_data_in(x) .ne. MY_FILL_VALUE) stop 14
+      end do
+
+      check_file = 0
+      end 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/netcdf-fortran.git



More information about the Pkg-grass-devel mailing list